From 2f09193504d23be41ce263ffd355af8b787363e4 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期五, 05 一月 2024 11:03:10 +0800
Subject: [PATCH] 用户管理+密码策略

---
 Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue |  594 +++++++++++++++++++++++++++++++----------------------------
 1 files changed, 313 insertions(+), 281 deletions(-)

diff --git a/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue b/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue
index aa9b662..4ffee46 100644
--- a/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue
+++ b/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue
@@ -1,11 +1,12 @@
 <template>
-  <basic-container>
+  <basic-container >
     <avue-crud v-model="form" :option="option" :data="data" ref="crud"  @on-load="onLoad" @row-save="rowSave" @row-update="rowUpdate" @row-del="rowDel" :page.sync="page">
       <template slot="menu" slot-scope="{ row, index }">
         <el-button
           type="text"
           size="small"
           icon="el-icon-edit"
+          v-if="permissionList.editBtn"
           @click="handleEdit(row, index)"
         >
           缂栬緫
@@ -14,6 +15,7 @@
           type="text"
           size="small"
           icon="el-icon-delete"
+          v-if="permissionList.delBtn"
           @click="handleDel(row, index)"
         >
           鍒犻櫎
@@ -36,88 +38,15 @@
   getremove,
   combination
 } from "@/api/system/passwords";
