From 2902cd8d2b36f66ea5162ae91d9a5a51912758fa Mon Sep 17 00:00:00 2001 From: zhuo <2089219845@qq.com> Date: 星期一, 31 三月 2025 16:04:04 +0800 Subject: [PATCH] Merge branch 'dev_test' into dev --- src/views/business/materialOrder/copperOrder.vue | 321 +++++++++++++++++++++++----------------------------- 1 files changed, 143 insertions(+), 178 deletions(-) diff --git a/src/views/business/materialOrder/copperOrder.vue b/src/views/business/materialOrder/copperOrder.vue index 3557623..7613887 100644 --- a/src/views/business/materialOrder/copperOrder.vue +++ b/src/views/business/materialOrder/copperOrder.vue @@ -46,7 +46,7 @@ <el-col :span="6"> <el-form-item class="addObj-form-item" label="妫�楠岀被鍨�:"> <el-select v-model="addObj.orderType" clearable disabled size="small" style="width: 100%"> - <el-option v-for="(a, ai) in checkType" :key="ai" :label="a.label" :value="a.value"></el-option> + <el-option v-for="(a, ai) in dict.type.check_type" :key="ai" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> </el-col> @@ -99,17 +99,17 @@ </el-col> <el-col :span="6"> <el-form-item class="addObj-form-item" label="澶囨敞:"> - <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2}" :placeholder="active>1 ? '' : '璇疯緭鍏�'" :readonly="active>1" clearable + <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2}" :placeholder="active>1 ? '' : '璇疯緭鍏�'" :disabled="active>1" clearable size="small" type="textarea"></el-input> </el-form-item> </el-col> </el-row> </el-form> </div> - <div style="display: flex;justify-content: space-between;"> + <div style="display: flex;justify-content: space-between;background-color: #F5F7FB;margin-bottom: 6px"> <div v-if="active==1"> <el-form :inline="true" :model="addObj1" label-width="90px"> - <el-form-item label="鏍峰搧鍨嬪彿:" style="margin-bottom: 6px"> + <el-form-item label="鏍峰搧鍨嬪彿:" style="margin-bottom: 6px;margin-top: 6px"> <el-select v-model="model" :placeholder="active>1 ? '' : '璇疯緭鍏�'" allow-create clearable default-first-option filterable size="small" @@ -118,7 +118,7 @@ </el-option> </el-select> </el-form-item> - <el-form-item label="妫�楠屾爣鍑�:"> + <el-form-item label="妫�楠屾爣鍑�:" style="margin-bottom: 6px;margin-top: 6px"> <el-select v-model="standardMethodListId" :loading="methodLoad" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable size="small" @change="changeStandardMethodListId" @focus="methodFocus"> @@ -128,12 +128,13 @@ </el-form-item> </el-form> </div> - <div style="margin-top: 3px"> - <el-button v-show="active==1" :disabled="sampleList.length === 2" size="small" type="primary" @click="handleSplitCountNum">鎷嗗垎</el-button> + <div style="margin-bottom: 6px;margin-top: 6px"> + <el-button v-show="active==1" :disabled="sampleList.length === 3" size="small" type="primary" @click="handleSplitCountNum">鎷嗗垎</el-button> </div> </div> <div style="height: auto;"> <el-table ref="sampleTable" :data="sampleList" class="el-table sampleTable" highlight-current-row + :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border max-height="400px" tooltip-effect="dark" @selection-change="selectSample" @row-click="rowClick"> <el-table-column v-if="active==1" :selectable="selectable" type="selection" width="60"></el-table-column> <el-table-column align="center" label="搴忓彿" type="index" width="65"></el-table-column> @@ -192,13 +193,14 @@ size="small" style="width: 80%;"></el-input-number> </template> </el-table-column> - <el-table-column align="center" label="寰呮椤规暟閲�" prop="proNum" width="105"></el-table-column> + <el-table-column align="center" label="寰呮椤规暟閲�" prop="quantity" width="105"></el-table-column> </el-table> <el-table ref="productTable" v-loading="getProductLoad" :data="productList" :row-class-name="tableRowClassName" class="el-table" + :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border max-height="400px" style="margin-bottom: 10px;" tooltip-effect="dark" @select="selectOne" @selection-change="selectProduct" @select-all="handleAll"> <el-table-column v-if="active==1" :selectable="selectable" type="selection" width="65"></el-table-column> - <el-table-column v-if="PROJECT === '瑁呭鐢电紗'" label="妫�楠岄」鍒嗙被" min-width="140" prop="inspectionItemClass" show-overflow-tooltip></el-table-column> + <el-table-column label="妫�楠岄」鍒嗙被" min-width="140" prop="inspectionItemClass" show-overflow-tooltip></el-table-column> <el-table-column label="妫�楠岄」" min-width="140" prop="inspectionItem" show-overflow-tooltip> <template slot="header" slot-scope="scope"> <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px"> @@ -383,14 +385,12 @@ </span> </el-dialog> <el-dialog - :close-on-click-modal="false" - :close-on-press-escape="false" - :show-close="false" :visible.sync="noNeedCheckDia" title="鍏嶆鎻愮ず" width="32%"> <span>纭鍏嶆褰撳墠妫�楠屽崟锛�</span> <span slot="footer" class="dialog-footer"> + <el-button :loading="noNeedCheckLoad" @click="noNeedCheckDia = false">鍙� 娑�</el-button> <el-button :loading="noNeedCheckLoad" type="primary" @click="handleNoNeedCheck">纭� 瀹�</el-button> </span> </el-dialog> @@ -398,8 +398,18 @@ </template> <script> -// import ValueTable from '../../tool/value-table.vue' import Vue from 'vue' +import { + addRawCopperOrder, + getInsOrder, + getUserNow, + addRawCopperOrderExemptionOrder, + selectStandardTreeList2, + selectsStandardMethodByFLSSM, + selectInsOrderTemplate, + selectStandardProductList, + selectStandardMethodEnum +} from "@/api/business/rawMaterialOrder"; var validateSixDecimalPositives = (rule, value, callback) => { if (value == 0 || value == null) { @@ -412,16 +422,13 @@ } export default { + name: 'CopperOrder', components: {}, - props: { - currentId: { - type: Number, - default: () => 0 - } - }, + dicts: ['check_type', 'urgency_level'], data() { return { active: '', + currentId: '', sampleSelectionList: [],//鏍峰搧琛ㄦ牸閫変腑鏁版嵁 editTable:[], noNeedCheckLoad: false, // 鍏嶆鎸夐挳loading @@ -432,15 +439,16 @@ custom: null, company: null, userId: null, + companyId: '', type: '0', // 绱ф�ョ▼搴� code: null, remark: null, // 澶囨敞 mating: 0, sample: null, // 鏍峰搧鍚嶇О appointed: '', // 绾﹀畾鏃堕棿 - buyUnitMeas: '', // 鍗曚綅 - updateBatchNo: '', // 鎵规鍙� - partDetail: '', // 瑙勬牸鍨嬪彿 + buyUnitMeas: null, // 鍗曚綅 + updateBatchNo: null, // 鎵规鍙� + partDetail: null, // 瑙勬牸鍨嬪彿 declareDate: '', // 鍒拌揣鏃堕棿 factory: null, laboratory: null, @@ -453,8 +461,8 @@ processing: 1, isLeave: 0, orderType: '杩涘巶妫�楠�', // 妫�楠岀被鍨� - supplierName: '', // 鏉愭枡鍘傚 - qtyArrived: '', // 鍒拌揣鏁伴噺 + supplierName: null, // 鏉愭枡鍘傚 + qtyArrived: null, // 鍒拌揣鏁伴噺 }, sample: { sampleCode: null, @@ -468,7 +476,6 @@ isLeave: 0, unit: null }, - type: [], selectStandardTree: false, search: null, list: [], @@ -506,14 +513,13 @@ bsm2: false, bsm2Val: null, bsm2Dia: false, - bsm2Val2: [], - bsm2Val3: [], bsmRow3: null, bsm3Val: null, bsm3Dia: false, // total: 0, RTS: '', totalArr: [], + addObj1: {}, model: null, standardMethodListId: null, symbolList:['RTS'], @@ -524,7 +530,6 @@ isShowInput: false, temId: '', selectiveEcho: [], // 妫�楠屼笅鍗曠殑鏃跺�欏嬀閫夋楠岄」鐩�,濡傛灉浣跨敤绛涢�夋彁浜ゆ樉绀烘楠岄」鐩负绌� 鍥炴樉鍒楄〃 - checkType: [], // 妫�楠岀被鍨嬮�夐」鏁版嵁 addObjRules: { // 琛ㄥ崟鏍¢獙瑙勫垯 sample: [ { required: true, message: '璇烽�夋嫨鏍峰搧', trigger: 'change' } @@ -551,7 +556,7 @@ { required: true, message: '璇峰~鍐欒鏍煎瀷鍙�', trigger: 'blur' } ], declareDate: [ - { required: true, message: '璇峰~鍐欏埌璐ф椂闂�', trigger: 'blur' } + { required: true, message: '璇峰~鍐欏埌璐ф椂闂�', trigger: 'change' } ] }, noNeedCheckDia: false, @@ -579,23 +584,6 @@ } } }, - productListSelected: { - deep: true, - handler(val) { - if(val.length>0){ - for(let i =0 ; i< val.length; i++){ - if(val[i].inspectionItem.includes('鏉惧绠�')){ - this.inspectionItemST = 1 - break; - }else{ - this.inspectionItemST = 0 - } - } - }else{ - this.inspectionItemST = 0 - } - } - }, sampleList: { deep: true, handler(val) { @@ -613,14 +601,21 @@ }, mounted() { this.active = this.$route.query.active - this.selectEnumByCategoryForType() - this.getUserNow() - this.selectStandardTreeList() - this.selectStandardMethods() - this.selectCheckType() // 鏌ヨ妫�楠岀被鍨� - this.getInfo() // 鑾峰彇鏁版嵁 + this.currentId = this.$route.query.currentId + this.getInfoRow(); + }, + activated() { + this.active = this.$route.query.active + this.currentId = this.$route.query.currentId + this.getInfoRow(); }, methods: { + getInfoRow() { + this.getUserNowInfo() + this.selectStandardTreeList() + this.selectStandardMethods() + this.getInfo() // 鑾峰彇鏁版嵁 + }, // 鎷嗗垎 handleSplitCountNum () { this.sample.joinName = null @@ -642,7 +637,6 @@ item.quantity = 1 }) this.count++ - this.computationalPairing(this.sampleList.length) }, noNeedCheck () { this.$refs['addObj'].validate((valid) => { @@ -679,7 +673,6 @@ if (projectNum!=0){ this.$message.error('鍏嶆涓嶅彲閫夋嫨妫�楠岄」') } else { - const pairing = [] let trees = this.selectTree.split(" - ") if (trees.length < 3) { this.$message.error('鏈�夋嫨瀵硅薄') @@ -695,34 +688,35 @@ } this.addObj.model = (trees[4] == undefined ? null : trees[4]) this.noNeedCheckLoad = true - this.$axios.post(this.$api.rawMaterialOrder.addRawCopperOrderExemptionOrder, { - str: JSON.stringify({ - insOrder: this.addObj, - list: JSON.stringify(sampleList.map(a => { - if (a.modelNum) { - // 鏍规嵁x鍙峰垽鏂瀷鍙峰弬鏁颁笌鏍峰搧鍨嬪彿鐨勬嫾鎺ヤ綅缃� - // 渚嬪脳4锛屽氨涓�500ML脳4锛�4脳锛屽氨涓�4脳500ML - const index = a.modelNum.indexOf('脳') - if (index === 0) { - a.model = a.model + a.modelNum - } else if (index === -1) { - a.model = a.model + '-' + a.modelNum - } else { - a.model = a.modelNum + a.model - } + addRawCopperOrderExemptionOrder({ + copperInsOrder: this.addObj, + sampleList: sampleList.map(a => { + if (a.insProduct.length > 0) { + a.insProduct.forEach(c => { + delete c.id + }) + } + if (a.modelNum) { + // 鏍规嵁x鍙峰垽鏂瀷鍙峰弬鏁颁笌鏍峰搧鍨嬪彿鐨勬嫾鎺ヤ綅缃� + // 渚嬪脳4锛屽氨涓�500ML脳4锛�4脳锛屽氨涓�4脳500ML + const index = a.modelNum.indexOf('脳') + if (index === 0) { + a.model = a.model + a.modelNum + } else if (index === -1) { + a.model = a.model + '-' + a.modelNum } else { - a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum)) + a.model = a.modelNum + a.model } - a.insProduct = a.insProduct.filter(b=>b.state === 1) - return a - })), - pairing: JSON.stringify(pairing) + } else { + a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum)) + } + a.insProduct = a.insProduct.filter(b=>b.state === 1) + return a }) }).then(res => { this.noNeedCheckLoad = false - if (res.code == 201) return this.$message.success('宸叉彁浜�') - this.$parent.playOrder(0) + this.closeOpenPage() }).catch(e=>{ this.noNeedCheckLoad = false }) @@ -733,16 +727,15 @@ if (this.active != 1) { // 鏌ョ湅娴佺▼ // 璇锋眰鎺ュ彛锛屽洖鏄炬暟鎹� - this.$axios.post(this.$api.insOrder.getInsOrder, { - orderId: this.currentId - }).then(res => { + getInsOrder({orderId: this.currentId}).then(res => { this.addObj = { ...res.data.insOrder } - this.addObj.qtyArrived = res.data.insOrderTemplate.qtyArrived - this.addObj.buyUnitMeas = res.data.insOrderTemplate.buyUnitMeas - this.addObj.updateBatchNo = res.data.insOrderTemplate.updateBatchNo - this.addObj.supplierName = res.data.insOrderTemplate.supplierName + this.$set(this.addObj, 'qtyArrived', res.data.insOrderTemplate.qtyArrived) + this.$set(this.addObj, 'buyUnitMeas', res.data.insOrderTemplate.buyUnitMeas) + this.$set(this.addObj, 'updateBatchNo', res.data.insOrderTemplate.updateBatchNo) + this.$set(this.addObj, 'supplierName', res.data.insOrderTemplate.supplierName) + this.$set(this.addObj, 'declareDate', res.data.insOrderTemplate.declareDate) this.addObj.type = String(this.addObj.type) this.sampleList = this.HaveJson(res.data.sampleProduct); this.getProNum() @@ -757,13 +750,6 @@ }) }) } - }, - selectCheckType() { - this.$axios.post(this.$api.enums.selectEnumByCategory, { - category: "妫�楠岀被鍨�" - }).then(res => { - this.checkType = res.data - }) }, //鐗规畩鍊煎~鍐欏鐞� inputValueHandler(row,index){ @@ -825,13 +811,6 @@ }) }) } - }, - selectEnumByCategoryForType() { - this.$axios.post(this.$api.enums.selectEnumByCategory, { - category: "绱ф�ョ▼搴�" - }).then(res => { - this.type = res.data - }) }, containsValue(str) { if(str){ @@ -911,10 +890,6 @@ this.$message.error('璇烽�夋嫨妫�楠屾爣鍑�') return } - // if (!this.sampleList.every(m => m.quantity)) { - // this.$message.error('璇烽�夋嫨寰呮椤规暟閲�') - // return - // } const sampleList = this.HaveJson(this.sampleList) sampleList.forEach(item => { item.quantity = 1 @@ -1156,43 +1131,40 @@ }, saveMethod(sampleList){ this.saveLoad = true - this.$axios.post(this.$api.insOrder.addRawCopperOrder, { - str: JSON.stringify({ - insOrder: this.addObj, - list: JSON.stringify(sampleList.map(a => { - if (this.PROJECT === '瑁呭鐢电紗') { - if (a.modelNum) { - const index = a.modelNum.indexOf('脳') - if (index === 0) { - a.model = a.model + a.modelNum - } else if (index === -1) { - a.model = a.model + '-' + a.modelNum - } else { - a.model = a.modelNum + a.model - } - } else { - a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum)) - } + addRawCopperOrder({ + copperInsOrder: this.addObj, + sampleList: sampleList.map(a => { + if (a.insProduct.length > 0) { + a.insProduct.forEach(c => { + delete c.id + }) + } + if (a.modelNum) { + const index = a.modelNum.indexOf('脳') + if (index === 0) { + a.model = a.model + a.modelNum + } else if (index === -1) { + a.model = a.model + '-' + a.modelNum } else { - a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum)) + a.model = a.modelNum + a.model } - a.insProduct = a.insProduct.filter(b=>b.state === 1) - return a - })), - pairing: JSON.stringify(this.bsm2Val2) + } else { + a.model = a.model + ((a.modelNum == null || a.modelNum == '' || a.modelNum == 'null') ? '' : ('-' + a.modelNum)) + } + a.insProduct = a.insProduct.filter(b=>b.state === 1) + return a }) }).then(res => { this.saveLoad = false - if (res.code == 201) return this.$message.success('宸叉彁浜�') this.bsm3Dia = false; - this.$parent.playOrder(0) + this.closeOpenPage() }).catch(e=>{ this.saveLoad = false }) }, - getUserNow() { - this.$axios.get(this.$api.user.getUserNow).then(res => { + getUserNowInfo() { + getUserNow().then(res => { let selects = res.data if (selects == null) return this.addObj.userId = selects.id @@ -1201,15 +1173,12 @@ this.addObj.code = selects.code this.addObj.phone = selects.phone this.addObj.companyId = selects.departId - if(this.active==1){ - this.selectInsOrderTemplate() - } + // if(this.active==1){ + // this.selectInsOrderTemplateInfo() + // } }) }, getProNum() { - this.sampleSelectionList.forEach((m, i) => { - Vue.set(this.sampleSelectionList[i], 'proNum', m.insProduct.filter(a => a.state == 1).length) - }) this.$refs.sampleTable.doLayout() }, searchFilter() { @@ -1260,7 +1229,7 @@ }, selectStandardTreeList() { this.selectStandardTreeLoading = true - this.$axios.get(this.$api.standardTree.selectStandardTreeList2).then(res => { + selectStandardTreeList2().then(res => { this.list = res.data this.list.forEach(a => { this.expandedKeys.push(a.label) @@ -1310,18 +1279,14 @@ }, selectsStandardMethodByFLSSM() { this.methodLoad = true - this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, { - tree: this.selectTree - }).then(res => { + selectsStandardMethodByFLSSM({tree: this.selectTree}).then(res => { this.methodLoad = false try { if (res.data.standardMethodList.length == 0 && this.selectTree.split('-').length == 5) { let arr = this.selectTree.split('-') let arr0 = arr.slice(0, arr.length - 1) let selectTree = arr0.join('-').substring(0, arr0.join('-').length - 1) - this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, { - tree: selectTree - }).then(ress => { + selectsStandardMethodByFLSSM({tree: selectTree}).then(ress => { this.methods = ress.data.standardMethodList }) } else { @@ -1350,8 +1315,6 @@ this.sampleList.push(this.HaveJson(this.sample)) // this.count++ } - this.computationalPairing(this.sampleList.length) - this.bsm2Val2 = this.HaveJson(this.bsm2Val3) }, selectSample(val) { this.sampleIds = [] @@ -1481,25 +1444,17 @@ backtrack([], nums); return result; }, - computationalPairing(n) { - const nums = []; - for (let i = 1; i <= n; i++) { - nums.push(i); - } - this.bsm2Val3 = this.HaveJson(this.permute(nums)) - }, tableRowClassName({row, rowIndex}) { if (row.state === 0) { return ''; } return 'warning-row'; }, - selectInsOrderTemplate() { - this.$axios.get(this.$api.insOrder.selectInsOrderTemplate+'?company='+this.addObj.company).then(res => { - if (res.code == 201) return - this.templates = res.data - }) - }, + // selectInsOrderTemplateInfo() { + // selectInsOrderTemplate({company: this.addObj.company}).then(res => { + // this.templates = res.data + // }) + // }, methodChange(val, row) { if (val === null || val === '') return if (this.sampleList.length > 1) { @@ -1519,15 +1474,11 @@ this.getProductLoad = true let selectTreeList = this.selectTree.split(" - ") this.addObj.model&&(selectTreeList[selectTreeList.length - 1] = this.addObj.model) - this.$axios.post(this.$api.standardTree.selectStandardProductList, { + selectStandardProductList({ model: this.addObj.model?this.addObj.model:row.model, modelNum: row.modelNum, standardMethodListId: val, factory: selectTreeList.join(" - "), - }, { - headers: { - 'Content-Type': 'application/json' - } }).then(res => { res.data.forEach(a => { a.state = 0 @@ -1543,21 +1494,21 @@ }) }, 200) }) - this.searchTemList() + // this.searchTemList() }, - searchTemList () { - this.temperatureList = [] - this.$axios.post(this.$api.enums.selectEnumByCategory, { - category: "鐢靛姏娓╁害寰幆妫�楠�" - }).then(res => { - if (res.data.length > 0) { - this.temperatureEngList = res.data - res.data.forEach(item => { - this.temperatureList.push(item.label) - }) - } - }) - }, + // searchTemList () { + // this.temperatureList = [] + // this.$axios.post(this.$api.enums.selectEnumByCategory, { + // category: "鐢靛姏娓╁害寰幆妫�楠�" + // }).then(res => { + // if (res.data.length > 0) { + // this.temperatureEngList = res.data + // res.data.forEach(item => { + // this.temperatureList.push(item.label) + // }) + // } + // }) + // }, changeModel() { this.sampleList.forEach(a => { let obj = this.sampleIds.find(b => b == a.id) @@ -1603,7 +1554,7 @@ }) }, selectStandardMethods() { - this.$axios.get(this.$api.standardTree.selectStandardMethodEnum).then(res => { + selectStandardMethodEnum().then(res => { this.methods = res.data }) }, @@ -1820,9 +1771,16 @@ }, goBack () { - const obj = { path: "/business/materialOrder" }; - this.$tab.closeOpenPage(obj); - } + if (this.active == 1) { + this.$router.go(-1) + } else { + this.closeOpenPage() + } + }, + closeOpenPage() { + this.$router.go(-1) + this.$tab.closeOpenPage() + }, } } </script> @@ -1832,4 +1790,11 @@ justify-content: space-between; margin-bottom: 10px; } +>>>.warning-row { + color: #1890FF; +} +.node_i { + color: orange; + font-size: 18px; +} </style> -- Gitblit v1.9.3