From 156e136377680ac2dd5ad89735b7273db6f6d1d5 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期六, 24 二月 2024 20:27:02 +0800
Subject: [PATCH] 远程部署功能完善

---
 Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue |  424 ++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 305 insertions(+), 119 deletions(-)

diff --git a/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue b/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue
index 864b72c..15aed07 100644
--- a/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue
+++ b/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue
@@ -1,6 +1,28 @@
 <template>
   <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">
+    <avue-crud ref="crud" v-model="form" :data="data" :option="option" :page.sync="page" @on-load="onLoad"
+               @row-save="rowSave" @row-update="rowUpdate" @row-del="rowDel">
+      <template slot="menu" slot-scope="{ row, index }">
+        <el-button
+          v-if="permissionList.editBtn"
+          icon="el-icon-edit"
+          size="small"
+          type="text"
+          @click="handleEdit(row, index)"
+        >
+          缂栬緫
+        </el-button>
+        <el-button
+          v-if="permissionList.delBtn"
+          icon="el-icon-delete"
+          size="small"
+          type="text"
+          @click="handleDel(row, index)"
+        >
+          鍒犻櫎
+        </el-button>
+      </template>
+
       <template slot="icon" slot-scope="scope">
         <i :class="scope.row.icon" style="font-size:24px"></i>
       </template>
@@ -14,57 +36,81 @@
   // getOnesearch,
   getadd,
   getupdata,
-  getremove
+  getremove,
 } from "@/api/system/passwords";
