From 0cd1631ceaa93e6483908fd692d2cb693b85324b Mon Sep 17 00:00:00 2001
From: 石广澎 <shiguangpeng@163.com>
Date: 星期二, 02 一月 2024 14:26:01 +0800
Subject: [PATCH] 增加图片验证码和登录日志 权限管理优化

---
 admin-web/src/views/systemManger/server/user/edit.vue |  476 ++++++++++++++++++++++++++++++----------------------------
 1 files changed, 245 insertions(+), 231 deletions(-)

diff --git a/admin-web/src/views/systemManger/server/user/edit.vue b/admin-web/src/views/systemManger/server/user/edit.vue
index 9e4d187..6d62fa2 100644
--- a/admin-web/src/views/systemManger/server/user/edit.vue
+++ b/admin-web/src/views/systemManger/server/user/edit.vue
@@ -1,5 +1,5 @@
 <template>
-  <win-sm :title="setting.title" @close="close" :width="'800px'">
+  <win-sm :title="setting.title" @close="close" :width="'800px'" :loading="loading">
     <el-alert
       style="margin-bottom: 10px"
       title="娓╅Θ鎻愮ず锛氱敤鎴峰垵濮嬪瘑鐮佷负123456"
@@ -13,17 +13,18 @@
       </el-form-item>
       <el-form-item label="閮ㄩ棬" prop="sysDeptId">
         <el-select v-model="formData.sysDeptId">
-            <el-option v-for="(item,index) in deptmentOptions" :key="index" :label="item.name" :value="item.id"></el-option>
+          <el-option v-for="(item,index) in deptmentOptions" :key="index" :label="item.name"
+                     :value="item.id"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="浜哄憳濮撳悕" prop="userName">
         <el-input v-model="formData.userName" clearable maxlength="20" show-word-limit style="width: 250px"/>
       </el-form-item>
-      <el-form-item label="鍛樺伐缂栧彿" prop="userCode">
+      <el-form-item label="鐧诲綍鍚�" prop="userCode">
         <el-input v-model="formData.userCode" clearable maxlength="20" show-word-limit style="width: 250px"/>
       </el-form-item>
       <el-form-item label="鎵嬫満鍙�" prop="userPhone">
-        <el-input  v-model="formData.userPhone" clearable maxlength="20" show-word-limit
+        <el-input v-model="formData.userPhone" clearable maxlength="20" show-word-limit
                   style="width: 250px"/>
       </el-form-item>
       <el-form-item label="鎬у埆" prop="sex">
@@ -54,7 +55,7 @@
         <el-checkbox v-model="checkAll" @change="handleCheckAllChange">鍏ㄩ��</el-checkbox>
         <div style="margin: 15px 0;"></div>
         <el-checkbox-group v-model="checkedList" @change="handleCheckedCitiesChange">
-          <el-checkbox v-for="(r,i) in roleOptions" :label="r.role_id" :key="r.role_id">{{r.role_name}}</el-checkbox>
+          <el-checkbox v-for="(r,i) in roleOptions" :label="r.role_id" :key="r.role_id">{{ r.role_name }}</el-checkbox>
         </el-checkbox-group>
       </el-form-item>
     </el-form>
