yijing před 1 rokem
rodič
revize
599f5da715

+ 8 - 1
src/api/ruleManagement/earlyWarning.js

@@ -35,13 +35,20 @@ export async function listAllRulesObj(params) {
 }
 
 // 更新或保存
-export async function saveOrUpdate(data) {
+export async function rulesSave(data) {
   const res = await request.post('/main/alertrules/save', data);
   if (res.data.code == 0) {
     return res.data;
   }
   return Promise.reject(new Error(res.data.message));
 }
+export async function rulesUpdate(data) {
+  const res = await request.post('/main/alertrules/update', data);
+  if (res.data.code == 0) {
+    return res.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
 
 // 生成编码
 export async function getCode(code) {

+ 1 - 1
src/views/material/product/components/BoatInfo.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="other">
-      <el-form label-width="120px"  ref="form" :model="form">
+      <el-form label-width="100px"  ref="form" :model="form">
          <div class="divider">
            <div class="title">
              <div class="ele-bg-primary"></div>

+ 86 - 97
src/views/material/product/components/MoldInfo.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="other">
-    <el-form label-width="120px" ref="form" :model="form">
+    <el-form label-width="100px" ref="form" :model="form">
       <div class="divider">
         <div class="title">
           <div class="ele-bg-primary"></div>
@@ -11,10 +11,13 @@
       <el-row :gutter="24">
         <el-col :span="8">
           <el-form-item label="收缩系数" prop="shrinkEffictive">
-
-            <el-input-number style="width: 85%" type="number" v-model.number="form.shrinkEffictive" :min="0" :max="100"
-              placeholder="请输入"></el-input-number>
-            <span class="spanbox">%</span>
+            <el-input
+              type="number"
+              v-model.number="form.shrinkEffictive"
+              placeholder="请输入"
+            >
+              <template #append>%</template>
+            </el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
@@ -24,141 +27,127 @@
         </el-col>
         <el-col :span="8">
           <el-form-item label="模孔数量" prop="dieHoleNum">
-            <el-input v-model="form.dieHoleNum">
-            </el-input>
+            <el-input v-model="form.dieHoleNum"> </el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="上冲头数量" prop="upperPunchNum">
-            <el-input v-model="form.upperPunchNum">
-            </el-input>
+            <el-input v-model="form.upperPunchNum"> </el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="下冲头数量" prop="downPunchNum">
-            <el-input v-model="form.downPunchNum">
-            </el-input>
+            <el-input v-model="form.downPunchNum"> </el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="最大冲压次数" prop="maxCyTimes">
-            <el-input v-model="form.maxCyTimes">
-            </el-input>
+            <el-input v-model="form.maxCyTimes"> </el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="大模体型号" prop="maxMoldType">
-            <el-input v-model="form.maxMoldType">
-            </el-input>
+            <el-input v-model="form.maxMoldType"> </el-input>
           </el-form-item>
         </el-col>
 
-        <el-col :span="8" class="rx-sc">
+        <el-col :span="8">
           <el-form-item label="芯棒直径" prop="mandrelDiameter">
-            <el-input v-model="form.mandrelDiameter">
-            </el-input>
+            <el-input v-model="form.mandrelDiameter"> </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="24">
-         <div class="rx-sc">
-          <el-form-item label="长" prop="length">
-            <el-input v-model="form.length">
-              <template slot="append">mm</template>
-            </el-input>
-          </el-form-item>
-
-          <el-form-item label="宽" prop="breadth">
-            <el-input v-model="form.breadth">
-              <template slot="append">mm</template>
-            </el-input>
-          </el-form-item>
-
-          <el-form-item label="高" prop="altitude">
-            <el-input v-model="form.altitude">
-              <template slot="append">mm</template>
-            </el-input>
-          </el-form-item>
-          <el-form-item label="直径" prop="diameter">
-            <el-input v-model="form.diameter">
-              <template slot="append">mm</template>
-            </el-input>
-          </el-form-item>
-         </div>
+          <div class="rx-sc">
+            <el-form-item label="长" prop="length">
+              <el-input v-model="form.length">
+                <template slot="append">mm</template>
+              </el-input>
+            </el-form-item>
+
+            <el-form-item label="宽" prop="breadth">
+              <el-input v-model="form.breadth">
+                <template slot="append">mm</template>
+              </el-input>
+            </el-form-item>
+
+            <el-form-item label="高" prop="altitude">
+              <el-input v-model="form.altitude">
+                <template slot="append">mm</template>
+              </el-input>
+            </el-form-item>
+            <el-form-item label="直径" prop="diameter">
+              <el-input v-model="form.diameter">
+                <template slot="append">mm</template>
+              </el-input>
+            </el-form-item>
+          </div>
         </el-col>
-
       </el-row>
     </el-form>
   </div>
 </template>
 
 <script>
-export default {
-  props: {
-    form: {
-      type: Object,
-      default: {}
-    }
-  },
-  components: {},
-  data() {
-    return {
-
-
-    };
-  },
-
-  methods: {
-
-
-  }
-};
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: {},
+    data() {
+      return {};
+    },
+
+    methods: {}
+  };
 </script>
 
 <style lang="scss" scoped>
-.other {
-  background: #fff;
-  padding: 1px 17px;
-}
+  .other {
+    background: #fff;
+    padding: 1px 17px;
+  }
 
-.divider {
-  margin: 0px 0 20px;
+  .divider {
+    margin: 0px 0 20px;
 
-  .title {
-    display: flex;
-    align-items: center;
-    margin-bottom: 10px;
+    .title {
+      display: flex;
+      align-items: center;
+      margin-bottom: 10px;
 
-    div {
-      width: 8px;
-      height: 20px;
-      margin-right: 10px;
-    }
+      div {
+        width: 8px;
+        height: 20px;
+        margin-right: 10px;
+      }
 
-    span {
-      font-size: 20px;
+      span {
+        font-size: 20px;
+      }
     }
-  }
 
-  .ele-width {
-    width: 100%;
-    height: 2px;
+    .ele-width {
+      width: 100%;
+      height: 2px;
+    }
   }
-}
 
-.form-line {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
+  .form-line {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
 
-  .line-select {
-    margin-left: 15px;
+    .line-select {
+      margin-left: 15px;
+    }
   }
-}
 
-            
-.spanbox {
-        display: inline-block;
-        margin-left: 10px;
-      }
+  .spanbox {
+    display: inline-block;
+    margin-left: 10px;
+  }
 </style>

+ 88 - 71
src/views/material/product/components/PlanInfo.vue

@@ -1,51 +1,59 @@
 <template>
   <div class="other">
-      <el-form label-width="120px"  ref="form" :model="form">
-         <div class="divider">
-           <div class="title">
-             <div class="ele-bg-primary"></div>
-             <span>计划</span>
-           </div>
-           <div class="ele-bg-primary ele-width"></div>
-         </div>
-         <el-row :gutter="24">
-           <el-col :span="8">
-             <el-form-item label="固定提前期" prop="fixLeadTime">
-                <el-input  v-model="form.fixLeadTime" @input="inputFix"/>
-             </el-form-item>
-           </el-col>
-           <el-col :span="8">
-             <el-form-item label="变动提前期" prop="changeLeadTime">
-                <el-input  v-model="form.changeLeadTime" @input="inputChange"/>
-             </el-form-item>
-           </el-col>
-           <el-col :span="8">
-             <el-form-item label="检验提前期" prop="checkLeadTime">
-                <el-input  v-model="form.checkLeadTime" @input="inputCheck"/>
-             </el-form-item>
-           </el-col>
-           <el-col :span="8">
-             <el-form-item label="累计提前期" prop="cumLeadTime">
-                <el-input  v-model="form.cumLeadTime" readonly/>
-             </el-form-item>
-           </el-col>
-           <el-col :span="8">
-             <el-form-item label="提前期单位" prop="unit">
-                <DictSelection dictName="提前期单位" clearable v-model="form.unit">
-                </DictSelection>
-             </el-form-item>
-           </el-col>
-           <el-col :span="8">
-             <el-form-item label="订货间隔期" prop="scheduleType">
-                <div class="form-line">
-                  <el-input  v-model="form.orderIntervalTime"/>
-                  <DictSelection class="line-select" dictName="提前期单位" clearable v-model="form.orderIntervalUnit">
-                  </DictSelection>
-                </div>
-             </el-form-item>
-           </el-col>
-         </el-row>
-      </el-form>
+    <el-form label-width="100px" ref="form" :model="form">
+      <div class="divider">
+        <div class="title">
+          <div class="ele-bg-primary"></div>
+          <span>计划</span>
+        </div>
+        <div class="ele-bg-primary ele-width"></div>
+      </div>
+      <el-row :gutter="24">
+        <el-col :span="8">
+          <el-form-item label="固定提前期" prop="fixLeadTime">
+            <el-input v-model="form.fixLeadTime" @input="inputFix" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="变动提前期" prop="changeLeadTime">
+            <el-input v-model="form.changeLeadTime" @input="inputChange" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="检验提前期" prop="checkLeadTime">
+            <el-input v-model="form.checkLeadTime" @input="inputCheck" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="累计提前期" prop="cumLeadTime">
+            <el-input v-model="form.cumLeadTime" readonly />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="提前期单位" prop="unit">
+            <DictSelection dictName="提前期单位" clearable v-model="form.unit">
+            </DictSelection>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="订货间隔期" prop="scheduleType">
+            <div class="form-line">
+              <el-input
+                v-model="form.orderIntervalTime"
+                style="width: calc(100% - 100px)"
+              />
+              <DictSelection
+                dictName="提前期单位"
+                clearable
+                v-model="form.orderIntervalUnit"
+                style="width: 100px"
+              >
+              </DictSelection>
+            </div>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
   </div>
 </template>
 
@@ -57,39 +65,48 @@
         default: {}
       }
     },
-    components: { },
+    components: {},
     data() {
-      return {
-
-
-      };
+      return {};
     },
 
     methods: {
-      inputFix(val){
-         const  changeLeadTime = this.form.changeLeadTime?Number(this.form.changeLeadTime):0
-         const  checkLeadTime = this.form.checkLeadTime?Number(this.form.checkLeadTime):0
-         val = val?Number(val):0
-         this.form.cumLeadTime = val + changeLeadTime  + checkLeadTime
+      inputFix(val) {
+        const changeLeadTime = this.form.changeLeadTime
+          ? Number(this.form.changeLeadTime)
+          : 0;
+        const checkLeadTime = this.form.checkLeadTime
+          ? Number(this.form.checkLeadTime)
+          : 0;
+        val = val ? Number(val) : 0;
+        this.form.cumLeadTime = val + changeLeadTime + checkLeadTime;
       },
-      inputChange(val){
-        const  fixLeadTime = this.form.fixLeadTime?Number(this.form.fixLeadTime):0
-        const  checkLeadTime = this.form.checkLeadTime?Number(this.form.checkLeadTime):0
-        val = val?Number(val):0
-         this.form.cumLeadTime = val + fixLeadTime  + checkLeadTime
+      inputChange(val) {
+        const fixLeadTime = this.form.fixLeadTime
+          ? Number(this.form.fixLeadTime)
+          : 0;
+        const checkLeadTime = this.form.checkLeadTime
+          ? Number(this.form.checkLeadTime)
+          : 0;
+        val = val ? Number(val) : 0;
+        this.form.cumLeadTime = val + fixLeadTime + checkLeadTime;
       },
-      inputCheck(val){
-          const  fixLeadTime = this.form.fixLeadTime?Number(this.form.fixLeadTime):0
-          const  changeLeadTime = this.form.changeLeadTime?Number(this.form.changeLeadTime):0
-          val = val?Number(val):0
-         this.form.cumLeadTime = val + fixLeadTime  + changeLeadTime
+      inputCheck(val) {
+        const fixLeadTime = this.form.fixLeadTime
+          ? Number(this.form.fixLeadTime)
+          : 0;
+        const changeLeadTime = this.form.changeLeadTime
+          ? Number(this.form.changeLeadTime)
+          : 0;
+        val = val ? Number(val) : 0;
+        this.form.cumLeadTime = val + fixLeadTime + changeLeadTime;
       }
     }
   };
 </script>
 
 <style lang="scss" scoped>
-  .other{
+  .other {
     background: #fff;
     padding: 1px 17px;
   }
@@ -108,17 +125,17 @@
         font-size: 20px;
       }
     }
-    .ele-width{
+    .ele-width {
       width: 100%;
       height: 2px;
     }
   }
-  .form-line{
+  .form-line {
     display: flex;
     align-items: center;
     justify-content: space-between;
-    .line-select{
-      margin-left:15px;
+    .line-select {
+      margin-left: 15px;
     }
   }
 </style>

+ 1 - 1
src/views/material/product/components/ProcureInfo.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="other">
-      <el-form label-width="120px"  ref="form" :model="form">
+      <el-form label-width="100px"  ref="form" :model="form">
          <div class="divider">
            <div class="title">
              <div class="ele-bg-primary"></div>

+ 85 - 75
src/views/material/product/components/ProductionInfo.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="other">
-    <el-form label-width="120px" ref="form" :rules="rules" :model="form">
+    <el-form label-width="100px" ref="form" :rules="rules" :model="form">
       <div class="divider">
         <div class="title">
           <div class="ele-bg-primary"></div>
@@ -31,7 +31,7 @@
         </el-col>
         <el-col :span="8">
           <el-form-item label="固定损耗数" prop="fixLossNum">
-            <el-input v-model="form.fixLossNum"/>
+            <el-input v-model="form.fixLossNum" />
           </el-form-item>
         </el-col>
         <el-col :span="8">
@@ -41,8 +41,12 @@
           </el-form-item>
         </el-col>
         <el-col :span="8">
-          <el-form-item label="生产周期">
-            <el-input style="width: 100%" type="number" v-model="form.productionDays">
+          <el-form-item label="生产周期" prop="productionDays">
+            <el-input
+              style="width: 100%"
+              type="number"
+              v-model="form.productionDays"
+            >
               <span slot="append">天</span>
             </el-input>
           </el-form-item>
@@ -89,92 +93,98 @@
 </template>
 
 <script>
-import deptSelect from '@/components/CommomSelect/dept-select.vue'
-import personSelect from '@/components/CommomSelect/person-select.vue';
-import {positiveIntegerReg} from "ele-admin";
+  import deptSelect from '@/components/CommomSelect/dept-select.vue';
+  import personSelect from '@/components/CommomSelect/person-select.vue';
+  import { positiveIntegerReg } from 'ele-admin';
 
-export default {
-  props: {
-    form: {
-      type: Object,
-      default: {}
-    }
-  },
-  components: {deptSelect, personSelect},
-
-  data() {
-    return {
-      rules: {
-        productionDays: [
-          {required: true, message: '请输入生产周期', trigger: ['blur', 'change']},
-          { pattern: positiveIntegerReg, message: '请输入正确的生产周期', trigger: ['blur', 'change']}
-        ],
-      },
-    };
-  },
-
-  methods: {
-    // 选择所属部门
-    searchDeptNodeClick(id, info) {
-      // 根据部门获取人员
-      const params = {executeGroupId: id};
-      this.$nextTick(() => {
-        this.$refs.directorRef.getList(params);
-      });
-    },
-    //选择负责人
-    handleDirectorChange(id, info) {
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
     },
-    getFormValid() {
-      return new Promise((resolve, reject) => {
-        this.$refs.form.validate( async (valid) => {
-          resolve(await valid)
-        });
-      })
+    components: { deptSelect, personSelect },
+
+    data() {
+      return {
+        rules: {
+          productionDays: [
+            {
+              required: true,
+              message: '请输入生产周期',
+              trigger: ['blur', 'change']
+            },
+            {
+              pattern: positiveIntegerReg,
+              message: '请输入正确的生产周期',
+              trigger: ['blur', 'change']
+            }
+          ]
+        }
+      };
     },
 
-  }
-};
+    methods: {
+      // 选择所属部门
+      searchDeptNodeClick(id, info) {
+        // 根据部门获取人员
+        const params = { executeGroupId: id };
+        this.$nextTick(() => {
+          this.$refs.directorRef.getList(params);
+        });
+      },
+      //选择负责人
+      handleDirectorChange(id, info) {},
+      getFormValid() {
+        return new Promise((resolve, reject) => {
+          this.$refs.form.validate(async (valid) => {
+            resolve(await valid);
+          });
+        });
+      }
+    }
+  };
 </script>
 
 <style lang="scss" scoped>
-.other {
-  background: #fff;
-  padding: 1px 17px;
-}
+  .other {
+    background: #fff;
+    padding: 1px 17px;
+  }
 
-.divider {
-  margin: 0px 0 20px;
+  .divider {
+    margin: 0px 0 20px;
 
-  .title {
-    display: flex;
-    align-items: center;
-    margin-bottom: 10px;
+    .title {
+      display: flex;
+      align-items: center;
+      margin-bottom: 10px;
 
-    div {
-      width: 8px;
-      height: 20px;
-      margin-right: 10px;
-    }
+      div {
+        width: 8px;
+        height: 20px;
+        margin-right: 10px;
+      }
 
-    span {
-      font-size: 20px;
+      span {
+        font-size: 20px;
+      }
     }
-  }
 
-  .ele-width {
-    width: 100%;
-    height: 2px;
+    .ele-width {
+      width: 100%;
+      height: 2px;
+    }
   }
-}
 
-.form-line {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
+  .form-line {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
 
-  .line-select {
-    margin-left: 15px;
+    .line-select {
+      margin-left: 15px;
+    }
   }
-}
 </style>

+ 1 - 1
src/views/material/product/components/PurchasingInfo.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="other">
-    <el-form label-width="120px" ref="form" :model="form">
+    <el-form label-width="100px" ref="form" :model="form">
       <div class="divider">
         <div class="title">
           <div class="ele-bg-primary"></div>

+ 23 - 15
src/views/material/product/components/QualityInfo.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="other">
-    <el-form label-width="120px" ref="form" :model="form">
+    <el-form label-width="100px" ref="form" :model="form">
       <div class="divider">
         <div class="title">
           <div class="ele-bg-primary"></div>
@@ -15,7 +15,12 @@
             <el-radio v-model="form.isComeCheck" :label="0">否</el-radio>
           </el-form-item>
         </el-col>
-        <el-col :span="6" v-if="form.isComeCheck ==1 ">
+        <el-col :span="4">
+          <el-form-item label="检验标准" prop="">
+            <!-- 计量 计重 -->
+          </el-form-item>
+        </el-col>
+        <el-col :span="6" v-if="form.isComeCheck == 1">
           <el-form-item label="物料级别" prop="checkFormula">
             <el-select
               style="width: 100%"
@@ -32,7 +37,7 @@
             </el-select>
           </el-form-item>
         </el-col>
-        <el-col :span="6" v-if="form.isComeCheck ==1 ">
+        <el-col :span="6" v-if="form.isComeCheck == 1">
           <el-form-item label="检验方式" prop="checkFormula">
             <DictSelection
               dictName="检验方案"
@@ -42,22 +47,25 @@
             </DictSelection>
           </el-form-item>
         </el-col>
-        <el-col :span="6" v-if="form.isComeCheck ==1 && form.checkFormula == 1">
+        <el-col
+          :span="6"
+          v-if="form.isComeCheck == 1 && form.checkFormula == 1"
+        >
           <el-form-item label="抽检比例" prop="checkProportion">
             <el-input
               type="number"
-              :min="0.00"
+              :min="0.0"
               v-model="form.checkProportion"
               placeholder="请输入"
               clearable
             >
-            <template slot="append">%</template>
+              <template slot="append">%</template>
             </el-input>
           </el-form-item>
         </el-col>
       </el-row>
       <el-row>
-        <el-col :span="8" v-if="form.isComeCheck ==1 ">
+        <el-col :span="8" v-if="form.isComeCheck == 1">
           <el-form-item label="质检方案" prop="">
             <el-select
               style="width: 100%"
@@ -80,8 +88,8 @@
 </template>
 
 <script>
-import { getQualityTemplate } from '@/api/material/list.js';
-import {getByCode} from "@/api/system/dictionary-data";
+  import { getQualityTemplate } from '@/api/material/list.js';
+  import { getByCode } from '@/api/system/dictionary-data';
   export default {
     props: {
       form: {
@@ -92,8 +100,8 @@ import {getByCode} from "@/api/system/dictionary-data";
     components: {},
     data() {
       return {
-        qualityTemplateList:[],
-        levelOptions:[],
+        qualityTemplateList: [],
+        levelOptions: []
       };
     },
     watch: {},
@@ -103,7 +111,7 @@ import {getByCode} from "@/api/system/dictionary-data";
     },
     methods: {
       async getDictList(code) {
-        debugger
+        debugger;
         let { data: res } = await getByCode(code);
         this.levelOptions = res.map((item) => {
           let values = Object.keys(item);
@@ -114,9 +122,9 @@ import {getByCode} from "@/api/system/dictionary-data";
         });
       },
       getQualityTemplateList() {
-        getQualityTemplate().then(res => {
-          this.qualityTemplateList = res
-        })
+        getQualityTemplate().then((res) => {
+          this.qualityTemplateList = res;
+        });
       }
     }
   };

+ 1 - 1
src/views/material/product/components/RemarkInfo.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="other">
-    <el-form label-width="120px"  ref="form" :model="form">
+    <el-form label-width="100px"  ref="form" :model="form">
          <div class="divider">
            <div class="title">
              <div class="ele-bg-primary"></div>

+ 1 - 1
src/views/material/product/components/SalesInfo.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="other">
-      <el-form label-width="120px"  ref="form" :model="form">
+      <el-form label-width="100px"  ref="form" :model="form">
          <div class="divider">
            <div class="title">
              <div class="ele-bg-primary"></div>

+ 3 - 3
src/views/material/product/components/SalesInfos.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="other">
-    <el-form label-width="120px" ref="form" :model="form">
+    <el-form label-width="100px" ref="form" :model="form">
       <div class="divider">
         <div class="title">
           <div class="ele-bg-primary"></div>
@@ -43,8 +43,8 @@
       return {
         // 计价方式
         pricingWayList: [
-          { id: 1, name: '按数量计价' },
-          { id: 2, name: '按重量计价' }
+          { id: '1', name: '按数量计价' },
+          { id: '2', name: '按重量计价' }
         ]
       };
     },

+ 1 - 1
src/views/material/product/components/TurnoverInfo.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="other">
-    <el-form label-width="120px" ref="form" :model="form">
+    <el-form label-width="100px" ref="form" :model="form">
       <div class="divider">
         <div class="title">
           <div class="ele-bg-primary"></div>

+ 79 - 26
src/views/material/product/components/WarehouseInfo.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="other">
-    <el-form label-width="120px" ref="form" :model="form">
+    <el-form label-width="100px" ref="form1" :model="form">
       <div class="divider">
         <div class="title">
           <div class="ele-bg-primary"></div>
@@ -10,19 +10,16 @@
       </div>
       <el-row :gutter="24">
         <el-col :span="8">
-          <el-form-item label="启用库存预警">
+          <el-form-item label="启用库存预警" prop="isWarn">
             <el-radio v-model="form.isWarn" :label="1">是</el-radio>
             <el-radio v-model="form.isWarn" :label="0">否</el-radio>
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="盘点模式" prop="inventoryMode">
-            <el-radio-group
-              v-model="form.inventoryMode"
-              @input="inventoryModeChange"
-            >
-              <el-radio :label="1">逐个盘点</el-radio>
-              <el-radio :label="2">批量盘点</el-radio>
+            <el-radio-group v-model="form.inventoryMode">
+              <el-radio :label="1">批量盘点</el-radio>
+              <el-radio :label="0">逐个盘点</el-radio>
             </el-radio-group>
           </el-form-item>
         </el-col>
@@ -37,18 +34,54 @@
           </el-form-item>
         </el-col>
         <el-col :span="8">
-          <el-form-item label="安全库存" prop="secureInventory">
-            <el-input v-model="form.secureInventory" />
+          <el-form-item
+            label="安全库存"
+            prop="secureInventory"
+            :rules="{
+              required: this.form.isWarn == 1 ? true : false,
+              message: '请输入安全库存',
+              trigger: 'blur'
+            }"
+          >
+            <el-input v-model="form.secureInventory" @input="handleInputPublic">
+              <template #append>
+                {{ packingUnit }}
+              </template>
+            </el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
-          <el-form-item label="最小库存" prop="minInventory">
-            <el-input v-model="form.minInventory" />
+          <el-form-item
+            label="最小库存"
+            prop="minInventory"
+            :rules="{
+              required: this.form.isWarn == 1 ? true : false,
+              message: '请输入最小库存',
+              trigger: 'blur'
+            }"
+          >
+            <el-input v-model="form.minInventory">
+              <template #append>
+                {{ packingUnit }}
+              </template>
+            </el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
-          <el-form-item label="最大库存" prop="maxInventory">
-            <el-input v-model="form.maxInventory" />
+          <el-form-item
+            label="最大库存"
+            prop="maxInventory"
+            :rules="{
+              required: this.form.isWarn == 1 ? true : false,
+              message: '请输入最大库存',
+              trigger: 'blur'
+            }"
+          >
+            <el-input v-model="form.maxInventory">
+              <template #append>
+                {{ packingUnit }}
+              </template>
+            </el-input>
           </el-form-item>
         </el-col>
 
@@ -65,12 +98,15 @@
         <el-col :span="8">
           <el-form-item label="保质期">
             <div class="form-line">
-              <el-input v-model="form.warrantyPeriod" />
+              <el-input
+                v-model="form.warrantyPeriod"
+                style="width: calc(100% - 100px)"
+              />
               <DictSelection
-                class="line-select"
                 dictName="保质期单位"
                 clearable
                 v-model="form.warrantyPeriodUnit"
+                style="width: 100px"
               >
               </DictSelection>
             </div>
@@ -202,7 +238,7 @@
       </div>
     </el-form>
     <el-dialog title="添加包装组" :visible.sync="dialogVisible" width="50%">
-      <el-form label-width="120px" ref="form" :model="ruleItem">
+      <el-form label-width="100px" ref="form" :model="ruleItem">
         <el-row :gutter="24">
           <el-col :span="12">
             <el-form-item label="包装名称">
@@ -261,6 +297,13 @@
           }
         );
       },
+      packingUnit(val) {
+        this.packagingSpecification = this.packagingSpecification.map(
+          (item) => {
+            return { ...item, minConversionUnit: val };
+          }
+        );
+      },
       packagingSpecification: {
         handler(val) {
           this.$emit('change', val);
@@ -359,6 +402,9 @@
       console.log(this.packingRules, 'packingRules');
     },
     methods: {
+      handleInputPublic(value) {
+        this.form.secureInventory = value.replace(/[^0-9]/g, '');
+      },
       async defaultBuild(val) {
         if (!this.hasPushed) {
           let code = await getCode('package_disposition');
@@ -459,13 +505,13 @@
           }
         }
       },
-      inventoryModeChange(value) {
-        if (value == 1) {
-          this.form.isUnpack = 1;
-        } else {
-          this.form.isUnpack = 0;
-        }
-      },
+      // inventoryModeChange(value) {
+      //   if (value == 1) {
+      //     this.form.isUnpack = 1;
+      //   } else {
+      //     this.form.isUnpack = 0;
+      //   }
+      // },
       // 选择所属部门
       searchDeptNodeClick(id, info) {
         // 根据部门获取人员
@@ -475,7 +521,14 @@
         });
       },
       //选择负责人
-      handleDirectorChange(id, info) {}
+      handleDirectorChange(id, info) {},
+      getFormValid() {
+        return new Promise((resolve, reject) => {
+          this.$refs.form1.validate(async (valid) => {
+            resolve(await valid);
+          });
+        });
+      }
     }
   };
 </script>
@@ -514,7 +567,7 @@
     }
   }
   .rules_box {
-    margin: 0px 20px 20px 20px;
+    margin: 0px 20px 20px 0;
     .rules_box_tabs {
       margin: 20px 0;
       :deep(.el-form-item__content) {

+ 1 - 1
src/views/material/product/components/mouldDialog.vue

@@ -3,7 +3,7 @@
     <ele-modal width="1160px" :visible="visible" v-if="visible" :append-to-body="true" :close-on-click-modal="false"
         custom-class="ele-dialog-form" title="选择物料" @update:visible="updateVisible" :maxable="true">
         <header-title title="基本信息"></header-title>
-        <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-form ref="form" :model="form" :rules="rules" label-width="100px">
             <el-row>
                 <el-col :span="8">
                     <el-form-item label="产品名称:" prop="name">

+ 59 - 16
src/views/material/product/detail.vue

@@ -2,7 +2,7 @@
   <div class="ele-body">
     <el-card shadow="never">
       <el-form
-        label-width="120px"
+        label-width="100px"
         ref="manageForm"
         :model="form"
         :rules="rules"
@@ -80,6 +80,7 @@
                 v-model="form.isConsumable"
                 size="small"
                 style="width: 100%"
+                @change="changeConsumable"
               >
                 <el-option :value="1" label="批量"></el-option>
                 <el-option :value="0" label="单件"></el-option>
@@ -142,12 +143,16 @@
           <el-col :span="8">
             <el-form-item label="体积">
               <div class="form-line">
-                <el-input v-model="form.volume" />
+                <el-input
+                  v-model="form.volume"
+                  style="width: calc(100% - 100px)"
+                  @input="handleInputPublicHasPoint"
+                />
                 <DictSelection
-                  class="line-select"
                   dictName="体积单位"
                   clearable
                   v-model="form.volumeUnit"
+                  style="width: 100px"
                 >
                 </DictSelection>
               </div>
@@ -224,6 +229,7 @@
     <!-- 仓储配置 -->
     <WarehouseInfo
       ref="warehouseRefs"
+      v-if="isShow"
       :form="categoryWms"
       :measuringUnit="form.measuringUnit"
       :packingUnit="form.packingUnit"
@@ -233,7 +239,11 @@
     <!-- 销售配置 -->
     <SalesInfos ref="salesRefs" :form="categorySales" />
     <!-- 采购信息 -->
-    <PurchasingInfo ref="PurchasingInfoRefs" :form="categoryPurchase" />
+    <PurchasingInfo
+      ref="PurchasingInfoRefs"
+      v-if="categoryPurchase"
+      :form="categoryPurchase"
+    />
     <!-- 生产信息 -->
     <ProductionInfo ref="productionRefs" :form="categoryMes" />
     <!-- 计划 -->
@@ -309,6 +319,7 @@
     },
     data() {
       return {
+        isShow: true,
         packagingSpecificationList: [],
         loading: false,
         levelOptions: [
@@ -344,17 +355,19 @@
           remarkAttach: []
         },
         categorySales: {},
-        categoryPurchase: { purchaseMultiplier: 1 },
+        categoryPurchase: { purchaseMultiplier: 1, measuringUnit: '' },
         categoryAps: {},
         categoryMes: {},
         categoryMold: {},
         categoryPallet: {},
         categoryQms: {
-          isComeCheck: "1"
+          isComeCheck: '1'
         },
         categoryVehicle: {},
         categoryWms: {
-          isUnpack: 1
+          isUnpack: 1,
+          isWarn: 1,
+          inventoryMode: ''
         },
         packageDispositionVOList: [],
         categoryLevelPathId: null,
@@ -415,6 +428,7 @@
               packingUnit: '',
               extField: {}
             };
+            this.categorySales = {};
             this.purchaseInfo = {};
             this.remarkform = {
               remarkAttach: []
@@ -426,7 +440,9 @@
             this.categoryQms = {};
             this.categoryVehicle = {};
             this.categoryWms = {
-              isUnpack: 1
+              isUnpack: 1,
+              isWarn: 1,
+              inventoryMode: this.form.isConsumable
             };
             this.packageDispositionVOList = [];
             this.categoryLevelPathId = null;
@@ -489,18 +505,40 @@
 
       this.getFieldModel();
 
-      // if (this.$route.query.id) {
-      //   this._getDetails();
-      // }
       this.getDictList('productionType');
     },
     methods: {
+      handleInputPublicHasPoint(value) {
+        const filteredValue = value.replace(/[^0-9.]/g, '');
+        let finalValue = '';
+        const dotIndex = filteredValue.indexOf('.');
+        if (dotIndex !== -1) {
+          finalValue = filteredValue.slice(0, dotIndex + 3);
+        } else {
+          finalValue = filteredValue;
+        }
+        this.form.volume = finalValue;
+      },
+      changeConsumable() {
+        this.categoryWms.inventoryMode = this.form.isConsumable;
+      },
       changeUnit() {
-        if (this.form.measuringUnit) {
-          this.categoryPurchase.measuringUnit = this.form.measuringUnit;
-          if (this.form.packingUnit) {
-            this.$refs.warehouseRefs.defaultBuild(this.form.packingUnit);
+        if (this.$route.query.id == '' || this.$route.query.id == null) {
+          if (this.form.measuringUnit) {
+            this.categoryPurchase.measuringUnit = this.form.measuringUnit;
+            // 如果有计量单位和包装单位 默认添加包装组
+            if (this.form.packingUnit) {
+              this.$refs.warehouseRefs.defaultBuild(this.form.packingUnit);
+            }
+          }
+        } else {
+          this.isShow = false;
+          if (this.form.measuringUnit && this.form.packingUnit) {
+            console.log(this.form.measuringUnit, 'this.form.measuringUnit');
+            console.log(this.form.packingUnit, 'this.form.packingUnit');
           }
+
+          this.isShow = true;
         }
       },
       changePackagingSpecification(val) {
@@ -515,6 +553,9 @@
           ...info.category
         };
 
+        // if (this.form.measuringUnit && this.form.packingUnit) {
+        //   this.$refs.warehouseRefs.defaultBuild(this.form.packingUnit);
+        // }
         this.categoryLevelPathId = info.category.categoryLevelPathIdParent;
         this.judgeSet(info);
 
@@ -531,6 +572,7 @@
       // 判断字段类型并赋值
       judgeSet(info) {
         console.log('info-------', info);
+
         if (typeof info.categoryAps == 'string') {
           this.categoryAps = {};
         } else {
@@ -675,8 +717,9 @@
       submit() {
         this.$refs.manageForm.validate(async (valid) => {
           let productionValid = await this.$refs.productionRefs.getFormValid();
+          let warehouseValid = await this.$refs.warehouseRefs.getFormValid();
 
-          if (!valid || !productionValid) {
+          if (!valid || !productionValid || !warehouseValid) {
             return false;
           }
 

+ 4 - 2
src/views/rulesManagement/earlyWarningRules/components/matter-add.vue

@@ -248,7 +248,8 @@
 <script>
   import { deepClone } from '@/utils/index';
   import {
-    saveOrUpdate,
+    rulesSave,
+    rulesUpdate,
     getCode,
     getDetail
   } from '@/api/ruleManagement/earlyWarning';
@@ -525,7 +526,8 @@
         }
         this.$refs.contentConfigForm.validate(async (valid) => {
           if (valid) {
-            let res = await saveOrUpdate(form);
+            let request = this.isBindPlan == 'add' ? rulesSave : rulesUpdate;
+            let res = await request(form);
             if (res) {
               this.$message.success('操作成功!');
               this.handleClose();