+import {mapGetters} from "vuex";
+
 export default {
   name: "passwords.vue",
   data() {
-    // 鏈�灏忛暱搴︽鍒欑粦瀹氬��
-    let validatePass=""
-    //鏈�澶ч暱搴︽鍒欑粦瀹氬��
-    let validatePass1=""
-    //鏈�灏忛暱搴︾粦瀹歷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('瀵嗙爜鏈�灏忛暱搴︿笉鑳藉ぇ浜庡瘑鐮佹渶澶ч暱搴�'));
-      }
-    };
-    //鏈�澶ч暱搴︽鍒欐柟娉�
-    validatePass1= (rule, value,callback) =>{
-      values1=value*1
-     if(value === ""){
-        callback(new Error('璇疯緭鍏ュ瘑鐮佹渶澶ч暱搴�'));
-      }else if(values1 <= values){
-       callback(new Error('瀵嗙爜鏈�澶ч暱搴︿笉鑳藉皬浜庡瘑鐮佹渶澶ч暱搴�'));
-     }
-    }
     return {
-      form:{},
+      //鏈�灏忛暱搴︾粦瀹歷alue
+      values: "",
+      //鏈�澶ч暱搴︾粦瀹歷alue
+      values1: "",
+      form: {},
       page: {
         pageSize: 10,
         currentPage: 1,
         total: 100
       },
       data: [],
-      option: {
+
+      //娣诲姞瀛樻斁澶氶�夌殑鍙橀噺,鐢ㄤ簬涓嬫媺鑿滃崟鐨勭鐢ㄦ晥鏋滃拰蹇呭~绉嶇被鏄惁澶т簬缁勫悎鏂瑰紡鐒跺悗鎻愮ず鐢ㄦ埛閲嶆柊閫夋嫨
+      checkboxlength: "",
+      //杩欎釜鏄笅鎷夎彍鍗曠殑鏁版嵁鍙橀噺
+      selectlength: "",
+      //杩欎釜鏄敤浜庨槻姝hange鏃堕棿鍐掓场,鍑虹幇涓ゆ寮圭獥瀹氫箟鐨勫彉閲�
+      checkboxlist: "",
+      //鐢ㄤ簬棣栨鐐瑰嚮缂栬緫锛屽垽鏂粍鍚堟柟寮忔槸鍚﹀皬浜庡繀濉绫荤殑鍙橀噺
+      checkboxNumber: "",
+      selectNumber: "",
+      //杩欎釜涔熸槸瀛樻斁澶氶�夌殑鍙橀噺,鏁堟灉涓�鏍�,鍙槸鐢ㄤ綔鍦ㄧ紪杈戞ā鍧�
+      checkboxedit: "",
+      // 鐢ㄤ簬鍒ゆ柇鏄惁鏄紪杈�
+      editFlag: false
+    }
+
+  },
+  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 {
+        height: 'auto',
+        calcHeight: 20,
         headerAlign: 'center',
         align: 'center',
+        columnBtn: false,
         border: true,
         index: true,
-        rowKey:'id',
+        rowKey: 'id',
+        addBtn: this.permissionList.addBtn,
+        editBtn: false,
+        delBtn: false,
+        refreshBtn: false,
         column: [
           {
             label: '绛栫暐鍚嶇О',
             prop: 'strategyName',
             align: 'left',
-            span:24,
+            span: 24,
+            labelWidth: "11%",
             rules: [{
               required: true,
               message: "璇疯緭鍏ョ瓥鐣ュ悕绉�",
@@ -74,170 +120,287 @@
           {
             label: '瀵嗙爜鏈�灏忛暱搴�',
             prop: 'minPwdLen',
-            labelWidth:118,
-            span:12,
+            span: 12,
+            labelWidth: "22%",
             rules: [{
               required: true,
-              validator:validatePass,
-              trigger: "blur"
-
+              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',
-            labelWidth:118,
-            span:12,
+            span: 12,
+            labelWidth: "25%",
             rules: [{
               required: true,
-              validator:validatePass1,
-              trigger: "blur"
+              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
+            display: false,
+
           },
           {
-            //鍐欎袱涓粍鍚堟柟娉曟槸鍥犱负id鍜宯ame涓嶈兘鍚屾椂缁戝畾杩欎釜prop鏉ユ覆鏌擄紝涓�涓〃鏍煎仛闅愯棌鏉ユ暟鎹搷浣滐紙琛ㄥ崟闅愯棌锛夛紝鍙︿竴涓〃鏍煎仛鏄剧ず鍙樉绀哄湪椤甸潰锛堣〃鍗曢殣钘忥級銆�
             label: '缁勫悎鏂规硶',
             prop: 'combinationIds',
             type: "checkbox",
-            labelWidth:91,
-            hide:true,
+            span: 12,
+            labelWidth: "22%",
+            id: 5,
+            hide: true,
+            change: this.handleCheckboxChange,
             rules: [{
               required: true,
               message: "璇烽�夋嫨缁勫悎鏂规硶",
               trigger: "blur"
             }],
-            dicData: [
-              {
-                label: "鏁板瓧",
-                value: '1638024706425188354'
-              },
-              {
-                label: "绗﹀彿",
-                value: '1638097837516926977'
-              },
-              {
-                label: "灏忓啓瀛楁瘝",
-                value: '1638097772983365634'
-              },
-              {
-                label: "澶у啓瀛楁瘝",
-                value: '1638097733707902977'
-              },
-            ],
+            dicUrl: '/api/ubcs-system/combination/select',
+            dicMethod: 'get',
+            props: {
+              value: "ID",
+              label: "NAME",
+            },
           },
           {
             label: '蹇呭~绉嶇被',
             prop: 'requiredType',
             type: 'select',
-            labelWidth: 91,
+            span: 12,
+            labelWidth: "25%",
+            change: this.handleSelectChange,
             rules: [{
               required: true,
               message: "璇烽�夋嫨蹇呭~绉嶇被",
               trigger: "blur"
             }],
-            dicData:[{
-              label:'1绉�',
-              value:0
+            dicData: [{
+              label: '1绉�',
+              value: 1,
+              disabled: false
             },
               {
-                label:'2绉�',
-                value:1
+                label: '2绉�',
+                value: 2,
+                disabled: false
               },
               {
-                label:'3绉�',
-                value:2
+                label: '3绉�',
+                value: 3,
+                disabled: false
               },
               {
-                label:'4绉�',
-                value:3
+                label: '4绉�',
+                value: 4,
+                disabled: false
               }
             ]
 
           },
           {
             label: '杩囨湡鏃堕棿(澶�)',
-            prop:'expirationTime',
-            labelWidth:115,
+            prop: 'expirationTime',
+            span: 12,
+            labelWidth: "22%",
             rules: [{
               required: true,
-              message: "璇疯緭鍏ヨ繃鏈熸椂闂�",
-              trigger: "blur"
+              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',
-            labelWidth:113,
+            prop: 'reminderTime',
+            span: 12,
+            labelWidth: "25%",
             rules: [{
               required: true,
-              message: "璇疯緭鍏ユ彁閱掓椂闂�",
-              trigger: "blur"
+              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',
-            labelWidth:116,
+            prop: 'lockingNum',
+            span: 12,
+            labelWidth: "22%",
             rules: [{
               required: true,
-              message: "璇疯緭鍏ラ攣瀹氭鏁�",
-              trigger: "blur"
+              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',
-            labelWidth:128,
+            prop: 'lockingTime',
+            span: 12,
+            labelWidth: "25%",
             rules: [{
               required: true,
-              message: "璇疯緭鍏ラ攣瀹氭椂闂�",
-              trigger: "blur"
+              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',
+            prop: 'desc',
             type: 'textarea',
+            span: 12,
+            labelWidth: "22%",
             rows: 5,
-            rules: [{
-              required: true,
-              message: "璇风畝鎷弿杩�",
-              trigger: "blur"
-            }]
           },
           {
             label: '鏄惁涓洪粯璁ょ瓥鐣�',
             prop: 'isDefault',
             type: 'switch',
             labelWidth: 132,
-            dicData:[{
-              label:'鍚�',
-              value:0
-            },{
-              label:'鏄�',
-              value:1
+            dicData: [{
+              label: '鍚�',
+              value: 0
+            }, {
+              label: '鏄�',
+              value: 1
             }]
           }
         ],
       }
     }
-
   },
   created() {
     this.onLoad()
-
   },
-  mount() {
+  methods: {
+    handleSelectChange(val) {
+      this.selectlength = val
+    },
+    handleCheckboxChange(val) {
+      const arr = this.option.column[5];
+      this.checkboxlength = val.value;
+      this.checkboxedit = this.checkboxlength.toString().split(",");
 
-  },
-  methods:{
-    rowDel(row){
+      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 &&
+            val.value.length > 0
+          ) {
+            this.showWarningMessage();
+          } else if (
+            this.selectlength.value > this.checkboxedit.length &&
+            this.checkboxedit.length > 0
+          ) {
+            this.showWarningMessage();
+          }
+        }
+      }
+
+      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) {
+        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("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", {
         confirmButtonText: "纭畾",
         cancelButtonText: "鍙栨秷",
@@ -252,13 +415,15 @@
             message: "鎿嶄綔鎴愬姛!"
           });
           this.onLoad();
-        });
+        }).catch(res => {
+        // console.log(res)
+      })
     },
-    rowSave(row,done){
+    rowSave(row, done) {
       //灏嗗瘑鐮佺粍鍚堟柟寮忕殑鏁版嵁杞崲涓哄瓧绗︿覆
-      const spliceId= row.combinationIds.toString()
-      row.combinationIds=spliceId
-      getadd(row).then(()=>{
+      const spliceId = row.combinationIds.toString()
+      row.combinationIds = spliceId
+      getadd(row).then((res) => {
         // this.onLoad(this.page);
         this.$message({
           type: "success",
@@ -266,18 +431,38 @@
         });
         done(row)
         this.onLoad()
-      }).catch((res)=>{
-        console.log(res)
+      }).catch((res) => {
+        this.$message.warning(res)
       })
     },
-    rowUpdate(row,index,done){
-      getupdata(row).then(()=>{
+    rowEdit(row) {
+      // console.log("鎵撳紑缂栬緫edit",row)
+    },
+    handleDel(row) {
+      this.$refs.crud.rowDel(row, row.$index);
+    },
+    handleEdit(row) {
+      this.$refs.crud.rowEdit(row, row.$index);
+      this.editFlag = true;
+      this.checkboxNumber = row.combinationIds.split(",")
+      this.selectNumber = row.requiredType
+      if (this.checkboxNumber.length < this.selectNumber) {
+        this.$message({
+          type: "warning",
+          message: "蹇呭~绉嶇被涓嶈兘澶т簬缁勫悎鏂规硶锛岃閲嶆柊閫夋嫨锛�"
+        })
+      }
+    },
+    rowUpdate(row, index, done) {
+      getupdata(row).then(() => {
         this.onLoad()
         this.$message({
           type: "success",
           message: "淇敼鎴愬姛!"
         });
         done()
+      }).catch(res => {
+        // console.log(res)
       })
     },
     onLoad(page, params = {}) {
@@ -288,7 +473,9 @@
         // this.data = data.records;
         // this.loading = false;
         // this.selectionClear();
-        this.data=res.data.data.content
+        // console.log(res)
+        this.page.total = res.data.data.total
+        this.data = res.data.data.records
       });
     }
   }
@@ -296,6 +483,5 @@
 }
 </script>
 
-<style scoped>
-
+<style lang="scss" scoped>
 </style>

--
Gitblit v1.9.3