From 6f2e5c16bdefdf7129809ae303aa5e66b74cd2f7 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 24 九月 2026 09:20:22 +0800
Subject: [PATCH] feat(order): 添加检验委托单关联功能
---
src/views/business/productOrder/components/addOrder.vue | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 154 insertions(+), 6 deletions(-)
diff --git a/src/views/business/productOrder/components/addOrder.vue b/src/views/business/productOrder/components/addOrder.vue
index 27ee756..8ca6aee 100644
--- a/src/views/business/productOrder/components/addOrder.vue
+++ b/src/views/business/productOrder/components/addOrder.vue
@@ -49,6 +49,15 @@
<el-input v-model="addObj.entrustCode" clearable disabled placeholder="绯荤粺鐢熸垚" size="small"></el-input>
</el-form-item>
</el-col>
+ <el-col v-if="active == 1" :span="6">
+ <el-form-item label="妫�楠屽鎵樺崟:" prop="inspectionOrderId">
+ <el-input v-model="addObj.inspectionOrderCode" disabled placeholder="璇烽�夋嫨妫�楠屽鎵樺崟" size="small" style="width: 208px">
+ <template slot="append">
+ <el-button slot="append" icon="el-icon-search" @click="openInspectionOrderList"></el-button>
+ </template>
+ </el-input>
+ </el-form-item>
+ </el-col>
<el-col :span="6">
<el-form-item label="妫�楠岀被鍒�:" prop="orderType">
<el-select v-model="addObj.orderType" :disabled="active>1&&tabIndex!=4" clearable size="small" style="width: 100%;">
@@ -61,6 +70,8 @@
<el-input v-model="addObj.custom" disabled size="small" clearable></el-input>
</el-form-item>
</el-col>
+ </el-row>
+ <el-row>
<el-col :span="6">
<el-form-item label="濮旀墭鍗曚綅:" prop="company">
<el-input v-model="addObj.company" disabled placeholder="閫夋嫨濮旀墭鍗曚綅" size="small" style="width: 208px">
@@ -71,8 +82,6 @@
</el-input>
</el-form-item>
</el-col>
- </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">
@@ -93,14 +102,14 @@
</el-input>
</el-form-item>
</el-col>
+ </el-row>
+ <el-row>
<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="phone">
<el-input v-model="addObj.phone" :disabled="active>1&&tabIndex!=4" clearable placeholder="閫夋嫨濮旀墭瀹㈡埛" size="small"></el-input>
@@ -431,6 +440,28 @@
<el-button type="primary" @click="selectUser">纭� 瀹�</el-button>
</span>
</el-dialog>
+ <el-dialog :visible.sync="inspectionOrderDialogVisible" title="閫夋嫨妫�楠屽鎵樺崟" width="70%">
+ <div v-if="inspectionOrderDialogVisible" class="body">
+ <el-form :inline="true" :model="inspectionOrderQuery" size="small">
+ <el-form-item label="濮旀墭鍗曞彿">
+ <el-input v-model="inspectionOrderQuery.inspectionOrderCode" clearable placeholder="璇疯緭鍏ュ鎵樺崟鍙�"
+ @keyup.enter.native="queryInspectionOrders"></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" @click="queryInspectionOrders">鏌ヨ</el-button>
+ <el-button @click="resetInspectionOrderQuery">閲嶇疆</el-button>
+ </el-form-item>
+ </el-form>
+ <lims-table :tableData="inspectionOrderTableData" :column="inspectionOrderColumns"
+ :isSelection="true" :handleSelectionChange="selectInspectionOrderRows"
+ @pagination="inspectionOrderPagination" :height="450" key="inspectionOrderTableData"
+ :page="inspectionOrderPage" :tableLoading="inspectionOrderLoading"></lims-table>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="inspectionOrderDialogVisible = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="confirmInspectionOrder">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
<el-dialog :visible.sync="selectStandardTree" title="閫夋嫨鏍峰搧" width="500px">
<div v-if="selectStandardTree" v-loading="selectStandardTreeLoading" class="body" style="height: 60vh;overflow-y: auto;user-select: none;">
<el-row>
@@ -633,6 +664,11 @@
import { bigEval } from "@/utils/bigEval";
import {mapGetters} from "vuex";
import {addQuarter, updateQuarterOnOrder} from "@/api/business/finishedProductSampling";
+import {
+ addInsOrderWithInspectionOrder,
+ getInspectionOrderForPlaceOrder,
+ pageUnboundInspectionOrder
+} from "@/api/cnas/process/demand/demand";
export default {
name: 'AddOrder',
@@ -663,6 +699,8 @@
templates: [],
addObj: {
entrustCode: null,
+ inspectionOrderId: null,
+ inspectionOrderCode: null,
contract:null,
updateBatchNo: null,
partDesc: null,
@@ -765,6 +803,26 @@
unit: null
},
type: [],
+ inspectionOrderLoading: false,
+ inspectionOrderDialogVisible: false,
+ inspectionOrderTableData: [],
+ inspectionOrderSelection: [],
+ inspectionOrderQuery: {
+ inspectionOrderCode: ''
+ },
+ inspectionOrderPage: {
+ total: 0,
+ size: 10,
+ current: 1
+ },
+ inspectionOrderColumns: [
+ {label: '濮旀墭鍗曞彿', prop: 'inspectionOrderCode'},
+ {label: '璇曟牱鍚嶇О', prop: 'sampleName'},
+ {label: '濮旀墭鍗曚綅', prop: 'commissionUnit'},
+ {label: '鐢熶骇鍗曚綅', prop: 'production'},
+ {label: '濮旀墭浜�', prop: 'commissionUser'},
+ {label: '濮旀墭鏃堕棿', prop: 'commissionDate'}
+ ],
selectUserDia: false,
tableData1: [],
tableLoading1: false,
@@ -917,6 +975,85 @@
this.getInfo();
},
methods: {
+ openInspectionOrderList() {
+ this.inspectionOrderSelection = []
+ this.inspectionOrderQuery.inspectionOrderCode = ''
+ this.inspectionOrderPage.current = 1
+ this.inspectionOrderDialogVisible = true
+ this.getInspectionOrderList()
+ },
+ getInspectionOrderList() {
+ this.inspectionOrderLoading = true
+ pageUnboundInspectionOrder({
+ ...this.inspectionOrderPage,
+ ...this.inspectionOrderQuery
+ }).then(res => {
+ this.inspectionOrderTableData = res.data.records || []
+ this.inspectionOrderPage.total = res.data.total || 0
+ }).finally(() => {
+ this.inspectionOrderLoading = false
+ })
+ },
+ queryInspectionOrders() {
+ this.inspectionOrderPage.current = 1
+ this.getInspectionOrderList()
+ },
+ resetInspectionOrderQuery() {
+ this.inspectionOrderQuery.inspectionOrderCode = ''
+ this.queryInspectionOrders()
+ },
+ inspectionOrderPagination({ page, limit }) {
+ this.inspectionOrderPage.current = page
+ this.inspectionOrderPage.size = limit
+ this.getInspectionOrderList()
+ },
+ selectInspectionOrderRows(rows) {
+ this.inspectionOrderSelection = rows
+ },
+ confirmInspectionOrder() {
+ if (this.inspectionOrderSelection.length !== 1) {
+ this.$message.error(this.inspectionOrderSelection.length === 0 ? '璇烽�夋嫨涓�鏉℃楠屽鎵樺崟' : '鍙兘閫夋嫨涓�鏉℃楠屽鎵樺崟')
+ return
+ }
+ const inspectionOrder = this.inspectionOrderSelection[0]
+ this.addObj.inspectionOrderId = inspectionOrder.inspectionOrderId
+ this.addObj.inspectionOrderCode = inspectionOrder.inspectionOrderCode
+ this.inspectionOrderDialogVisible = false
+ this.handleInspectionOrderChange(inspectionOrder.inspectionOrderId)
+ },
+ handleInspectionOrderChange(inspectionOrderId) {
+ if (!inspectionOrderId) {
+ this.addObj.inspectionOrderCode = null
+ return
+ }
+ getInspectionOrderForPlaceOrder({ inspectionOrderId }).then(res => {
+ const inspectionOrder = res.data
+ this.addObj.inspectionOrderCode = inspectionOrder.inspectionOrderCode
+ this.addObj.sample = inspectionOrder.sampleName || this.addObj.sample
+ this.addObj.company = inspectionOrder.commissionUnit || this.addObj.company
+ this.addObj.companyId = inspectionOrder.commissionUnitId || this.addObj.companyId
+ this.addObj.production = inspectionOrder.production || this.addObj.production
+ this.addObj.prepareUser = inspectionOrder.commissionUser || this.addObj.prepareUser
+ this.addObj.phone = inspectionOrder.commissionPhone || this.addObj.phone
+ this.addObj.sampleStatus = inspectionOrder.sampleStatus || this.addObj.sampleStatus
+ this.addObj.isLeave = inspectionOrder.isLeave === null || inspectionOrder.isLeave === undefined
+ ? this.addObj.isLeave : inspectionOrder.isLeave
+ this.addObj.processing = inspectionOrder.processing === null || inspectionOrder.processing === undefined
+ ? this.addObj.processing : inspectionOrder.processing
+ this.addObj.appointed = inspectionOrder.appointed || this.addObj.appointed
+ this.addObj.send = inspectionOrder.send === null || inspectionOrder.send === undefined
+ ? this.addObj.send : inspectionOrder.send
+ if (/^\d+$/.test(inspectionOrder.quantity || '')) {
+ this.addObj.sampleNum = Number(inspectionOrder.quantity)
+ }
+ this.sample.sample = inspectionOrder.sampleName || this.sample.sample
+ this.sample.model = inspectionOrder.modelNo || this.sample.model
+ this.$message.success('宸插甫鍏ユ楠屽鎵樺崟淇℃伅')
+ }).catch(() => {
+ this.addObj.inspectionOrderId = null
+ this.addObj.inspectionOrderCode = null
+ })
+ },
getInfo() {
this.selectStandardTreeList()
this.getAuthorizedPerson();
@@ -1413,7 +1550,18 @@
})
}else{
// 甯歌鎻愪氦
- addInsOrder({insOrder: {...this.addObj,typeSource:-1}, sampleList: sampleList}).then(res => {
+ const { inspectionOrderId, inspectionOrderCode, ...insOrder } = this.addObj
+ const submitRequest = inspectionOrderId
+ ? addInsOrderWithInspectionOrder({
+ inspectionOrderId,
+ insOrder: {...insOrder, typeSource: -1},
+ sampleList: sampleList
+ })
+ : addInsOrder({
+ insOrder: {...insOrder, typeSource: -1},
+ sampleList: sampleList
+ })
+ submitRequest.then(res => {
this.saveLoad = false
this.$message.success('宸叉彁浜�')
this.bsm3Dia = false;
@@ -1494,7 +1642,7 @@
this.addObj.phone = selects.phone
this.addObj.companyId = selects.departId
this.addObj.production = '涓ぉ鑰愪笣鏈夐檺鍏徃'
- this.addObj.productionEn = 'Zhongtian Naisi Co., Ltd.'
+ this.addObj.productionEn = 'Zhongtian intelligent cable Co.,Ltd.'
if(this.active==1){
this.selectInsOrderTemplate()
}
--
Gitblit v1.9.3