| | |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="零件" prop="partId"> |
| | | <el-tooltip class="item" effect="dark" :content="partStr" > |
| | | <el-input v-model="partStr" placeholder="" readonly> |
| | | <el-button |
| | | v-if="!this.dataForm.id" |
| | |
| | | @click="openRoutingDialog()" |
| | | ></el-button> |
| | | </el-input> |
| | | </el-tooltip> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="10"> |
| | | <el-col :span="3"> |
| | | <el-col :span="4"> |
| | | <el-form-item label="需求数量" prop="qtyRequired"> |
| | | <el-input |
| | | v-model="dataForm.qtyRequired" |
| | |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <el-col :span="4"> |
| | | <el-form-item label="完成数量" prop="qtyFinished"> |
| | | <el-input-number |
| | | style= "width: 90%" |
| | |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> --> |
| | | <el-col :span="6"> |
| | | <el-col :span="5"> |
| | | <el-form-item label="备注" prop="remark"> |
| | | <el-input v-model="dataForm.remark" placeholder=""></el-input> |
| | | <el-tooltip class="item" effect="dark" :content="dataForm.remark"> |
| | | <el-input v-model="dataForm.remark" placeholder=""> |
| | | </el-input> |
| | | </el-tooltip> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-col :span="5"> |
| | | <el-form-item label="制造属性" prop="manufactureAttr"> |
| | | <el-select |
| | | v-model="dataForm.manufactureAttr" |
| | |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="10"> |
| | | <el-form-item label="工艺文件" prop="technologyDocumentName"> |
| | | <el-tooltip class="item" effect="dark" :content="dataForm.technologyDocumentName"> |
| | | <el-input v-model="dataForm.technologyDocumentName" placeholder=""> |
| | | </el-input> |
| | | </el-tooltip> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | </el-switch> |
| | | </el-form-item> |
| | | </el-col> --> |
| | | |
| | | |
| | | </div> |
| | | <div class="productorder-detail"> |
| | | <el-card class="productorder-list"> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row> |
| | | <el-col :span="24" class="productorder-operates-col"> |
| | | <el-card class="productorder-operates"> |
| | | <el-card class="productorder-operates" > |
| | | <!-- <el-row> |
| | | <el-col :span="2" class="frame1">序号 |
| | | </el-col> |
| | | <el-col :span="4" class="frame1">工序号 |
| | | </el-col> |
| | | <el-col :span="5" class="frame1">工序描述 |
| | | </el-col> |
| | | <el-col :span="9" class="frame1">零件 |
| | | </el-col> |
| | | <el-col :span="3" class="frame1">操作 |
| | | </el-col> |
| | | </el-row> --> |
| | | <el-table |
| | | id="operationTable" |
| | | ref="operationTable" |
| | | class="basic-template-table" |
| | | :data="operations" |
| | | style="width: 100%;" |
| | | height="593px" |
| | | border |
| | | highlight-current-row |
| | | :default-sort="{ prop: 'operationOrder' }" |
| | | @row-click="operationRowClick" |
| | | > |
| | | <el-table-column |
| | | prop="operationOrder" |
| | | min-width="50" |
| | | label="序号" |
| | | ></el-table-column> |
| | | > |
| | | <template slot-scope="scope"> |
| | | <div style="display:flex"> |
| | | <span style="width:20px;"> |
| | | <i class="icon aufontAll h-icon-all-drag"></i |
| | | ></span> |
| | | <span>{{ scope.row.operationOrder }}</span> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="operationNo" |
| | | header-align="center" |
| | | align="center" |
| | | min-width="100" |
| | | label="工序号" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="operationName" |
| | | header-align="center" |
| | | align="center" |
| | | min-width="100" |
| | | label="工序描述" |
| | | ></el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="partName" |
| | | header-align="center" |
| | | align="center" |
| | | min-width="100px" |
| | | label="零件" |
| | | ></el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="remark" |
| | | header-align="center" |
| | | align="center" |
| | | min-width="50" |
| | | label="操作" |
| | | > |
| | | <template slot-scope="scope"> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <!-- <zttdraggable |
| | | :forceFallback="true" |
| | | :list="operations" |
| | | :animation="200" |
| | | fallbackClass="fallbackStyle" |
| | | ghostClass="item_ghost" |
| | | @end="dragEnd" |
| | | :default-sort="{ prop: 'operationOrder' }" |
| | | @choose="operationRowClick" |
| | | > |
| | | <div |
| | | :class="{ dragItem: true, active: x.active }" |
| | | v-for="(x, i) in operations" |
| | | :key="i" |
| | | > |
| | | <el-row> |
| | | <el-col :span="2" class="frame">{{ i+1 }} |
| | | </el-col> |
| | | <el-col :span="4" class="frame">{{ x.operationNo }} |
| | | </el-col> |
| | | <el-col :span="5" class="frame">{{ x.operationName }} |
| | | </el-col> |
| | | <el-col :span="9" class="frame">{{ x.partName }} |
| | | </el-col> |
| | | <el-col :span="3" class="frame"> |
| | | <el-button |
| | | type="text" |
| | | size="mini" |
| | | @click="openOrderOperation(x)" |
| | | >编辑 |
| | | </el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </zttdraggable> --> |
| | | </el-card> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | </el-table> |
| | | </el-card> |
| | | </el-tab-pane> |
| | | <el-tab-pane |
| | | <!-- <el-tab-pane |
| | | label="检测标准" |
| | | key="tb1" |
| | | id="tb1" |
| | |
| | | :moRoutingOperationId="moRoutingOperationId" |
| | | @refreshTestStandardInfo="refreshTestStandardInfo" |
| | | ></testStandardTable> |
| | | </el-tab-pane> |
| | | </el-tab-pane> --> |
| | | <!-- <el-tab-pane |
| | | label="抽检规则" |
| | | key="tb2" |
| | |
| | | label="单位" |
| | | /> |
| | | |
| | | <el-table-column |
| | | <!-- <el-table-column |
| | | prop="discNum" |
| | | width="150" |
| | | header-align="center" |
| | | align="center" |
| | | label="盘数(盘)" |
| | | /> |
| | | /> --> |
| | | |
| | | <!-- <el-table-column |
| | | prop="version" |
| | |
| | | /> |
| | | </div> |
| | | </template> |
| | | <style> |
| | | <style lang="scss"> |
| | | .frame{ |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | height: 100px; |
| | | // border-width: 1px; |
| | | // border-color: rgb(129, 129, 129); |
| | | // border-style: solid; |
| | | font-size: 15px; |
| | | } |
| | | .frame1{ |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | height: 50px; |
| | | // border-width: 1px; |
| | | // border-color: rgb(129, 129, 129); |
| | | // border-style: solid; |
| | | font-size: 15px; |
| | | } |
| | | .productorder-basic { |
| | | background-color: #fff; |
| | | height: 150px; |
| | |
| | | .productorder-operates { |
| | | height: 605px; |
| | | border: 1px solid #ddd; |
| | | overflow: auto; |
| | | } |
| | | |
| | | .productorder-params-template { |
| | |
| | | .productorder-operates-col { |
| | | margin-bottom: 0px; |
| | | } |
| | | .basic-template-table .el-table__body .el-table__row td:first-child .cell { |
| | | padding-left: 0px; |
| | | padding-right: 0px; |
| | | } |
| | | |
| | | .basic-template-table .el-table__body .el-table__row:hover { |
| | | cursor: move; |
| | | } |
| | | |
| | | .basic-template-table .el-table__body .el-table__row:hover .icon { |
| | | display: inline-block; |
| | | } |
| | | |
| | | .basic-template-table .el-table__body .el-table__row .icon { |
| | | color: rgba(0, 0, 0, 0.45); |
| | | font-size: 12px; |
| | | line-height: 18px; |
| | | display: none; |
| | | } |
| | | |
| | | .aufontAll { |
| | | font-family: aufontAll !important; |
| | | font-size: 14px; |
| | | font-style: normal; |
| | | -webkit-font-smoothing: antialiased; |
| | | -moz-osx-font-smoothing: grayscale; |
| | | } |
| | | </style> |
| | | |
| | | <style scoped> |
| | | /deep/ .el-input-number.is-without-controls .el-input__inner { |
| | | text-align: start; |
| | | } |
| | | |
| | | </style> |
| | | <script> |
| | | import { |
| | |
| | | addRoutingTemplateParamLedForOrder, |
| | | updateMoBom, |
| | | delMoBom, |
| | | bomSelectChange |
| | | bomSelectChange, |
| | | changeOrder, |
| | | } from '@/api/plan/manufacturingorder' |
| | | import { qryMoSamplingRule, delMoSamplingRule } from '@/api/plan/mosamplingrule' |
| | | import { |
| | |
| | | import spotCheckRule from './orderSpotCheckRule' |
| | | import spotCheckRuleEdit from './orderSpotCheckRuleEdit' |
| | | import { mapGetters } from 'vuex' |
| | | |
| | | import zttdraggable from 'vuedraggable' |
| | | export default { |
| | | components: { |
| | | CustomerOrder, |
| | |
| | | operationDialog, |
| | | insertOperationDialog, |
| | | spotCheckRule, |
| | | spotCheckRuleEdit |
| | | spotCheckRuleEdit, |
| | | zttdraggable |
| | | }, |
| | | |
| | | data() { |
| | |
| | | endDate: null, |
| | | manufactureAttr: 'N', |
| | | isReportOperation: false, |
| | | outPutBatchList: [] |
| | | outPutBatchList: [], |
| | | technologyDocumentId: null, |
| | | technologyDocumentName: null, |
| | | }, |
| | | currentRow: [], |
| | | currentRouting: {}, // 当前选择的工艺 |
| | |
| | | operationTemplateList: [], // 参数集 |
| | | templateParamList: [], // 参数 |
| | | dataRule: { |
| | | technologyDocumentName:[ |
| | | { required: true, message: '工艺文件不能为空', trigger: 'blur' } |
| | | ], |
| | | workshopTypeCode: [ |
| | | { required: true, message: '车间订单类型不能为空', trigger: 'blur' } |
| | | ], |
| | |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.rowDrop() |
| | | window.addEventListener( |
| | | 'hashchange', |
| | | () => { |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | rowDrop() { |
| | | const that = this |
| | | const tbody = document.querySelector( |
| | | '#operationTable .el-table__body-wrapper tbody' |
| | | ) |
| | | Sortable.create(tbody, { |
| | | // 结束拖拽 |
| | | onEnd({ newIndex, oldIndex }) { |
| | | if (newIndex > oldIndex) { |
| | | // 下移 |
| | | that.operations |
| | | .filter((e) => e.operationOrder == oldIndex + 1) |
| | | .forEach((e) => (e.operationOrder = 'x')) |
| | | that.operations |
| | | .filter((e) => e.operationOrder > oldIndex + 1 && e.operationOrder <= newIndex + 1) |
| | | .forEach((e) => (e.operationOrder = e.operationOrder - 1)) |
| | | that.operations |
| | | .filter((e) => e.operationOrder == 'x') |
| | | .forEach((e) => (e.operationOrder = newIndex + 1)) |
| | | } else if (oldIndex > newIndex) { |
| | | // 上移 |
| | | that.operations |
| | | .filter((e) => e.operationOrder == oldIndex + 1) |
| | | .forEach((e) => (e.operationOrder = 'x')) |
| | | that.operations |
| | | .filter((e) => e.operationOrder < oldIndex + 1 && e.operationOrder >= newIndex + 1) |
| | | .forEach((e) => (e.operationOrder = e.operationOrder + 1)) |
| | | that.operations |
| | | .filter((e) => e.operationOrder == 'x') |
| | | .forEach((e) => (e.operationOrder = newIndex + 1)) |
| | | } |
| | | // 拖拽结束后,保存新的排序 |
| | | let data = that.operations.map(el =>{ |
| | | return { |
| | | id:el.id, |
| | | operationOrder:el.operationOrder, |
| | | } |
| | | }) |
| | | changeOrder(data).then().catch(error => { |
| | | console.error(error) |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | dragEnd(e){ |
| | | this.operations.forEach((e, i) => { |
| | | e.index = i + 1 |
| | | e.operationOrder = i+1 |
| | | }) |
| | | console.log(this.operations,"拖拽结束kk"); |
| | | this.dragEndstart() |
| | | }, |
| | | dragEndstart(){ |
| | | let data = this.operations.map(el =>{ |
| | | return { |
| | | id:el.id, |
| | | operationOrder:el.operationOrder, |
| | | } |
| | | }) |
| | | changeOrder(data).then((res) =>{ |
| | | }).catch(error => { |
| | | console.error(error) |
| | | }); |
| | | }, |
| | | getSysParam(paramKey) { |
| | | getSysParam(paramKey).then((response) => { |
| | | var paramVal = response.data.data |
| | |
| | | checkPart(value, this.dataForm.workshopTypeCode) |
| | | .then((response) => { |
| | | const manufacturingOrderDTO = response.data.data |
| | | /* this.dataForm.routingList = manufacturingOrderDTO.routingList.filter( |
| | | (e) => e.bomTypeDb === this.dataForm.workshopTypeCode |
| | | ) */ |
| | | this.dataForm.routingList = manufacturingOrderDTO.routingList |
| | | /* this.dataForm.bomList = manufacturingOrderDTO.bomList.filter( |
| | | (e) => e.bomTypeDb === this.dataForm.workshopTypeCode |
| | | ) */ |
| | | this.dataForm.bomList = manufacturingOrderDTO.bomList |
| | | this.dataForm.technologyRoutingId = |
| | | manufacturingOrderDTO.technologyRoutingId |
| | |
| | | } else { |
| | | this.dataForm.bomRoot = null |
| | | } |
| | | |
| | | if (this.dataForm.id) { |
| | | putManufacturingOrder(this.dataForm) |
| | | .then((response) => { |
| | |
| | | this.showRouting = true |
| | | }, |
| | | selectRouting(param) { |
| | | console.log(param); |
| | | if (param) { |
| | | this.dataForm.partNo = param.partNo |
| | | this.dataForm.partName = param.partName |
| | | this.dataForm.partId = param.partId |
| | | this.dataForm.technologyDocumentId = param.id |
| | | this.dataForm.technologyDocumentName = param.name |
| | | this.$refs.dataForm.validateField('partId', (valid) => {}) |
| | | } |
| | | }, |
| | |
| | | }) |
| | | }, |
| | | // 2.tabs-工艺路线 |
| | | //工艺文件选择 |
| | | |
| | | // 工艺路线选择 |
| | | routingSelectChanged(routingId) { |
| | | this.currentRouting = this.dataForm.routingList.find( |
| | |
| | | }, |
| | | // 点击工艺工序行触发校验工艺是否修改,若修改则不可操作,需先保存,若未修改,则可查询出对应的参数集 |
| | | operationRowClick(row) { |
| | | // const row = this.operations[event.oldIndex] |
| | | console.log(row); |
| | | if (this.dataForm.id != null && this.dataForm.id !== 0) { |
| | | this.routingOperationId = row.technologyRoutingOperationId |
| | | this.moRoutingOperationId = row.id |
| | |
| | | }, |
| | | // 保存所有参数的修改 |
| | | saveAllParamChange() { |
| | | this.templateParamList.forEach(e=>{ |
| | | if(e.paramValue!=null){ |
| | | e.paramValue=e.paramValue.replace(',',',').replace('(','(').replace(')',')') |
| | | if (!isNaN(e.paramValue)) { |
| | | e.paramValue='='+e.paramValue |
| | | } |
| | | } |
| | | }) |
| | | const paramJson = { routingOperationParam: this.templateParamList } |
| | | putRoutingTemplateParamForOrder(paramJson).then((response) => { |
| | | const data = response.data |