فهرست منبع

😁账号管理页面调整

zuohuaijun 2 سال پیش
والد
کامیت
3e6a159889

+ 6 - 6
Admin.NET/Admin.NET.Core/SeedData/SysUserSeedData.cs

@@ -24,12 +24,12 @@ public class SysUserSeedData : ISqlSugarEntitySeedData<SysUser>
 
         return new[]
         {
-            new SysUser{ Id=1300000000101, Account="superadmin", Password=encryptPasswod, NickName="超级管理员", RealName="超级管理员", Phone="18020030720", Birthday=DateTime.Parse("1986-06-28"), Sex=GenderEnum.Male, AccountType=AccountTypeEnum.SuperAdmin, Remark="超级管理员", CreateTime=DateTime.Parse("2022-02-10 00:00:00"), TenantId=1300000000001 },
-            new SysUser{ Id=1300000000111, Account="admin", Password=encryptPasswod, NickName="系统管理员", RealName="系统管理员", Phone="18020030720", Birthday=DateTime.Parse("1986-06-28"), Sex=GenderEnum.Male, AccountType=AccountTypeEnum.SysAdmin, Remark="系统管理员", CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrgId=1300000000101, PosId=1300000000102, TenantId=1300000000001 },
-            new SysUser{ Id=1300000000112, Account="user1", Password=encryptPasswod, NickName="部门主管", RealName="部门主管", Phone="18020030720", Birthday=DateTime.Parse("1986-06-28"), Sex=GenderEnum.Female, AccountType=AccountTypeEnum.NormalUser, Remark="部门主管", CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrgId=1300000000102, PosId=1300000000108, TenantId=1300000000001 },
-            new SysUser{ Id=1300000000113, Account="user2", Password=encryptPasswod, NickName="部门职员", RealName="部门职员", Phone="18020030720", Birthday=DateTime.Parse("1986-06-28"), Sex=GenderEnum.Female, AccountType=AccountTypeEnum.NormalUser, Remark="部门职员", CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrgId=1300000000103, PosId=1300000000110, TenantId=1300000000001 },
-            new SysUser{ Id=1300000000114, Account="user3", Password=encryptPasswod, NickName="普通用户", RealName="普通用户", Phone="18020030720", Birthday=DateTime.Parse("1986-06-28"), Sex=GenderEnum.Female, AccountType=AccountTypeEnum.NormalUser, Remark="普通用户", CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrgId=1300000000104, PosId=1300000000115, TenantId=1300000000001 },
-            new SysUser{ Id=1300000000115, Account="user4", Password=encryptPasswod, NickName="其他", RealName="其他", Phone="18020030720", Birthday=DateTime.Parse("1986-06-28"), Sex=GenderEnum.Female, AccountType=AccountTypeEnum.Member, Remark="会员", CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrgId=1300000000105, PosId=1300000000116, TenantId=1300000000001 },
+            new SysUser{ Id=1300000000101, Account="superadmin", Password=encryptPasswod, NickName="超级管理员", RealName="超级管理员", Phone="18020030720", Birthday=DateTime.Parse("2000-01-01"), Sex=GenderEnum.Male, AccountType=AccountTypeEnum.SuperAdmin, Remark="超级管理员", CreateTime=DateTime.Parse("2022-02-10 00:00:00"), TenantId=1300000000001 },
+            new SysUser{ Id=1300000000111, Account="admin", Password=encryptPasswod, NickName="系统管理员", RealName="系统管理员", Phone="18020030720", Birthday=DateTime.Parse("2000-01-01"), Sex=GenderEnum.Male, AccountType=AccountTypeEnum.SysAdmin, Remark="系统管理员", CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrgId=1300000000101, PosId=1300000000102, TenantId=1300000000001 },
+            new SysUser{ Id=1300000000112, Account="user1", Password=encryptPasswod, NickName="部门主管", RealName="部门主管", Phone="18020030720", Birthday=DateTime.Parse("2000-01-01"), Sex=GenderEnum.Female, AccountType=AccountTypeEnum.NormalUser, Remark="部门主管", CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrgId=1300000000102, PosId=1300000000108, TenantId=1300000000001 },
+            new SysUser{ Id=1300000000113, Account="user2", Password=encryptPasswod, NickName="部门职员", RealName="部门职员", Phone="18020030720", Birthday=DateTime.Parse("2000-01-01"), Sex=GenderEnum.Female, AccountType=AccountTypeEnum.NormalUser, Remark="部门职员", CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrgId=1300000000103, PosId=1300000000110, TenantId=1300000000001 },
+            new SysUser{ Id=1300000000114, Account="user3", Password=encryptPasswod, NickName="普通用户", RealName="普通用户", Phone="18020030720", Birthday=DateTime.Parse("2000-01-01"), Sex=GenderEnum.Female, AccountType=AccountTypeEnum.NormalUser, Remark="普通用户", CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrgId=1300000000104, PosId=1300000000115, TenantId=1300000000001 },
+            new SysUser{ Id=1300000000115, Account="user4", Password=encryptPasswod, NickName="其他", RealName="其他", Phone="18020030720", Birthday=DateTime.Parse("2000-01-01"), Sex=GenderEnum.Female, AccountType=AccountTypeEnum.Member, Remark="会员", CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrgId=1300000000105, PosId=1300000000116, TenantId=1300000000001 },
         };
     }
 }

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs

