Forráskód Böngészése

用户管理页面修改

zhudie 1 éve
szülő
commit
0d3409b6d7

+ 1 - 1
.env.development

@@ -17,7 +17,7 @@ VITE_DROP_CONSOLE = true
 #VITE_PROXY=[["/skyeye-admin-api","http://172.16.23.144/skyeye-admin-api"],[],["/eye_api_bak","http://172.16.23.144/eye_api"],["/push_stream_host","http://172.16.23.144/push_stream_host"],["/skyeye-login","http://172.16.23.144/skyeye-login"],["/ws_api_bak","ws://172.16.23.144/ws_api_bak"]]
 # VITE_PROXY=[["/skyeye-admin-api","http://192.168.32.47/skyeye-admin-api"],["/eye_api","http://192.168.32.47/eye_api"],["/push_stream_host","http:/192.168.32.47/push_stream_host"],["/skyeye-login","http://192.168.32.47/skyeye-login"]]
 # VITE_PROXY=[["/skyeye-admin-api","http://192.168.14.68/skyeye-admin-api"],[],["/eye_api_bak","http://192.168.14.68/eye_api"],["/push_stream_host","http://192.168.14.68/push_stream_host"],["/skyeye-login","http://192.168.14.68/skyeye-login"],["/ws_api_bak","ws://192.168.14.68/ws_api_bak"]]
-VITE_PROXY=[["/skyeye-admin-api","http://192.168.14.68/skyeye-admin-api"],[],["/eye_api_bak","http://192.168.14.68/eye_api"],["/push_stream_host","http://192.168.14.68/push_stream_host"],["/skyeye-login","http://192.168.14.68/skyeye-login"],["/ws_api_bak","ws://192.168.14.68/ws_api_bak"]]
+VITE_PROXY=[["/skyeye-admin-api","http://192.168.13.68/skyeye-admin-api"],[],["/eye_api_bak","http://192.168.13.68/eye_api"],["/push_stream_host","http://192.168.13.68/push_stream_host"],["/skyeye-login","http://192.168.13.68/skyeye-login"],["/ws_api_bak","ws://192.168.13.68/ws_api_bak"]]
 
 
 # API 接口地址

+ 1 - 0
src/api/system/user-operate.ts

@@ -80,6 +80,7 @@ export interface UserTypeDel {
   username?: string;
   updateTime?: string;
   createTime?: string;
+  certify?: string;
 }
 
 //删除用户

+ 10 - 0
src/views/auth/dept/columns.ts

@@ -1,4 +1,5 @@
 import { BasicColumn } from '@/components/Table';
