From f294efb8c01ad8b0704a92d51c14dbd55d898874 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 23 十月 2025 16:49:46 +0800
Subject: [PATCH] 拆分原材料和外购成品的业务流程(报检、下单、检验)
---
src/views/business/materialOrder/copperOrder.vue | 308 +++++++++++++++++++++-----------------------------
1 files changed, 130 insertions(+), 178 deletions(-)
diff --git a/src/views/business/materialOrder/copperOrder.vue b/src/views/business/materialOrder/copperOrder.vue
index 3557623..fd8bbdd 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,20 +1494,7 @@
})
}, 200)
})
- 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)
- })
- }
- })
+ // this.searchTemList()
},
changeModel() {
this.sampleList.forEach(a => {
@@ -1603,7 +1541,7 @@
})
},
selectStandardMethods() {
- this.$axios.get(this.$api.standardTree.selectStandardMethodEnum).then(res => {
+ selectStandardMethodEnum().then(res => {
this.methods = res.data
})
},
@@ -1820,9 +1758,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 +1777,11 @@
justify-content: space-between;
margin-bottom: 10px;
}
+>>>.warning-row {
+ color: #1890FF;
+}
+.node_i {
+ color: orange;
+ font-size: 18px;
+}
</style>
--
Gitblit v1.9.3