From b0d4df5f39525ae7fe252e8ee65d85fd71dca721 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 07 五月 2026 14:53:32 +0800
Subject: [PATCH] 手动下单:检验中订单撤销报错问题修复
---
src/views/business/productOrder/components/addOrder.vue | 254 +++++++++++++++++++++++++++++++++++---------------
1 files changed, 179 insertions(+), 75 deletions(-)
diff --git a/src/views/business/productOrder/components/addOrder.vue b/src/views/business/productOrder/components/addOrder.vue
index 5b9c516..0993355 100644
--- a/src/views/business/productOrder/components/addOrder.vue
+++ b/src/views/business/productOrder/components/addOrder.vue
@@ -14,9 +14,13 @@
<el-select v-show="active==1" v-model="template" placeholder="涓嬪崟妯℃澘" size="small"
@change="selectInsOrderTemplateById">
<el-option v-for="(a, ai) in templates" :key="ai" :label="a.name" :value="a.id">
- <span style="float: left">{{ a.name }}</span>
- <i class="el-icon-delete" style="float: right; color: #66b1ff; font-size: 16px"
- @click.stop="handleDelete(a)"></i>
+ <div style="display: flex; align-items: center; justify-content: space-between;">
+ <span>{{ a.name }}</span>
+ <i class="el-icon-delete"
+ style="color: #66b1ff; font-size: 16px; cursor: pointer;"
+ @click.stop="handleDelete(a)">
+ </i>
+ </div>
</el-option>
</el-select>
<el-button v-show="active==1" size="small" @click="templateDia=true">
@@ -70,6 +74,40 @@
</el-row>
<el-row>
<el-col :span="6">
+ <el-form-item label="IFS鍩�:" prop="contract">
+ <el-select v-model="addObj.contract" clearable placeholder="璇烽�夋嫨" size="small">
+ <el-option label="ZTNS" value="ZTNS"/>
+ <el-option label="KJNS" value="KJNS"/>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="鎵规鍙�:" prop="updateBatchNo">
+ <el-input v-model="addObj.updateBatchNo" clearable placeholder="璇疯緭鍏ユ壒娆″彿" size="small">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="闆朵欢鍙�" prop="partNo">
+ <el-input v-model="addObj.partNo" clearable placeholder="璇疯緭鍏ラ浂浠跺彿" size="small">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="闆朵欢鎻忚堪:" prop="partDesc">
+ <el-input v-model="addObj.partDesc" clearable placeholder="璇疯緭鍏ラ浂浠舵弿杩�" size="small">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="6">
+ <el-form-item label="渚涘簲鍟嗗悕绉�:" prop="supplierName">
+ <el-input v-model="addObj.supplierName" clearable placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" size="small">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
<el-form-item label="鑱旂郴鏂瑰紡:" prop="phone">
<el-input v-model="addObj.phone" :disabled="active>1&&tabIndex!=4" clearable placeholder="閫夋嫨濮旀墭瀹㈡埛" size="small"></el-input>
</el-form-item>
@@ -89,14 +127,15 @@
</el-input>
</el-form-item>
</el-col>
+
+ </el-row>
+ <el-row>
<el-col :span="6">
<el-form-item label="鏍峰搧鏁伴噺:" prop="sampleNum" style="margin-right: 0">
<el-input-number v-model="addObj.sampleNum" :disabled="active>1" :max="100" :min="1" :precision="0"
size="small" @change="addStandardTree"></el-input-number>
</el-form-item>
</el-col>
- </el-row>
- <el-row>
<el-col :span="6">
<el-form-item label="鏍峰搧鐘舵��:" prop="sampleStatus">
<el-select v-model="addObj.sampleStatus" :disabled="active>1&&tabIndex!=4" size="small">
@@ -116,6 +155,8 @@
</el-select>
</el-form-item>
</el-col>
+ </el-row>
+ <el-row>
<el-col :span="6">
<el-form-item label="鎶ュ憡鍙戦�佹柟寮�:" prop="send">
<el-radio-group v-model="addObj.send" :disabled="active>1&&tabIndex!=4" size="mini">
@@ -124,8 +165,6 @@
</el-radio-group>
</el-form-item>
</el-col>
- </el-row>
- <el-row>
<el-col :span="6">
<el-form-item label="鏍峰搧澶勭悊鏂瑰紡:" prop="processing">
<el-radio-group v-model="addObj.processing" :disabled="active>1&&tabIndex!=4" size="mini" style="display: flex; flex-direction: column;">
@@ -146,6 +185,8 @@
size="small"></el-input>
</el-form-item>
</el-col>
+ </el-row>
+ <el-row>
<el-col :span="6">
<el-form-item label="鏄惁鐣欐牱:" prop="isLeave">
<el-radio-group v-model="addObj.isLeave" border :disabled="active>1&&tabIndex!=4" size="mini">
@@ -154,8 +195,6 @@
</el-radio-group>
</el-form-item>
</el-col>
- </el-row>
- <el-row>
<el-col :span="6">
<el-form-item label="濮旀墭浜�:" prop="prepareUser">
<el-input v-model="addObj.prepareUser" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable size="small"></el-input>
@@ -172,14 +211,14 @@
size="small" style="width: 100%" type="textarea"></el-input>
</el-form-item>
</el-col>
+ </el-row>
+ <el-row>
<el-col :span="6">
<el-form-item label="澶囨敞鑻辨枃:" prop="remarkEn">
<el-input v-model="addObj.remarkEn" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable
size="small" type="textarea"></el-input>
</el-form-item>
</el-col>
- </el-row>
- <el-row>
<el-col :span="6">
<el-form-item label="鏍峰搧鍚嶇О:" prop="sampleView">
<el-input v-model="addObj.sampleView" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable
@@ -380,7 +419,7 @@
<el-table-column v-if="isSpecial&&active==1" label="鎿嶄綔" width="100">
<template slot-scope="scope">
<el-button v-if="!scope.row.repetitionTag" size="small" type="text" @click="addProductList(productList,scope.row,scope.$index)">鎻掑叆琛�</el-button>
- <el-button v-if="!!scope.row.repetitionTag&&scope.row.delete" size="small" type="text" @click="deleteProductList(scope.$index,productList)">鍒犻櫎</el-button>
+ <el-button style="color:#ff4949" v-if="!!scope.row.repetitionTag&&scope.row.delete" size="small" type="text" @click="deleteProductList(scope.$index,productList)">鍒犻櫎</el-button>
</template>
</el-table-column>
</el-table>
@@ -390,7 +429,7 @@
<div v-if="selectUserDia" class="body">
<lims-table :tableData="tableData1" :column="column1"
:isSelection="true" :handleSelectionChange="selectMethod"
- @pagination="pagination1" height="400px" key="tableData1"
+ @pagination="pagination1" :height="400" key="tableData1"
:page="page1" :tableLoading="tableLoading1"></lims-table>
</div>
<span slot="footer" class="dialog-footer">
@@ -587,7 +626,7 @@
} from "@/api/business/rawMaterialOrder";
import {
addInsOrder, addInsOrderTemplate, delInsOrderTemplate,
- getQuarterOnOrder, selectInsOrderTemplateById,
+ getQuarterOnOrder, judgeNotSpotCheckOrder, selectInsOrderTemplateById,
selectOrderManDay,
updateInsOrder,
upInsOrder,
@@ -597,7 +636,9 @@
import {selectsStandardMethodByFLSSM} from "@/api/standard/standardLibrary";
import limsTable from "@/components/Table/lims-table.vue";
import {selectCustomPageList} from "@/api/system/customer";
+import { bigEval } from "@/utils/bigEval";
import {mapGetters} from "vuex";
+import {addQuarter, updateQuarterOnOrder} from "@/api/business/finishedProductSampling";
export default {
name: 'AddOrder',
@@ -607,7 +648,7 @@
AuxiliaryWireCore
},
computed:{
- ...mapGetters(["nickName"]),
+ ...mapGetters(["nickName", 'nameEn', 'userName']),
},
dicts: ['check_type1', 'urgency_level', 'form_type', 'sample_status_list'],
data() {
@@ -621,6 +662,11 @@
templates: [],
addObj: {
entrustCode: null,
+ contract:null,
+ updateBatchNo: null,
+ partDesc: null,
+ partNo: null,
+ supplierName: null,
custom: null,
company: null,
userId: null,
@@ -656,6 +702,9 @@
sampleViewEn: '', // 鏍峰搧鍚嶇О鑻辨枃锛堟姤鍛婂睍绀哄瓧娈碉級
},
addObjRules: { // 琛ㄥ崟鏍¢獙瑙勫垯
+ contract: [
+ { required: true, message: '璇烽�夋嫨IFS鍩�', trigger: 'change' }
+ ],
orderType: [
{ required: true, message: '璇烽�夋嫨妫�楠岀被鍒�', trigger: 'change' }
],
@@ -793,10 +842,10 @@
}
},
watch: {
- sampleList() {
- this.addObj.method = null
- this.productList = []
- },
+ // sampleList() {
+ // this.addObj.method = null
+ // this.productList = []
+ // },
productList: {
deep: true,
handler(val) {
@@ -842,6 +891,11 @@
this.currentId = this.$route.query.currentId
this.getUserNowData()
this.getInfo()
+ if(this.tabIndex==4&&this.active==2){
+ this.isSpecial = true
+ }else{
+ this.isSpecial = false
+ }
},
activated() {
this.active = this.$route.query.active
@@ -854,7 +908,6 @@
this.selectStandardTreeList()
this.getAuthorizedPerson();
this.selectStandardMethods()
- this.getPrepareUser() // 澶嶅埗褰撳墠璐﹀彿浜轰负濮旀墭浜�
if (this.active != 1) {
// 鏌ョ湅/瀹℃牳娴佺▼
// 璇锋眰鎺ュ彛锛屽洖鏄炬暟鎹�
@@ -878,16 +931,7 @@
})
})
}
- if(this.tabIndex==4&&this.active==2){
- this.isSpecial = true
- }else{
- this.isSpecial = false
- }
- },
- getPrepareUser () {
- // this.addObj.prepareUser = JSON.parse(localStorage.getItem("user")).name;
- // this.addObj.prepareUserEn = JSON.parse(localStorage.getItem("user")).nameEn
- // this.addObj.prepareCode = JSON.parse(localStorage.getItem("user")).account
+
},
// 缂栬緫瑕佹眰鍊艰〃鏍�
editSpecial () {
@@ -924,7 +968,6 @@
return m.id === a.id&&!m.repetitionTag
}
})
-
if(obj){
a.state = obj.state
a.section = obj.section
@@ -1033,6 +1076,37 @@
return symbolItem
}
},
+ /**
+ * 鑾峰彇灏忔暟鐨勬渶澶т綅鏁�
+ * @param number 鍨嬪彿鍙傛暟
+ * @param ask 瑕佹眰鍊�
+ * @param calcNum 璁$畻鍊�
+ */
+ getDecimalPlaces(number, ask, calcNum) {
+ console.log("璁$畻灏忔暟鐐�-->", number, ask, calcNum);
+ let count1 = 0;
+ let count2 = 0;
+ const reg = /(\d+\.)(\d+)/g;
+ let matches = [];
+ if (ask) {
+ matches = ask.match(reg);
+ }
+ if (
+ matches &&
+ matches.length > 0 &&
+ matches[0].toString().indexOf(".") > -1
+ ) {
+ count1 = matches[0].toString().split(".")[1].length;
+ }
+ if (number.toString().indexOf(".") > -1) {
+ count2 = number.toString().split(".")[1].length;
+ }
+ if (calcNum.toString().indexOf(".") > -1) {
+ const pointLength2 = calcNum.toString().split(".")[1].length;
+ count2 = count2 > pointLength2 ? count2 : pointLength2;
+ }
+ return count1 > count2 ? count1 : count2;
+ },
handleAsk(ask,symbolItem, value) {
try{
let code = [">", "<", "=", "锛�", "锛�", "鈮�", "鈮�", "卤"];
@@ -1045,7 +1119,13 @@
let index = code.findIndex(b => m.includes(b))
if (index > -1) {
let arr = m.split(code[index]).filter(b => !!b)
- let num = eval(this.replaceAll(arr[0], symbolItem, value))
+ let calcNum = this.$Big(
+ bigEval(this.replaceAll(arr[0], symbolItem, value))
+ );
+ let num = calcNum.toFixed(
+ this.getDecimalPlaces(value, ask, calcNum)
+ );
+ // let num = eval(this.replaceAll(arr[0], symbolItem, value))
m = code[index] + '' + num
arr1.push(m)
}
@@ -1074,7 +1154,13 @@
let index = code.findIndex(b => ask.includes(b))
if (index > -1) {
let arr = ask.split(code[index]).filter(b => !!b)
- let num = eval(this.replaceAll(arr[0], symbolItem, value))
+ let calcNum = this.$Big(
+ bigEval(this.replaceAll(arr[0], symbolItem, value))
+ );
+ let num = calcNum.toFixed(
+ this.getDecimalPlaces(value, ask, calcNum)
+ );
+ // let num = eval(this.replaceAll(arr[0], symbolItem, value))
return code[index] + '' + num
}
}
@@ -1260,36 +1346,62 @@
}
},
saveMethod(sampleList){
- this.saveLoad = true
if (this.addObj.quarterItemId) {
this.addObj.quarterItemId = this.addObj.quarterItemId[1]
}
- if(this.tabIndex==4&&this.active==2){
- if (this.addObj.createTime) {
- delete this.addObj.createTime
- }
- // 閫�鍥炲悗鎻愪氦
- updateInsOrder({insOrder: this.addObj, sampleProduct: sampleList}).then(res => {
- this.saveLoad = false
- this.$message.success('宸叉彁浜�')
- this.bsm3Dia = false;
- this.closeOpenPage()
- }).catch(e=>{
- this.saveLoad = false
- })
- }else{
- // 甯歌鎻愪氦
- addInsOrder({insOrder: this.addObj, sampleList: sampleList}).then(res => {
- this.saveLoad = false
- this.$message.success('宸叉彁浜�')
- this.bsm3Dia = false;
- this.closeOpenPage()
- }).catch(e=>{
- this.saveLoad = false
- })
+ if (this.addObj.createTime) {
+ delete this.addObj.createTime
}
-
+ if (this.addObj.orderType === '鎶芥') {
+ judgeNotSpotCheckOrder({ insOrder: this.addObj, sampleList: sampleList }).then(res => {
+ if (res.data === true) {
+ this.saveData(sampleList);
+ } else {
+ // const message = res.message.replace(/\n/g, '<br>');
+ this.$confirm(res.message, '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning',
+ dangerouslyUseHTMLString: true, // 馃憟 鍏抽敭鐐癸細鍏佽 HTML
+ message: res.message // 杩欓噷涔熷彲浠ョ渷鐣ワ紝鍥犱负绗簩涓弬鏁版槸 title锛岀涓変釜鏄� options
+ }).then(() => {
+ this.saveData(sampleList);
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '宸插彇娑�'
+ });
+ });
+ }
+ });
+ } else {
+ this.saveData(sampleList)
+ }
},
+ saveData(sampleList) {
+ this.saveLoad = true
+ if(this.tabIndex==4&&this.active==2){
+ // 閫�鍥炲悗鎻愪氦
+ updateInsOrder({insOrder: this.addObj, sampleProduct: sampleList}).then(res => {
+ this.saveLoad = false
+ this.$message.success('宸叉彁浜�')
+ this.bsm3Dia = false;
+ this.closeOpenPage()
+ }).catch(e=>{
+ this.saveLoad = false
+ })
+ }else{
+ // 甯歌鎻愪氦
+ addInsOrder({insOrder: {...this.addObj,typeSource:-1}, sampleList: sampleList}).then(res => {
+ this.saveLoad = false
+ this.$message.success('宸叉彁浜�')
+ this.bsm3Dia = false;
+ this.closeOpenPage()
+ }).catch(e=>{
+ this.saveLoad = false
+ })
+ }
+ },
upInsOrderOfState(state) {
if (state == 1) {
this.saveLoad = true
@@ -1348,6 +1460,9 @@
})
},
getUserNowData() {
+ this.addObj.prepareUser = this.nickName
+ this.addObj.prepareUserEn = this.nameEn
+ this.addObj.prepareCode = this.userName
getUserNow().then(res => {
let selects = res.data
if (selects == null) return
@@ -1357,8 +1472,8 @@
this.addObj.code = selects.code
this.addObj.phone = selects.phone
this.addObj.companyId = selects.departId
- this.addObj.production = '涓ぉ绉戞妧瑁呭鐢电紗鏈夐檺鍏徃'
- this.addObj.productionEn = 'Zhongtian Technology Industrial Wire&Cable System CO.,LTD'
+ this.addObj.production = '涓ぉ鑰愪笣鏈夐檺鍏徃'
+ this.addObj.productionEn = 'Zhongtian Naisi Co., Ltd.'
if(this.active==1){
this.selectInsOrderTemplate()
}
@@ -1579,10 +1694,10 @@
this.$set(row, 'sectionCopy', row.section)
}
}
- if (row.ask.includes('[')) {
+ if (row.ask && row.ask.includes('[')) {
this.$set(row, 'askCopy', row.ask)
}
- if (row.tell.includes('[')) {
+ if (row.tell && row.tell.includes('[')) {
this.$set(row, 'tellCopy', row.tell)
}
let arr = this.productList.filter(m=>m.state==1&&row.sectionCopy&&row.sectionCopy.includes(m.sectionCopy)&&m.ask&&m.sectionCopy.indexOf('[')==-1)
@@ -1912,18 +2027,12 @@
this.$set(p, 'sectionCopy', p.section)
}
}
- if (p.ask.includes('[')) {
+ if (p.ask && p.ask.includes('[')) {
this.$set(p, 'askCopy', p.ask)
}
- if (p.tell.includes('[')) {
+ if (p.tell && p.tell.includes('[')) {
this.$set(p, 'tellCopy', p.tell)
}
- // if (p.manHour.includes('[')) {
- // this.$set(p, 'manHourCopy', p.manHour)
- // }
- // if (p.price.includes('[')) {
- // this.$set(p, 'priceCopy', p.price)
- // }
if (p.bsm === '1' && p.sectionCopy !== '' && p.sectionCopy !== null && p.sectionCopy !== undefined && p.state === 1) {
if (p.sectionCopy.indexOf('[') > -1) {
p.bsmRow = this.HaveJson(p)
@@ -1956,11 +2065,6 @@
return item
})
}
- this.productList.forEach(item => {
- if (item.id == row.id) {
- item.state = row.state;
- }
- })
this.changeProductList0()
this.currentMethod.insProduct = this.productList0
this.getProNum()
--
Gitblit v1.9.3