@@ -74,231 +75,244 @@
 import {departmentListAll} from "@/api/system/deptment";
 
 export default {
-        components: {winSm, myButton},
-        props: {
-            // setting 涓』鑷冲皯鍖呭惈鎺у埗dialog鏄剧ず鎴栭殣钘忕殑灞炴��,鍏朵綑灞炴�у彲鎷撳睍
-            // 灏嗘坊鍔�/淇敼鐨勫ぇ閲忔暟鎹強閫昏緫浠庡垪琛ㄩ〉闈腑鍒嗙鍑烘潵,閬垮厤鍒楄〃椤甸潰浠g爜杩囧,瀹℃煡鍥伴毦
-            // 鑻ユ椤甸潰椤诲洖浼犳暟鎹嚦鐖堕〉闈�,鍙湪寮曠敤缁勪欢鏃舵坊鍔犱簨浠�,鏈〉闈娇鐢╰his.$emit('浜嬩欢鍚�',鍙傛暟1,鍙傛暟2...)鍥炰紶鏁版嵁
-            setting: {
-                type: Object,
-                default: () => {
-                }
-            }
-        },
-        data() {
-            return {
-                deptmentOptions:[],
-                checkAll: false,
-                checkedList: [],
-                roleList: [
-                    {'id': 1, label: '鐜嬫兜1'},
-                    {'id': 2, label: '鐜嬫兜2'}
-                ],
-                // 鏌ヨ鍙傛暟
-                queryParams: {
-                    pageNum: 1,
-                    pageSize: 10,
-                    roleName: undefined,
-                    roleKey: undefined,
-                    status: undefined,
-                    orgId: 1
-                },
-                roleOptions: [],// 閫夋嫨椤�
-                roleCheckStrictly: true,
-                defaultProps: {
-                    children: 'childList',
-                    label: 'name',
-                },
-                formData: {
-                    sysDeptId:'',
-                    userName: '',
-                    userCode: '',
-                    userPhone: '',
-                    sex: 1,
-                    status: 1,
-                    remark: '',
-                    seq: null,
-                },
-                rules: {
-                    sysDeptId: [
-                        {required: true, message: '璇烽�夋嫨閮ㄩ棬', trigger: 'change'}
-                    ],
-                    userName: [
-                        {required: true, message: '璇疯緭鍏ヤ汉鍛樺鍚�', trigger: 'blur'}
-                    ],
-                    userCode: [
-                        {required: true, message: '璇疯緭鍏ュ憳宸ョ紪鍙�', trigger: 'blur'}
-                    ],
-                    userPhone: [
-                        {required: true, message: '璇疯緭鍏ユ墜鏈哄彿', trigger: 'blur'}
-                    ],
-                    sex: [
-                        {required: true, message: '璇烽�夋嫨鎬у埆', trigger: 'change'}
-                    ],
-                    seq: [
-                        {required: true, message: '璇疯緭鍏ラ『搴忓彿', trigger: 'blur'}
-                    ],
-                }
-            }
-        },
-        created() {
-            this.getInfo()
-            this.getAllRole()
-            this.getDeptmentOptions()
-        },
-        methods: {
-            // 鑾峰彇鎵�鏈夎鑹�
-            getAllRole() {
-              // const user = this.$store.getters.userInfo
-              // this.data_scope = 1
-              // if (user.lv == 1) {
-              //   this.data_scope = 1
-              // }
-              // if (user.lv == 2) {
-              //   this.data_scope = 2
-              // }
-              // if (user.lv == 3) {
-              //   this.data_scope = 3
-              // }
-              this.data_scope = 1
-              role.listRoleByDataScope({dataScope: this.data_scope}).then(response => {
-                  if (response) {
-                    this.roleOptions = response;
-                  } else {
-                    this.roleOptions = [];
-                  }
-                        this.loading = false;
-                    }
-                );
-            },
-            getDeptmentOptions(){
-                departmentListAll({tenantId:this.setting.tenantId}).then(res=>{
-                    this.deptmentOptions = res
-                })
-            },
-            handleCheckAllChange(val) {
-                if (val) {
-                    this.checkedList = this.roleOptions.map(x => {
-                        return x.role_id
-                    })
-                } else {
-                    this.checkedList = []
-                }
-            },
-            handleCheckedCitiesChange(value) {
-                let checkedCount = value.length;
-                this.checkAll = checkedCount === this.roleOptions.length;
-            },
-            getInfo() {
-                this.title = this.setting.title
-                if (this.setting.id != null) {
-                    // 鏌ヨ鏁版嵁
-                    user.getUser({id: this.setting.id}).then(res => {
-                        const data = res.data
-                        this.formData = Object.assign(this.formData, data)
-                        if (this.formData.projectStart != null && this.formData.projectStart > 0) {
-                            this.formData.projectStart = DateFormatter.LongToDateTime(this.formData.projectStart)
-                        }
-                        if (this.formData.projectEnd != null && this.formData.projectEnd > 0) {
-                            this.formData.projectEnd = DateFormatter.LongToDateTime(this.formData.projectEnd)
-                        }
-                        this.checkedList = res.list.map(x => {
-                            return x.role_id
-                        })
-                        if (res.list.length == this.roleOptions.length) {
-                            this.handleCheckedCitiesChange(res.list)
-                        }
-                    })
-                }
-            },
-            close() {
-                this.formData = {
-                    projectName: '',
-                    projectSubName: '',
-                    projectCode: '',
-                    projectContact: '',
-                    projectTel: '',
-                    projectEmail: '',
-                    projectStart: null,
-                    projectEnd: null,
-                    projectDesc: '',
-                    status: 1
-                },
-                    this.$emit('close')
-            },
-            save() {
-
-                this.$refs.ruleForm.validate((valid) => {
-                    if (valid) {
-                        const params = Object.assign({}, this.formData)
-                        params.roleList = this.checkedList
-                        // 鍖哄煙id
-                        params.tenantId = this.setting.tenantId
-                        params.tenantCode = this.setting.tenantCode
-                        if (params.ctiStatus == 0) {
-                            params.agentJid = ''
-                            params.workgroupJid = ''
-                            params.clientNumber = ''
-                            params.clientPwd = ''
-                        }
-                        if (params.projectStart != null && params.projectEnd != null) {
-                            params.projectStart = DateFormatter.DateToLong(params.projectStart)
-                            params.projectEnd = DateFormatter.DateToLong(params.projectEnd)
-                            if (params.projectStart >= params.projectEnd) {
-                                this.$message.error('鏈嶅姟缁撴潫鏃堕棿涓嶈兘灏忎簬鎴栬�呯瓑浜庢湇鍔″紑濮嬫椂闂�')
-                                return
-                            }
-                        }
-                        if ((params.projectStart == null && params.projectEnd != null) || (params.projectStart != null && params.projectEnd == null)) {
-                            this.$message.error('鏈嶅姟寮�濮嬫椂闂村拰鏈嶅姟缁撴潫鏃堕棿蹇呴』鎴愬鍑虹幇')
-                            return
-                        }
-                        if (params.id) {
-                            user.upd(params).then(res => {
-                                if (res) {
-                                    this.$message.success('淇濆瓨鎴愬姛锛�')
-                                    this.close()
-                                    this.$emit('search')
-                                } else {
-                                    this.$message.error('淇濆瓨澶辫触')
-                                }
-                            })
-                        } else {
-                            user.add(params).then(res => {
-                                if (res) {
-                                    this.$message.success('淇濆瓨鎴愬姛锛�')
-                                    this.close()
-                                    this.$emit('search')
-                                } else {
-                                    this.$message.error('淇濆瓨澶辫触')
-                                }
-                            })
-                        }
-                    } else {
-                        this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��')
-                    }
-                })
-            },
-            getWorkgroupsAll(){
-                callCenter.getWorkgroupsAll().then(res => {
-                    this.workgroups = res.workgroups
-                })
-            },
-            getWorkgroupAgents(workgroupName){
-                this.formData.agentJid = ''
-                this.formData.clientNumber = ''
-                this.formData.clientPwd = ''
-                this.agentExtendEntiry.agentId = ''
-                this.formData.workgroupJid = this.workgroup.workgroupJID
-                callCenter.getWorkgroupAgents(workgroupName).then(res => {
-                    this.agents = res.agents
-                })
-            },
-            onClickAgent(agent){
-                this.formData.agentJid = agent.agentExtendEntiry.agentId
-                this.formData.clientNumber = agent.agentExtendEntiry.ccClientNumber
-                this.formData.clientPwd = agent.agentExtendEntiry.ccClientPWD
-            }
-        }
+  components: {winSm, myButton},
+  props: {
+    // setting 涓』鑷冲皯鍖呭惈鎺у埗dialog鏄剧ず鎴栭殣钘忕殑灞炴��,鍏朵綑灞炴�у彲鎷撳睍
+    // 灏嗘坊鍔�/淇敼鐨勫ぇ閲忔暟鎹強閫昏緫浠庡垪琛ㄩ〉闈腑鍒嗙鍑烘潵,閬垮厤鍒楄〃椤甸潰浠g爜杩囧,瀹℃煡鍥伴毦
+    // 鑻ユ椤甸潰椤诲洖浼犳暟鎹嚦鐖堕〉闈�,鍙湪寮曠敤缁勪欢鏃舵坊鍔犱簨浠�,鏈〉闈娇鐢╰his.$emit('浜嬩欢鍚�',鍙傛暟1,鍙傛暟2...)鍥炰紶鏁版嵁
+    setting: {
+      type: Object,
+      default: () => {
+      }
     }
+  },
+  data() {
+    // 鍙傛暟1: rule 瀵硅薄, 鏄牎楠岃鍒�, 涓�鑸笉鐢�
+    // 鍙傛暟2: value 鏍¢獙椤圭殑鏁版嵁
+    // 鍙傛暟3: callback 鍥炶皟鍑芥暟, 鍐冲畾鏄惁鏍¢獙閫氳繃
+    const checkedListCheck = (rule, value, callback) => {
+      if (this.checkedList.length < 1) {
+        callback(new Error('鑷冲皯閫夋嫨涓�涓�'))
+      } else {
+        callback()
+      }
+    }
+    return {
+      deptmentOptions: [],
+      loading: true,
+      checkAll: false,
+      checkedList: [],
+      roleList: [
+        {'id': 1, label: '鐜嬫兜1'},
+        {'id': 2, label: '鐜嬫兜2'}
+      ],
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        roleName: undefined,
+        roleKey: undefined,
+        status: undefined,
+        orgId: 1
+      },
+      roleOptions: [],// 閫夋嫨椤�
+      roleCheckStrictly: true,
+      defaultProps: {
+        children: 'childList',
+        label: 'name',
+      },
+      formData: {
+        sysDeptId: '',
+        userName: '',
+        userCode: '',
+        userPhone: '',
+        sex: 1,
+        status: 1,
+        remark: '',
+        seq: null,
+      },
+      rules: {
+        sysDeptId: [
+          {required: true, message: '璇烽�夋嫨閮ㄩ棬', trigger: 'change'}
+        ],
+        userName: [
+          {required: true, message: '璇疯緭鍏ヤ汉鍛樺鍚�', trigger: 'blur'}
+        ],
+        userCode: [
+          {required: true, message: '璇疯緭鍏ョ櫥褰曞悕', trigger: 'blur'}
+        ],
+        userPhone: [
+          {required: true, message: '璇疯緭鍏ユ墜鏈哄彿', trigger: 'blur'}
+        ],
+        sex: [
+          {required: true, message: '璇烽�夋嫨鎬у埆', trigger: 'change'}
+        ],
+        seq: [
+          {required: true, message: '璇疯緭鍏ラ『搴忓彿', trigger: 'blur'}
+        ],
+        // 瑙掕壊閰嶇疆鐨勯獙璇�
+        roleSetting: [
+          {validator: checkedListCheck, required: true, trigger: 'blur'},
+        ],
+      }
+    }
+  },
+  async created() {
+    this.title = this.setting.title
+    if (this.setting.id != null) {
+      await this.getInfo()
+    }
+
+    await this.getAllRole()
+    await this.getDeptmentOptions()
+    this.loading = false
+  },
+  methods: {
+    // 鑾峰彇鎵�鏈夎鑹�
+    async getAllRole() {
+      this.data_scope = this.$store.getters.userInfo ? this.$store.getters.userInfo.lv : ''
+      await role.listRoleByDataScope({dataScope: this.setting.data_scope}).then(response => {
+          if (response) {
+            this.roleOptions = response;
+          } else {
+            this.roleOptions = [];
+          }
+          this.loading = false;
+        }
+      );
+    },
+    async getDeptmentOptions() {
+      await departmentListAll({tenantId: this.setting.tenantId}).then(res => {
+        this.deptmentOptions = res
+      })
+    },
+    handleCheckAllChange(val) {
+      if (val) {
+        this.checkedList = this.roleOptions.map(x => {
+          return x.role_id
+        })
+      } else {
+        this.checkedList = []
+      }
+    },
+    handleCheckedCitiesChange(value) {
+      let checkedCount = value.length;
+      this.checkAll = checkedCount === this.roleOptions.length;
+    },
+    async getInfo() {
+      this.title = this.setting.title
+      // 鏌ヨ鏁版嵁
+      await user.getUser({id: this.setting.id}).then(res => {
+        const data = res.data
+        this.formData = Object.assign(this.formData, data)
+        if (this.formData.projectStart != null && this.formData.projectStart > 0) {
+          this.formData.projectStart = DateFormatter.LongToDateTime(this.formData.projectStart)
+        }
+        if (this.formData.projectEnd != null && this.formData.projectEnd > 0) {
+          this.formData.projectEnd = DateFormatter.LongToDateTime(this.formData.projectEnd)
+        }
+        this.checkedList = res.list.map(x => {
+          return x.role_id
+        })
+        if (res.list.length == this.roleOptions.length) {
+          this.handleCheckedCitiesChange(res.list)
+        }
+      })
+    },
+    close() {
+      this.formData = {
+        sysDeptId: '',
+        userName: '',
+        userCode: '',
+        userPhone: '',
+        sex: 1,
+        status: 1,
+        remark: '',
+        seq: null,
+      }
+      this.$emit('close')
+    },
+    save() {
+
+      this.$refs.ruleForm.validate((valid) => {
+        if (valid) {
+          const params = Object.assign({}, this.formData)
+          params.roleList = this.checkedList
+          // 鍖哄煙id
+          params.tenantId = this.setting.tenantId
+          params.tenantCode = this.setting.tenantCode
+          if (params.ctiStatus == 0) {
+            params.agentJid = ''
+            params.workgroupJid = ''
+            params.clientNumber = ''
+            params.clientPwd = ''
+          }
+          if (params.projectStart != null && params.projectEnd != null) {
+            params.projectStart = DateFormatter.DateToLong(params.projectStart)
+            params.projectEnd = DateFormatter.DateToLong(params.projectEnd)
+            if (params.projectStart >= params.projectEnd) {
+              this.$message.error('鏈嶅姟缁撴潫鏃堕棿涓嶈兘灏忎簬鎴栬�呯瓑浜庢湇鍔″紑濮嬫椂闂�')
+              return
+            }
+          }
+          if ((params.projectStart == null && params.projectEnd != null) || (params.projectStart != null && params.projectEnd == null)) {
+            this.$message.error('鏈嶅姟寮�濮嬫椂闂村拰鏈嶅姟缁撴潫鏃堕棿蹇呴』鎴愬鍑虹幇')
+            return
+          }
+          if (this.loading) return;
+          this.loading = true
+          if (params.id) {
+            user.upd(params).then(res => {
+              this.loading = false
+              if (res) {
+                this.$message.success('淇濆瓨鎴愬姛锛�')
+                this.close()
+                this.$emit('search')
+              } else {
+                this.$message.error('淇濆瓨澶辫触')
+              }
+            }).catch(() => {
+              this.loading = false
+            })
+          } else {
+            user.add(params).then(res => {
+              this.loading = false
+              if (res) {
+                this.$message.success('淇濆瓨鎴愬姛锛�')
+                this.close()
+                this.$emit('search')
+              } else {
+                this.$message.error('淇濆瓨澶辫触')
+              }
+            }).catch(() => {
+              this.loading = false
+            })
+          }
+        } else {
+          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��')
+        }
+      })
+    },
+    getWorkgroupsAll() {
+      callCenter.getWorkgroupsAll().then(res => {
+        this.workgroups = res.workgroups
+      })
+    },
+    getWorkgroupAgents(workgroupName) {
+      this.formData.agentJid = ''
+      this.formData.clientNumber = ''
+      this.formData.clientPwd = ''
+      this.agentExtendEntiry.agentId = ''
+      this.formData.workgroupJid = this.workgroup.workgroupJID
+      callCenter.getWorkgroupAgents(workgroupName).then(res => {
+        this.agents = res.agents
+      })
+    },
+    onClickAgent(agent) {
+      this.formData.agentJid = agent.agentExtendEntiry.agentId
+      this.formData.clientNumber = agent.agentExtendEntiry.ccClientNumber
+      this.formData.clientPwd = agent.agentExtendEntiry.ccClientPWD
+    }
+  }
+}
 </script>

--
Gitblit v1.9.1