@@ -202,7 +202,7 @@ public class SysTenantService : IDynamicApiController, ITransient
             AccountType = AccountTypeEnum.SysAdmin,
             OrgId = newOrg.Id,
             PosId = newPos.Id,
-            Birthday = DateTime.Parse("1986-06-28"),
+            Birthday = DateTime.Parse("2000-01-01"),
             RealName = "租管",
             Remark = "租管" + tenantName,
         };

+ 28 - 0
Admin.NET/Admin.NET.Core/Service/User/Dto/UserOutput.cs

@@ -0,0 +1,28 @@
+// 麻省理工学院许可证
+//
+// 版权所有 (c) 2021-2023 zuohuaijun,大名科技(天津)有限公司  联系电话/微信:18020030720  QQ:515096995
+//
+// 特此免费授予获得本软件的任何人以处理本软件的权利,但须遵守以下条件:在所有副本或重要部分的软件中必须包括上述版权声明和本许可声明。
+//
+// 软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于对适销性、适用性和非侵权的保证。
+// 在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是因合同、侵权或其他方式引起的,与软件或其使用或其他交易有关。
+
+namespace Admin.NET.Core.Service;
+
+public class UserOutput : SysUser
+{
+    /// <summary>
+    /// 机构名称
+    /// </summary>
+    public string OrgName { get; set; }
+
+    /// <summary>
+    /// 职位名称
+    /// </summary>
+    public string PosName { get; set; }
+
+    /// <summary>
+    /// 角色名称
+    /// </summary>
+    public string RoleName { get; set; }
+}

+ 11 - 1
Admin.NET/Admin.NET.Core/Service/User/SysUserService.cs

@@ -43,7 +43,7 @@ public class SysUserService : IDynamicApiController, ITransient
     /// <param name="input"></param>
     /// <returns></returns>
     [DisplayName("获取用户分页列表")]
-    public async Task<SqlSugarPagedList<SysUser>> Page(PageUserInput input)
+    public async Task<SqlSugarPagedList<UserOutput>> Page(PageUserInput input)
     {
         // 获取用户拥有的机构集合
         var userOrgIdList = await _sysOrgService.GetUserOrgIdList();
@@ -59,12 +59,22 @@ public class SysUserService : IDynamicApiController, ITransient
         }
 
         return await _sysUserRep.AsQueryable()
