From 414a9c839061e06468138c9f662a4d9cf4225599 Mon Sep 17 00:00:00 2001 From: spring <2396852758@qq.com> Date: 星期三, 09 四月 2025 15:08:29 +0800 Subject: [PATCH] 完成二次报检,过期报检 --- src/components/Table/lims-table.vue | 4 src/api/business/materialInspection.js | 18 +++ src/views/business/materialOrder/customsInspection.vue | 2 src/views/business/productOrder/components/add.vue | 4 src/views/business/materialOrder/components/declareDialog.vue | 145 ++++++++++++++++++++++++ src/views/business/materialOrder/index.vue | 171 ++++++++++++++++++---------- 6 files changed, 281 insertions(+), 63 deletions(-) diff --git a/src/api/business/materialInspection.js b/src/api/business/materialInspection.js index 625967c..8eafc55 100644 --- a/src/api/business/materialInspection.js +++ b/src/api/business/materialInspection.js @@ -97,3 +97,21 @@ responseType: "blob", }); } + +// 浜屾鎶ユ/杩囨湡鎶ユ鏂板/缂栬緫 +export function addIfsInventory(query) { + return request({ + url: "/ifsInventoryQuantity/addIfsInventory", + method: "post", + data: query, + }); +} + +// 浜屾鎶ユ/杩囨湡鎶ユ鍒犻櫎 +export function ifsInventoryQuantityDelIfsInventory(query) { + return request({ + url: "/ifsInventoryQuantity/delIfsInventory", + method: "delete", + params: query, + }); +} diff --git a/src/components/Table/lims-table.vue b/src/components/Table/lims-table.vue index d1e09a6..d6cfd4f 100644 --- a/src/components/Table/lims-table.vue +++ b/src/components/Table/lims-table.vue @@ -518,4 +518,8 @@ .lims-table .highlight-danger-row-border td:last-child { border-right: 4px solid #f56c6c; } + +>>>.is-disabled { + color: #C0C4CC !important; +} </style> diff --git a/src/views/business/materialOrder/components/declareDialog.vue b/src/views/business/materialOrder/components/declareDialog.vue new file mode 100644 index 0000000..c250919 --- /dev/null +++ b/src/views/business/materialOrder/components/declareDialog.vue @@ -0,0 +1,145 @@ +<template> + <el-dialog :close-on-click-modal="false" :title="title" :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="璁㈠崟鍙�:" prop="orderNo"> + <el-input v-model="declareObj.orderNo" class="addObj-info" clearable placeholder="" size="small"></el-input> + </el-form-item> + <el-form-item class="declareObj-form-item" label="闆朵欢鍙�:" prop="partNo"> + <el-input v-model="declareObj.partNo" class="addObj-info" clearable placeholder="" size="small"></el-input> + </el-form-item> + <el-form-item class="declareObj-form-item" label="闆朵欢鎻忚堪:" prop="partDesc"> + <el-input v-model="declareObj.partDesc" class="addObj-info" clearable placeholder="" size="small"></el-input> + </el-form-item> + <el-form-item class="declareObj-form-item" label="鎶佃揪鐨勯噰璐暟閲�:" prop="qtyArrived"> + <el-input v-model="declareObj.qtyArrived" class="addObj-info" clearable placeholder="" size="small"></el-input> + </el-form-item> + <el-form-item class="declareObj-form-item" label="渚涘簲鍟嗙紪鍙�:" prop="supplierId"> + <el-input v-model="declareObj.supplierId" class="addObj-info" clearable placeholder="" size="small"></el-input> + </el-form-item> + <el-form-item class="declareObj-form-item" label="渚涘簲鍟嗗悕绉�:" prop="supplierName"> + <el-input v-model="declareObj.supplierName" class="addObj-info" clearable placeholder="" + size="small"></el-input> + </el-form-item> + <el-form-item class="declareObj-form-item" label="鎵瑰彿:" prop="updateBatchNo"> + <el-input v-model="declareObj.updateBatchNo" class="addObj-info" clearable size="small"></el-input> + </el-form-item> + <el-form-item class="declareObj-form-item" label="搴撲綅鍙�:" prop="locationNo"> + <el-input v-model="declareObj.locationNo" class="addObj-info" clearable size="small"></el-input> + </el-form-item> + <!-- <el-form-item class="declareObj-form-item" label="鎺ユ敹鏃堕棿:" prop="receiverDate"> + <el-input v-model="declareObj.receiverDate" class="addObj-info" clearable disabled size="small"></el-input> + </el-form-item> --> + <el-form-item class="declareObj-form-item" label="鍗曚綅:" prop="buyUnitMeas"> + <el-input v-model="declareObj.buyUnitMeas" clearable class="addObj-info" size="small"></el-input> + </el-form-item> + <el-form-item class="declareObj-form-item" label="杩囨湡鏃堕棿锛�" prop="expirationTime"> + <el-date-picker v-model="declareObj.expirationTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="small" + format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 100%;"> + </el-date-picker> + </el-form-item> + <el-form-item class="declareObj-form-item" label="渚涘簲鍟嗘壒鍙�:" prop="supplierNumber"> + <el-input v-model="declareObj.supplierNumber" clearable class="addObj-info" size="small"></el-input> + </el-form-item> + <el-form-item class="declareObj-form-item" label="鎶ユ绫诲瀷:" prop="inspectionType"> + <el-select v-model="declareObj.inspectionType" clearable class="addObj-info" size="small" placeholder="璇烽�夋嫨鎶ユ绫诲瀷" + disabled> + <el-option v-for="item in dict.type.inspection_type" :key="item.value" :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-row> + <el-button @click="resetFormData">鍙� 娑�</el-button> + <el-button :loading="submitDeclareLoading" type="primary" @click="submitDeclare">纭鎶ユ</el-button> + </el-row> + </span> + </el-dialog> +</template> + +<script> +import { + addIfsInventory +} from "@/api/business/materialInspection"; +export default { + props: ['title'], + dicts: ["inspection_type"], + data() { + return { + submitDeclareLoading: false, + declareDialogVisible: false, + declareObj: {}, + declareObjRules: { + orderNo: [ + { required: false, message: '璇峰~鍐欒鍗曞彿', trigger: 'blur' } + ], + partNo: [ + { required: true, message: '璇峰~鍐欓浂浠跺彿', trigger: 'blur' } + ], + partDesc: [ + { required: true, message: '璇峰~鍐欓浂浠舵弿杩�', trigger: 'blur' } + ], + qtyArrived: [ + { required: false, message: '璇峰~鍐欐姷杈剧殑閲囪喘鏁伴噺', trigger: 'blur' } + ], + supplierName: [ + { required: true, message: '璇峰~鍐欎緵搴斿晢鍚嶇О', trigger: 'blur' } + ], + updateBatchNo: [ + { required: true, message: '璇峰~鍐欐壒鍙�', trigger: 'blur' } + ], + locationNo: [ + { required: false, message: '璇峰~鍐欏簱浣嶅彿', trigger: 'blur' } + ], + buyUnitMeas: [ + { required: false, message: '璇峰~鍐欏崟浣�', trigger: 'blur' } + ], + inspectionType: [ + { required: true, message: '璇峰~鍐欐姤妫�绫诲瀷', trigger: 'change' } + ], + }, + } + }, + methods: { + resetFormData() { + this.$refs['declareObj'].resetFields(); + this.declareDialogVisible = false + }, + submitDeclare() { + this.$refs['declareObj'].validate((valid) => { + if (valid) { + this.submitDeclareLoading = true + addIfsInventory(this.declareObj).then(res => { + this.submitDeclareLoading = false + if (res.code === 200) { + this.declareDialogVisible = false + this.$message.success('鎻愪氦鎴愬姛') + this.$emit('refreshTable') + } + }).catch(err => { + console.log(err) + this.submitDeclareLoading = false + }) + } else { + console.log('error submit!!'); + return false; + } + }); + }, + open(type, row) { + if (row) { + this.declareObj = row; + } else { + this.declareObj = {} + this.declareObj.inspectionType = String(type) + } + this.declareDialogVisible = true + }, + } +} +</script> + +<style></style> \ No newline at end of file diff --git a/src/views/business/materialOrder/customsInspection.vue b/src/views/business/materialOrder/customsInspection.vue index 9199be7..d56ac0f 100644 --- a/src/views/business/materialOrder/customsInspection.vue +++ b/src/views/business/materialOrder/customsInspection.vue @@ -302,7 +302,7 @@ </span> </template> </el-table-column> - <el-table-column label="鏉′欢" min-width="140" prop="radius" show-overflow-tooltip></el-table-column> + <el-table-column label="璇曢獙鏉′欢" min-width="140" prop="radius" show-overflow-tooltip></el-table-column> <el-table-column label="璇曢獙鏂规硶" min-width="120" prop="methodS" show-overflow-tooltip> <template slot="header" slot-scope="scope"> <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px"> diff --git a/src/views/business/materialOrder/index.vue b/src/views/business/materialOrder/index.vue index 7e0afb0..2ab2c30 100644 --- a/src/views/business/materialOrder/index.vue +++ b/src/views/business/materialOrder/index.vue @@ -20,8 +20,11 @@ <el-form-item label="鎶ユ绫诲瀷" prop="inspectionType"> <el-select v-model="entity.inspectionType" clearable placeholder="璇烽�夋嫨" size="small" @change="refreshTable" style="width: 100%"> - <el-option label="鍘熻緟鏉�" value="鍘熻緟鏉�"></el-option> - <el-option label="鍖呮潗" value="鍖呮潗"></el-option> + <!-- <el-option label="鍘熻緟鏉�" value="鍘熻緟鏉�"></el-option> + <el-option label="鍖呮潗" value="鍖呮潗"></el-option> --> + <el-option v-for="item in dict.type.inspection_type" :key="item.value" :label="item.label" + :value="item.value"> + </el-option> </el-select> </el-form-item> <el-form-item> @@ -76,6 +79,10 @@ @click="handleOut">瀵煎嚭</el-button> <!-- <el-button v-if="tabIndex === 0" size="small" type="primary" @click="copper">閾滄潗鏂欎笅鍗�</el-button> --> <el-button v-if="tabIndex !== 0" size="small" type="primary" @click="openPrint">鏍囩鎵撳嵃</el-button> + <el-button v-if="tabIndex === 0" size="small" type="primary" + @click="opendeclareDialog(2, '浜屾鎶ユ')">浜屾鎶ユ</el-button> + <el-button v-if="tabIndex === 0" size="small" type="primary" + @click="opendeclareDialog(3, '杩囨湡鎶ユ')">杩囨湡鎶ユ</el-button> </div> </div> <!--寰呬笅鍗�--> @@ -185,6 +192,8 @@ <!-- :sonLaboratory="'鍘熻緟鏉�'" :state="state"--> <!-- :typeSource="typeSource"--> <!-- @goback="goback" @refreshView="refreshView"/>--> + <!-- 杩囨湡鎶ユ/浜屾鎶ユ --> + <declareDialog ref="declareDialog" :title="declareTitle" @refreshTable="refreshTable" /> </div> </template> @@ -208,42 +217,46 @@ revokeInspectionReport, updateEntrustCode } from "@/api/business/rawMaterialOrder"; -import { getWarehouseSubmit } from "@/api/business/materialInspection"; +import { getWarehouseSubmit, ifsInventoryQuantityDelIfsInventory } from "@/api/business/materialInspection"; import { mapGetters } from "vuex"; +import declareDialog from './components/declareDialog.vue' // import Inspection from "../do/b1-inspect-order-plan/Inspection.vue"; export default { name: "MaterialOrder", + dicts: ["inspection_type"], // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� - components: { limsTable, DownFileDialog, FilesLookVisible, DataLookVisible, ShowInfo, PrintDialog }, + components: { limsTable, DownFileDialog, FilesLookVisible, DataLookVisible, ShowInfo, PrintDialog, declareDialog }, data() { // 杩欓噷瀛樻斁鏁版嵁 return { + inspectionTypeList: [], + declareTitle: '', tableData: [], tableLoading: false, column: [ { label: '鎵瑰彿', prop: 'updateBatchNo' }, { label: '闆朵欢鍙�', prop: 'partNo' }, { label: '闆朵欢鎻忚堪', prop: 'partDesc' }, - { label: '鎶ユ绫诲瀷', prop: 'inspectionType' }, { + label: '鎶ユ绫诲瀷', prop: 'inspectionType', dataType: 'tag', - label: '鐗╂枡绫诲瀷', - prop: 'isExpire', formatData: (params) => { - if (params == 1) { - return '杩囨湡鐗╂枡' - } else { - return null + let obj = this.inspectionTypeList.find(m => m.value == params) + if (obj) { + return obj.label } }, formatType: (params) => { - if (params == 1) { - return 'info' - } else { - return null + let obj = this.inspectionTypeList.find(m => m.value == params) + if (obj) { + return obj.raw.listClass } } + }, + { + label: '杩囨湡鏃堕棿', + prop: 'expirationTime', }, { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'qtyArrived' }, { label: '鍗曚綅', prop: 'buyUnitMeas' }, @@ -267,6 +280,40 @@ type: 'text', clickFun: (row) => { this.exemption(row); + }, + }, + { + name: '鍒犻櫎', + type: 'text', + clickFun: (row) => { + this.$confirm("鏄惁鍒犻櫎璇ユ潯鏁版嵁?", "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => { + ifsInventoryQuantityDelIfsInventory({ id: row.id }).then((res) => { + if (res.code == 200) { + this.$message.success("鍒犻櫎鎴愬姛"); + this.refreshTable() + } + }); + }) + .catch(() => { }); + }, + disabled: (row) => { + return !row.inspectionType || row.inspectionType < 2 + }, + }, + { + name: '缂栬緫', + type: 'text', + clickFun: (row) => { + this.declareTitle = row.inspectionType == 2 ? '浜屾鎶ユ' : '杩囨湡鎶ユ' + this.$refs.declareDialog.open(row.inspectionType, row) + }, + disabled: (row) => { + return !row.inspectionType || row.inspectionType < 2 }, }, // { @@ -307,25 +354,25 @@ { label: '鏍峰搧鍨嬪彿', prop: 'sampleModel' }, { label: '妫�楠屼汉', prop: 'userName' }, { label: '涓嬪彂鏃堕棿', prop: 'sendTime' }, - { label: '鎶ユ绫诲瀷', prop: 'inspectionType' }, { + label: '鎶ユ绫诲瀷', prop: 'inspectionType', dataType: 'tag', - label: '鐗╂枡绫诲瀷', - prop: 'isExpire', formatData: (params) => { - if (params == 1) { - return '杩囨湡鐗╂枡' - } else { - return null + let obj = this.inspectionTypeList.find(m => m.value == params) + if (obj) { + return obj.label } }, formatType: (params) => { - if (params == 1) { - return 'info' - } else { - return null + let obj = this.inspectionTypeList.find(m => m.value == params) + if (obj) { + return obj.raw.listClass } } + }, + { + label: '杩囨湡鏃堕棿', + prop: 'expirationTime', }, { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'qtyArrived' }, { label: '鍗曚綅', prop: 'buyUnitMeas' }, @@ -447,25 +494,25 @@ }, { label: '鏍峰搧鍨嬪彿', prop: 'sampleModel' }, { label: '妫�楠屼汉', prop: 'userName' }, - { label: '鎶ユ绫诲瀷', prop: 'inspectionType' }, { + label: '鎶ユ绫诲瀷', prop: 'inspectionType', dataType: 'tag', - label: '鐗╂枡绫诲瀷', - prop: 'isExpire', formatData: (params) => { - if (params == 1) { - return '杩囨湡鐗╂枡' - } else { - return null + let obj = this.inspectionTypeList.find(m => m.value == params) + if (obj) { + return obj.label } }, formatType: (params) => { - if (params == 1) { - return 'info' - } else { - return null + let obj = this.inspectionTypeList.find(m => m.value == params) + if (obj) { + return obj.raw.listClass } } + }, + { + label: '杩囨湡鏃堕棿', + prop: 'expirationTime', }, { label: '鍗曚綅', prop: 'buyUnitMeas' }, { label: '鎺ユ敹鏃堕棿', prop: 'receiverDate' }, @@ -619,25 +666,25 @@ }, { label: '鏍峰搧鍨嬪彿', prop: 'sampleModel' }, { label: '妫�楠屼汉', prop: 'userName' }, - { label: '鎶ユ绫诲瀷', prop: 'inspectionType' }, { + label: '鎶ユ绫诲瀷', prop: 'inspectionType', dataType: 'tag', - label: '鐗╂枡绫诲瀷', - prop: 'isExpire', formatData: (params) => { - if (params == 1) { - return '杩囨湡鐗╂枡' - } else { - return null + let obj = this.inspectionTypeList.find(m => m.value == params) + if (obj) { + return obj.label } }, formatType: (params) => { - if (params == 1) { - return 'info' - } else { - return null + let obj = this.inspectionTypeList.find(m => m.value == params) + if (obj) { + return obj.raw.listClass } } + }, + { + label: '杩囨湡鏃堕棿', + prop: 'expirationTime', }, { label: '鍗曚綅', prop: 'buyUnitMeas' }, { label: '鎺ユ敹鏃堕棿', prop: 'receiverDate' }, @@ -744,25 +791,24 @@ }, { label: '鏍峰搧鍨嬪彿', prop: 'sampleModel' }, { label: '妫�楠屼汉', prop: 'userName' }, - { label: '鎶ユ绫诲瀷', prop: 'inspectionType' }, { - dataType: 'tag', - label: '鐗╂枡绫诲瀷', - prop: 'isExpire', + label: '鎶ユ绫诲瀷', prop: 'inspectionType', dataType: 'tag', formatData: (params) => { - if (params == 1) { - return '杩囨湡鐗╂枡' - } else { - return null + let obj = this.inspectionTypeList.find(m => m.value == params) + if (obj) { + return obj.label } }, formatType: (params) => { - if (params == 1) { - return 'info' - } else { - return null + let obj = this.inspectionTypeList.find(m => m.value == params) + if (obj) { + return obj.raw.listClass } } + }, + { + label: '杩囨湡鏃堕棿', + prop: 'expirationTime', }, { label: '鍗曚綅', prop: 'buyUnitMeas' }, { label: '鎺ユ敹鏃堕棿', prop: 'receiverDate' }, @@ -892,6 +938,7 @@ }, mounted() { this.refreshTable() + this.inspectionTypeList = this.dict.type.inspection_type; }, activated() { this.refreshTable() @@ -1359,6 +1406,10 @@ } return '' }, + opendeclareDialog(type, title) { + this.declareTitle = title + this.$refs.declareDialog.open(type) + } }, } </script> diff --git a/src/views/business/productOrder/components/add.vue b/src/views/business/productOrder/components/add.vue index 30f7a47..55d3413 100644 --- a/src/views/business/productOrder/components/add.vue +++ b/src/views/business/productOrder/components/add.vue @@ -352,10 +352,10 @@ </span> </template> </el-table-column> - <el-table-column label="鏉′欢" min-width="140" prop="radius" show-overflow-tooltip> + <el-table-column label="璇曢獙鏉′欢" min-width="140" prop="radius" show-overflow-tooltip> <template slot-scope="scope"> <el-input v-if="(active == 1 || tabIndex == 4) && (isAskOnlyRead || isSpecial)" v-model="scope.row.radius" - :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="鏉′欢" size="small" type="textarea" + :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="璇曢獙鏉′欢" size="small" type="textarea" @change="e => requestChange(e, scope.row, 'radius')"> </el-input> <span v-else>{{ scope.row.radius }}</span> -- Gitblit v1.9.3