Просмотр исходного кода

安全检查手册添加检查项和检查内容排序

xujie 1 год назад
Родитель
Сommit
2ccd482fad

+ 13 - 4
src/api/safetycheck/ruleManager.js

@@ -10,7 +10,7 @@ export function treeData() {
 
 // 查询【请填写功能名称】列表
 export function page(query) {
-  console.info("asdfasd",`"${JSON.stringify(query)}"`) 
+  console.info("asdfasd",`"${JSON.stringify(query)}"`)
   return request({
     url: '/core/safetycheck/ruleItem/page',
     method: 'get',
@@ -58,8 +58,8 @@ export function del(id) {
 
 /**
  * 返回履职内容列表
- * @param {} query 
- * @returns 
+ * @param {} query
+ * @returns
  */
 export function pointSelectionPage(query){
   return request({
@@ -67,4 +67,13 @@ export function pointSelectionPage(query){
     method: 'get',
     params: query
   })
-}
+}
+
+// 是否有相同排序号
+export function hasSameSort(data) {
+  return request({
+    url: "/core/safetycheck/ruleItem/hasSameSort",
+    method: "post",
+    data: data
+  });
+}

+ 1 - 0
src/components/ImageUpload/index.vue

@@ -221,6 +221,7 @@ export default {
             this.fileList = arr;
           }
 
+          console.log("11111", this.fileList);
           //emit完整图片URL路径
           this.$emit("input", this.listToString(this.fileList));
           // //非完整图片URL路径

+ 9 - 2
src/views/core/outIn/letter/dialog.addletter.vue

@@ -70,14 +70,17 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="上传介绍信附件" ref="letterFile" prop="letterFile">
-                <K-file-upload
+<!--                <K-file-upload
                   ref="uploadFile"
                   :limit=2
                   :defaultValue="formFileListDefualtValue"
                   :fileType="letterFileType"
                   @input="fileListChanged"
                   v-model="formData.letterFile"
-                />
+                />-->
+                  <!-- <ImageListPreview v-model="userInfo.imgFile"></ImageListPreview> -->
+                  <imgUpload ref="uploadimage" type="more" :value="userInfo.letterFile"
+                             @input="imageLetterListChanged"></imgUpload>
               </el-form-item>
             </el-col>
             <el-col :span="12">
@@ -318,6 +321,10 @@ export default {
       this.userInfo.imgFile = list;
       this.$refs.userImgFile.clearValidate();
     },
+    imageLetterListChanged(list) {
+      this.formData.letterFile = list;
+      this.$refs.letterFile.clearValidate();
+    },
     fileListChanged(list)
     {
       this.$refs.letterFile.clearValidate();

+ 46 - 9
src/views/safetycheck/ruleManager/dialog.editItem.vue

@@ -24,6 +24,13 @@
                 clearable
               />
             </el-form-item>
+            <el-form-item prop="sort" label="检查项排序">
+              <el-input-number
+                v-model="formData.sort"
+                :min="1"
+                controls-position="right"
+              />
+            </el-form-item>
           </el-form>
         </div>
         <div class="box">
@@ -34,6 +41,12 @@
             >
           </div>
           <el-table :data="formData.pointDtoList" border style="width: 100%">
+            <el-table-column width="120"
+              align="center"
+              prop="sort"
+              label="检查内容序号"
+            >
+            </el-table-column>
             <el-table-column align="center" prop="name" label="检查内容">
               <template slot-scope="scope">
                 <div style="white-space: pre-wrap">
@@ -57,7 +70,7 @@
                 >
                 <el-popconfirm
                   title="是否删除检查内容"
-                  @confirm="delitem(scope.$index)"
+                  @confirm="delitem(scope.$index,scope.row)"
                   style="margin-left: 20px"
                 >
                   <el-button slot="reference" type="text" size="mini"
@@ -79,6 +92,7 @@
       ref="editDialog"
       @submit="onPointSubmit"
       :rule="rule"
+      :sort-number-list="this.sortNumberList"
       v-bind="$attrs"
     ></EditPoint>
   </div>
@@ -87,7 +101,7 @@
 <script>
 import { mapState, mapMutations } from "vuex";
 import EditPoint from "./dialog.editPoint.vue";
-import { get, update } from "@/api/safetycheck/ruleManager.js";
+import { get, update, hasSameSort } from "@/api/safetycheck/ruleManager.js";
 import MessageEx from "@/components/message/messageex.js";
 export default {
   data() {
@@ -96,7 +110,9 @@ export default {
       formData: this.reset(),
       formDataRules: {
         name: [{ required: true, message: "请输入检查项" }],
+        sort: [{ required: true, message: "请输入检查项排序" }],
       },
+      sortNumberList:[]
     };
   },
   props: {
@@ -116,12 +132,21 @@ export default {
         name: null,
         ruleId: null,
         pointDtoList: [],
+        sort: null
       };
     },
 
     async show(id) {
+      this.sortNumberList = [];
       const data = id ? (await get(id)).data : this.reset();
       this.formData = data;
+      if (this.formData.pointDtoList && this.formData.pointDtoList.length > 0){
+        this.formData.pointDtoList.forEach((item) => {
+          if (item.sort){
+            this.sortNumberList.push(item.sort)
+          }
+        })
+      }
       this.dialogVisible = true;
     },
     // 事件
@@ -141,11 +166,19 @@ export default {
           MessageEx.info("检查内容不能为空!");
           return;
         }
-        update(this.formData).then((v) => {
-          let isAdd = this.formData.id == null || this.formData.id == 0;
-          this.formData = this.reset();
-          this.dialogVisible = false;
-          this.$emit("success", isAdd);
+        hasSameSort({ruleId:this.rule.id,sort:this.formData.sort}).then((res) => {
+          if (res.data && res.data === true) {
+            //有相同排序号
+            MessageEx.info("已存在相同检查项排序号: " + this.formData.sort + ",请重新输入!");
+            return;
+          }
+
+          update(this.formData).then((v) => {
+            let isAdd = this.formData.id == null || this.formData.id == 0;
+            this.formData = this.reset();
+            this.dialogVisible = false;
+            this.$emit("success", isAdd);
+          });
         });
       });
     },
@@ -153,7 +186,7 @@ export default {
       this.dataVisible = false;
     },
     onEdit(index, row) {
-      this.$refs.editDialog.show(index, { ...row });
+      this.$refs.editDialog.show(index, { ...row },true);
     },
     onPointSubmit(index, point) {
       if (index >= 0) {
@@ -161,9 +194,13 @@ export default {
       } else {
         this.formData.pointDtoList.push(point);
       }
+      if (!this.sortNumberList.includes(point.sort)){
+        this.sortNumberList.push(point.sort);
+      }
     },
-    delitem(val) {
+    delitem(val,row) {
       this.formData.pointDtoList.splice(val, 1);
+      this.sortNumberList = this.sortNumberList.filter(item => item !== row.sort)
     },
   },
   mounted() {},

+ 41 - 2
src/views/safetycheck/ruleManager/dialog.editPoint.vue

@@ -17,7 +17,7 @@
           ref="form"
           :model="formData"
           :rules="formDataRules"
-          label-width="110px"
+          label-width="120px"
           class="formbox"
         >
           <!-- <el-form-item label="检查要点编号" prop="pointNum">
@@ -54,6 +54,13 @@
               ></el-option>
             </el-select>
           </el-form-item>
+          <el-form-item label="检查内容排序" prop="sort">
+            <el-input-number
+              v-model="formData.sort"
+              :min="1"
+              controls-position="right"
+            />
+          </el-form-item>
           <el-form-item label="数据来源" prop="businessType">
             <el-select
               style="width: 100%"
@@ -93,6 +100,7 @@
 <script>
 import { mapState, mapMutations } from "vuex";
 import { allAreaByOrgtype } from "@/api/system/area";
+import MessageEx from "@/components/message/messageex.js";
 export default {
   data() {
     return {
@@ -102,9 +110,13 @@ export default {
       formDataRules: {
         name: [{ required: true, message: "请输入检查内容" }],
         areaId: [{ required: true, message: "请选择检查区域" }],
+        sort: [{ required: true, message: "请输入检查内容序号" }],
       },
       currentOrgType: null,
       areas: [],
+      //是否编辑
+      isUpdate: false,
+      updateNumber: null
     };
   },
   props: {
@@ -115,6 +127,10 @@ export default {
       type: Array,
       default: [],
     },
+    sortNumberList: {
+      type: Array,
+      default: [],
+    }
   },
   watch: {},
   computed: {
@@ -130,9 +146,10 @@ export default {
         areaName: null,
         businessType: null,
         remark: null,
+        sort: null
       };
     },
-    async show(index, data) {
+    async show(index, data, isUpdate) {
       if (index >= 0) {
         this.index = index;
         this.formData = data;
@@ -141,6 +158,9 @@ export default {
         this.formData = this.reset();
       }
 
+      this.isUpdate = isUpdate;
+      this.updateNumber = data.sort;
+
       // if (this.currentOrgType != this.rule.orgType) {
       allAreaByOrgtype(this.rule.orgType).then((d) => {
         this.currentOrgType = this.rule.orgType;
@@ -157,6 +177,25 @@ export default {
 
       this.$refs.form.validate((isValidate) => {
         if (!isValidate) return;
+
+        let flag = false;
+        //判断是否有相同检查内容内容排序号
+        if (this.sortNumberList && this.sortNumberList.length > 0){
+          this.sortNumberList.forEach((item) => {
+            if (item === this.formData.sort){
+              flag = true;
+            }
+          })
+        }
+        //编辑且编辑的序号不变则不提示
+        if (this.isUpdate === true && this.updateNumber === this.formData.sort){
+          flag = false;
+        }
+        if (flag && flag === true){
+          MessageEx.info("已存在相同检查内容排序号: "+this.formData.sort+",请重新输入!");
+          return;
+        }
+
         let obj = {};
         obj = { ...this.formData };
         if (obj.businessType == "") {

+ 13 - 13
src/views/safetycheck/ruleManager/index.vue

@@ -117,7 +117,7 @@
               v-if="columns[0].visible"
             >
               <template slot-scope="scope"
-                >({{ arabicToChinese(scope.row.itemIndex) }})
+                >({{ arabicToChinese(scope.row.itemSort) }})
               </template>
             </el-table-column>
             <el-table-column
@@ -158,7 +158,7 @@
               align="center"
               width="150px"
               label="检查内容序号"
-              prop="pointIndex"
+              prop="pointSort"
             ></el-table-column>
             <el-table-column
               header-align="center"
@@ -175,7 +175,7 @@
               show-overflow-tooltip
               v-if="columns[4].visible"
             >
-            </el-table-column>           
+            </el-table-column>
           </el-table>
           <pagination
             v-show="total > 0"
@@ -320,24 +320,24 @@ export default {
           // debugger
           this.loading=false;
           let d = [];
-          let itemIndex = (this.queryParams.pageNum - 1) * this.queryParams.pageSize + 1;
-         
+          //let itemIndex = (this.queryParams.pageNum - 1) * this.queryParams.pageSize + 1;
+
           for (let item of data.rows) {
-            let { id, name } = item;
+            let { id, name, sort:itemSort } = item;
             let first = true;
-            let pointIndex = 1;
+            //let pointIndex = 1;
             for (let p of item.pointDtoList) {
-              let { name: pointName, areaName, checkName } = p;
+              let { name: pointName, areaName, checkName, sort: pointSort } = p;
               let r = {
                 id,
                 name,
                 pointName,
                 areaName,
                 checkName,
-                pointIndex,
-                itemIndex,
+                pointSort,
+                itemSort,
               };
-              pointIndex++;
+              //pointIndex++;
 
               if (first) {
                 r.rowSpan = item.pointDtoList.length;
@@ -345,9 +345,9 @@ export default {
               }
               d.push(r);
             }
-            itemIndex++;
+            //itemIndex++;
           }
-          
+
           this.tableData=d;
           this.total = Number.parseInt(data.total);
         })