+            .LeftJoin<SysOrg>((u, a) => u.OrgId == a.Id)
+            .LeftJoin<SysPos>((u, a, b) => u.PosId == b.Id)
+            .LeftJoin<SysUserRole>((u, a, b, c) => u.Id == c.UserId)
+            .LeftJoin<SysRole>((u, a, b, c, d) => c.RoleId == d.Id)
             .Where(u => u.AccountType != AccountTypeEnum.SuperAdmin)
             .WhereIF(orgList != null, u => orgList.Contains(u.OrgId))
             .WhereIF(!string.IsNullOrWhiteSpace(input.Account), u => u.Account.Contains(input.Account))
             .WhereIF(!string.IsNullOrWhiteSpace(input.RealName), u => u.RealName.Contains(input.RealName))
             .WhereIF(!string.IsNullOrWhiteSpace(input.Phone), u => u.Phone.Contains(input.Phone))
             .OrderBy(u => u.OrderNo)
+            .Select((u, a, b, c, d) => new UserOutput
+            {
+                OrgName = a.Name,
+                PosName = b.Name,
+                RoleName = d.Name
+            }, true)
             .ToPagedListAsync(input.Page, input.PageSize);
     }
 

+ 4 - 4
Web/src/api-services/apis/sys-user-api.ts

@@ -22,7 +22,7 @@ import { AdminResultInt32 } from '../models';
 import { AdminResultInt64 } from '../models';
 import { AdminResultListInt64 } from '../models';
 import { AdminResultListSysUserExtOrg } from '../models';
-import { AdminResultSqlSugarPagedListSysUser } from '../models';
+import { AdminResultSqlSugarPagedListUserOutput } from '../models';
 import { AdminResultString } from '../models';
 import { AdminResultSysUser } from '../models';
 import { ChangePwdInput } from '../models';
