Browse Source

✨ feat: 物料申请单、物料基础档案修改DI做唯一性提醒校验(OA_20240719136)

黄梓星 10 tháng trước cách đây
mục cha
commit
eea14aead6

+ 8 - 0
src/api/requisition/basic.js

@@ -209,3 +209,11 @@ export function deleteApplies(data) {
     data: data,
   })
 }
+
+export function checkDiCode(params) {
+  return request({
+    url: `/system/apply/material/checkDiCode`,
+    method: 'get',
+    params: params,
+  })
+}

+ 27 - 1
src/views/material/basicFile/details.vue

@@ -307,11 +307,12 @@
 
                             <el-input
                               size="mini"
-                              v-model="basicData.value[f.prop]"
+                              v-model.trim="basicData.value[f.prop]"
                               :type="f.attribute || 'text'"
                               :readonly="handleJudge(f)"
                               :rows="1"
                               :maxlength="judgeMaxLength(f.prop)"
+                              @change="changeValue(f)"
                             ></el-input>
                           </el-form-item>
                         </template>
@@ -979,6 +980,7 @@ import { getDicts as getDicts } from "@/api/system/dict/data";
 import arrayUtils from "../tools/arrayUtils";
 import { initRules, initParams } from "./init/index";
 import { getDetail } from "@/api/classify/basic";
+import { checkDiCode } from "@/api/requisition/basic";
 
 export default {
   name: "material-details",
@@ -1912,6 +1914,7 @@ export default {
     handleSave() {
       console.log("保存修改");
       this.loading = true;
+      this.checkDi(this.basicData.value["diCode"])
       // 普通保存修改
       this.updateButtonGroup &&
         this.handleSaveMaterial(() => {
@@ -2420,6 +2423,29 @@ export default {
         await this.getMedcineDetails(this.materialId, "material_medcine");
       });
     },
+    // DI码字段监听值改变
+    changeValue(attr) {
+      if (attr.prop == "diCode") {
+        this.checkDi(this.basicData.value["diCode"])
+      }
+    },
+    // 校验DI码
+    async checkDi(prop) {
+      try {
+        this.loading = true;
+        let param = {
+          diCode: prop,
+          isApply: 2
+        }
+        let { code, data } = await checkDiCode(param);
+        if (code === 200 && data.sysMaterialDiInfo.length != 0 ) {
+          this.$modal.notifyWarning(data.sysMaterialDiInfo[0].code + '物料已填写' + data.sysMaterialDiInfo[0].diCode + 'DI码');
+        }
+      } catch (error) {
+      } finally {
+        this.loading = false;
+      }
+    },
   },
 
   watch: {

+ 23 - 1
src/views/material/requisition/details/index.vue

@@ -8,6 +8,7 @@ import {
   betchSubmit,
   classifyDetails,
   getDiCode,
+  checkDiCode,
 } from "@/api/requisition/basic";
 import { REFER } from "@/components/popover-select/api/index";
 export default {
@@ -409,6 +410,7 @@ export default {
       try {
         this.loading = true;
         let params = await this.handleParams();
+        this.checkDi(params.sysMaterialApply.diCode);
         if (params) {
           let { code, msg } =
             this.addType === "add"
@@ -430,6 +432,7 @@ export default {
       try {
         this.loading = true;
         let params = await this.handleParams();
+        this.checkDi(params.sysMaterialApply.diCode);
         if (params) {
           let { code, msg } = await betchSubmit({
             ids: [Number(params.sysMaterialApply.id)],
@@ -450,6 +453,7 @@ export default {
       try {
         this.loading = true;
         let params = await this.handleParams();
+        this.checkDi(params.sysMaterialApply.diCode);
         if (params) {
           let { code, msg } = await saveAndToOa(params);
           code == 200 && this.hide();
@@ -528,6 +532,7 @@ export default {
     },
     async changeDiCode(prop) {
       console.log(prop, "prop");
+      this.checkDi(prop);
       try {
         this.loading = true;
         let { code, data } = await getDiCode(prop);
@@ -547,6 +552,23 @@ export default {
         this.loading = false;
       }
     },
+    // 校验DI码
+    async checkDi(prop) {
+      try {
+        this.loading = true;
+        let param = {
+          diCode: prop,
+          isApply: 0
+        }
+        let { code, data } = await checkDiCode(param);
+        if (code === 200 && data.sysApplyDiInfo.length != 0 ) {
+          this.$modal.notifyWarning(data.sysApplyDiInfo[0].billCode + '物料申请单已填写' + data.sysApplyDiInfo[0].diCode + 'DI码');
+        }
+      } catch (error) {
+      } finally {
+        this.loading = false;
+      }
+    }
   },
   created() {},
   mounted() {},
@@ -857,7 +879,7 @@ export default {
           <template slot="diCode" slot-scope="scope">
             <component
               v-bind="scope.attr"
-              v-model="scope.row[scope.item.key]"
+              v-model.trim="scope.row[scope.item.key]"
               :size="$attrs.size"
               :source.sync="scope.row"
               :disabled="addType === 'see'"