chencc пре 1 година
родитељ
комит
778152e35a

+ 11 - 0
src/api/material/list.js

@@ -119,3 +119,14 @@ export async function deletePackageDisposition(data) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+
+// 查询质检方案列表
+export async function getQualityTemplate(data) {
+  const res = await request.get(
+    `/main/category/getQualityTemplate`
+  );
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

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

@@ -1,5 +1,13 @@
 import request from '@/utils/request';
 
+// 预警规则下拉列表数据
+export async function listAllAlertLevel(params) {
+  const res = await request.get(`/main/alertrules/listAllAlertLevel/`, params);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
 // 操作类型 
 export async function listAllActionType(params) {
   const res = await request.get(`/main/alertrules/listAllActionType/`, params);

+ 7 - 1
src/views/material/BOMmanage/qualityTesting/inspectionClassify/index.vue

@@ -137,11 +137,17 @@
           },
 
           {
-            prop: 'categoryLevelName',
+            prop: 'categoryLevelClassName',
             label: '质检类型',
             align: 'center',
             minWidth: 110
           },
+          // {
+          //   prop: 'categoryLevelName',
+          //   label: '质检类型',
+          //   align: 'center',
+          //   minWidth: 110
+          // },
 
           {
             prop: 'inspectionCode',

+ 7 - 1
src/views/material/BOMmanage/qualityTesting/term.vue

@@ -127,11 +127,17 @@
 
         columns: [
           {
-            prop: 'categoryLevelName',
+            prop: 'categoryLevelClassName',
             label: '质检类型',
             align: 'center',
             minWidth: 110
           },
+          // {
+          //   prop: 'categoryLevelName',
+          //   label: '质检类型',
+          //   align: 'center',
+          //   minWidth: 110
+          // },
 
           {
             prop: 'inspectionName',

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

@@ -56,6 +56,23 @@
             </DictSelection>
           </el-form-item>
         </el-col>
+        <el-col :span="8">
+          <el-form-item label="产地" prop="purchaseOrigins">
+            <el-select
+              style="width: 100%"
+              v-model="form.purchaseOrigins"
+              filterable
+              multiple
+            >
+              <el-option
+                v-for="item in dictList"
+                :key="item.value"
+                :value="item.value"
+                :label="item.label"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
         <el-col :span="8">
           <el-form-item label="采购组织" prop="checkDepart">
             <deptSelect
@@ -81,6 +98,7 @@
 <script>
   import deptSelect from '@/components/CommomSelect/dept-select.vue';
   import personSelect from '@/components/CommomSelect/person-select.vue';
+  import {getByCode} from "@/api/system/dictionary-data";
   export default {
     props: {
       form: {
@@ -90,7 +108,9 @@
     },
     components: { deptSelect, personSelect },
     data() {
-      return {};
+      return {
+        dictList:[]
+      };
     },
     watch: {
       form(data) {
@@ -103,7 +123,20 @@
         }
       }
     },
+    activated(){
+      this.getDictList('purchase_origin');
+    },
     methods: {
+      async getDictList(code) {
+        let { data: res } = await getByCode(code);
+        this.dictList = res.map((item) => {
+          let values = Object.keys(item);
+          return {
+            value: Number(values[0]),
+            label: item[values[0]]
+          };
+        });
+      },
       // 选择所属部门
       searchDeptNodeClick(id, info) {
         // 根据部门获取人员

+ 78 - 8
src/views/material/product/components/QualityInfo.vue

@@ -9,13 +9,30 @@
         <div class="ele-bg-primary ele-width"></div>
       </div>
       <el-row :gutter="24">
-        <el-col :span="8">
+        <el-col :span="4">
           <el-form-item label="是否来料检验" prop="isComeCheck">
             <el-radio v-model="form.isComeCheck" :label="1">是</el-radio>
             <el-radio v-model="form.isComeCheck" :label="0">否</el-radio>
           </el-form-item>
         </el-col>
-        <el-col :span="8">
+        <el-col :span="6" v-if="form.isComeCheck ==1 ">
+          <el-form-item label="物料级别" prop="checkFormula">
+            <el-select
+              style="width: 100%"
+              v-model="form.levelItem"
+              placeholder="请选择"
+            >
+              <el-option
+                v-for="item in levelOptions"
+                :label="item.label"
+                :value="item.value"
+                :key="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="6" v-if="form.isComeCheck ==1 ">
           <el-form-item label="检验方式" prop="checkFormula">
             <DictSelection
               dictName="检验方案"
@@ -25,10 +42,37 @@
             </DictSelection>
           </el-form-item>
         </el-col>
-        <el-col :span="8">
-          <!-- <el-form-item label="检验方案" prop="">
-            <el-select placeholder="请选择" style="width: 100%"></el-select>
-          </el-form-item> -->
+        <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"
+              v-model="form.checkProportion"
+              placeholder="请输入"
+              clearable
+            >
+            <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-form-item label="质检方案" prop="">
+            <el-select
+              style="width: 100%"
+              v-model="form.qualityTemplateIds"
+              filterable
+              multiple
+            >
+              <el-option
+                v-for="item in qualityTemplateList"
+                :key="item.id"
+                :value="item.id"
+                :label="item.qualitySchemeTemplateName"
+              ></el-option>
+            </el-select>
+          </el-form-item>
         </el-col>
       </el-row>
     </el-form>
@@ -36,6 +80,8 @@
 </template>
 
 <script>
+import { getQualityTemplate } from '@/api/material/list.js';
+import {getByCode} from "@/api/system/dictionary-data";
   export default {
     props: {
       form: {
@@ -45,10 +91,34 @@
     },
     components: {},
     data() {
-      return {};
+      return {
+        qualityTemplateList:[],
+        levelOptions:[],
+      };
     },
     watch: {},
-    methods: {}
+    created() {
+      this.getQualityTemplateList();
+      this.getDictList('level_type');
+    },
+    methods: {
+      async getDictList(code) {
+        debugger
+        let { data: res } = await getByCode(code);
+        this.levelOptions = res.map((item) => {
+          let values = Object.keys(item);
+          return {
+            value: Number(values[0]),
+            label: item[values[0]]
+          };
+        });
+      },
+      getQualityTemplateList() {
+        getQualityTemplate().then(res => {
+          this.qualityTemplateList = res
+        })
+      }
+    }
   };
 </script>
 

+ 18 - 1
src/views/material/product/detail.vue

@@ -315,7 +315,24 @@ export default {
       packageDispositionVOList: [],
       categoryLevelPathId: null,
 
-      dictList: [],
+        remarkform: {
+          remarkAttach: []
+        },
+        categorySales: {},
+        categoryPurchase: { purchaseMultiplier: 1 },
+        categoryAps: {},
+        categoryMes: {},
+        categoryMold: {},
+        categoryPallet: {},
+        categoryQms: {
+          isComeCheck: "1"
+        },
+        categoryVehicle: {},
+        categoryWms: {
+          isUnpack: 1
+        },
+        packageDispositionVOList: [],
+        categoryLevelPathId: null,
 
       fileList: [],
       // 表单验证规则

+ 132 - 96
src/views/rulesManagement/earlyWarningRules/components/matter-add.vue

@@ -56,38 +56,28 @@
           <el-col :span="8">
             <el-form-item label="周期" prop="alertCycleValue">
               <el-col :span="16">
-                <el-input-number
+                <el-input
                   v-model="formData.alertCycleValue"
                   placeholder="请输入"
                   size="small"
-                  :min="0"
-                  :precision="1"
-                  :controls="false"
-                  style="width: 100%"
+                  @input="handleInput"
                 />
               </el-col>
               <el-col :span="8">
-                <el-select v-model="formData.alertCycleUnit" size="small">
-                  <el-option
-                    v-for="(value, key) in cycleUnitOpt"
-                    :key="key"
-                    :label="value"
-                    :value="key"
-                  />
-                </el-select>
+                <el-form-item prop="alertCycleUnit" label-width="0px">
+                  <el-select v-model="formData.alertCycleUnit" size="small">
+                    <el-option
+                      v-for="(value, key) in cycleUnitOpt"
+                      :key="key"
+                      :label="value"
+                      :value="key"
+                    />
+                  </el-select>
+                </el-form-item>
               </el-col>
             </el-form-item>
           </el-col>
-          <!-- 阈值 -->
-          <el-col :span="8">
-            <el-form-item label="阈值" prop="thresholdValue">
-              <el-input
-                v-model="formData.thresholdValue"
-                placeholder="请输入"
-                size="small"
-              ></el-input>
-            </el-form-item>
-          </el-col>
+
           <el-col :span="8">
             <el-form-item label="状态" prop="enabled">
               <el-select
@@ -98,14 +88,6 @@
                 <el-option label="生效" :value="1">生效</el-option>
                 <el-option label="失效" :value="0">失效</el-option>
               </el-select>
-              <!-- <el-switch
-                v-model="formData.enabled"
-                active-text="生效"
-                inactive-text="失效"
-                :active-value="1"
-                :inactive-value="0"
-              >
-              </el-switch> -->
             </el-form-item>
           </el-col>
         </el-row>
@@ -133,24 +115,49 @@
                 :rules="contentConfigFormRules.targetAddressName"
               >
                 <el-input
+                  placeholder="请选择"
                   v-model="scope.row.targetAddressName"
                   @focus="handleAddInfo(scope.row, scope.$index)"
-                ></el-input>
-                <!-- <el-select
-                  v-model="scope.row.manager"
-                  placeholder="请选择"
-                  style="width: 100%"
-                  filterable
-                  multiple
                 >
+                  <template #suffix>
+                    <el-badge :value="NumberOfPeople"></el-badge>
+                  </template>
+                </el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="alertLevel" label="预警级别" width="120">
+            <template slot-scope="scope">
+              <el-form-item
+                :prop="'actionList.' + scope.$index + '.alertLevel'"
+                label-width="0"
+                :rules="contentConfigFormRules.alertLevel"
+              >
+                <el-select size="small" v-model="scope.row.alertLevel">
                   <el-option
-                    v-for="item in managerData"
-                    :key="item.id"
-                    :label="item.name"
-                    :value="item.id"
-                  >
-                  </el-option>
-                </el-select> -->
+                    v-for="(value, key) in allAlertLevelData"
+                    :key="key"
+                    :label="value"
+                    :value="key"
+                  />
+                </el-select>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column prop="thresholdValue" label="阈值" width="120">
+            <template slot-scope="scope">
+              <el-form-item
+                :prop="'actionList.' + scope.$index + '.thresholdValue'"
+                label-width="0"
+                :rules="contentConfigFormRules.thresholdValue"
+              >
+                <el-input
+                  v-model="scope.row.thresholdValue"
+                  placeholder="请输入"
+                  @input="
+                    handleInputByTable(scope.row.thresholdValue, scope.$index)
+                  "
+                ></el-input>
               </el-form-item>
             </template>
           </el-table-column>
@@ -173,22 +180,6 @@
             </template>
           </el-table-column>
 
-          <!-- <el-table-column prop="urgent" label="紧急程度" width="120">
-            <template slot-scope="scope">
-              <el-form-item
-                :prop="'actionList.' + scope.$index + '.urgent'"
-                label-width="0"
-                :rules="contentConfigFormRules.urgent"
-              >
-                <DictSelection
-                  dictName="紧急程度"
-                  v-model="scope.row.urgent"
-                  :disabled="isBindPlan"
-                >
-                </DictSelection>
-              </el-form-item>
-            </template>
-          </el-table-column> -->
           <el-table-column
             prop="alertMessageTempateCode"
             label="模板编码"
@@ -206,6 +197,7 @@
                   placeholder="请选择"
                   v-model="scope.row.alertMessageTempateCode"
                   @change="changeTemplate(scope.row, scope.$index)"
+                  filterable
                 >
                   <el-option
                     v-for="item in templateData"
@@ -218,7 +210,7 @@
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column prop="content" label="内容" width="240">
+          <el-table-column prop="content" label="内容">
             <template slot-scope="scope">
               <el-input
                 type="textarea"
@@ -229,7 +221,7 @@
               ></el-input>
             </template>
           </el-table-column>
-          <el-table-column label="操作">
+          <el-table-column label="操作" width="80">
             <template slot-scope="scope">
               <el-button
                 type="text"
@@ -258,10 +250,7 @@
   import {
     saveOrUpdate,
     getCode,
-    getDetail,
-    listAllRulesObj,
-    listAllDateUnit,
-    listAllActionType
+    getDetail
   } from '@/api/ruleManagement/earlyWarning';
   import { notifyTemplatePageAPI } from '@/api/notifyManage';
   import { getUserPage } from '@/api/system/organization';
@@ -290,14 +279,14 @@
           ruleObjCode: '',
           alertCycleValue: '1',
           alertCycleUnit: '',
-          thresholdValue: '',
           enabled: 1,
           actionList: [
             {
               targetAddress: '',
               targetAddressName: '',
               actionType: '',
-              // urgent: '',
+              alertLevel: '',
+              thresholdValue: '',
               alertMessageTempateCode: '',
               content: ''
             }
@@ -313,19 +302,24 @@
           ruleObjCode: [
             { required: true, message: '请选择预警对象', trigger: 'blur' }
           ],
+          alertCycleUnit: [
+            { required: true, message: '请输入周期单位', trigger: 'blur' }
+          ],
           alertCycleValue: [
             { required: true, message: '请输入周期', trigger: 'blur' }
           ],
-
+          alertLevel: [
+            { required: true, message: '请选择紧急程度', trigger: 'blur' }
+          ],
           targetAddressName: [
             { required: true, message: '请选择通知人', trigger: 'blur' }
           ],
           actionType: [
             { required: true, message: '请选择操作类型', trigger: 'blur' }
           ],
-          // urgent: [
-          //   { required: true, message: '请选择紧急程度', trigger: 'blur' }
-          // ],
+          thresholdValue: [
+            { required: true, message: '请输入阈值', trigger: 'blur' }
+          ],
           alertMessageTempateCode: [
             { required: true, message: '请选择模板编码', trigger: 'blur' }
           ]
@@ -333,9 +327,12 @@
         isBindPlan: '',
         managerData: [],
         templateData: [],
+        NumberOfPeople: '',
+
         allRulesData: {},
         cycleUnitOpt: {},
-        operationTypeData: {}
+        operationTypeData: {},
+        allAlertLevelData: {}
       };
     },
     watch: {},
@@ -343,27 +340,60 @@
       this.gettemplateList();
       this.getInfo();
     },
-
+    mounted() {
+      const str1 = localStorage.getItem('allRulesData');
+      if (str1) {
+        this.allRulesData = JSON.parse(str1);
+      }
+      const str2 = localStorage.getItem('cycleUnitOpt');
+      if (str2) {
+        this.cycleUnitOpt = JSON.parse(str2);
+      }
+      const str3 = localStorage.getItem('operationTypeData');
+      if (str3) {
+        this.operationTypeData = JSON.parse(str3);
+      }
+      const str4 = localStorage.getItem('allAlertLevelData');
+      if (str4) {
+        this.allAlertLevelData = JSON.parse(str4);
+      }
+    },
     methods: {
-      async getAllRulesObj() {
-        const res = await listAllRulesObj();
-        this.allRulesData = res;
-      },
-      async getAllDateUnit() {
-        const res = await listAllDateUnit();
-        this.cycleUnitOpt = res;
+      handleInput(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.formData.alertCycleValue = value.replace(/[^0-9]/g, '');
       },
-      async getAllActionType() {
-        const res = await listAllActionType();
-        this.operationTypeData = res;
+      handleInputByTable(value, index) {
+        // 表内限制输入框 只保留数字和小数点
+        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.formData.actionList[index].thresholdValue = finalValue;
       },
+
       handleAddInfo(row, index) {
         this.formData.actionList[index].targetAddress = '';
         this.formData.actionList[index].targetAddressName = '';
         this.$refs.selectPersonDialogRef.open(row, index);
       },
       changeParent(list, index) {
-        console.log(list, 'list', this.isBindPlan);
+        this.NumberOfPeople = list.length;
+        console.log(list.length, 'list', this.isBindPlan);
         let ids = list
           .map((item) => {
             return item.id;
@@ -392,7 +422,10 @@
           pageNum: 1,
           size: 999
         });
-        this.templateData = res?.list;
+        if (res?.list) {
+          this.templateData = res.list;
+          localStorage.setItem('templateData', JSON.stringify(res.list));
+        }
       },
       async getInfo() {
         getUserPage({
@@ -402,12 +435,8 @@
         });
       },
       async openDialog(row, type) {
-        this.addMatterDialog = true;
         this.isBindPlan = type;
-
-        await this.getAllRulesObj();
-        await this.getAllDateUnit();
-        await this.getAllActionType();
+        // await this.getAllData();
         if (type != 'add') {
           this.getRuleInfo(row.id, type);
         } else {
@@ -418,6 +447,7 @@
         if (type != 'edit') {
           this.getOrderCode();
         }
+        this.addMatterDialog = true;
       },
 
       async getRuleInfo(id, type) {
@@ -460,8 +490,10 @@
         if (this.formData.actionList) {
           this.formData.actionList.push({
             targetAddress: '',
+            targetAddressName: '',
             actionType: '',
-            // urgent: '',
+            alertLevel: '',
+            thresholdValue: '',
             alertMessageTempateCode: '',
             content: ''
           });
@@ -469,8 +501,10 @@
           let arr = [
             {
               targetAddress: '',
+              targetAddressName: '',
               actionType: '',
-              // urgent: '',
+              alertLevel: '',
+              thresholdValue: '',
               alertMessageTempateCode: '',
               content: ''
             }
@@ -497,8 +531,6 @@
               this.handleClose();
               this.$emit('done');
             }
-          } else {
-            this.$message.warning('请将信息补充完整!');
           }
         });
       }
@@ -587,4 +619,8 @@
   ::v-deep .el-input-number .el-input__inner {
     text-align: left !important;
   }
+
+  ::v-deep .el-badge__content {
+    font-size: 10px;
+  }
 </style>

+ 12 - 16
src/views/rulesManagement/earlyWarningRules/components/matter-search.vue

@@ -6,23 +6,21 @@
     @keyup.enter.native="search"
     @submit.native.prevent
   >
-    <el-row :gutter="15">
+    <el-row :gutter="24">
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="规则名称:">
           <el-input clearable v-model.trim="where.name" placeholder="请输入" />
         </el-form-item>
-        <el-form-item label="规则状态:">
-          <DictSelection dictName="规则状态" clearable v-model.trim="where.status">
-          </DictSelection>
-        </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="规则编码:">
           <el-input clearable v-model.trim="where.code" placeholder="请输入" />
         </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="创建时间:">
           <el-date-picker
-            style="width: 100%;"
+            style="width: 100%"
             v-model="time"
             type="daterange"
             range-separator="至"
@@ -35,18 +33,17 @@
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="预警类型:">
-          <DictSelection dictName="预警类型" clearable v-model.trim="where.type">
+        <el-form-item label="规则状态:">
+          <DictSelection
+            dictName="规则状态"
+            clearable
+            v-model.trim="where.status"
+          >
           </DictSelection>
         </el-form-item>
-        <el-form-item label="组织机构:">
-          <auth-selection v-model.trim="where.deptIds" style="width: 100%"></auth-selection>
-        </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="创建人:">
-          <el-input clearable v-model.trim="where.userName" placeholder="请输入" />
-        </el-form-item>
+
+      <el-col v-bind="styleResponsive ? { lg: 24, md: 12 } : { span: 24 }">
         <div class="ele-form-actions">
           <el-button
             type="primary"
@@ -71,7 +68,6 @@
 </template>
 
 <script>
-
   export default {
     data() {
       // 默认表单数据

+ 115 - 42
src/views/rulesManagement/earlyWarningRules/details.vue

@@ -9,26 +9,45 @@
           <el-row>
             <el-col :span="6">
               <el-form-item label="规则编码">
-                <span> {{ infoData.code }} </span>
+                <span> {{ infoData.ruleCode || '' }} </span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="规则名称">
-                <span> {{ infoData.name }} </span>
+                <span> {{ infoData.ruleName || '' }} </span>
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="规则类型">
-                <span>
-                  {{ getDictValue('规则类型', infoData.ruleType) }}
-                </span>
+              <el-form-item label="预警对象">
+                <template v-for="(value, key) in allRulesData">
+                  <span v-if="key == infoData.ruleObjCode">{{
+                    value + '-' + key
+                  }}</span>
+                </template>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item label="周期">
+                <span> {{ infoData.alertCycleValue || '' }}</span>
+                <template v-if="infoData.alertCycleValue">
+                  <span v-for="(value, key) in cycleUnitOpt">
+                    <span v-if="key == infoData.alertCycleUnit">
+                      {{ value }}</span
+                    >
+                  </span>
+                </template>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="状态">
-                <span class="primary-text" v-if="infoData.status">生效</span>
-                <span class="danger-text" v-else-if="!infoData.status"
-                  >失效</span
+                <span>
+                  {{
+                    infoData.enabled == 1
+                      ? '生效'
+                      : infoData.enabled == 0
+                      ? '失效'
+                      : ''
+                  }}</span
                 >
               </el-form-item>
             </el-col>
@@ -43,17 +62,8 @@
               </el-form-item>
             </el-col>
           </el-row>
-
-          <el-row>
-          <el-col :span="24">
-            <el-form-item label="巡点检周期">
-              <rule-cycle :formData="infoData" />
-            </el-form-item>
-          </el-col>
-          </el-row>
-          
         </div>
-        <template v-if="!(infoData.ruleType && infoData.ruleType.code == 4)">
+        <template>
           <div class="basic-details-title">
             <span class="border-span">内容配置</span>
           </div>
@@ -65,13 +75,42 @@
             border
             :header-cell-style="{ background: '#F0F3F3' }"
           >
-            <el-table-column type="index" label="序号" width="60" />
-            <el-table-column prop="minWarningValue" label="预警值" />
-            <el-table-column prop="warningUnit" label="预警时间单位" />
-            <el-table-column prop="urgent" label="紧急程度" />
-            <el-table-column prop="name" label="检测事项" />
-            <el-table-column prop="content" label="检测内容" />
-            <el-table-column prop="norm" label="检测标准" />
+            <el-table-column
+              type="index"
+              align="center"
+              label="序号"
+              width="60"
+            />
+            <el-table-column
+              prop="targetAddressName"
+              label="通知人"
+              width="120"
+            />
+            <el-table-column
+              align="center"
+              prop="alertLevel"
+              label="预警级别"
+              width="120"
+            />
+            <el-table-column
+              align="center"
+              prop="thresholdValue"
+              label="阈值"
+              width="120"
+            />
+            <el-table-column
+              align="center"
+              prop="actionTypeName"
+              label="操作类型"
+              width="120"
+            />
+            <el-table-column
+              align="center"
+              prop="alertMessageTempateCodeName"
+              label="模板编码"
+              width="320"
+            />
+            <el-table-column align="center" prop="content" label="内容" />
           </el-table>
         </template>
       </div>
@@ -83,7 +122,10 @@
 <script>
   import dictMixins from '@/mixins/dictMixins';
   import RuleCycle from './components/rule-cycle';
-  import { getDetail } from '@/api/ruleManagement/earlyWarning';
+  import {
+    getDetail,
+    listAllRulesObj
+  } from '@/api/ruleManagement/earlyWarning';
   export default {
     mixins: [dictMixins],
     components: { RuleCycle },
@@ -92,32 +134,63 @@
         num: 1,
         dialogVisible: false,
         infoData: {},
-        form: {},
-        type: [],
         tableData: [],
-        ruleTypeObj: {
-          1: '巡点检规则',
-          2: '保养规则',
-          4: '盘点规则'
-        }
+
+        allRulesData: {},
+        cycleUnitOpt: {},
+        operationTypeData: {},
+        allAlertLevelData: {},
+        templateData: []
       };
     },
     async created() {
-      this.getInfo();
-      this.requestDict('规则类型');
+      await this.getAll();
+      if (this.$route.query.id) this.getInfo();
     },
+    mounted() {},
     methods: {
-      delete() {},
-      // 点击切换事件
-      tab(index) {
-        this.num = index;
+      getAll() {
+        const str1 = localStorage.getItem('allRulesData');
+        if (str1) {
+          this.allRulesData = JSON.parse(str1);
+        }
+        const str2 = localStorage.getItem('cycleUnitOpt');
+        if (str2) {
+          this.cycleUnitOpt = JSON.parse(str2);
+        }
+        const str3 = localStorage.getItem('operationTypeData');
+        if (str3) {
+          this.operationTypeData = JSON.parse(str3);
+        }
+        const str4 = localStorage.getItem('allAlertLevelData');
+        if (str4) {
+          this.allAlertLevelData = JSON.parse(str4);
+        }
+        const str5 = localStorage.getItem('templateData');
+        if (str4) {
+          this.templateData = JSON.parse(str5);
+        }
+        console.log(this.templateData, 'this.templateData');
       },
-
       // 表格数据
       async getInfo() {
         const data = await getDetail(this.$route.query.id);
-        this.tableData = data.ruleItems;
         this.infoData = data;
+        data?.actionList.forEach((ele) => {
+          for (const key in this.operationTypeData) {
+            if (key == ele.actionType) {
+              ele.actionTypeName = this.operationTypeData[key];
+            }
+          }
+
+          this.templateData.forEach((item) => {
+            if (item.code == ele.alertMessageTempateCode) {
+              ele.alertMessageTempateCodeName = item.name + '-' + item.code;
+              ele.content = item.content;
+            }
+          });
+        });
+        this.tableData = data.actionList;
       }
     }
   };

+ 30 - 21
src/views/rulesManagement/earlyWarningRules/index.vue

@@ -85,7 +85,10 @@
     getList,
     getDetail,
     removeRule,
-    listAllDateUnit
+    listAllDateUnit,
+    listAllRulesObj,
+    listAllActionType,
+    listAllAlertLevel
   } from '@/api/ruleManagement/earlyWarning';
   import dictMixins from '@/mixins/dictMixins';
   export default {
@@ -132,17 +135,6 @@
               return this.getDictValue('规则状态', _row.enabled);
             }
           },
-          // {
-          //   prop: 'ruleType',
-          //   label: '预警类型',
-          //   align: 'center',
-          //   showOverflowTooltip: true,
-          //   slot: 'enable',
-          //   minWidth: 110,
-          //   formatter: (_row, _column, cellValue) => {
-          //     return this.getDictValue('预警类型', _row.ruleType);
-          //   }
-          // },
           {
             prop: 'alertCycleValue',
             label: '周期',
@@ -150,10 +142,6 @@
             showOverflowTooltip: true,
             minWidth: 110,
             slot: 'alertCycleValue'
-
-            // formatter: (_row, _column, cellValue) => {
-            //   return this.getDictValue('规则周期', _row.cycleType);
-            // }
           },
           {
             prop: 'createUserName',
@@ -186,7 +174,11 @@
         loading: false,
         pageType: 'add',
         dialogTitle: '',
-        cycleUnitOpt: {}
+
+        allRulesData: {},
+        cycleUnitOpt: {},
+        operationTypeData: {},
+        allAlertLevelData: {}
       };
     },
     computed: {},
@@ -194,7 +186,7 @@
       // this.requestDict('规则周期');
       this.requestDict('预警类型');
       this.requestDict('规则状态');
-      this.getAllDateUnit();
+      this.getAllData();
     },
     methods: {
       /* 表格数据源 */
@@ -205,10 +197,27 @@
       reload(where) {
         this.$refs.table.reload({ page: 1, where });
       },
-      async getAllDateUnit() {
-        const res = await listAllDateUnit();
-        this.cycleUnitOpt = res;
+
+      async getAllData() {
+        try {
+          const res1 = await listAllRulesObj();
+          this.allRulesData = res1;
+          localStorage.setItem('allRulesData', JSON.stringify(res1));
+          const res2 = await listAllDateUnit();
+          this.cycleUnitOpt = res2;
+          localStorage.setItem('cycleUnitOpt', JSON.stringify(res2));
+          const res3 = await listAllActionType();
+          this.operationTypeData = res3;
+          localStorage.setItem('operationTypeData', JSON.stringify(res3));
+          const res4 = await listAllAlertLevel();
+          this.allAlertLevelData = res4;
+          localStorage.setItem('allAlertLevelData', JSON.stringify(res4));
+        } catch (error) {
+          console.error('Failed to load data:', error);
+          throw error;
+        }
       },
+
       remove(row) {
         removeRule([row.id]).then((res) => {
           this.$message.success('删除成功!');