@@ -739,7 +739,7 @@ export const SysUserApiFp = function(configuration?: Configuration) {
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysUserPagePost(body?: PageUserInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysUser>>> {
+        async apiSysUserPagePost(body?: PageUserInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListUserOutput>>> {
             const localVarAxiosArgs = await SysUserApiAxiosParamCreator(configuration).apiSysUserPagePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
@@ -883,7 +883,7 @@ export const SysUserApiFactory = function (configuration?: Configuration, basePa
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysUserPagePost(body?: PageUserInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysUser>> {
+        async apiSysUserPagePost(body?: PageUserInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListUserOutput>> {
             return SysUserApiFp(configuration).apiSysUserPagePost(body, options).then((request) => request(axios, basePath));
         },
         /**
@@ -1021,7 +1021,7 @@ export class SysUserApi extends BaseAPI {
      * @throws {RequiredError}
      * @memberof SysUserApi
      */
-    public async apiSysUserPagePost(body?: PageUserInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysUser>> {
+    public async apiSysUserPagePost(body?: PageUserInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListUserOutput>> {
         return SysUserApiFp(this.configuration).apiSysUserPagePost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**

+ 12 - 12
Web/src/api-services/models/admin-result-sql-sugar-paged-list-sys-user.ts → Web/src/api-services/models/admin-result-sql-sugar-paged-list-user-output.ts

@@ -12,24 +12,24 @@
  * Do not edit the class manually.
  */
 
-import { SqlSugarPagedListSysUser } from './sql-sugar-paged-list-sys-user';
+import { SqlSugarPagedListUserOutput } from './sql-sugar-paged-list-user-output';
 import {
-    SqlSugarPagedListSysUser,
+    SqlSugarPagedListUserOutput,
 } from ".";
 
 /**
  * 全局返回结果
  *
  * @export
- * @interface AdminResultSqlSugarPagedListSysUser
+ * @interface AdminResultSqlSugarPagedListUserOutput
  */
-export interface AdminResultSqlSugarPagedListSysUser {
+export interface AdminResultSqlSugarPagedListUserOutput {
 
     /**
      * 状态码
      *
      * @type {number}
-     * @memberof AdminResultSqlSugarPagedListSysUser
+     * @memberof AdminResultSqlSugarPagedListUserOutput
      */
     code?: number;
 
@@ -37,7 +37,7 @@ export interface AdminResultSqlSugarPagedListSysUser {
      * 类型success、warning、error
      *
      * @type {string}
-     * @memberof AdminResultSqlSugarPagedListSysUser
+     * @memberof AdminResultSqlSugarPagedListUserOutput
      */
     type?: string | null;
 
@@ -45,21 +45,21 @@ export interface AdminResultSqlSugarPagedListSysUser {
      * 错误信息
      *
      * @type {string}
-     * @memberof AdminResultSqlSugarPagedListSysUser
+     * @memberof AdminResultSqlSugarPagedListUserOutput
      */
     message?: string | null;
 
     /**
-     * @type {SqlSugarPagedListSysUser}
-     * @memberof AdminResultSqlSugarPagedListSysUser
+     * @type {SqlSugarPagedListUserOutput}
+     * @memberof AdminResultSqlSugarPagedListUserOutput
      */
-    result?: SqlSugarPagedListSysUser;
+    result?: SqlSugarPagedListUserOutput;
 
     /**
      * 附加数据
      *
      * @type {any}
-     * @memberof AdminResultSqlSugarPagedListSysUser
+     * @memberof AdminResultSqlSugarPagedListUserOutput
      */
     extras?: any | null;
 
@@ -67,7 +67,7 @@ export interface AdminResultSqlSugarPagedListSysUser {
      * 时间
      *
      * @type {Date}
-     * @memberof AdminResultSqlSugarPagedListSysUser
+     * @memberof AdminResultSqlSugarPagedListUserOutput
      */
     time?: Date;
 }

+ 3 - 2
Web/src/api-services/models/index.ts

@@ -70,9 +70,9 @@ export * from './admin-result-sql-sugar-paged-list-sys-plugin';
 export * from './admin-result-sql-sugar-paged-list-sys-print';
 export * from './admin-result-sql-sugar-paged-list-sys-region';
 export * from './admin-result-sql-sugar-paged-list-sys-role';
-export * from './admin-result-sql-sugar-paged-list-sys-user';
 export * from './admin-result-sql-sugar-paged-list-sys-wechat-user';
 export * from './admin-result-sql-sugar-paged-list-tenant-output';
+export * from './admin-result-sql-sugar-paged-list-user-output';
 export * from './admin-result-string';
 export * from './admin-result-sys-code-gen';
 export * from './admin-result-sys-code-gen-config';
@@ -196,9 +196,9 @@ export * from './sql-sugar-paged-list-sys-plugin';
 export * from './sql-sugar-paged-list-sys-print';
 export * from './sql-sugar-paged-list-sys-region';
 export * from './sql-sugar-paged-list-sys-role';
-export * from './sql-sugar-paged-list-sys-user';
 export * from './sql-sugar-paged-list-sys-wechat-user';
 export * from './sql-sugar-paged-list-tenant-output';
+export * from './sql-sugar-paged-list-user-output';
 export * from './status-enum';
 export * from './swagger-submit-url-body';
 export * from './sys-code-gen';
@@ -262,6 +262,7 @@ export * from './update-tenant-input';
 export * from './update-user-input';
 export * from './upload-file-from-base64-input';
 export * from './user-input';
+export * from './user-output';
 export * from './user-role-input';
 export * from './wechat-pay-output';
 export * from './wechat-pay-para-input';

+ 13 - 13
Web/src/api-services/models/sql-sugar-paged-list-sys-user.ts → Web/src/api-services/models/sql-sugar-paged-list-user-output.ts

@@ -12,24 +12,24 @@
  * Do not edit the class manually.
  */
 
-import { SysUser } from './sys-user';
+import { UserOutput } from './user-output';
 import {
-    SysUser,
+    UserOutput,
 } from ".";
 
 /**
  * 分页泛型集合
  *
  * @export
- * @interface SqlSugarPagedListSysUser
+ * @interface SqlSugarPagedListUserOutput
  */
-export interface SqlSugarPagedListSysUser {
+export interface SqlSugarPagedListUserOutput {
 
     /**
      * 页码
      *
      * @type {number}
-     * @memberof SqlSugarPagedListSysUser
+     * @memberof SqlSugarPagedListUserOutput
      */
     page?: number;
 
@@ -37,7 +37,7 @@ export interface SqlSugarPagedListSysUser {
      * 页容量
      *
      * @type {number}
-     * @memberof SqlSugarPagedListSysUser
+     * @memberof SqlSugarPagedListUserOutput
      */
     pageSize?: number;
 
@@ -45,7 +45,7 @@ export interface SqlSugarPagedListSysUser {
      * 总条数
      *
      * @type {number}
-     * @memberof SqlSugarPagedListSysUser
+     * @memberof SqlSugarPagedListUserOutput
      */
     total?: number;
 
@@ -53,23 +53,23 @@ export interface SqlSugarPagedListSysUser {
      * 总页数
      *
      * @type {number}
-     * @memberof SqlSugarPagedListSysUser
+     * @memberof SqlSugarPagedListUserOutput
      */
     totalPages?: number;
 
     /**
      * 当前页集合
      *
-     * @type {Array<SysUser>}
-     * @memberof SqlSugarPagedListSysUser
+     * @type {Array<UserOutput>}
+     * @memberof SqlSugarPagedListUserOutput
      */
-    items?: Array<SysUser> | null;
+    items?: Array<UserOutput> | null;
 
     /**
      * 是否有上一页
      *
      * @type {boolean}
-     * @memberof SqlSugarPagedListSysUser
+     * @memberof SqlSugarPagedListUserOutput
      */
     hasPrevPage?: boolean;
 
@@ -77,7 +77,7 @@ export interface SqlSugarPagedListSysUser {
      * 是否有下一页
      *
      * @type {boolean}
-     * @memberof SqlSugarPagedListSysUser
+     * @memberof SqlSugarPagedListUserOutput
      */
     hasNextPage?: boolean;
 }

+ 458 - 0
Web/src/api-services/models/user-output.ts

@@ -0,0 +1,458 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET 通用权限开发平台
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+
+import { AccountTypeEnum } from './account-type-enum';
+import { CardTypeEnum } from './card-type-enum';
+import { CultureLevelEnum } from './culture-level-enum';
+import { GenderEnum } from './gender-enum';
+import { StatusEnum } from './status-enum';
+import { SysOrg } from './sys-org';
+import { SysPos } from './sys-pos';
+import { SysUser } from './sys-user';
+import {
+    AccountTypeEnum,CardTypeEnum,CultureLevelEnum,GenderEnum,StatusEnum,SysOrg,SysPos,SysUser,
+} from ".";
+
+/**
+ * 
+ *
+ * @export
+ * @interface UserOutput
+ */
+export interface UserOutput {
+
+    /**
+     * 雪花Id
+     *
+     * @type {number}
+     * @memberof UserOutput
+     */
+    id?: number;
+
+    /**
+     * 创建时间
+     *
+     * @type {Date}
+     * @memberof UserOutput
+     */
+    createTime?: Date | null;
+
+    /**
+     * 更新时间
+     *
+     * @type {Date}
+     * @memberof UserOutput
+     */
+    updateTime?: Date | null;
+
+    /**
+     * 创建者Id
+     *
+     * @type {number}
+     * @memberof UserOutput
+     */
+    createUserId?: number | null;
+
+    /**
+     * 创建者姓名
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    createUserName?: string | null;
+
+    /**
+     * 修改者Id
+     *
+     * @type {number}
+     * @memberof UserOutput
+     */
+    updateUserId?: number | null;
+
+    /**
+     * 修改者姓名
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    updateUserName?: string | null;
+
+    /**
+     * 软删除
+     *
+     * @type {boolean}
+     * @memberof UserOutput
+     */
+    isDelete?: boolean;
+
+    /**
+     * 租户Id
+     *
+     * @type {number}
+     * @memberof UserOutput
+     */
+    tenantId?: number | null;
+
+    /**
+     * 账号
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    account: string;
+
+    /**
+     * 真实姓名
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    realName?: string | null;
+
+    /**
+     * 昵称
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    nickName?: string | null;
+
+    /**
+     * 头像
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    avatar?: string | null;
+
+    /**
+     * @type {GenderEnum}
+     * @memberof UserOutput
+     */
+    sex?: GenderEnum;
+
+    /**
+     * 年龄
+     *
+     * @type {number}
+     * @memberof UserOutput
+     */
+    age?: number;
+
+    /**
+     * 出生日期
+     *
+     * @type {Date}
+     * @memberof UserOutput
+     */
+    birthday?: Date | null;
+
+    /**
+     * 民族
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    nation?: string | null;
+
+    /**
+     * 手机号码
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    phone?: string | null;
+
+    /**
+     * @type {CardTypeEnum}
+     * @memberof UserOutput
+     */
+    cardType?: CardTypeEnum;
+
+    /**
+     * 身份证号
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    idCardNum?: string | null;
+
+    /**
+     * 邮箱
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    email?: string | null;
+
+    /**
+     * 地址
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    address?: string | null;
+
+    /**
+     * @type {CultureLevelEnum}
+     * @memberof UserOutput
+     */
+    cultureLevel?: CultureLevelEnum;
+
+    /**
+     * 政治面貌
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    politicalOutlook?: string | null;
+
+    /**
+     * 毕业院校
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    college?: string | null;
+
+    /**
+     * 办公电话
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    officePhone?: string | null;
+
+    /**
+     * 紧急联系人
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    emergencyContact?: string | null;
+
+    /**
+     * 紧急联系人电话
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    emergencyPhone?: string | null;
+
+    /**
+     * 紧急联系人地址
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    emergencyAddress?: string | null;
+
+    /**
+     * 个人简介
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    introduction?: string | null;
+
+    /**
+     * 排序
+     *
+     * @type {number}
+     * @memberof UserOutput
+     */
+    orderNo?: number;
+
+    /**
+     * @type {StatusEnum}
+     * @memberof UserOutput
+     */
+    status?: StatusEnum;
+
+    /**
+     * 备注
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    remark?: string | null;
+
+    /**
+     * @type {AccountTypeEnum}
+     * @memberof UserOutput
+     */
+    accountType?: AccountTypeEnum;
+
+    /**
+     * 直属机构Id
+     *
+     * @type {number}
+     * @memberof UserOutput
+     */
+    orgId?: number;
+
+    /**
+     * @type {SysOrg}
+     * @memberof UserOutput
+     */
+    sysOrg?: SysOrg;
+
+    /**
+     * 直属主管Id
+     *
+     * @type {number}
+     * @memberof UserOutput
+     */
+    managerUserId?: number | null;
+
+    /**
+     * @type {SysUser}
+     * @memberof UserOutput
+     */
+    managerUser?: SysUser;
+
+    /**
+     * 职位Id
+     *
+     * @type {number}
+     * @memberof UserOutput
+     */
+    posId?: number;
+
+    /**
+     * @type {SysPos}
+     * @memberof UserOutput
+     */
+    sysPos?: SysPos;
+
+    /**
+     * 工号
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    jobNum?: string | null;
+
+    /**
+     * 职级
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    posLevel?: string | null;
+
+    /**
+     * 职称
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    posTitle?: string | null;
+
+    /**
+     * 擅长领域
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    expertise?: string | null;
+
+    /**
+     * 办公区域
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    officeZone?: string | null;
+
+    /**
+     * 办公室
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    office?: string | null;
+
+    /**
+     * 入职日期
+     *
+     * @type {Date}
+     * @memberof UserOutput
+     */
+    joinDate?: Date | null;
+
+    /**
+     * 最新登录Ip
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    lastLoginIp?: string | null;
+
+    /**
+     * 最新登录地点
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    lastLoginAddress?: string | null;
+
+    /**
+     * 最新登录时间
+     *
+     * @type {Date}
+     * @memberof UserOutput
+     */
+    lastLoginTime?: Date | null;
+
+    /**
+     * 最新登录设备
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    lastLoginDevice?: string | null;
+
+    /**
+     * 电子签名
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    signature?: string | null;
+
+    /**
+     * 机构名称
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    orgName?: string | null;
+
+    /**
+     * 职位名称
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    posName?: string | null;
+
+    /**
+     * 角色名称
+     *
+     * @type {string}
+     * @memberof UserOutput
+     */
+    roleName?: string | null;
+}

+ 28 - 28
Web/src/views/system/user/component/editUser.vue

@@ -8,7 +8,7 @@
 				</div>
 			</template>
 			<el-tabs v-loading="state.loading" v-model="state.selectedTabName">
-				<el-tab-pane label="基础信息">
+				<el-tab-pane label="基础信息" style="height: 550px;">
 					<el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto">
 						<el-row :gutter="35">
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@@ -17,8 +17,8 @@
 								</el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-								<el-form-item label="真实姓名" prop="realName" :rules="[{ required: true, message: '真实姓名不能为空', trigger: 'blur' }]">
-									<el-input v-model="state.ruleForm.realName" placeholder="真实姓名" clearable />
+								<el-form-item label="昵称">
+									<el-input v-model="state.ruleForm.nickName" placeholder="昵称" clearable />
 								</el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@@ -27,22 +27,8 @@
 								</el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-								<el-form-item label="出生日期" prop="birthday" :rules="[{ required: true, message: '出生日期不能为空', trigger: 'blur' }]">
-									<el-date-picker v-model="state.ruleForm.birthday" type="date" placeholder="出生日期" format="YYYY-MM-DD" value-format="YYYY-MM-DD" class="w100" />
-								</el-form-item>
-							</el-col>
-							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-								<el-form-item label="昵称">
-									<el-input v-model="state.ruleForm.nickName" placeholder="昵称" clearable />
-								</el-form-item>
-							</el-col>
-							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-								<el-form-item label="性别">
-									<el-radio-group v-model="state.ruleForm.sex">
-										<el-radio :label="1">男</el-radio>
-										<el-radio :label="2">女</el-radio>
-										<el-radio :label="3">其他</el-radio>
-									</el-radio-group>
+								<el-form-item label="真实姓名" prop="realName" :rules="[{ required: true, message: '真实姓名不能为空', trigger: 'blur' }]">
+									<el-input v-model="state.ruleForm.realName" placeholder="真实姓名" clearable />
 								</el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@@ -61,9 +47,9 @@
 									</el-select>
 								</el-form-item>
 							</el-col>
-							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb5">
-								<el-form-item label="年龄">
-									<el-input-number v-model="state.ruleForm.age" placeholder="年龄" class="w100" />
+							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+								<el-form-item label="邮箱">
+									<el-input v-model="state.ruleForm.email" placeholder="邮箱" clearable />
 								</el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb5">
@@ -148,12 +134,12 @@
 										</el-col>
 									</el-row>
 								</template>
-								<el-empty :image-size="80" description="空数据" v-else></el-empty>
+								<el-empty :image-size="50" description="空数据" v-else></el-empty>
 							</el-col>
 						</el-row>
 					</el-form>
 				</el-tab-pane>
-				<el-tab-pane label="档案信息">
+				<el-tab-pane label="档案信息" style="height: 550px">
 					<el-form :model="state.ruleForm" label-width="auto">
 						<el-row :gutter="35">
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@@ -173,13 +159,27 @@
 								</el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-								<el-form-item label="民族">
-									<el-input v-model="state.ruleForm.nation" placeholder="民族" clearable />
+								<el-form-item label="出生日期" prop="birthday">
+									<el-date-picker v-model="state.ruleForm.birthday" type="date" placeholder="出生日期" format="YYYY-MM-DD" value-format="YYYY-MM-DD" class="w100" />
 								</el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-								<el-form-item label="邮箱">
-									<el-input v-model="state.ruleForm.email" placeholder="邮箱" clearable />
+								<el-form-item label="性别">
+									<el-radio-group v-model="state.ruleForm.sex">
+										<el-radio :label="1">男</el-radio>
+										<el-radio :label="2">女</el-radio>
+										<el-radio :label="3">其他</el-radio>
+									</el-radio-group>
+								</el-form-item>
+							</el-col>
+							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb5">
+								<el-form-item label="年龄">
+									<el-input-number v-model="state.ruleForm.age" placeholder="年龄" class="w100" />
+								</el-form-item>
+							</el-col>
+							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+								<el-form-item label="民族">
+									<el-input v-model="state.ruleForm.nation" placeholder="民族" clearable />
 								</el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">

+ 8 - 5
Web/src/views/system/user/index.vue

@@ -32,16 +32,16 @@
 				<el-card class="full-table" shadow="hover" style="margin-top: 8px">
 					<el-table :data="state.userData" style="width: 100%" v-loading="state.loading" border>
 						<el-table-column type="index" label="序号" width="55" align="center" fixed />
-						<el-table-column prop="account" label="账号" width="120" align="center" fixed show-overflow-tooltip />
-						<!-- <el-table-column prop="nickName" label="昵称" width="120" align="center" show-overflow-tooltip /> -->
-						<el-table-column prop="realName" label="姓名" width="120" align="center" show-overflow-tooltip />
 						<el-table-column label="头像" width="80" align="center" show-overflow-tooltip>
 							<template #default="scope">
 								<el-avatar :src="scope.row.avatar" size="small">{{ scope.row.nickName?.slice(0, 1) ?? scope.row.realName?.slice(0, 1) }} </el-avatar>
 							</template>
 						</el-table-column>
+						<el-table-column prop="account" label="账号" width="120" align="center" show-overflow-tooltip />
+						<!-- <el-table-column prop="nickName" label="昵称" width="120" align="center" show-overflow-tooltip /> -->
+						<el-table-column prop="realName" label="姓名" width="120" align="center" show-overflow-tooltip />
 						<el-table-column prop="phone" label="手机号码" width="120" align="center" show-overflow-tooltip />
-						<el-table-column label="出生日期" width="100" align="center" show-overflow-tooltip>
+						<!-- <el-table-column label="出生日期" width="100" align="center" show-overflow-tooltip>
 							<template #default="scope">
 								{{ formatDate(new Date(scope.row.birthday), 'YYYY-mm-dd') }}
 							</template>
@@ -52,7 +52,7 @@
 								<el-tag type="danger" v-else-if="scope.row.sex === 2"> 女 </el-tag>
 								<el-tag type="info" v-else> 其他 </el-tag>
 							</template>
-						</el-table-column>
+						</el-table-column> -->
 						<el-table-column label="账号类型" width="110" align="center" show-overflow-tooltip>
 							<template #default="scope">
 								<el-tag v-if="scope.row.accountType === 888"> 系统管理员 </el-tag>
@@ -61,6 +61,9 @@
 								<el-tag v-else> 其他 </el-tag>
 							</template>
 						</el-table-column>
+						<el-table-column prop="roleName" label="拥有角色" width="130" align="center" show-overflow-tooltip />
+						<el-table-column prop="orgName" label="所属机构" width="120" align="center" show-overflow-tooltip />
+						<el-table-column prop="posName" label="职位名称" width="120" align="center" show-overflow-tooltip />
 						<el-table-column label="状态" width="70" align="center" show-overflow-tooltip>
 							<template #default="scope">
 								<el-switch v-model="scope.row.status" :active-value="1" :inactive-value="2" size="small" @change="changeStatus(scope.row)" v-auth="'sysUser:setStatus'" />