From df87294d45f6ecc33eb0048da3600b3fb1129e6b Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 29 一月 2026 13:51:59 +0800
Subject: [PATCH] 不合格管理:新增OA审核状态、物料属性,时间区间字段;以及导出功能
---
src/views/business/rawMaterialInspection/index.vue | 246 +++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 209 insertions(+), 37 deletions(-)
diff --git a/src/views/business/rawMaterialInspection/index.vue b/src/views/business/rawMaterialInspection/index.vue
index 1fa1140..7563e12 100644
--- a/src/views/business/rawMaterialInspection/index.vue
+++ b/src/views/business/rawMaterialInspection/index.vue
@@ -3,6 +3,12 @@
<div class="search">
<el-form :model="componentData" ref="componentData" size="small" :inline="true">
<el-row>
+ <el-form-item label="IFS鍩�" prop="contract">
+ <el-select @keyup.enter.native="refreshTable" v-model="componentData.contract" clearable placeholder="璇烽�夋嫨" size="small">
+ <el-option label="ZTNS" value="ZTNS"/>
+ <el-option label="KJNS" value="KJNS"/>
+ </el-select>
+ </el-form-item>
<el-form-item label="鎵瑰彿" prop="updateBatchNo">
<el-input v-model="componentData.updateBatchNo" clearable placeholder="璇疯緭鍏�" size="small"
@keyup.enter.native="refreshTable"></el-input>
@@ -22,30 +28,34 @@
@keyup.enter.native="refreshTable">
</el-input>
</el-form-item>
- <el-form-item>
- <el-button v-if="tabIndex === 3 || tabIndex === 4" :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'"
- style="color: #3A7BFA;" type="text" @click="more = !more">{{ !more ? '鏇村' : '鏀惰捣' }}</el-button>
- <el-button size="mini" type="primary" @click="refreshTable()">鏌ヨ</el-button>
- <el-button size="mini" @click="refresh()" >閲嶇疆</el-button>
- </el-form-item>
- </el-row>
- <el-row>
<el-form-item label="妫�楠岀姸鎬�" prop="inspectStatus" v-if="(tabIndex === 3 || tabIndex === 4) && more">
<el-select v-model="componentData.inspectStatus" clearable size="small" style="width: 100%;"
- @change="refreshTable()">
+ @change="refreshTable()">
<el-option v-for="(a, i) in queryStatusList" :key="i" :label="a.label" :value="a.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="涓嬪彂鏃堕棿" prop="date" v-if="(tabIndex === 3 || tabIndex === 4) && more">
<el-date-picker v-model="componentData.date" end-placeholder="缁撴潫鏃ユ湡" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡"
- range-separator="鑷�" size="small" start-placeholder="寮�濮嬫棩鏈�" style="width: 100%;" type="daterange" @change="refreshTable()"
- value-format="yyyy-MM-dd">
+ range-separator="鑷�" size="small" start-placeholder="寮�濮嬫棩鏈�" style="width: 100%;" type="daterange" @change="refreshTable()"
+ value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="濮旀墭缂栧彿" prop="entrustCode" v-if="(tabIndex === 3 || tabIndex === 4) && more">
<el-input v-model="componentData.entrustCode" clearable placeholder="璇疯緭鍏�" size="small"
- @keyup.enter.native="refreshTable">
+ @keyup.enter.native="refreshTable">
</el-input>
+ </el-form-item>
+ <el-form-item label="閿�鍞鍗曞垎绫�" prop="orderType" v-if="(tabIndex === 3 || tabIndex === 4) && more">
+ <el-select v-model="componentData.orderType" clearable size="small"
+ @keyup.enter.native="refreshTable">
+ <el-option v-for="(item,index) in orderTypeList" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <el-button v-if="tabIndex === 3 || tabIndex === 4" :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'"
+ style="color: #3A7BFA;" type="text" @click="more = !more">{{ !more ? '鏇村' : '鏀惰捣' }}</el-button>
+ <el-button size="mini" type="primary" @click="refreshTable()">鏌ヨ</el-button>
+ <el-button size="mini" @click="refresh()" >閲嶇疆</el-button>
</el-form-item>
</el-row>
</el-form>
@@ -65,7 +75,7 @@
@click="handleDown">瀵煎嚭</el-button>
<el-button v-if="tabIndex === 0" :loading="btnLoading" size="small" type="primary"
@click="openIFS">鑾峰彇IFS璁㈠崟</el-button>
- <el-button v-if="tabIndex === 0" size="small" type="primary" @click="declareS">鎶ユ</el-button>
+ <el-button v-if="tabIndex === 0" size="small" type="primary" @click="declareS">鎵归噺鎶ユ</el-button>
<el-button v-if="tabIndex === 0" size="small" type="primary" @click="addDeclare">鏂板鎶ユ淇℃伅</el-button>
</div>
</div>
@@ -83,20 +93,35 @@
</div>
</div>
<!-- 鎵归噺鎶ユ -->
- <el-dialog :visible.sync="declareDialogSVisible" title="纭鎶ユ" width="30%">
- <p style="font-size:16px;color:#333333">鏄惁纭鎶ユ閫夋嫨鐨勬暟鎹紵</p>
+ <el-dialog :visible.sync="declareDialogSVisible" title="鎵归噺鎶ユ" width="30%" :before-close="resetBatchFormData">
+ <el-form ref="declareBatchObj" :inline="true" :model="declareBatchObj" :rules="declareObjBatchRules" label-width="130px"
+ label-position="right">
+ <el-form-item class="declareObj-form-item" label="閿�鍞鍗曞垎绫伙細" prop="orderType">
+ <el-select v-model="declareBatchObj.orderType" prop="orderType" clearable size="small">
+ <el-option v-for="(item,index) in orderTypeList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item class="declareObj-form-item" label="鐗╂枡灞炴�э細" prop="materialProp">
+ <el-select v-model="declareBatchObj.materialProp" clearable size="small">
+ <el-option v-for="(item,index) in materialPropList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-form>
<span slot="footer" class="dialog-footer">
<el-row>
- <el-button @click="declareDialogSVisible = false">鍙� 娑�</el-button>
+ <el-button @click="resetBatchFormData()">鍙� 娑�</el-button>
<el-button :loading="submitDeclareLoading" type="primary" @click="submitDeclareS">纭� 瀹�</el-button>
</el-row>
</span>
</el-dialog>
<!-- 纭鎶ユ -->
- <el-dialog :close-on-click-modal="false" :title="declareType === 'add' ? '鏂板鎶ユ淇℃伅' : '鍘熸潗鏂欐姤妫�'"
+ <el-dialog :close-on-click-modal="false" :title="declareType === 'add' ? '鏂板鎶ユ淇℃伅' : '閿�鍞鍗曟姤妫�'"
:visible.sync="declareDialogVisible" width="800px" @close="resetFormData">
<el-form ref="declareObj" :inline="true" :model="declareObj" :rules="declareObjRules" label-width="130px"
label-position="right">
+ <el-form-item class="declareObj-form-item" label="IFS鍩�:" prop="contract" style="width: calc(50% - 54px)">
+ <el-tag :type="declareObj.contract==='ZTNS'?'':'success'">{{declareObj.contract}}</el-tag>
+ </el-form-item>
<el-form-item class="declareObj-form-item" label="璁㈠崟鍙�:" prop="orderNo">
<el-input v-model="declareObj.orderNo" :disabled="declareType !== 'add'" class="addObj-info" clearable
placeholder="" size="small"></el-input>
@@ -139,6 +164,16 @@
<el-select v-model="declareObj.isExpire" prop="isExpire" :disabled="declareType !== 'add'" clearable
size="small">
<el-option :value="1" label="杩囨湡鐗╂枡"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item class="declareObj-form-item" label="閿�鍞鍗曞垎绫伙細" prop="orderType">
+ <el-select v-model="declareObj.orderType" clearable size="small">
+ <el-option v-for="(item,index) in orderTypeList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item class="declareObj-form-item" label="鐗╂枡灞炴�э細" prop="materialProp">
+ <el-select v-model="declareObj.materialProp" clearable size="small">
+ <el-option v-for="(item,index) in materialPropList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option>
</el-select>
</el-form-item>
</el-form>
@@ -189,6 +224,11 @@
:header-cell-style="{textAlign:'center'}"
:cell-style="{textAlign:'center'}"
>
+ <el-table-column label="IFS鍩�" prop="contract" :min-width="100" width="100">
+ <template slot-scope="scope">
+ <el-tag :type="scope.row.contract==='ZTNS'?'':'success'">{{scope.row.contract}}</el-tag>
+ </template>
+ </el-table-column>
<el-table-column label="璁㈠崟缂栧彿" prop="orderNo" :min-width="100" width="100"></el-table-column>
<el-table-column label="闆朵欢缂栧彿" prop="partNo" :min-width="150" width="150" show-overflow-tooltip></el-table-column>
<el-table-column label="闆朵欢鎻忚堪" prop="partDesc" :min-width="150" show-overflow-tooltip></el-table-column>
@@ -247,7 +287,18 @@
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="resetOrderSplitData()" :disabled="confirmSplitOrderLoading">鍙� 娑�</el-button>
- <el-button type="primary" @click="confirmSplitOrder()" :loading="confirmSplitOrderLoading">纭� 瀹�</el-button>
+ <el-button type="primary" @click="beforeConfirmSplitOrder()" :loading="confirmSplitOrderLoading">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
+ <el-dialog
+ title="閫夋嫨鐗╂枡灞炴��"
+ :visible.sync="materialPropVisible"
+ width="15%">
+ <el-select placeholder="璇烽�夋嫨鐗╂枡灞炴��" v-model="declareObj.materialProp" clearable size="small">
+ <el-option v-for="(item,index) in materialPropList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option>
+ </el-select>
+ <span slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="confirmSplitOrder">纭� 瀹�</el-button>
</span>
</el-dialog>
</div>
@@ -259,12 +310,15 @@
addIfsInventoryQuantity,
advancedGodown,
concessionRelease, delIfsInventory,
- getIfsByAll,
- getIfsByFinish,
getIfsOrder,
getWarehouseSubmit, inspectionReport, inspectionReportOne, rawAllExport,
revokeInspectionReport,downloadTemplate,confirmSplitOrder
} from '@/api/business/materialInspection'
+import {
+ getIfsByAll,
+ getIfsByFinish,
+} from '@/api/business/ifsOrderInspection'
+import { getDicts } from "@/api/system/dict/data";
import limsTable from "@/components/Table/lims-table.vue";
import {transformExcel} from '@/utils/file'
@@ -280,6 +334,20 @@
data() {
// 杩欓噷瀛樻斁鏁版嵁
return {
+ materialPropVisible:false,
+ splitOrderType: null,
+ declareBatchObj:{
+ orderType:'',
+ materialProp:''
+ },
+ declareObjBatchRules:{
+ orderType: [
+ { required: true, message: '璇烽�夋嫨閿�鍞鍗曞垎绫�', trigger: 'change' }
+ ],
+ materialProp: [
+ { required: true, message: '璇烽�夋嫨鐗╂枡灞炴��', trigger: 'change' }
+ ],
+ },
confirmSplitOrderLoading: false,
detailDataLoading: false,
pushToMes:false,//鏄惁鍚屾鍒癿es
@@ -323,6 +391,25 @@
return null
}
}
+ },
+ {
+ label: 'IFS鍩�',
+ prop: 'contract',
+ width: '120px',
+ dataType: 'tag',
+ formatData: (params) => {
+ return params
+ },
+ formatType: (params) => {
+ if (params === 'ZTNS') {
+ return ''
+ } else if (params === 'KJNS') {
+ return 'success'
+ }else {
+ return null
+ }
+ }
+
},
{ label: '璁㈠崟鍙�', prop: 'orderNo' },
{ label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore', width: '140px', },
@@ -433,7 +520,27 @@
}
}
},
+ {
+ label: 'IFS鍩�',
+ prop: 'contract',
+ width: '120px',
+ dataType: 'tag',
+ formatData: (params) => {
+ return params
+ },
+ formatType: (params) => {
+ if (params === 'ZTNS') {
+ return ''
+ } else if (params === 'KJNS') {
+ return 'success'
+ }else {
+ return null
+ }
+ }
+
+ },
{ label: '璁㈠崟鍙�', prop: 'orderNo' },
+ { label: '璁㈠崟鍒嗙被', prop: 'orderTypeName' },
{ label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore',width:'160px' },
{ label: '鎶ユ鏃堕棿', prop: 'declareDate' },
{ label: '鎵瑰彿', prop: 'updateBatchNo' },
@@ -549,8 +656,11 @@
receiverDate: '', // 鎺ユ敹鏃堕棿
buyUnitMeas: '', // 鍗曚綅
isExpire: '', // 鍗曚綅
+ orderType: null, // 閿�鍞鍗曞垎绫�
+ materialProp: null, // 鐗╂枡灞炴��
},
componentData: { // 琛ㄦ牸鏁版嵁
+ contract:null,
updateBatchNo: null,
partNo: null,
partDesc: null,
@@ -558,6 +668,7 @@
date: null,
entrustCode: '',
inspectStatus: '',
+ orderType: null,
},
declareDialogVisible1: false,
upLoad: false,
@@ -594,6 +705,12 @@
buyUnitMeas: [
{ required: false, message: '璇峰~鍐欏崟浣�', trigger: 'blur' }
],
+ orderType: [
+ { required: true, message: '璇烽�夋嫨閿�鍞鍗曞垎绫�', trigger: 'change' }
+ ],
+ materialProp: [
+ { required: true, message: '璇烽�夋嫨鐗╂枡灞炴��', trigger: 'change' }
+ ],
},
tabList: [
{
@@ -628,13 +745,36 @@
],
outLoading: false,
upLoading: false,
+ orderTypeList: [],
+ materialPropList: [],
}
},
mounted() {
this.refreshTable()
+ this.getOrderTypeList()
+ this.getMaterialPropList()
},
// 鏂规硶闆嗗悎
methods: {
+ getOrderTypeList(){
+ getDicts('inspection_type').then(res=>{
+ if(res.code === 200){
+ this.orderTypeList = res.data
+ }
+ }).catch(error=>{
+ console.error(error)
+ })
+ },
+ //鑾峰彇鐗╂枡灞炴�у瓧鍏搁」
+ getMaterialPropList(){
+ getDicts('material_prop_type').then(res=>{
+ if(res.code === 200){
+ this.materialPropList = res.data
+ }
+ }).catch(error=>{
+ console.error(error)
+ })
+ },
resetOrderSplitData(){
this.orderSplitBasicData = []
this.orderSplitDetailData = []
@@ -645,12 +785,26 @@
this.refreshTable()
})
},
+ //纭鎷嗗垎璁㈠崟鍓嶏紝閫夋嫨璁㈠崟鐨勭墿鏂欏睘鎬�
+ beforeConfirmSplitOrder(){
+ if(!this.declareObj.materialProp){
+ this.materialPropVisible = true
+ }else{
+ this.confirmSplitOrder()
+ }
+ },
confirmSplitOrder(){
+ if(!this.declareObj.materialProp){
+ this.$message.warning("璇烽�夋嫨鐗╂枡灞炴��")
+ return
+ }
+ this.materialPropVisible = false
this.confirmSplitOrderLoading = true
let requestData = {
ifsId: this.declareObj.id,
splitDetailList: this.orderSplitDetailData,
- pushToMes: this.pushToMes
+ pushToMes: this.pushToMes,
+ materialProp: this.declareObj.materialProp
}
confirmSplitOrder(requestData).then(res=>{
if(res.code===200 && res.data){
@@ -713,6 +867,9 @@
// 鍒囨崲tab琛ㄦ牸
handleTab(m) {
this.tabIndex = m;
+ if([0,1].includes(this.tabIndex)){
+ this.componentData.orderType = null
+ }
this.refreshTable()
},
// 鏌ヨ鍥炶皟
@@ -883,21 +1040,29 @@
},
// 鎻愪氦鎵归噺鎶ユ
submitDeclareS() {
- let ids = []
- this.multipleSelection.forEach(item => {
- ids.push(item.id)
- })
- this.declareDialogSVisible = true
- inspectionReport({ ids: ids }).then(res => {
- if (res.code === 200) {
- this.declareDialogSVisible = false
- this.$message.success('鎶ユ鎴愬姛')
- this.refreshTable()
+ this.$refs.declareBatchObj.validate(valid=>{
+ if(valid){
+ let ids = []
+ this.multipleSelection.forEach(item => {
+ ids.push(item.id)
+ })
+ this.declareDialogSVisible = true
+ inspectionReport({
+ ids: ids,
+ orderType: this.declareBatchObj.orderType,
+ materialProp: this.declareBatchObj.materialProp
+ }).then(res => {
+ if (res.code === 200) {
+ this.declareDialogSVisible = false
+ this.$message.success('鎶ユ鎴愬姛')
+ this.refreshTable()
+ }
+ this.submitDeclareLoading = false
+ }).catch(err => {
+ this.submitDeclareLoading = false
+ console.log(err)
+ })
}
- this.submitDeclareLoading = false
- }).catch(err => {
- this.submitDeclareLoading = false
- console.log(err)
})
},
// 鎵撳紑鎶ユ纭寮规
@@ -943,7 +1108,9 @@
if (valid) {
inspectionReportOne({
id: this.declareObj.id,
- updateBatchNo: this.declareObj.updateBatchNo
+ updateBatchNo: this.declareObj.updateBatchNo,
+ orderType: this.declareObj.orderType,
+ materialProp: this.declareObj.materialProp
}).then(res => {
if (res.code === 200) {
this.declareDialogVisible = false
@@ -961,8 +1128,12 @@
}
},
resetFormData() {
- this.$refs['declareObj'].resetFields();
+ this.$refs.declareObj.resetFields();
this.declareDialogVisible = false
+ },
+ resetBatchFormData() {
+ this.$refs.declareBatchObj.resetFields();
+ this.declareDialogSVisible = false
},
// 鎵撳紑鍒犻櫎寮规
deleteMaterial(row) {
@@ -1023,6 +1194,7 @@
receiverDate: '', // 鎺ユ敹鏃堕棿
buyUnitMeas: '', // 鍗曚綅
isExpire: '', // 鍗曚綅
+ orderType: null, // 閿�鍞鍗曞垎绫�
}
}
},
--
Gitblit v1.9.3