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