Browse Source

2024-03-11 物料,bom,routing修改

master
fengyuan_yang 2 years ago
parent
commit
93f8442985
  1. 7
      src/api/part/bomManagement.js
  2. 12
      src/api/part/partInformation.js
  3. 7
      src/api/part/routingManagement.js
  4. 153
      src/views/modules/part/bomManagement.vue
  5. 243
      src/views/modules/part/partInformation.vue
  6. 133
      src/views/modules/part/routingManagement.vue

7
src/api/part/bomManagement.js

@ -147,6 +147,13 @@ export const copyBom = data => createAPI(`/plm/bomManagement/copyBom`,'post',dat
*/
export const copyAlternative = data => createAPI(`/plm/bomManagement/copyAlternative`,'post',data)
/**
* 转正式Bom
* @param data
* @returns {*}
*/
export const toBecomeOfficialBom = data => createAPI(`/plm/bomManagement/toBecomeOfficialBom`,'post',data)

12
src/api/part/partInformation.js

@ -209,10 +209,20 @@ export const toBecomeOfficialPart = data => createAPI(`/plm/partInformation/toBe
export const queryPartRevisionList = data => createAPI(`/plm/partInformation/queryPartRevisionList`,'post',data)
/**
* 编辑bom版本
* 新增物料版本
*/
export const saveRevision = data => createAPI(`/plm/partInformation/saveRevision`,'post',data)
/**
* 编辑物料版本
*/
export const updateRevision = data => createAPI(`/plm/partInformation/updateRevision`,'post',data)
/**
* 删除物料版本
*/
export const deleteRevision = data => createAPI(`/plm/partInformation/deleteRevision`,'post',data)
/**
* 复制物料
*/

7
src/api/part/routingManagement.js

@ -182,3 +182,10 @@ export const copyRouting = data => createAPI(`/plm/routingManagement/copyRouting
* @returns {*}
*/
export const copyAlternative = data => createAPI(`/plm/routingManagement/copyAlternative`,'post',data)
/**
* 转正式Routing
* @param data
* @returns {*}
*/
export const toBecomeOfficialRouting = data => createAPI(`/plm/routingManagement/toBecomeOfficialRouting`,'post',data)

153
src/views/modules/part/bomManagement.vue

@ -89,8 +89,8 @@
<el-dialog :close-on-click-modal="false" :before-close="closeModalX" v-drag :visible.sync="modalFlag" width="1110px">
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 5px">
<el-form-item prop="partNo" :rules="rules.partNo">
<span v-if="!modalDisableFlag" slot="label" @click="queryPartList()"><a herf="#">物料编码</a></span>
<span v-if="modalDisableFlag" slot="label">物料编码</span>
<span v-if="!modalDisableFlag" slot="label" @click="queryPartList"><a herf="#">物料编码</a></span>
<span v-else slot="label">物料编码</span>
<el-input v-model="modalData.partNo" :disabled="modalDisableFlag" style="width: 221px"></el-input>
</el-form-item>
<el-form-item :label="'物料名称'" prop="partDesc" :rules="rules.partDesc">
@ -100,7 +100,7 @@
<el-input v-model="modalData.printUnitName" disabled style="width: 221px"></el-input>
</el-form-item>
<el-form-item :label="'制造类型'" prop="bomType" :rules="rules.bomType">
<el-select v-model="modalData.bomType" @change="bomTypeChange" :disabled="modalDisableFlag" style="width: 221px">
<el-select v-model="modalData.bomType" :disabled="modalDisableFlag" style="width: 221px"> <!-- @change="bomTypeChange" -->
<el-option label="Manufacturing" value="Manufacturing"></el-option>
<el-option label="Repair" value="Repair"></el-option>
<el-option label="Purchase" value="Purchase"></el-option>
@ -114,7 +114,7 @@
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
<el-form-item label="生效日期" prop="effPhaseInDate" :rules="rules.effPhaseInDate">
<el-date-picker
:readonly="this.detailData.partNo !== ''"
:readonly="detailData.partNo != ''"
style="width: 221px"
v-model="modalData.effPhaseInDate"
type="date"
@ -135,14 +135,14 @@
</el-date-picker>
</el-form-item>
<el-form-item :label="'BOM版本号'" prop="engChgLevel" :rules="rules.engChgLevel">
<el-input v-model="modalData.engChgLevel" type="number" disabled style="width: 221px"></el-input>
<el-input v-model="modalData.engChgLevel" :disabled="modalDisableFlag" type="number" style="width: 221px"></el-input>
</el-form-item>
<el-form-item :label="'工程版本号'">
<el-input v-model="modalData.engRevision" style="width: 221px"></el-input>
</el-form-item>
<el-form-item>
<el-button v-if="modalData.flag === '1'" :loading="saveHeaderLoading" type="primary" @click="saveBomHeader()" style="margin-top: 23px;width: 120px">保存</el-button>
<el-button v-else type="primary" @click="copyBomRevision()" style="margin-top: 23px;width: 120px">Copy</el-button>
<el-button v-if="modalData.flag === '1'" :loading="saveHeaderLoading" type="primary" @click="saveBomHeader" style="margin-top: 23px;width: 120px">保存</el-button>
<el-button v-else type="primary" @click="copyBomRevision" style="margin-top: 23px;width: 120px">Copy</el-button>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">
@ -155,17 +155,18 @@
<el-tab-pane label="Product Structure" name="bom_detail">
<el-form label-position="top" style="margin-top: -10px">
<el-form-item>
<el-button type="primary" @click="saveBomDetail()" style="margin-left: 7px">新增</el-button>
<el-button type="primary" @click="deleteBomDetail()">删除</el-button>
<el-button type="primary" @click="updateBomDetail()">编辑</el-button>
<el-button type="primary" @click="saveBomDetail" style="margin-left: 7px">新增</el-button>
<el-button type="primary" @click="deleteBomDetail">删除</el-button>
<el-button type="primary" @click="updateBomDetail">编辑</el-button>
<el-button v-if="modalData.flag === '2'" type="primary" @click="copyBomAlternative()">Copy</el-button>
<el-button v-if="detailData.status === 'Tentative' || detailData.status === 'Obsolete'" type="primary" @click="updateStatusToBuildable()">Buildable</el-button>
<el-button v-if="detailData.status === 'Buildable' && (modalData.effPhaseOutDate == null || modalData.effPhaseOutDate === '')" type="primary" @click="updateStatusToObsolete()">Obsolete</el-button>
<el-button v-if="detailData.status === 'Tentative' || detailData.status === 'Obsolete'" type="primary" @click="updateStatusToBuildable">Build</el-button>
<el-button v-if="detailData.status === 'Buildable' && (modalData.effPhaseOutDate == null || modalData.effPhaseOutDate === '')" type="primary" @click="updateStatusToObsolete">Retire</el-button>
<el-button v-if="modalData.flag === '2' && detailData.officialFlag !== 'Y'" type="primary" @click="toBecomeOfficialBom">转正式Bom</el-button>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="detailData" :rules="rules" style="margin-left: 7px">
<el-form-item :label="'替代编码'">
<el-select v-model="detailData.alternativeNo" @change="alternativeChange()" style="width: 221px">
<el-select v-model="detailData.alternativeNo" @change="alternativeChange" style="width: 221px">
<el-option
v-for = "(i, index) in detailDataList"
:key = "index"
@ -178,11 +179,6 @@
<el-input v-model="detailData.alternativeDescription" readonly style="width: 221px"></el-input>
</el-form-item>
<el-form-item :label="'状态'">
<!-- <el-select v-model="detailData.status" disabled style="width: 221px">-->
<!-- <el-option label="暂定" value="Tentative"></el-option>-->
<!-- <el-option label="创建" value="Buildable"></el-option>-->
<!-- <el-option label="销毁" value="Obsolete"></el-option>-->
<!-- </el-select>-->
<el-input v-model="detailData.status" readonly style="width: 221px"></el-input>
</el-form-item>
<el-form-item :label="'最小订单数'">
@ -201,8 +197,8 @@
<el-tab-pane label="Components" name="bom_sub_detail">
<el-form label-position="top" style="margin-top: 5px">
<el-form-item>
<el-button type="primary" @click="saveComponentModal()" style="margin-left: 7px">新增</el-button>
<el-button type="primary" @click="deleteComponentPart()">删除</el-button>
<el-button type="primary" @click="saveComponentModal" style="margin-left: 7px">新增</el-button>
<el-button type="primary" @click="deleteComponentPart">删除</el-button>
</el-form-item>
</el-form>
<el-table
@ -329,6 +325,12 @@
<el-form-item :label="'物料名称'">
<el-input v-model="componentPartData.partDesc" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item :label="'正式物料'">
<el-select v-model="componentPartData.status" clearable style="width: 120px">
<el-option label="临时物料" value="N"></el-option>
<el-option label="正式物料" value="Y"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="' '">
<el-button type="primary" @click="queryComponentPartList()">查询</el-button>
</el-form-item>
@ -367,7 +369,7 @@
<el-input class="inlineNumber numInput" v-model="componentData.lineSequence" type="number" style="width: 49px"></el-input>
</el-form-item>
<el-form-item prop="componentPart" :rules="componentRules.componentPart">
<span v-if="!componentDisableFlag" slot="label" @click="queryComponentPartList()"><a herf="#">子物料编码</a></span>
<span v-if="!componentDisableFlag" slot="label" @click="queryComponentPartList"><a herf="#">子物料编码</a></span>
<span v-if="componentDisableFlag" slot="label">子物料编码</span>
<el-input v-model="componentData.componentPart" :disabled="componentDisableFlag" style="width: 175px"></el-input>
</el-form-item>
@ -389,8 +391,8 @@
<el-input class="inlineNumber numInput" v-model="componentData.shrinkageFactor" @input="handleInputB(componentData.shrinkageFactor)" type="number" style="width: 80px"></el-input>
</el-form-item>
<el-form-item>
<span slot="label" @click="queryOperationList()"><a>工序</a></span>
<el-input v-model="componentData.operationName" style="width: 110px"></el-input>
<span slot="label" @click="queryOperationList"><a>工序</a></span>
<el-input v-model="componentData.operationId" style="width: 110px"></el-input>
</el-form-item>
<el-form-item>
<span slot="label" @click="getBaseList(117)"><a herf="#">发料库位</a></span>
@ -410,7 +412,7 @@
</el-form-item>
</el-form>
<el-footer style="height:35px;margin-top:65px;text-align:center">
<el-button :loading="saveComponentLoading" type="primary" @click="componentDataSave()">保存</el-button>
<el-button :loading="saveComponentLoading" type="primary" @click="componentDataSave">保存</el-button>
<el-button type="primary" @click="componentSaveModal = false">关闭</el-button>
</el-footer>
</el-dialog>
@ -636,7 +638,8 @@ import {
getBomEngChgLevel, // bom
getComponentLineSequence, //
copyBom, // bom
copyAlternative, // alternative
copyAlternative, // alternative,
toBecomeOfficialBom, // Bom
} from '@/api/part/bomManagement.js'
import ChooseList from '@/views/modules/common/Chooselist'
import dayjs from "dayjs";
@ -716,6 +719,7 @@ export default {
updateBy: '',
printUnit: '',
printUnitName: '',
officialFlag: ''
},
detailData: {
site: this.$store.state.user.site,
@ -731,7 +735,8 @@ export default {
createDate: '',
createBy: '',
updateDate: '',
updateBy: ''
updateBy: '',
officialFlag: 'N'
},
componentData: {
flag: '',
@ -749,7 +754,7 @@ export default {
issueType: '',
shrinkageFactor: '',
lineItemNo: '',
operationName: '',
operationId: '',
issueToLoc: '',
issueToLocName: '',
noteText: '',
@ -768,6 +773,8 @@ export default {
site: this.$store.state.user.site,
partNo: '',
partDesc: '',
status: '',
bomDetail: {}
},
saveDetailData: {
flag: '',
@ -784,7 +791,8 @@ export default {
createDate: '',
createBy: '',
updateDate: '',
updateBy: ''
updateBy: '',
officialFlag: ''
},
operationData: {
site: this.$store.state.user.site,
@ -799,7 +807,8 @@ export default {
effPhaseInDate: '',
effPhaseOutDate: '',
previousVersion: {},
createBy: ''
createBy: '',
officialFlag: ''
},
copyAlternativeData: {
site: '',
@ -813,7 +822,8 @@ export default {
detailNoteText: '',
status: '',
previousVersion: {},
createBy: ''
createBy: '',
officialFlag: ''
},
// ======== ========
dataList: [],
@ -1294,7 +1304,7 @@ export default {
serialNumber: '104002Table2OperationDesc',
tableId: '104002Table2',
tableName: 'BOM子物料表',
columnProp: 'operationName',
columnProp: 'operationId',
headerAlign: 'center',
align: 'center',
columnLabel: '工序',
@ -1344,6 +1354,18 @@ export default {
},
],
operationDetailList: [
{
columnProp: 'operationNo',
headerAlign: "center",
align: "center",
columnLabel: '工序编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
},
{
columnProp: 'operationName',
headerAlign: "center",
@ -1654,6 +1676,7 @@ export default {
createBy: this.$store.state.user.name,
printUnit: '',
printUnitName: '',
officialFlag: 'N'
}
this.detailData = {
site: this.$store.state.user.site,
@ -1669,8 +1692,10 @@ export default {
createDate: '',
createBy: this.$store.state.user.name,
updateDate: '',
updateBy: this.$store.state.user.name
updateBy: this.$store.state.user.name,
officialFlag: 'N'
}
this.detailDataList = []
this.subDetailList = []
this.modalDisableFlag = false
this.modalFlag = true
@ -1695,6 +1720,7 @@ export default {
updateBy: this.$store.state.user.name,
printUnit: row.printUnit,
printUnitName: row.printUnitName,
officialFlag: row.officialFlag
}
// bom
queryBomDetail(this.modalData).then(({data}) => {
@ -1741,6 +1767,7 @@ export default {
status: 'Tentative',
createDate: '',
createBy: this.$store.state.user.name,
officialFlag: 'N'
}
// bom
queryBomHeader(this.modalData).then(({data}) => {
@ -1787,6 +1814,7 @@ export default {
detailNoteText: this.detailData.detailNoteText,
status: this.detailData.status,
updateBy: this.$store.state.user.name,
officialFlag: this.detailData.officialFlag
}
// bom
queryBomHeader(this.modalData).then(({data}) => {
@ -1832,7 +1860,7 @@ export default {
issueType: 'Reserve and Backflush',
shrinkageFactor: 0,
lineItemNo: '',
operationName: '',
operationId: '',
issueToLoc: '',
issueToLocName: '',
noteText: '',
@ -1876,7 +1904,7 @@ export default {
issueType: row.issueType,
shrinkageFactor: row.shrinkageFactor,
lineItemNo: row.lineItemNo,
operationName: row.operationName,
operationId: row.operationId,
issueToLoc: row.issueToLoc,
issueToLocName: row.issueToLocName,
noteText: row.noteText,
@ -1909,10 +1937,6 @@ export default {
this.$message.warning('请选择生效日期!')
return
}
// if (this.modalData.effPhaseOutDate === '' || this.modalData.effPhaseOutDate == null) {
// this.$message.warning('')
// return
// }
if (this.modalData.engChgLevel === '' || this.modalData.engChgLevel == null) {
this.$message.warning('请填写BOM版本号!')
return
@ -1937,6 +1961,7 @@ export default {
engRevision: this.modalData.engRevision,
typeFlag: this.modalData.typeFlag,
netWeight: this.modalData.netWeight,
officialFlag: this.modalData.officialFlag,
alternativeNo: this.detailData.alternativeNo,
alternativeDescription: this.detailData.alternativeDescription,
minLotQty: this.detailData.minLotQty,
@ -2124,17 +2149,18 @@ export default {
this.modalData.partDesc = row.partDesc
this.modalData.printUnit = row.printUnit
this.modalData.printUnitName = row.printUnitName
// bom
getBomEngChgLevel(this.modalData).then(({data}) => {
if (data && data.code === 0) {
this.modalData.engChgLevel = data.engChgLevel
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
this.partModelFlag = false
})
// // bom
// getBomEngChgLevel(this.modalData).then(({data}) => {
// if (data && data.code === 0) {
// this.modalData.engChgLevel = data.engChgLevel
// } else {
// this.$alert(data.msg, '', {
// confirmButtonText: ''
// })
// }
// this.partModelFlag = false
// })
this.partModelFlag = false
},
// bom
@ -2156,9 +2182,10 @@ export default {
* @param row
*/
getRowOperationData (row) {
this.componentData.operationName = row.operationName
this.componentData.operationId = row.operationId
this.operationModelFlag = false
},
getComponentRowData (row) {
this.componentData.componentPart = row.partNo
this.componentData.componentPartDesc = row.partDesc
@ -2166,10 +2193,12 @@ export default {
this.componentData.printUnitName = row.printUnitName
this.componentPartModelFlag = false
},
/**
* 物料列表
*/
queryComponentPartList () {
this.componentPartData.bomDetail = this.detailData
//
queryPartList(this.componentPartData).then(({data}) => {
if (data && data.code === 0) {
@ -2401,6 +2430,7 @@ export default {
engRevision: data.rows.modalData.engRevision,
typeFlag: data.rows.modalData.typeFlag,
netWeight: data.rows.modalData.netWeight,
officialFlag: data.rows.modalData.officialFlag
}
this.detailDataList = data.rows.detailDataList
this.detailData = data.rows.detailData
@ -2432,7 +2462,8 @@ export default {
effPhaseInDate: this.dayjs(new Date()).format('YYYY-MM-DD'),
effPhaseOutDate: '',
previousVersion: {},
createBy: this.$store.state.user.name
createBy: this.$store.state.user.name,
officialFlag: 'N'
}
this.copyBomModelFlag = true
},
@ -2485,6 +2516,7 @@ export default {
defaultFlag: this.detailData.defaultFlag,
detailNoteText: this.detailData.detailNoteText,
status: 'Tentative',
officialFlag: 'N',
previousVersion: {},
createBy: this.$store.state.user.name
}
@ -2518,6 +2550,7 @@ export default {
this.copyAlternativeData.previousVersion = this.detailData
copyAlternative(this.copyAlternativeData).then(({data}) => {
if (data && data.code === 0) {
this.detailDataList = data.rows.detailDataList
this.copyAlternativeModelFlag = false
this.$message({
message: '操作成功',
@ -2721,7 +2754,23 @@ export default {
})
},
// BomBom
toBecomeOfficialBom () {
toBecomeOfficialBom(this.detailData).then(({data}) => {
if (data && data.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {}
})
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
})
},
// ======= =======
handleInput (value, type) {

243
src/views/modules/part/partInformation.vue

@ -126,14 +126,14 @@
<el-form-item v-if="modalDisableFlag && modalData.status !== 'Y'" :label="' '">
<el-button type="primary" @click="toBecomeOfficialPart">转正式物料</el-button>
</el-form-item>
<el-tabs v-model="inventoryPartTable" style="width: 100%;height: 465px" type="border-card" @tab-click="inventoryPartClick">
<el-tabs v-model="inventoryPartTable" style="width: 100%;height: 465px;" type="border-card" @tab-click="inventoryPartClick">
<el-tab-pane label="General">
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-top: -5px;">
<el-form-item label="零件类型 / Part Type" prop="partType" :rules="rules.partType">
<el-select v-model="modalData.partType" style="width: 461px">
<el-option label="Manufactured" value="Manufactured"></el-option>
<el-option label="Manufactured recipe" value="Manufactured recipe"></el-option>
<el-option label="Purchase raw" value="Purchase raw"></el-option>
<el-option label="Manufactured Recipe" value="Manufactured Recipe"></el-option>
<el-option label="Purchased (raw)" value="Purchased (raw)"></el-option>
<el-option label="Purchased" value="Purchased"></el-option>
</el-select>
</el-form-item>
@ -246,7 +246,7 @@
<el-tab-pane label="Acquisition">
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-top: -5px;">
<el-form-item label="制造备货期 / Manufacturing Lead Time">
<el-input :disabled="!(modalData.partType === 'Manufactured' || modalData.partType === 'Manufactured recipe')" class="inlineNumber numInput" v-model="modalData.manufacturingLeadTime" @change="changeExpectedLeadTime" type="number" style="width: 223px"></el-input>
<el-input :disabled="!(modalData.partType === 'Manufactured' || modalData.partType === 'Manufactured Recipe')" class="inlineNumber numInput" v-model="modalData.manufacturingLeadTime" @input="handleInput(modalData.manufacturingLeadTime,17)" @change="changeExpectedLeadTime" type="number" style="width: 223px"></el-input>
</el-form-item>
<el-form-item label="周数 / Weeks">
<el-input class="inlineNumber numInput" v-model="modalData.durabilityWeek" readonly type="number" style="width: 223px"></el-input>
@ -259,7 +259,7 @@
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules">
<el-form-item label="预期提前期 / Expected Lead Time">
<el-input class="inlineNumber numInput" v-model="modalData.expectedLeadTime" type="number" style="width: 223px"></el-input>
<el-input class="inlineNumber numInput" v-model="modalData.expectedLeadTime" @input="handleInput(modalData.expectedLeadTime,18)" type="number" style="width: 223px"></el-input>
</el-form-item>
<el-form-item label="天数 / Days">
<el-input class="inlineNumber numInput" v-model="modalData.durabilityDay" @change="changeDurabilityWeek" type="number" style="width: 223px"></el-input>
@ -457,10 +457,11 @@
</el-form>
</el-tab-pane>
<el-tab-pane style="margin-top: -10px" label="Revisions" name="Revisions">
<el-tab-pane style="margin-top: -15px" label="Revisions" name="Revisions">
<el-button type="primary" @click="savePartRevisionModal">新增</el-button>
<el-table
:data="revisionList"
height="415px"
height="395px"
border
ref="revisionTable"
style="width:100%">
@ -487,6 +488,7 @@
label="操作">
<template slot-scope="scope">
<a type="text" size="small" @click="updateRevisionModal(scope.row)">编辑</a>
<a type="text" size="small" @click="deleteRevisionModal(scope.row)">删除</a>
</template>
</el-table-column>
</el-table>
@ -1143,23 +1145,36 @@
</el-footer>
</el-dialog>
<el-dialog title="BOM" :close-on-click-modal="false" v-drag :visible.sync="updateRevisionModelFlag" width="430px">
<el-dialog title="Revision" :close-on-click-modal="false" v-drag :visible.sync="updateRevisionModelFlag" width="430px">
<el-form :inline="true" label-position="top" :model="revisionData" style="margin-left: 7px;margin-top: -5px;">
<el-form-item label="版本号">
<el-input v-model="revisionData.engChgLevel" disabled style="width: 185px"></el-input>
<el-form-item label="Revision">
<el-input v-model="revisionData.engChgLevel" :disabled="updateRevisionModelDisableFlag" style="width: 185px"></el-input>
</el-form-item>
<el-form-item label="制造类型">
<el-input v-model="revisionData.bomType" disabled style="width: 185px"></el-input>
<el-form-item label="Eng Rev">
<el-input v-model="revisionData.engRevision" style="width: 185px"></el-input>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="revisionData" style="margin-left: 7px;margin-top: -5px;">
<el-form-item label="生效日期">
<el-form-item label="Phase In">
<el-date-picker style="width: 185px" v-model="revisionData.effPhaseInDate" type="date" value-format="yyyy-MM-dd" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="失效日期">
<el-form-item label="Phase Out">
<el-date-picker style="width: 185px" v-model="revisionData.effPhaseOutDate" type="date" value-format="yyyy-MM-dd" placeholder="选择日期"></el-date-picker>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="revisionData" style="margin-left: 7px;margin-top: -5px;">
<el-form-item label="Product Status">
<el-input v-model="revisionData.productStatus" readonly style="width: 185px"></el-input>
</el-form-item>
<el-form-item label="Repair Status">
<el-input v-model="revisionData.repairStatus" readonly style="width: 185px"></el-input>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="revisionData" style="margin-left: 7px;margin-top: -5px;">
<el-form-item label="Revision Text">
<el-input v-model="revisionData.revisionText" style="width: 382px"></el-input>
</el-form-item>
</el-form>
<el-footer style="height:40px;margin-top: 10px;text-align:center">
<el-button type="primary" @click="updateRevision()">保存</el-button>
<el-button type="primary" @click="updateRevisionModelFlag = false">关闭</el-button>
@ -1201,6 +1216,9 @@
<el-form-item label=" ">
<el-checkbox v-model="copyPartData.copyDefaultLocation" true-label="Y">Default Location</el-checkbox>
</el-form-item>
<el-form-item label=" ">
<el-checkbox v-model="copyPartData.copyRevision" true-label="Y">Revision</el-checkbox>
</el-form-item>
</el-form>
</fieldset>
<el-footer style="height:40px;margin-top: 10px;text-align:center">
@ -1254,7 +1272,9 @@
queryMasterField, // masterPart
toBecomeOfficialPart, //
queryPartRevisionList, // bom
updateRevision, //bom
saveRevision, //
updateRevision, //
deleteRevision, //
copyPart //
} from '@/api/part/partInformation.js'
import {
@ -1438,14 +1458,18 @@
variableLeadTimeHour: ''
},
revisionData: {
flag: '',
site: '',
partNo: '',
engChgLevel: '',
bomType: '',
noteText: '',
effPhaseInDate: '',
effPhaseOutDate: '',
engRevision: ''
revisionText: '',
productStatus: '',
repairStatus: '',
engRevision: '',
createBy: '',
updateBy: '',
},
itemData: {
site: this.$store.state.user.site,
@ -1481,6 +1505,7 @@
copyPlanningData: '',
copyManufacturing: '',
copyDefaultLocation: '',
copyRevision: '',
previousVersion: {},
createBy: ''
},
@ -2585,62 +2610,54 @@
columnProp: 'engChgLevel',
headerAlign: "center",
align: "center",
columnLabel: '版本号',
columnLabel: 'Revision',
columnHidden: false,
columnImage: false,
columnSortable: true,
sortLv: 0,
status: true,
fixed: '',
},
{
userId: this.$store.state.user.name,
functionId: 104001,
serialNumber: '104001Table8BomType',
serialNumber: '104001Table8EffPhaseInDate',
tableId: "104001Table8",
tableName: "物料版本表",
columnProp: 'bomType',
columnProp: 'effPhaseInDate',
headerAlign: "center",
align: "center",
columnLabel: '制造类型',
columnLabel: 'Phase In',
columnHidden: false,
columnImage: false,
columnSortable: true,
sortLv: 0,
status: true,
fixed: '',
},
{
userId: this.$store.state.user.name,
functionId: 104001,
serialNumber: '104001Table8EffPhaseInDate',
serialNumber: '104001Table8EffPhaseOutDate',
tableId: "104001Table8",
tableName: "物料版本表",
columnProp: 'effPhaseInDate',
columnProp: 'effPhaseOutDate',
headerAlign: "center",
align: "center",
columnLabel: '生效日期',
columnLabel: 'Phase Out',
columnHidden: false,
columnImage: false,
columnSortable: true,
sortLv: 0,
status: true,
fixed: '',
},
{
userId: this.$store.state.user.name,
functionId: 104001,
serialNumber: '104001Table8EffPhaseOutDate',
serialNumber: '104001Table8NoteText',
tableId: "104001Table8",
tableName: "物料版本表",
columnProp: 'effPhaseOutDate',
columnProp: 'revisionText',
headerAlign: "center",
align: "center",
columnLabel: '失效日期',
columnLabel: 'Revision Text',
columnHidden: false,
columnImage: false,
columnSortable: true,
sortLv: 0,
status: true,
fixed: '',
},
@ -2650,14 +2667,27 @@
serialNumber: '104001Table8NoteText',
tableId: "104001Table8",
tableName: "物料版本表",
columnProp: 'noteText',
columnProp: 'productStatus',
headerAlign: "center",
align: "center",
columnLabel: '版本文本',
columnLabel: 'Product Status',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
},
{
userId: this.$store.state.user.name,
functionId: 104001,
serialNumber: '104001Table8NoteText',
tableId: "104001Table8",
tableName: "物料版本表",
columnProp: 'repairStatus',
headerAlign: "center",
align: "center",
columnLabel: 'Repair Status',
columnHidden: false,
columnImage: false,
columnSortable: true,
sortLv: 0,
status: true,
fixed: '',
},
@ -2673,8 +2703,6 @@
columnLabel: '工程版本',
columnHidden: false,
columnImage: false,
columnSortable: true,
sortLv: 0,
status: true,
fixed: '',
},
@ -2770,6 +2798,7 @@
fastAddFlag: false,
locationModelFlag: false,
updateRevisionModelFlag: false,
updateRevisionModelDisableFlag: false,
copyPartModelFlag: false
}
},
@ -2815,29 +2844,114 @@
})
},
// revision
savePartRevisionModal () {
this.revisionData = {
flag: '1',
site: this.modalData.site,
partNo: this.modalData.partNo,
engChgLevel: '',
effPhaseInDate: '',
effPhaseOutDate: '',
revisionText: '',
productStatus: 'Not In Effect',
repairStatus: 'Not In Effect',
engRevision: '',
createBy: this.$store.state.user.name,
}
this.updateRevisionModelFlag = true
this.updateRevisionModelDisableFlag = false
},
// bom
updateRevisionModal (row) {
this.revisionData = row
this.revisionData = {
flag: '2',
site: row.site,
partNo: row.partNo,
engChgLevel: row.engChgLevel,
effPhaseInDate: row.effPhaseInDate,
effPhaseOutDate: row.effPhaseOutDate,
revisionText: row.revisionText,
productStatus: row.productStatus,
repairStatus: row.repairStatus,
engRevision: row.engRevision,
updateBy: this.$store.state.user.name,
}
this.updateRevisionModelFlag = true
this.updateRevisionModelDisableFlag = true
},
// bom
// /bom
updateRevision () {
updateRevision(this.revisionData).then(({data}) => {
if (data && data.code === 0) {
this.queryPartRevisionList()
this.updateRevisionModelFlag = false
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {}
})
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
if (this.revisionData.engChgLevel === '' || this.revisionData.engChgLevel == null) {
this.$message.warning('请填写版本号(Revision)!')
return
}
if (this.revisionData.effPhaseInDate === '' || this.revisionData.effPhaseInDate == null) {
this.$message.warning('请选择生效日期(Phase In)!')
return
}
if (this.revisionData.flag === '1') {
saveRevision(this.revisionData).then(({data}) => {
if (data && data.code === 0) {
this.queryPartRevisionList()
this.updateRevisionModelFlag = false
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {}
})
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
})
} else {
updateRevision(this.revisionData).then(({data}) => {
if (data && data.code === 0) {
this.queryPartRevisionList()
this.updateRevisionModelFlag = false
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {}
})
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
})
}
},
// revision
deleteRevisionModal (row) {
this.$confirm(`是否删除该版本?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteRevision(row).then(({data}) => {
if (data && data.code === 0) {
this.queryPartRevisionList()
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {}
})
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
})
}).catch(() => {
})
},
@ -3089,6 +3203,10 @@
this.modalData.density = val
} else if (type === 16) {
this.modalData.variableLeadTimeHour = val
} else if (type === 17) {
this.modalData.manufacturingLeadTime = val
} else if (type === 18) {
this.modalData.expectedLeadTime = val
}
},
@ -3267,7 +3385,7 @@
partDesc: '',
spec: '',
partTypeDb: '',
partType: 'Purchase raw',
partType: 'Purchased (raw)',
familyId: '',
familyName: '',
groupId: '',
@ -3311,8 +3429,8 @@
lifecycleStage: 'Development',
countryOfOrigin: '',
countryOfOriginDesc: '',
manufacturingLeadTime: '',
expectedLeadTime: '',
manufacturingLeadTime: 0,
expectedLeadTime: 0,
regionOfOrigin: '',
regionOfOriginDesc: '',
durabilityWeek: '',
@ -4042,6 +4160,7 @@
copyPlanningData: '',
copyManufacturing: '',
copyDefaultLocation: '',
copyRevision: '',
previousVersion: this.modalData,
createBy: this.$store.state.user.name
}

133
src/views/modules/part/routingManagement.vue

@ -89,8 +89,8 @@
<el-dialog :close-on-click-modal="false" v-drag :before-close="closeModalX" :visible.sync="modalFlag" width="1110px">
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 5px">
<el-form-item prop="partNo" :rules="rules.partNo">
<span v-if="!modalDisableFlag" slot="label" @click="queryPartList()"><a herf="#">物料编码</a></span>
<span v-if="modalDisableFlag" slot="label">物料编码</span>
<span v-if="!modalDisableFlag" slot="label" @click="queryPartList"><a herf="#">物料编码</a></span>
<span v-else="modalDisableFlag" slot="label">物料编码</span>
<el-input v-model="modalData.partNo" :disabled="modalDisableFlag" style="width: 221px"></el-input>
</el-form-item>
<el-form-item :label="'物料名称'" prop="partDesc" :rules="rules.partDesc">
@ -113,7 +113,7 @@
style="width: 221px"
v-model="modalData.phaseInDate"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="请选择日期"
:editable=false>
</el-date-picker>
@ -123,7 +123,7 @@
style="width: 221px"
v-model="modalData.phaseOutDate"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="请选择日期"
:editable=false>
</el-date-picker>
@ -132,8 +132,8 @@
<el-input v-model="modalData.routingRevision" type="number" disabled style="width: 221px"></el-input>
</el-form-item>
<el-form-item>
<el-button v-if="modalData.flag === '1'" :loading="saveHeaderLoading" type="primary" @click="saveRoutingHeader()" style="margin-top: 23px;width: 142px">保存</el-button>
<el-button v-else type="primary" @click="copyRoutingRevision()" style="margin-top: 23px;width: 120px">Copy</el-button>
<el-button v-if="modalData.flag === '1'" :loading="saveHeaderLoading" type="primary" @click="saveRoutingHeader" style="margin-top: 23px;width: 142px">保存</el-button>
<el-button v-else type="primary" @click="copyRoutingRevision" style="margin-top: 23px;width: 120px">Copy</el-button>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">
@ -146,17 +146,18 @@
<el-tab-pane label="Routings" name="routing_detail">
<el-form label-position="top" style="margin-top: -10px">
<el-form-item>
<el-button type="primary" @click="saveRoutingDetail()" style="margin-left: 7px">新增</el-button>
<el-button type="primary" @click="deleteRoutingDetail()">删除</el-button>
<el-button type="primary" @click="updateRoutingDetail()">编辑</el-button>
<el-button v-if="modalData.flag === '2'" type="primary" @click="copyRoutingAlternative()">Copy</el-button>
<el-button v-if="detailData.status === 'Tentative'" type="primary" @click="updateStatusToBuildable()">Buildable</el-button>
<el-button v-if="detailData.status === 'Buildable'" type="primary" @click="updateStatusToObsolete()">Obsolete</el-button>
<el-button type="primary" @click="saveRoutingDetail" style="margin-left: 7px">新增</el-button>
<el-button type="primary" @click="deleteRoutingDetail">删除</el-button>
<el-button type="primary" @click="updateRoutingDetail">编辑</el-button>
<el-button v-if="modalData.flag === '2'" type="primary" @click="copyRoutingAlternative">Copy</el-button>
<el-button v-if="detailData.status === 'Tentative' || detailData.status === 'Obsolete'" type="primary" @click="updateStatusToBuildable">Build</el-button>
<el-button v-if="detailData.status === 'Buildable' && (modalData.effPhaseOutDate == null || modalData.effPhaseOutDate === '')" type="primary" @click="updateStatusToObsolete">Retire</el-button>
<el-button v-if="modalData.flag === '2' && detailData.officialFlag !== 'Y'" type="primary" @click="toBecomeOfficialRouting">转正式Routing</el-button>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="detailData" :rules="rules" style="margin-left: 7px">
<el-form-item :label="'替代编码'">
<el-select v-model="detailData.alternativeNo" @change="alternativeChange()" style="width: 221px">
<el-select v-model="detailData.alternativeNo" @change="alternativeChange" style="width: 221px">
<el-option
v-for = "(i, index) in detailDataList"
:key = "index"
@ -182,8 +183,8 @@
<el-tab-pane label="Routing Tools" name="routing_tool">
<el-form label-position="top" style="margin-top: -10px">
<el-form-item>
<el-button type="primary" @click="saveRoutingTool()" style="margin-left: 7px">新增</el-button>
<el-button type="primary" @click="deleteRoutingTool()">删除</el-button>
<el-button type="primary" @click="saveRoutingTool" style="margin-left: 7px">新增</el-button>
<el-button type="primary" @click="deleteRoutingTool">删除</el-button>
</el-form-item>
</el-form>
<el-table
@ -228,8 +229,8 @@
<el-tab-pane label="Operations" name="routing_sub_detail">
<el-form label-position="top" style="margin-top: 5px">
<el-form-item>
<el-button type="primary" @click="saveComponentModal()" style="margin-left: 7px">新增</el-button>
<el-button type="primary" @click="deleteComponentPart()">删除</el-button>
<el-button type="primary" @click="saveComponentModal" style="margin-left: 7px">新增</el-button>
<el-button type="primary" @click="deleteComponentPart">删除</el-button>
</el-form-item>
</el-form>
<el-table
@ -287,11 +288,6 @@
<el-input v-model="saveDetailData.alternativeDescription" style="width: 221px"></el-input>
</el-form-item>
<el-form-item :label="'状态'" prop="status" :rules="detailRules.status">
<!-- <el-select v-model="saveDetailData.status" style="width: 235px">-->
<!-- <el-option label="暂定" value="Tentative"></el-option>-->
<!-- <el-option label="创建" value="Buildable"></el-option>-->
<!-- <el-option label="销毁" value="Obsolete"></el-option>-->
<!-- </el-select>-->
<el-input v-model="saveDetailData.status" disabled style="width: 221px"></el-input>
</el-form-item>
</el-form>
@ -394,10 +390,10 @@
<!-- <el-input v-model="componentData.operationId" :disabled="componentDisableFlag" style="width: 221px"></el-input>-->
<!-- </el-form-item>-->
<el-form-item :label="'工序编码'" prop="operationNo" :rules="componentRules.operationNo">
<el-input v-model="componentData.operationNo" :disabled="componentDisableFlag" style="width: 221px"></el-input>
<el-input v-model="componentData.operationNo" style="width: 221px"></el-input>
</el-form-item>
<el-form-item :label="'工序名称'" prop="operationName" :rules="componentRules.operationName">
<el-input v-model="componentData.operationName" :disabled="componentDisableFlag" style="width: 221px"></el-input>
<el-input v-model="componentData.operationName" style="width: 221px"></el-input>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="componentData" :rules="componentRules" style="margin-left: 5px">
@ -830,6 +826,7 @@ import {
deleteRoutingTool, // routingTool
copyRouting, // routing
copyAlternative, // alternative
toBecomeOfficialRouting, // Routing
} from '@/api/part/routingManagement.js'
import {
routingSearchAlternative, // routing
@ -912,6 +909,7 @@ export default {
updateBy: '',
printUnit: '',
printUnitName: '',
officialFlag: ''
},
detailData: {
site: this.$store.state.user.site,
@ -934,7 +932,8 @@ export default {
createDate: '',
createBy: '',
updateDate: '',
updateBy: ''
updateBy: '',
officialFlag: ''
},
componentData: {
flag: '',
@ -1016,6 +1015,7 @@ export default {
routingType: '',
alternativeNo: '',
alternativeDescription: '',
operationId: '',
operationNo: '',
operationName: '',
toolId: '',
@ -1064,6 +1064,7 @@ export default {
routingType: '',
alternativeNo: '',
alternativeDescription: '',
operationId: '',
operationNo: '',
operationName: ''
},
@ -1077,6 +1078,7 @@ export default {
routingType: '',
alternativeNo: '',
alternativeDescription: '',
operationId: '',
operationNo: '',
operationName: '',
guidelineSeq: '',
@ -1522,24 +1524,24 @@ export default {
fixed: '',
columnWidth: 120
},
{
userId: this.$store.state.user.name,
functionId: 104003,
serialNumber: '104003Table2MachineNo',
tableId: '104003Table2',
tableName: 'Routing工序表',
columnProp: 'machineNo',
headerAlign: 'center',
align: 'center',
columnLabel: '机台',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 80
},
// {
// userId: this.$store.state.user.name,
// functionId: 104003,
// serialNumber: '104003Table2MachineNo',
// tableId: '104003Table2',
// tableName: 'Routing',
// columnProp: 'machineNo',
// headerAlign: 'center',
// align: 'center',
// columnLabel: '',
// columnHidden: false,
// columnImage: false,
// columnSortable: false,
// sortLv: 0,
// status: true,
// fixed: '',
// columnWidth: 80
// },
{
userId: this.$store.state.user.name,
functionId: 104003,
@ -2264,6 +2266,7 @@ export default {
createBy: this.$store.state.user.name,
printUnit: '',
printUnitName: '',
officialFlag: 'N'
}
this.detailData = {
site: this.$store.state.user.site,
@ -2283,8 +2286,10 @@ export default {
minLotQty: '',
detailNoteText: '',
status: '',
createBy: this.$store.state.user.name
createBy: this.$store.state.user.name,
officialFlag: 'N'
}
this.detailDataList = []
this.subDetailList = []
this.modalDisableFlag = false
this.modalFlag = true
@ -2309,6 +2314,7 @@ export default {
updateBy: this.$store.state.user.name,
printUnit: row.printUnit,
printUnitName: row.printUnitName,
officialFlag: row.officialFlag
}
// routing
queryRoutingDetail(this.modalData).then(({data}) => {
@ -2362,6 +2368,7 @@ export default {
status: 'Tentative',
createDate: '',
createBy: this.$store.state.user.name,
officialFlag: 'N'
}
// routing
queryRoutingHeader(this.modalData).then(({data}) => {
@ -2415,6 +2422,7 @@ export default {
detailNoteText: this.detailData.detailNoteText,
status: this.detailData.status,
updateBy: this.$store.state.user.name,
officialFlag: this.detailData.officialFlag
}
// routing
queryRoutingHeader(this.modalData).then(({data}) => {
@ -2531,6 +2539,7 @@ export default {
routingType: this.modalData.routingType,
alternativeNo: '',
alternativeDescription: '',
operationId: '',
operationNo: '',
operationName: '',
toolId: '',
@ -2556,6 +2565,7 @@ export default {
routingType: row.routingType,
alternativeNo: row.alternativeNo,
alternativeDescription: row.alternativeDescription,
operationId: row.operationId,
operationNo: row.operationNo,
operationName: row.operationName,
toolId: row.toolId,
@ -2764,6 +2774,7 @@ export default {
* @param row
*/
getComponentRowData (row) {
this.routingToolData.operationId = row.operationId
this.routingToolData.operationNo = row.operationNo
this.routingToolData.operationName = row.operationName
this.componentPartModelFlag = false
@ -2969,6 +2980,10 @@ export default {
this.$message.warning('请先选择制造类型!')
return
}
if (this.modalData.phaseOutDate != null && this.modalData.phaseOutDate !== '' && (this.modalData.phaseInDate > this.modalData.phaseOutDate)) {
this.$message.warning('失效日期不能小于生效日期!')
return
}
this.saveHeaderLoading = true
//
saveRoutingHeader(this.modalData).then(({data}) => {
@ -2987,6 +3002,7 @@ export default {
engRevision: data.rows.modalData.engRevision,
typeFlag: data.rows.modalData.typeFlag,
netWeight: data.rows.modalData.netWeight,
officialFlag: data.rows.modalData.officialFlag
}
this.detailDataList = data.rows.detailDataList
this.detailData = data.rows.detailData
@ -3019,7 +3035,8 @@ export default {
phaseInDate: this.dayjs(new Date()).format('YYYY-MM-DD'),
phaseOutDate: '',
previousVersion: {},
createBy: this.$store.state.user.name
createBy: this.$store.state.user.name,
officialFlag: 'N'
}
this.copyRoutingModelFlag = true
},
@ -3077,8 +3094,9 @@ export default {
forStdLotByDay: '',
forLotByDay: '',
minLotQty: '',
detailNoteText: '',
detailNoteText: this.detailData.detailNoteText,
status: 'Tentative',
officialFlag: 'N',
previousVersion: {},
createBy: this.$store.state.user.name
}
@ -3097,6 +3115,7 @@ export default {
routingType: this.modalData.routingType,
alternativeNo: this.detailData.alternativeNo,
alternativeDescription: this.detailData.alternativeDescription,
operationId: row.operationId,
operationNo: row.operationNo,
operationName: row.operationName
}
@ -3136,6 +3155,7 @@ export default {
routingType: this.workGuidelineData.routingType,
alternativeNo: this.workGuidelineData.alternativeNo,
alternativeDescription: this.workGuidelineData.alternativeDescription,
operationId: this.workGuidelineData.operationId,
operationNo: this.workGuidelineData.operationNo,
operationName: this.workGuidelineData.operationName,
guidelineSeq: '',
@ -3171,6 +3191,7 @@ export default {
routingType: row.routingType,
alternativeNo: row.alternativeNo,
alternativeDescription: row.alternativeDescription,
operationId: row.operationId,
operationNo: row.operationNo,
operationName: row.operationName,
guidelineSeq: row.guidelineSeq,
@ -3310,6 +3331,7 @@ export default {
this.copyAlternativeData.previousVersion = this.detailData
copyAlternative(this.copyAlternativeData).then(({data}) => {
if (data && data.code === 0) {
this.detailDataList = data.rows.detailDataList
this.copyAlternativeModelFlag = false
this.$message({
message: '操作成功',
@ -3508,6 +3530,25 @@ export default {
}
})
},
// RoutingRouting
toBecomeOfficialRouting () {
toBecomeOfficialRouting(this.detailData).then(({data}) => {
if (data && data.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {}
})
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
})
},
/**
* 新增 routingTool
*/

Loading…
Cancel
Save