Przeglądaj źródła

增加修改密码 重置密码

ljh 2 lat temu
rodzic
commit
c33049b56a

+ 9 - 0
chuanyi-admin/src/api/user.js

@@ -96,3 +96,12 @@ export function updatePsd(data) {
     data
   })
 }
+
+// 重置密码
+export function resetPsd(data) {
+  return request({
+    url: '/user/updatePasswordByAdmin',
+    method: 'post',
+    data
+  })
+}

+ 17 - 1
chuanyi-admin/src/layout/components/Navbar.vue

@@ -127,6 +127,7 @@ export default {
     },
     updatePwd() {
       this.dialogVisible = true
+      this.resetForm()
     },
     /**
      * 退出登录
@@ -140,11 +141,26 @@ export default {
     submit() {
       this.$refs.psdForm.validate((valid) => {
         if (valid) {
-          this.$store.dispatch('user/UpdatePassword', this.form)
+          const data = this.$store.dispatch('user/UpdatePassword', this.form)
+          data.then(res => {
+            if (res.code === 200) {
+              this.$message({
+                type: 'success',
+                message: '修改成功'
+              })
+              this.dialogVisible = false
+            }
+          })
         } else {
           return false
         }
       })
+    },
+    /** 重置修改密码表单 */
+    resetForm() {
+      if (this.$refs.psdForm) {
+        this.$refs.psdForm.resetFields()
+      }
     }
   }
 }

+ 18 - 3
chuanyi-admin/src/store/modules/user.js

@@ -1,4 +1,4 @@
-import { getUserInfo, login, logout, updatePsd } from '@/api/user'
+import { getUserInfo, login, logout, updatePsd, resetPsd } from '@/api/user'
 import { getToken, setToken, getUid, getUsername, setUid, setUsername, removeAll, setPubKey, getPubKey } from '@/utils/auth'
 import { encrypt } from '@/utils/jsencrypt'
 import router, { resetRouter } from '@/router'
