user-api.ts 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  1. import request from "@/utils/request";
  2. const USER_BASE_URL = "/api/v1/users";
  3. const UserAPI = {
  4. /**
  5. * 获取当前登录用户信息
  6. *
  7. * @returns 登录用户昵称、头像信息,包括角色和权限
  8. */
  9. getInfo() {
  10. return request<any, UserInfo>({
  11. url: `${USER_BASE_URL}/me`,
  12. method: "get",
  13. });
  14. },
  15. /**
  16. * 获取用户分页列表
  17. *
  18. * @param queryParams 查询参数
  19. */
  20. getPage(queryParams: UserPageQuery) {
  21. return request<any, PageResult<UserPageVO[]>>({
  22. url: `${USER_BASE_URL}/page`,
  23. method: "get",
  24. params: queryParams,
  25. });
  26. },
  27. /**
  28. * 获取用户表单详情
  29. *
  30. * @param userId 用户ID
  31. * @returns 用户表单详情
  32. */
  33. getFormData(userId: string) {
  34. return request<any, UserForm>({
  35. url: `${USER_BASE_URL}/${userId}/form`,
  36. method: "get",
  37. });
  38. },
  39. /**
  40. * 添加用户
  41. *
  42. * @param data 用户表单数据
  43. */
  44. create(data: UserForm) {
  45. return request({
  46. url: `${USER_BASE_URL}`,
  47. method: "post",
  48. data,
  49. });
  50. },
  51. /**
  52. * 修改用户
  53. *
  54. * @param id 用户ID
  55. * @param data 用户表单数据
  56. */
  57. update(id: string, data: UserForm) {
  58. return request({
  59. url: `${USER_BASE_URL}/${id}`,
  60. method: "put",
  61. data,
  62. });
  63. },
  64. /**
  65. * 修改用户密码
  66. *
  67. * @param id 用户ID
  68. * @param password 新密码
  69. */
  70. resetPassword(id: string, password: string) {
  71. return request({
  72. url: `${USER_BASE_URL}/${id}/password/reset`,
  73. method: "put",
  74. params: { password },
  75. });
  76. },
  77. /**
  78. * 批量删除用户,多个以英文逗号(,)分割
  79. *
  80. * @param ids 用户ID字符串,多个以英文逗号(,)分割
  81. */
  82. deleteByIds(ids: string) {
  83. return request({
  84. url: `${USER_BASE_URL}/${ids}`,
  85. method: "delete",
  86. });
  87. },
  88. /** 下载用户导入模板 */
  89. downloadTemplate() {
  90. return request({
  91. url: `${USER_BASE_URL}/template`,
  92. method: "get",
  93. responseType: "blob",
  94. });
  95. },
  96. /**
  97. * 导出用户
  98. *
  99. * @param queryParams 查询参数
  100. */
  101. export(queryParams: UserPageQuery) {
  102. return request({
  103. url: `${USER_BASE_URL}/export`,
  104. method: "get",
  105. params: queryParams,
  106. responseType: "blob",
  107. });
  108. },
  109. /**
  110. * 导入用户
  111. *
  112. * @param deptId 部门ID
  113. * @param file 导入文件
  114. */
  115. import(deptId: string, file: File) {
  116. const formData = new FormData();
  117. formData.append("file", file);
  118. return request<any, ExcelResult>({
  119. url: `${USER_BASE_URL}/import`,
  120. method: "post",
  121. params: { deptId },
  122. data: formData,
  123. headers: {
  124. "Content-Type": "multipart/form-data",
  125. },
  126. });
  127. },
  128. /** 获取个人中心用户信息 */
  129. getProfile() {
  130. return request<any, UserProfileVO>({
  131. url: `${USER_BASE_URL}/profile`,
  132. method: "get",
  133. });
  134. },
  135. /** 修改个人中心用户信息 */
  136. updateProfile(data: UserProfileForm) {
  137. return request({
  138. url: `${USER_BASE_URL}/profile`,
  139. method: "put",
  140. data,
  141. });
  142. },
  143. /** 修改个人中心用户密码 */
  144. changePassword(data: PasswordChangeForm) {
  145. return request({
  146. url: `${USER_BASE_URL}/password`,
  147. method: "put",
  148. data,
  149. });
  150. },
  151. /** 发送短信验证码(绑定或更换手机号)*/
  152. sendMobileCode(mobile: string) {
  153. return request({
  154. url: `${USER_BASE_URL}/mobile/code`,
  155. method: "post",
  156. params: { mobile },
  157. });
  158. },
  159. /** 绑定或更换手机号 */
  160. bindOrChangeMobile(data: MobileUpdateForm) {
  161. return request({
  162. url: `${USER_BASE_URL}/mobile`,
  163. method: "put",
  164. data,
  165. });
  166. },
  167. /** 发送邮箱验证码(绑定或更换邮箱)*/
  168. sendEmailCode(email: string) {
  169. return request({
  170. url: `${USER_BASE_URL}/email/code`,
  171. method: "post",
  172. params: { email },
  173. });
  174. },
  175. /** 绑定或更换邮箱 */
  176. bindOrChangeEmail(data: EmailUpdateForm) {
  177. return request({
  178. url: `${USER_BASE_URL}/email`,
  179. method: "put",
  180. data,
  181. });
  182. },
  183. /**
  184. * 获取用户下拉列表
  185. */
  186. getOptions() {
  187. return request<any, OptionType[]>({
  188. url: `${USER_BASE_URL}/options`,
  189. method: "get",
  190. });
  191. },
  192. };
  193. export default UserAPI;
  194. /** 登录用户信息 */
  195. export interface UserInfo {
  196. /** 用户ID */
  197. userId?: string;
  198. /** 用户名 */
  199. username?: string;
  200. /** 昵称 */
  201. nickname?: string;
  202. /** 头像URL */
  203. avatar?: string;
  204. /** 角色 */
  205. roles: string[];
  206. /** 权限 */
  207. perms: string[];
  208. }
  209. /**
  210. * 用户分页查询对象
  211. */
  212. export interface UserPageQuery extends PageQuery {
  213. /** 搜索关键字 */
  214. keywords?: string;
  215. /** 用户状态 */
  216. status?: number;
  217. /** 部门ID */
  218. deptId?: string;
  219. /** 开始时间 */
  220. createTime?: [string, string];
  221. }
  222. /** 用户分页对象 */
  223. export interface UserPageVO {
  224. /** 用户ID */
  225. id: string;
  226. /** 用户头像URL */
  227. avatar?: string;
  228. /** 创建时间 */
  229. createTime?: Date;
  230. /** 部门名称 */
  231. deptName?: string;
  232. /** 用户邮箱 */
  233. email?: string;
  234. /** 性别 */
  235. gender?: number;
  236. /** 手机号 */
  237. mobile?: string;
  238. /** 用户昵称 */
  239. nickname?: string;
  240. /** 角色名称,多个使用英文逗号(,)分割 */
  241. roleNames?: string;
  242. /** 用户状态(1:启用;0:禁用) */
  243. status?: number;
  244. /** 用户名 */
  245. username?: string;
  246. }
  247. /** 用户表单类型 */
  248. export interface UserForm {
  249. /** 用户ID */
  250. id?: string;
  251. /** 用户头像 */
  252. avatar?: string;
  253. /** 部门ID */
  254. deptId?: string;
  255. /** 邮箱 */
  256. email?: string;
  257. /** 性别 */
  258. gender?: number;
  259. /** 手机号 */
  260. mobile?: string;
  261. /** 昵称 */
  262. nickname?: string;
  263. /** 角色ID集合 */
  264. roleIds?: number[];
  265. /** 用户状态(1:正常;0:禁用) */
  266. status?: number;
  267. /** 用户名 */
  268. username?: string;
  269. }
  270. /** 个人中心用户信息 */
  271. export interface UserProfileVO {
  272. /** 用户ID */
  273. id?: string;
  274. /** 用户名 */
  275. username?: string;
  276. /** 昵称 */
  277. nickname?: string;
  278. /** 头像URL */
  279. avatar?: string;
  280. /** 性别 */
  281. gender?: number;
  282. /** 手机号 */
  283. mobile?: string;
  284. /** 邮箱 */
  285. email?: string;
  286. /** 部门名称 */
  287. deptName?: string;
  288. /** 角色名称,多个使用英文逗号(,)分割 */
  289. roleNames?: string;
  290. /** 创建时间 */
  291. createTime?: Date;
  292. }
  293. /** 个人中心用户信息表单 */
  294. export interface UserProfileForm {
  295. /** 用户ID */
  296. id?: string;
  297. /** 用户名 */
  298. username?: string;
  299. /** 昵称 */
  300. nickname?: string;
  301. /** 头像URL */
  302. avatar?: string;
  303. /** 性别 */
  304. gender?: number;
  305. /** 手机号 */
  306. mobile?: string;
  307. /** 邮箱 */
  308. email?: string;
  309. }
  310. /** 修改密码表单 */
  311. export interface PasswordChangeForm {
  312. /** 原密码 */
  313. oldPassword?: string;
  314. /** 新密码 */
  315. newPassword?: string;
  316. /** 确认新密码 */
  317. confirmPassword?: string;
  318. }
  319. /** 修改手机表单 */
  320. export interface MobileUpdateForm {
  321. /** 手机号 */
  322. mobile?: string;
  323. /** 验证码 */
  324. code?: string;
  325. }
  326. /** 修改邮箱表单 */
  327. export interface EmailUpdateForm {
  328. /** 邮箱 */
  329. email?: string;
  330. /** 验证码 */
  331. code?: string;
  332. }