Преглед изворни кода

Merge remote-tracking branch 'origin/v0.1.0' into v0.1.0

jingyuanchao пре 1 година
родитељ
комит
4e4ed575c1

+ 11 - 3
src/api/resumption/ruleManager.js

@@ -56,8 +56,8 @@ export function del(id) {
 
 /**
  * 返回履职内容列表
- * @param {} query 
- * @returns 
+ * @param {} query
+ * @returns
  */
 export function pointSelectionPage(query){
   return request({
@@ -65,4 +65,12 @@ export function pointSelectionPage(query){
     method: 'get',
     params: query
   })
-}
+}
+
+export function hasSameSort(data) {
+  return request({
+    url: '/core/resumption/ruleItem/hasSameSort',
+    method: 'post',
+    data: data
+  })
+}

+ 67 - 9
src/views/resumption/ruleManager/dialog.editItem.vue

@@ -28,6 +28,17 @@
                 </el-form-item>
               </el-col>
             </el-row>
+            <el-row>
+              <el-col :span="20">
+                <el-form-item prop="sort" label="显示排序">
+                  <el-input-number
+                    v-model="formData.sort"
+                    :min="1"
+                    controls-position="right"
+                  />
+                </el-form-item>
+              </el-col>
+            </el-row>
           </el-form>
         </div>
         <div class="box">
@@ -54,6 +65,12 @@
               align="center"
             >
             </el-table-column>
+            <el-table-column
+              prop="sort"
+              label="序号"
+              align="center"
+            >
+            </el-table-column>
             <el-table-column label="操作" width="140" align="center">
               <template slot-scope="scope">
                 <el-button
@@ -64,7 +81,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"
@@ -86,6 +103,7 @@
       ref="editDialog"
       @submit="onPointSubmit"
       :rule="rule"
+      :sort-number-list="this.sortNumberList"
       v-bind="$attrs"
     ></EditPoint>
   </div>
@@ -94,7 +112,7 @@
 <script>
 import { mapState, mapMutations } from "vuex";
 import EditPoint from "./dialog.editPoint.vue";
-import { get, update } from "@/api/resumption/ruleManager.js";
+import { get, update, hasSameSort } from "@/api/resumption/ruleManager.js";
 import MessageEx from "@/components/message/messageex.js";
 export default {
   data() {
@@ -103,7 +121,10 @@ export default {
       formData: this.reset(),
       formDataRules: {
         name: [{ required: true, message: "请输入履职项" }],
+        sort: [{ required: true, message: "请输入履职项显示排序" }],
       },
+      sortNumberList:[],
+      updateSort:null
     };
   },
   props: {
@@ -123,12 +144,26 @@ export default {
         name: null,
         ruleId: null,
         pointDtoList: [],
+        sort: undefined
       };
     },
 
     async show(id) {
+      this.sortNumberList = [];
       const data = id ? (await get(id)).data : this.reset();
       this.formData = data;
+      if (data.sort){
+        this.updateSort = data.sort;
+      }else {
+        this.updateSort = null;
+      }
+      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;
     },
     // 事件
@@ -149,11 +184,30 @@ 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) => {
+          let flag = false;
+          //数据库有相同排序号
+          if (res.data && res.data === true){
+            //有相同排序号
+            flag = true;
+          }
+          if (this.updateSort && this.updateSort === this.formData.sort){
+            //是修改且排序号未修改
+            flag = false;
+          }
+          if (flag && flag === 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);
+          });
+
         });
       });
     },
@@ -161,7 +215,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) {
@@ -169,9 +223,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() {},

+ 38 - 2
src/views/resumption/ruleManager/dialog.editPoint.vue

@@ -32,6 +32,13 @@
             </el-select>
             <span style="color:rgb(184,189,192)"><i class="el-icon-info"></i>履职区域、履职点位至少选择一个</span>
           </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%;" v-model="formData.businessType" placeholder="请选择数据来源" clearable>
               <el-option v-for="item in pointDataSource" :key="item.value" :label="item.label"
@@ -59,6 +66,7 @@ import { mapState, mapMutations } from "vuex";
 import { allAreaByOrgtype } from "@/api/system/area";
 import { allCheckByOrgType } from "@/api/system/check";
 import MessageEx from "@/components/message/messageex.js";
+import item from "@/layout/components/Sidebar/Item.vue";
 export default {
   data() {
     return {
@@ -67,11 +75,15 @@ export default {
       formData: this.reset(),
       formDataRules: {
         name: [{ required: true, message: "请输入履职内容" }],
+        sort: [{ required: true, message: "请输入履职内容显示排序" }],
         // areaId: [{ required: true, message: "请选择履职区域" }],
       },
       currentOrgType: null,
       areas: [],
-      checks:[]
+      checks:[],
+      //是否编辑
+      isUpdate: false,
+      updateNumber: null
     };
   },
   props: {
@@ -82,6 +94,10 @@ export default {
       type: Array,
       default: [],
     },
+    sortNumberList: {
+      type: Array,
+      default: [],
+    }
   },
   watch: {},
   computed: {
@@ -99,9 +115,10 @@ export default {
         checkName:null,
         businessType: null,
         remark: null,
+        sort:undefined
       };
     },
-    async show(index, data) {
+    async show(index, data,isUpdate) {
       if (index >= 0) {
         this.index = index;
         this.formData = data;
@@ -109,6 +126,8 @@ export default {
         this.index = -1;
         this.formData = this.reset();
       }
+      this.isUpdate = isUpdate;
+      this.updateNumber = data.sort;
 
       if (this.currentOrgType != this.rule.orgType) {
         this.currentOrgType = this.rule.orgType;
@@ -134,6 +153,23 @@ export default {
           MessageEx.info("履职区域、履职点位至少选择一个");
           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 == "") {

+ 14 - 14
src/views/resumption/ruleManager/index.vue

@@ -104,7 +104,7 @@
             border
             v-if="fresh"
             style="width: 100%"
-            
+
             v-loading="loading"
             height="600"
           >
@@ -116,8 +116,8 @@
               v-if="columns[0].visible"
             >
               <template slot-scope="scope">({{
-                  arabicToChinese(scope.row.itemIndex)
-                }})                
+                  arabicToChinese(scope.row.itemSort)
+                }})
               </template>
             </el-table-column>
             <el-table-column
@@ -154,7 +154,7 @@
                 >
               </template>
             </el-table-column>
-            <el-table-column align="center" width="150px" label="履职内容序号" prop="pointIndex"></el-table-column>
+            <el-table-column align="center" width="150px" label="履职内容序号" prop="pointSort"></el-table-column>
             <el-table-column
               header-align="center"
               prop="pointName"
@@ -328,24 +328,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,
+                itemSort,
+                pointSort,
               };
-              pointIndex++;
+              //pointIndex++;
 
               if (first) {
                 r.rowSpan = item.pointDtoList.length;
@@ -353,9 +353,9 @@ export default {
               }
               d.push(r);
             }
-            itemIndex++;
+            //itemIndex++;
           }
-          
+
           this.tableData=d;
           this.total = Number.parseInt(data.total);
         })