+import {mapGetters} from "vuex";
 export default {
   name: "passwords.vue",
   data() {
-    // 鏈�灏忛暱搴︽鍒欑粦瀹氬��
-    let validatePass=""
-    //鏈�澶ч暱搴︽鍒欑粦瀹氬��
-    let validatePass1=""
-    //杩囨湡鏃堕棿姝e垯缁戝畾鍊�
-    let validatePass2=""
-    //鎻愰啋鏃堕棿姝e垯缁戝畾鍊�
-    let validatePass3=""
-    //閿佸畾娆℃暟姝e垯缁戝畾鍊�
-    let validatePass4=""
-    //閿佸畾鏃堕棿姝e垯缁戝畾鍊�
-    let validatePass5=""
-    //鏈�灏忛暱搴︾粦瀹歷alue
-    let values=""
-    //鏈�澶ч暱搴︾粦瀹歷alue
-    let values1=""
-    //鏈�灏忛暱搴︽鍒欐柟娉�
-    validatePass = (rule, value,callback) => {
-     values=value*1
-      if(value == ""){
-        callback(new Error('璇疯緭鍏ュ瘑鐮佹渶灏忛暱搴�'));
-      // }else if(values >= values1*1){
-      //   callback(new Error('瀵嗙爜鏈�灏忛暱搴︿笉鑳藉ぇ浜庡瘑鐮佹渶澶ч暱搴�'));
-      }else if(/[^\d]/g.test(value)){
-        callback(new Error('瀵嗙爜鏈�灏忛暱搴︾殑杈撳叆绫诲瀷鍙兘涓烘暟瀛楃被鍨�'));
-      }else {
-        callback();
-      }
-    };
-    //鏈�澶ч暱搴︽鍒欐柟娉�
-    validatePass1= (rule, value,callback) =>{
-      values1=value*1
-     if(value == ""){
-        callback(new Error('璇疯緭鍏ュ瘑鐮佹渶澶ч暱搴�'));
-      }else if(values1 <= values){
-       callback(new Error('瀵嗙爜鏈�澶ч暱搴︿笉鑳藉皬浜庡瘑鐮佹渶澶ч暱搴�'));
-     }else if(/[^\d]/g.test(value)){
-       callback(new Error('瀵嗙爜鏈�澶ч暱搴︾殑杈撳叆绫诲瀷鍙兘涓烘暟瀛楃被鍨�'));
-     }else {
-       callback();
-     }
-    };
-    validatePass2 = (rule, value,callback) => {
-      if(value == ""){
-        callback(new Error('璇疯緭鍏ヨ繃鏈熸椂闂�'));
-      }else if(/[^\d]/g.test(value)){
-        callback(new Error('杩囨湡鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
-      }else {
-        callback();
-      }
-    };
-    validatePass3 = (rule, value,callback) => {
-      if(value == ""){
-        callback(new Error('璇疯緭鍏ヨ繃鏈熸椂闂�'));
-      }else if(/[^\d]/g.test(value)){
-        callback(new Error('杩囨湡鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
-      }else {
-        callback();
-      }
-    };
-    validatePass4 = (rule, value,callback) => {
-      if(value == ""){
-        callback(new Error('璇疯緭鍏ラ攣瀹氭鏁�'));
-      }else if(/[^\d]/g.test(value)){
-        callback(new Error('閿佸畾娆℃暟鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
-      }else {
-        callback();
-      }
-    };
-    validatePass5 = (rule, value,callback) => {
-      if(value == ""){
-        callback(new Error('璇疯緭鍏ラ攣瀹氭椂闂�'));
-      }else if(/[^\d]/g.test(value)){
-        callback(new Error('閿佸畾鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
-      }else {
-        callback();
-      }
-    };
     return {
+      //鏈�灏忛暱搴︾粦瀹歷alue
+      values:"",
+      //鏈�澶ч暱搴︾粦瀹歷alue
+      values1:"",
       form:{},
       page: {
         pageSize: 10,
@@ -125,180 +54,7 @@
         total: 100
       },
       data: [],
-      option: {
-        headerAlign: 'center',
-        align: 'center',
-        border: true,
-        index: true,
-        rowKey:'id',
-        editBtn:false,
-        delBtn:false,
-        column: [
-          {
-            label: '绛栫暐鍚嶇О',
-            prop: 'strategyName',
-            align: 'left',
-            span:24,
-            labelWidth: "11%",
-            rules: [{
-              required: true,
-              message: "璇疯緭鍏ョ瓥鐣ュ悕绉�",
-              trigger: "blur"
-            }]
-          },
-          {
-            label: '瀵嗙爜鏈�灏忛暱搴�',
-            prop: 'minPwdLen',
-            span:12,
-            labelWidth:"22%",
-            rules: [{
-              required: true,
-              validator:validatePass,
-              trigger: 'blur'
-            }]
-          },
-          {
-            label: '瀵嗙爜鏈�澶ч暱搴�',
-            prop: 'maxPwdLen',
-            span:12,
-            labelWidth:"25%",
-            rules: [{
-              required: true,
-              validator:validatePass1,
-              trigger: 'change'
-            }]
-          },
-          {
-            label: '缁勫悎鏂规硶',
-            prop: 'combinationNames',
-            labelWidth: 91,
-            display:false,
 
-          },
-          {
-            //鍐欎袱涓粍鍚堟柟娉曟槸鍥犱负id鍜宯ame涓嶈兘鍚屾椂缁戝畾杩欎釜prop鏉ユ覆鏌擄紝涓�涓〃鏍煎仛闅愯棌鏉ユ暟鎹搷浣滐紙琛ㄥ崟闅愯棌锛夛紝鍙︿竴涓〃鏍煎仛鏄剧ず鍙樉绀哄湪椤甸潰锛堣〃鍗曢殣钘忥級銆�
-            label: '缁勫悎鏂规硶',
-            prop: 'combinationIds',
-            type: "checkbox",
-            span:12,
-            labelWidth:"22%",
-            id:5,
-            hide:true,
-            change:this.handleCheckboxChange,
-            rules: [{
-              required: true,
-              message: "璇烽�夋嫨缁勫悎鏂规硶",
-              trigger: "blur"
-            }],
-            dicUrl: '/api/ubcs-system/combination/select',
-            dicMethod: 'get',
-            props: {
-              value: "ID",
-              label: "NAME",
-            },
-          },
-          {
-            label: '蹇呭~绉嶇被',
-            prop: 'requiredType',
-            type: 'select',
-            span:12,
-            labelWidth:"25%",
-            change:this.handleSelectChange,
-            rules: [{
-              required: true,
-              message: "璇烽�夋嫨蹇呭~绉嶇被",
-              trigger: "blur"
-            }],
-            dicData:[{
-              label:'1绉�',
-              value:1,
-              disabled:false
-              },
-              {
-                label:'2绉�',
-                value:2,
-                disabled:false
-              },
-              {
-                label:'3绉�',
-                value:3,
-                disabled:false
-              },
-              {
-                label:'4绉�',
-                value:4,
-                disabled:false
-              }
-            ]
-
-          },
-          {
-            label: '杩囨湡鏃堕棿(澶�)',
-            prop:'expirationTime',
-            span:12,
-            labelWidth:"22%",
-            rules: [{
-              required: true,
-              validator:validatePass2,
-              trigger: 'blur'
-            }]
-          },
-          {
-            label: '鎻愰啋鏃堕棿(澶�)',
-            prop:'reminderTime',
-            span:12,
-            labelWidth:"25%",
-            rules: [{
-              required: true,
-              validator:validatePass3,
-              trigger: 'blur'
-            }]
-          },
-          {
-            label: '閿佸畾娆℃暟(娆�)',
-            prop:'lockingNum',
-            span:12,
-            labelWidth:"22%",
-            rules: [{
-              required: true,
-              validator:validatePass4,
-              trigger: 'blur'
-            }]
-          },
-          {
-            label: '閿佸畾鏃堕棿(鍒嗛挓)',
-            prop:'lockingTime',
-            span:12,
-            labelWidth:"25%",
-            rules: [{
-              required: true,
-              validator:validatePass5,
-              trigger: 'blur'
-            }]
-          },
-          {
-            label: '鎻忚堪',
-            prop:'desc',
-            type: 'textarea',
-            span:12,
-            labelWidth:"22%",
-            rows: 5,
-          },
-          {
-            label: '鏄惁涓洪粯璁ょ瓥鐣�',
-            prop: 'isDefault',
-            type: 'switch',
-            labelWidth: 132,
-            dicData:[{
-              label:'鍚�',
-              value:0
-            },{
-              label:'鏄�',
-              value:1
-            }]
-          }
-        ],
-      },
       //娣诲姞瀛樻斁澶氶�夌殑鍙橀噺,鐢ㄤ簬涓嬫媺鑿滃崟鐨勭鐢ㄦ晥鏋滃拰蹇呭~绉嶇被鏄惁澶т簬缁勫悎鏂瑰紡鐒跺悗鎻愮ず鐢ㄦ埛閲嶆柊閫夋嫨
       checkboxlength:"",
       //杩欎釜鏄笅鎷夎彍鍗曠殑鏁版嵁鍙橀噺
@@ -315,53 +71,332 @@
     }
 
   },
+  computed:{
+    ...mapGetters(["permission"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(this.permission.password.password_add, false),
+        //viewBtn: this.vaildData(this.permission.password.user_view, false),
+        delBtn: this.vaildData(this.permission.password.password_delete, false),
+        editBtn: this.vaildData(this.permission.password.password_edit, false),
+      };
+    },
+    platformPermissionList() {
+      return {
+        addBtn: this.vaildData(this.permission.password.password_add, false),
+        //viewBtn: this.vaildData(this.permission.password.user_view, false),
+        delBtn: this.vaildData(this.permission.password.password_delete, false),
+        editBtn: this.vaildData(this.permission.password.password_edit, false),
+      };
+    },
+    option(){
+      return{
+          headerAlign: 'center',
+          align: 'center',
+          columnBtn:false,
+          border: true,
+          index: true,
+          rowKey:'id',
+          addBtn:this.permissionList.addBtn,
+          editBtn:false,
+          height:700,
+          delBtn:false,
+          refreshBtn:false,
+          column: [
+            {
+              label: '绛栫暐鍚嶇О',
+              prop: 'strategyName',
+              align: 'left',
+              span:24,
+              labelWidth: "11%",
+              rules: [{
+                required: true,
+                message: "璇疯緭鍏ョ瓥鐣ュ悕绉�",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: '瀵嗙爜鏈�灏忛暱搴�',
+              prop: 'minPwdLen',
+              span:12,
+              labelWidth:"22%",
+              rules: [{
+                required: true,
+                validator:(rule, value,callback)=>{
+                  this.values=value*1
+                  if(value == ""){
+                    callback(new Error('璇疯緭鍏ュ瘑鐮佹渶灏忛暱搴�'));
+                  }else if(/[^\d]/g.test(value)){
+                    callback(new Error('瀵嗙爜鏈�灏忛暱搴︾殑杈撳叆绫诲瀷鍙兘涓烘暟瀛楃被鍨�'));
+                  }else if(this.values >= this.values1 && this.values1 != 0){
+                    callback(new Error('瀵嗙爜鏈�灏忛暱搴︿笉鑳藉ぇ浜庡瘑鐮佹渶澶ч暱搴�'))
+                  }else {
+                    callback();
+                  }
+                },
+                trigger: 'blur'
+              }]
+            },
+            {
+              label: '瀵嗙爜鏈�澶ч暱搴�',
+              prop: 'maxPwdLen',
+              span:12,
+              labelWidth:"25%",
+              rules: [{
+                required: true,
+                validator:(rule, value,callback) =>{
+                  this.values1=value*1
+                  if(value == ""){
+                    callback(new Error('璇疯緭鍏ュ瘑鐮佹渶澶ч暱搴�'));
+                  }else if(this.values1 <= this.values){
+                    callback(new Error('瀵嗙爜鏈�澶ч暱搴︿笉鑳藉皬浜庡瘑鐮佹渶澶ч暱搴�'));
+                  }else if(/[^\d]/g.test(value)){
+                    callback(new Error('瀵嗙爜鏈�澶ч暱搴︾殑杈撳叆绫诲瀷鍙兘涓烘暟瀛楃被鍨�'));
+                  }else {
+                    callback();
+                  }
+                },
+                trigger: 'change'
+              }]
+            },
+            {
+              label: '缁勫悎鏂规硶',
+              prop: 'combinationNames',
+              labelWidth: 91,
+              display:false,
+
+            },
+            {
+              label: '缁勫悎鏂规硶',
+              prop: 'combinationIds',
+              type: "checkbox",
+              span:12,
+              labelWidth:"22%",
+              id:5,
+              hide:true,
+              change: this.handleCheckboxChange,
+              rules: [{
+                required: true,
+                message: "璇烽�夋嫨缁勫悎鏂规硶",
+                trigger: "blur"
+              }],
+              dicUrl: '/api/ubcs-system/combination/select',
+              dicMethod: 'get',
+              props: {
+                value: "ID",
+                label: "NAME",
+              },
+            },
+            {
+              label: '蹇呭~绉嶇被',
+              prop: 'requiredType',
+              type: 'select',
+              span:12,
+              labelWidth:"25%",
+              change:this.handleSelectChange,
+              rules: [{
+                required: true,
+                message: "璇烽�夋嫨蹇呭~绉嶇被",
+                trigger: "blur"
+              }],
+              dicData:[{
+                label:'1绉�',
+                value:1,
+                disabled:false
+              },
+                {
+                  label:'2绉�',
+                  value:2,
+                  disabled:false
+                },
+                {
+                  label:'3绉�',
+                  value:3,
+                  disabled:false
+                },
+                {
+                  label:'4绉�',
+                  value:4,
+                  disabled:false
+                }
+              ]
+
+            },
+            {
+              label: '杩囨湡鏃堕棿(澶�)',
+              prop:'expirationTime',
+              span:12,
+              labelWidth:"22%",
+              rules: [{
+                required: true,
+                validator: (rule, value,callback) => {
+                  if(value == ""){
+                    callback(new Error('璇疯緭鍏ヨ繃鏈熸椂闂�'));
+                  }else if(/[^\d]/g.test(value)){
+                    callback(new Error('杩囨湡鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+                  }else {
+                    callback();
+                  }
+                },
+                trigger: 'blur'
+              }]
+            },
+            {
+              label: '鎻愰啋鏃堕棿(澶�)',
+              prop:'reminderTime',
+              span:12,
+              labelWidth:"25%",
+              rules: [{
+                required: true,
+                validator:(rule, value,callback) => {
+                  if(value == ""){
+                    callback(new Error('璇疯緭鍏ヨ繃鏈熸椂闂�'));
+                  }else if(/[^\d]/g.test(value)){
+                    callback(new Error('杩囨湡鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+                  }else {
+                    callback();
+                  }
+                },
+                trigger: 'blur'
+              }]
+            },
+            {
+              label: '閿佸畾娆℃暟(娆�)',
+              prop:'lockingNum',
+              span:12,
+              labelWidth:"22%",
+              rules: [{
+                required: true,
+                validator:(rule, value,callback) => {
+                  if(value == ""){
+                    callback(new Error('璇疯緭鍏ラ攣瀹氭鏁�'));
+                  }else if(/[^\d]/g.test(value)){
+                    callback(new Error('閿佸畾娆℃暟鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+                  }else {
+                    callback();
+                  }
+                },
+                trigger: 'blur'
+              }]
+            },
+            {
+              label: '閿佸畾鏃堕棿(鍒嗛挓)',
+              prop:'lockingTime',
+              span:12,
+              labelWidth:"25%",
+              rules: [{
+                required: true,
+                validator:(rule, value,callback) => {
+                  if(value == ""){
+                    callback(new Error('璇疯緭鍏ラ攣瀹氭椂闂�'));
+                  }else if(/[^\d]/g.test(value)){
+                    callback(new Error('閿佸畾鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+                  }else {
+                    callback();
+                  }
+                },
+                trigger: 'blur'
+              }]
+            },
+            {
+              label: '鎻忚堪',
+              prop:'desc',
+              type: 'textarea',
+              span:12,
+              labelWidth:"22%",
+              rows: 5,
+            },
+            {
+              label: '鏄惁涓洪粯璁ょ瓥鐣�',
+              prop: 'isDefault',
+              type: 'switch',
+              labelWidth: 132,
+              dicData:[{
+                label:'鍚�',
+                value:0
+              },{
+                label:'鏄�',
+                value:1
+              }]
+            }
+          ],
+      }
+    }
+  },
   created() {
     this.onLoad()
-    combination().then(res=>{
-      console.log("111",res)
-    })
-  },
-  mount() {
   },
   methods:{
     handleSelectChange(val){
       this.selectlength=val
-      // if(val.value >= this.checkboxlength.value.length && this.checkboxlength.value.length > 0){
-      //   console.log("澶т簬")
-      // }
     },
     handleCheckboxChange(val) {
       const arr = this.option.column[5];
       this.checkboxlength = val.value;
       this.checkboxedit = this.checkboxlength.toString().split(",");
 
-      if (val.value != undefined && val.value != null) {
-        if (this.checkboxlist == val.value) {
+      if (val.value !== undefined && val.value !== null) {
+        if (this.checkboxlist === val.value) {
+          return;
         } else {
           this.checkboxlist = val.value;
           if (
-            this.selectlength.value >= val.value.length &&
+            this.selectlength.value > val.value.length &&
             val.value.length > 0
           ) {
-            this.showMessage("蹇呭~绉嶇被涓嶈兘澶т簬缁勫悎鏂规硶锛岃閲嶆柊閫夋嫨锛�");
+            this.showWarningMessage();
           } else if (
-            this.selectlength.value >= this.checkboxedit.length &&
+            this.selectlength.value > this.checkboxedit.length &&
             this.checkboxedit.length > 0
           ) {
-            this.showMessage("蹇呭~绉嶇被涓嶈兘澶т簬缁勫悎鏂规硶锛岃閲嶆柊閫夋嫨锛�");
+            this.showWarningMessage();
           }
         }
       }
-      const disabledCount = Math.min(this.checkboxedit.length, 4);
-      for (let i = 0; i < arr.dicData.length; i++) {
-        arr.dicData[i].disabled = i >= disabledCount;
+
+      if (val.value !== undefined && val.value !== null) {
+        if (val.value.length === 1) {
+          this.setDisabled(arr, [0]);
+        } else if (val.value.length === 2) {
+          this.setDisabled(arr, [0, 1]);
+        } else if (val.value.length === 3) {
+          this.setDisabled(arr, [0, 1, 2]);
+        } else if (val.value.length === 4) {
+          this.setDisabled(arr, [0, 1, 2, 3]);
+        } else if (val.value.length === 0) {
+          this.setDisabled(arr, [-1]);
+        }
+      } else if (this.checkboxNumber.length !== 0) {
+        this.setDisabled(arr, [0, 1, 2, 3]);
       }
-      if (this.editFlag == true) {
-        const disabledCount = Math.min(this.checkboxedit.length, 4);
-        for (let i = 0; i < arr.dicData.length; i++) {
-          arr.dicData[i].disabled = i >= disabledCount;
+
+      if (this.editFlag) {
+        if (this.checkboxedit.length === 1) {
+          this.setDisabled(arr, [0]);
+        } else if (this.checkboxedit.length === 2) {
+          this.setDisabled(arr, [0, 1]);
+        } else if (this.checkboxedit.length === 3) {
+          this.setDisabled(arr, [0, 1, 2]);
+        } else if (this.checkboxedit.length === 4) {
+          this.setDisabled(arr, [0, 1, 2, 3]);
+        } else if (this.checkboxedit.length === 0) {
+          this.setDisabled(arr, [-1]);
         }
       }
+    },
+
+    setDisabled(arr, indices) {
+      arr.dicData.forEach((item, index) => {
+        item.disabled = !indices.includes(index);
+      });
+    },
+
+    showWarningMessage() {
+      this.$message({
+        message: '蹇呭~绉嶇被涓嶈兘澶т簬缁勫悎鏂规硶锛岃閲嶆柊閫夋嫨锛�',
+        type: 'warning',
+        showClose: true,
+      });
     },
     rowDel(row){
       this.$confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", {
@@ -379,7 +414,7 @@
           });
           this.onLoad();
         }).catch(res=>{
-        console.log(res)
+        // console.log(res)
       })
     },
     rowSave(row,done){
@@ -399,7 +434,7 @@
       })
     },
     rowEdit(row){
-      console.log("鎵撳紑缂栬緫edit",row)
+      // console.log("鎵撳紑缂栬緫edit",row)
     },
     handleDel(row){
       this.$refs.crud.rowDel(row,row.$index);
@@ -407,12 +442,9 @@
     handleEdit(row){
       this.$refs.crud.rowEdit(row,row.$index);
       this.editFlag=true;
-      // const arr=this.option.column[5];
       this.checkboxNumber=row.combinationIds.split(",")
       this.selectNumber=row.requiredType
-      console.log(this.checkboxNumber, this.selectNumber)
-    //  鎵撳紑缂栬緫棣栧厛鍒ゆ柇锛岀粍鍚堟柟娉曟槸鍚﹀皬浜庡繀濉绫伙紝濡傛灉灏忎簬缁欎簣鎻愰啋淇敼
-        if(this.checkboxNumber.length<=this.selectNumber){
+        if(this.checkboxNumber.length < this.selectNumber){
           this.$message({
             type:"warning",
             message:"蹇呭~绉嶇被涓嶈兘澶т簬缁勫悎鏂规硶锛岃閲嶆柊閫夋嫨锛�"
@@ -428,7 +460,7 @@
         });
         done()
       }).catch(res=>{
-        console.log(res)
+        // console.log(res)
       })
     },
     onLoad(page, params = {}) {
@@ -439,7 +471,7 @@
         // this.data = data.records;
         // this.loading = false;
         // this.selectionClear();
-        console.log(res)
+        // console.log(res)
         this.page.total=res.data.data.total
         this.data=res.data.data.records
       });

--
Gitblit v1.9.3