@@ -163,14 +163,29 @@ const actions = {
   UpdatePassword({ state }, form) {
     const { password, newPassword } = form
     const obj = {
+      userName: state.name,
       userId: state.uid,
       password: encrypt(password, state.publicKey),
       newPassword: encrypt(newPassword, state.publicKey)
     }
     return new Promise((resolve, reject) => {
       updatePsd(obj).then(res => {
-        console.log(res)
-        resolve()
+        resolve(res)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
+
+  /** 重置密码 */
+  ResetPassword({ state }, { userId, newPassword }) {
+    const obj = {
+      userId,
+      newPassword: encrypt(newPassword, state.publicKey)
+    }
+    return new Promise((resolve, reject) => {
+      resetPsd(obj).then(res => {
+        resolve(res)
       }).catch(error => {
         reject(error)
       })

+ 55 - 92
chuanyi-admin/src/views/system/user/index.vue

@@ -3,7 +3,14 @@
     <el-row>
       <el-col>
         <!-- 搜索信息 -->
-        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form
+          v-show="showSearch"
+          ref="queryForm"
+          :model="queryParams"
+          size="small"
+          :inline="true"
+          label-width="68px"
+        >
           <el-form-item label="用户名称" prop="userName">
             <el-input
               v-model="queryParams.userName"
@@ -14,33 +21,13 @@
             />
           </el-form-item>
           <el-form-item label="用户状态" prop="state">
-            <el-select
-              v-model="queryParams.state"
-              placeholder="用户状态"
-              clearable
-              style="width: 150px"
-            >
-              <el-option
-                v-for="status in userStatus"
-                :key="status.value"
-                :label="status.name"
-                :value="status.value"
-              />
+            <el-select v-model="queryParams.state" placeholder="用户状态" clearable style="width: 150px">
+              <el-option v-for="status in userStatus" :key="status.value" :label="status.name" :value="status.value" />
             </el-select>
           </el-form-item>
           <el-form-item label="用户类型" prop="userType">
-            <el-select
-              v-model="queryParams.userType"
-              placeholder="用户类型"
-              clearable
-              style="width: 150px"
-            >
-              <el-option
-                v-for="type in userType"
-                :key="type.value"
-                :label="type.name"
-                :value="type.value"
-              />
+            <el-select v-model="queryParams.userType" placeholder="用户类型" clearable style="width: 150px">
+              <el-option v-for="type in userType" :key="type.value" :label="type.name" :value="type.value" />
             </el-select>
           </el-form-item>
           <el-form-item>
@@ -51,67 +38,35 @@
         <!-- 操作按钮 -->
         <el-row>
           <el-col :span="1.5">
-            <el-button
-              type="primary"
-              plain
-              icon="el-icon-plus"
-              size="mini"
-              @click="handleAdd"
-            >新增</el-button>
+            <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
           </el-col>
           <el-col :span="1.5" style="margin-left: 15px;">
-            <el-button
-              type="danger"
-              plain
-              icon="el-icon-delete"
-              size="mini"
-              :disabled="multiple"
-              @click="handleDelete"
-            >删除</el-button>
+            <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete">
+              删除</el-button>
           </el-col>
         </el-row>
         <!-- 表格数据信息 -->
         <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
-          <el-table-column type="selection" width="50" align="center"/>
-          <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="false"/>
-          <el-table-column label="用户名称" align="center" key="userName" prop="userName" :show-overflow-tooltip="true"/>
-          <el-table-column label="用户状态" align="center" key="state" prop="state" :show-overflow-tooltip="true">
+          <el-table-column type="selection" width="50" align="center" />
+          <el-table-column v-if="false" key="userId" label="用户编号" align="center" prop="userId" />
+          <el-table-column key="userName" label="用户名称" align="center" prop="userName" :show-overflow-tooltip="true" />
+          <el-table-column key="state" label="用户状态" align="center" prop="state" :show-overflow-tooltip="true">
             <template slot-scope="scope">
               <span>{{ convertUserStatus(scope.row.state) }}</span>
             </template>
           </el-table-column>
-          <el-table-column label="用户类型" align="center" key="userType" prop="userType" :show-overflow-tooltip="true">
+          <el-table-column key="userType" label="用户类型" align="center" prop="userType" :show-overflow-tooltip="true">
             <template slot-scope="scope">
               <span>{{ convertUserType(scope.row.userType) }}</span>
             </template>
           </el-table-column>
-          <el-table-column label="最后登录时间" align="center" key="lastLoginTime" prop="lastLoginTime" width="160"/>
-          <el-table-column label="创建时间" align="center" prop="createTime" width="160"/>
-          <el-table-column
-            label="操作"
-            align="center"
-            width="250"
-            class-name="small-padding fixed-width"
-          >
-            <template slot-scope="scope" v-if="scope.row.userId !== 1">
-              <el-button
-                size="mini"
-                type="text"
-                icon="el-icon-edit"
-                @click="handleUpdate(scope.row)"
-              >修改</el-button>
-              <el-button
-                size="mini"
-                type="text"
-                icon="el-icon-delete"
-                @click="handleDelete(scope.row)"
-              >删除</el-button>
-              <el-button
-                size="mini"
-                type="text"
-                icon="el-icon-key"
-                @click="handleResetPwd(scope.row)"
-              >重置密码</el-button>
+          <el-table-column key="lastLoginTime" label="最后登录时间" align="center" prop="lastLoginTime" width="160" />
+          <el-table-column label="创建时间" align="center" prop="createTime" width="160" />
+          <el-table-column label="操作" align="center" width="250" class-name="small-padding fixed-width">
+            <template v-if="scope.row.userId !== 1" slot-scope="scope">
+              <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">修改</el-button>
+              <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button>
+              <el-button size="mini" type="text" icon="el-icon-key" @click="handleResetPwd(scope.row)">重置密码</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -138,8 +93,15 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="用户密码" prop="password" v-if="form.userId == undefined">
-              <el-input v-model="form.password" placeholder="请输入用户密码" type="password" maxlength="20" show-password auto-complete="new-password"/>
+            <el-form-item v-if="form.userId == undefined" label="用户密码" prop="password">
+              <el-input
+                v-model="form.password"
+                placeholder="请输入用户密码"
+                type="password"
+                maxlength="20"
+                show-password
+                auto-complete="new-password"
+              />
             </el-form-item>
           </el-col>
         </el-row>
@@ -147,23 +109,14 @@
           <el-col :span="12">
             <el-form-item label="用户类型">
               <el-select v-model="form.userType" placeholder="请选择用户类型">
-                <el-option
-                  v-for="dict in userType"
-                  :key="dict.value"
-                  :label="dict.name"
-                  :value="dict.value"
-                ></el-option>
+                <el-option v-for="dict in userType" :key="dict.value" :label="dict.name" :value="dict.value" />
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="用户状态" v-if="form.userId != undefined">
+            <el-form-item v-if="form.userId != undefined" label="用户状态">
               <el-radio-group v-model="form.state">
-                <el-radio
-                  v-for="dict in userStatus"
-                  :key="dict.value"
-                  :label="dict.value"
-                >{{dict.name}}</el-radio>
+                <el-radio v-for="dict in userStatus" :key="dict.value" :label="dict.value">{{ dict.name }}</el-radio>
               </el-radio-group>
             </el-form-item>
           </el-col>
@@ -347,13 +300,22 @@ export default {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         closeOnClickModal: false,
-        inputPattern: /^.{5,20}$/,
-        inputErrorMessage: '用户密码长度必须介于 5 和 20 之间'
+        inputPattern: /(?!^[0-9]+$)(?!^[A-z]+$)(?!^[^A-z0-9]+$)^[^\s\u4e00-\u9fa5]{5,20}$/,
+        inputErrorMessage: '密码需至少包含数字、字母、符号中的2种  5-20个字符  不能有中文'
       }).then(({ value }) => {
-        // resetUserPwd(row.userId, value).then(response => {
-        //   this.$modal.msgSuccess("修改成功,新密码是:" + value);
-        // });
-      }).catch(() => {})
+        const data = this.$store.dispatch('user/ResetPassword', {
+          userId: row.userId,
+          newPassword: value
+        })
+        data.then(res => {
+          if (res.code === 200) {
+            this.$message({
+              type: 'success',
+              message: '修改成功'
+            })
+          }
+        })
+      }).catch(() => { })
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -434,4 +396,5 @@ export default {
 </script>
 
 <style rel="stylesheet/scss" lang="scss">
+
 </style>