+import { h } from 'vue';
 
 export const columns: BasicColumn[] = [
   // {
@@ -16,6 +17,15 @@ export const columns: BasicColumn[] = [
   {
     label: '组织名称',
     prop: 'deptName',
+    render(record) {
+      return h(
+        'span',
+        {},
+        {
+          default: () => record.row.deptName + '   (' + record.row.deptId + ')',
+        },
+      );
+    },
   },
   {
     label: '上级组织名称',

+ 2 - 2
src/views/system/user/CreateAdminDrawer.vue

@@ -41,8 +41,8 @@
           />
         </el-select>
       </el-form-item> -->
-      <el-form-item label="昵称" prop="nickname">
-        <el-input placeholder="请输入昵称" v-model="formParams.nickname" />
+      <el-form-item label="姓名" prop="nickname">
+        <el-input placeholder="请输入姓名" v-model="formParams.nickname" />
       </el-form-item>
       <!-- <el-form-item label="手机" prop="mobile">
         <el-input placeholder="请输入手机" v-model="formParams.mobile" />

+ 4 - 4
src/views/system/user/CreateDrawer.vue

@@ -14,7 +14,7 @@
           :disabled="!isAddUser"
         />
       </el-form-item>
-      <!-- <el-form-item label="所属部门" prop="deptId">
+      <el-form-item label="所属部门" prop="deptId">
         <el-select v-model="formParams.deptId" placeholder="请选择组织" class="protocal-select">
           <el-option
             v-for="item in departmentList"
@@ -23,7 +23,7 @@
             :value="item.deptId"
           />
         </el-select>
-      </el-form-item> -->
+      </el-form-item>
       <el-form-item v-if="isAddUser" label="密码" prop="password">
         <el-input
           type="password"
@@ -55,8 +55,8 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="昵称" prop="nickname">
-        <el-input placeholder="请输入昵称" v-model="formParams.nickname" />
+      <el-form-item label="姓名" prop="nickname">
+        <el-input placeholder="请输入姓名" v-model="formParams.nickname" />
       </el-form-item>
       <el-form-item label="手机" prop="mobile">
         <el-input placeholder="请输入手机" v-model="formParams.mobile" />

+ 125 - 0
src/views/system/user/ResetCodeDrawer.vue

@@ -0,0 +1,125 @@
+<template>
+  <el-drawer v-model="isDrawer" :size="width" :title="props.title" @close="handleReset">
+    <el-form
+      :model="formParams"
+      :rules="rules"
+      ref="formRef"
+      label-placement="left"
+      :label-width="80"
+    >
+      <el-form-item label="登录账号" prop="username">
+        <el-input placeholder="请输入登录账号" v-model="formParams.username" disabled />
+      </el-form-item>
+      <el-form-item label="新密码" prop="password">
+        <el-input
+          type="password"
+          show-password-on="mousedown"
+          placeholder="请输入密码"
+          v-model="formParams.password"
+        />
+      </el-form-item>
+      <el-form-item label="确认密码" prop="passwordRe">
+        <el-input
+          type="password"
+          show-password-on="mousedown"
+          placeholder="请输入密码"
+          v-model="formParams.passwordRe"
+        />
+      </el-form-item>
+    </el-form>
+
+    <template #footer>
+      <el-space>
+        <el-button @click="handleReset">重置</el-button>
+        <el-button type="primary" :loading="subLoading" @click="formSubmit">提交</el-button>
+      </el-space>
+    </template>
+  </el-drawer>
+</template>
+
+<script lang="ts" setup>
+  import { ref } from 'vue';
+  import { FormRules, ElMessage } from 'element-plus';
+  import { cloneDeep } from 'lodash-es';
+  import { UserType } from '@/api/system/user-operate';
+
+  const rules: FormRules = {
+    username: {
+      required: true,
+      message: '登录账号不能为空',
+      trigger: 'blur',
+    },
+    password: {
+      required: true,
+      message: '密码不能为空',
+      trigger: 'blur',
+    },
+    passwordRe: {
+      required: true,
+      message: '密码不能为空',
+      trigger: 'blur',
+    },
+  };
+  const emit = defineEmits(['change']);
+
+  const props = defineProps({
+    title: {
+      type: String,
+      default: '添加用户',
+    },
+    width: {
+      type: Number,
+      default: 450,
+    },
+  });
+
+  const defaultValueRef = () => ({
+    password: '',
+    passwordRe: '',
+  });
+
+  const message = ElMessage;
+  const formRef: any = ref(null);
+  const isDrawer = ref(false);
+  const subLoading = ref(false);
+
+  const formParams = ref<UserType>(defaultValueRef());
+
+  async function openDrawer(username?) {
+    formParams.value.username = username;
+    isDrawer.value = true;
+  }
+
+  function closeDrawer() {
+    isDrawer.value = false;
+  }
+
+  function formSubmit() {
+    formRef.value.validate((valid) => {
+      if (!valid) {
+        return message.error('请填写完整信息');
+      }
+      // 克隆
+      const params = cloneDeep(formParams.value);
+      if (params.password != params.passwordRe) {
+        return message.error('两次密码不一致');
+      }
+      const addData = {
+        password: formParams.value.password,
+        username: formParams.value.username,
+      };
+
+      //然后进行调接口
+    });
+  }
+
+  function handleReset() {
+    formRef.value.resetFields();
+    formParams.value = Object.assign(formParams.value, defaultValueRef());
+  }
+
+  defineExpose({
+    openDrawer,
+    closeDrawer,
+  });
+</script>

+ 7 - 2
src/views/system/user/columns.ts

@@ -77,7 +77,7 @@ export const columns: BasicColumn[] = [
   //   prop: 'nickname',
   // },
   {
-    label: '昵称',
+    label: '姓名',
     prop: 'nickname',
   },
   {
@@ -87,6 +87,7 @@ export const columns: BasicColumn[] = [
   {
     label: '状态',
     prop: 'isEnable',
+    minWidth: 40,
     render(record) {
       return h(
         ElTag,
@@ -115,6 +116,10 @@ export const columns: BasicColumn[] = [
     label: '组织',
     prop: 'deptName',
   },
+  {
+    label: '认证方式',
+    prop: 'certify',
+  },
   // {
   //   label: '岗位',
   //   prop: 'postName',
@@ -126,6 +131,6 @@ export const columns: BasicColumn[] = [
   {
     label: '创建时间',
     prop: 'createTime',
-    minWidth: 100,
+    minWidth: 70,
   },
 ];

+ 3 - 2
src/views/system/user/component/ActionColomns.vue

@@ -2,7 +2,8 @@
   <div class="flex items-center justify-center">
     <el-space :size="space">
       <div v-for="item in props.actionIcons" :key="item.label" @click="item.onClick">
-        <el-tooltip :content="item.label" effect="light">
+        <div v-if="item.label === '重置密码'" style="font-size: 10px;color: #629bf9;cursor: pointer;">{{item.label}}</div>
+        <el-tooltip v-else :content="item.label" effect="light">
           <el-icon v-if="props.style === 'icon'" :color="props.color" :size="props.size">
             <component :is="item.icon" />
           </el-icon>
@@ -11,7 +12,7 @@
             :src="item.icon"
             :style="{ width: `${props.size}px` }"
           />
-        </el-tooltip>
+        </el-tooltip>  
       </div>
     </el-space>
   </div>

+ 2 - 2
src/views/system/user/hooks/use-user.ts

@@ -75,6 +75,7 @@ export const useUser = defineStore('user-list', () => {
     }
     getUserList(params).then((res) => {
       userList.value = res.list;
+      userList.value.forEach(item =>{item.certify = "本地认证";})    
       totalCount.value = res.totalCount;
     });
   };
@@ -83,8 +84,7 @@ export const useUser = defineStore('user-list', () => {
   const getList = () => {
     getUserList(null).then((res) => {
       userList.value = res.list;
-      console.log('userList.value', userList.value);
-
+      userList.value.forEach(item =>{item.certify = "本地认证";})
       totalCount.value = res.totalCount;
     });
   };

+ 18 - 3
src/views/system/user/user.vue

@@ -57,6 +57,7 @@
       </BasicTable>
     </div>
     <CreateDrawer ref="createDrawerRef" :title="drawerTitle" @change="reloadTable" />
+    <ResetCodeDrawer ref="ResetCodeDrawerRef" :title="drawerTitle" @change="reloadTable" />
     <CreateAdminDrawer
       v-if="userStore?.info?.username === ROOT_USER"
       ref="createAdminDrawer"
@@ -76,12 +77,13 @@
 <script lang="ts" setup>
   import { h, reactive, ref, onMounted, onBeforeUnmount } from 'vue';
   import { BasicTable, BasicColumn } from '@/components/Table';
-  import { Plus, DocumentAdd } from '@element-plus/icons-vue';
+  import { Plus, DocumentAdd, Refresh } from '@element-plus/icons-vue';
   import { roleAllList } from '@/api/system/role';
   import editIcon from '@/assets/images/table/table-edit.png';
   import deleteIcon from '@/assets/images/table/table-delete.png';
   import { useUserStore } from '@/store/modules/user';
   import CreateDrawer from './CreateDrawer.vue';
+  import ResetCodeDrawer from './ResetCodeDrawer.vue'
   import CreateAdminDrawer from './CreateAdminDrawer.vue';
   import { columns } from './columns';
   import ActionColomns from './component/ActionColomns.vue';
@@ -104,6 +106,7 @@
   const rowKeysName = ref([]);
   const tableData = ref();
   const createDrawerRef = ref();
+  const ResetCodeDrawerRef =ref();
   const createAdminDrawer = ref();
   const drawerTitle = ref('添加用户');
   const createAdminTitle = ref('添加租户管理员');
@@ -130,7 +133,7 @@
     key: 'action',
     fixed: 'right',
     render(record) {
-      return h(ActionColomns as any, {
+      return h(ActionColomns as any,{
         space: 20,
         color: '#629bf9',
         style: 'img',
@@ -146,6 +149,10 @@
             icon: deleteIcon,
             onClick: handleDelete.bind(null, record.row),
           },
+          {
+            label: '重置密码',
+            onClick: handleResetCode.bind(null, record.row),
+          },
         ],
       });
     },
@@ -190,7 +197,15 @@
     drawerTitle.value = '编辑用户';
     const { openDrawer } = createDrawerRef.value;
     openDrawer(record.userId);
-  }
+  };
+
+  function handleResetCode(record: Recordable)
+  {
+    // console.log('点击了修改密码', record);
+    drawerTitle.value = '重置密码';
+    const { openDrawer } = ResetCodeDrawerRef.value;
+    openDrawer(record.userId);
+  };
 
   function handleDelete(record: Recordable) {
     const delDetail = {