user.ts 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378
  1. import { defHttp } from '/@/utils/http/axios';
  2. import {
  3. LoginParams,
  4. LoginResultModel,
  5. GetUserInfoModel,
  6. UserInfoModel,
  7. RefreshTokenParams,
  8. SmsLoginParams,
  9. } from './model/userModel';
  10. import { session } from "/@/utils/Memory.js";
  11. import md5 from 'js-md5';
  12. import type { ErrorMessageMode } from '/#/axios';
  13. import permissions from "/@/mock/role_me_permissions.json";
  14. import tool from "/@/utils/Tool.js";
  15. import { getJwtToken } from '/@/utils/auth';
  16. import moment from 'moment';
  17. import { resolve } from 'path';
  18. import { message } from 'ant-design-vue';
  19. enum Api {
  20. // Login = '/auth/login',
  21. Login = '/api-auth/oauth/token',
  22. SmsCodeLogin = '/auth/code/login',
  23. Logout = '/auth/logout',
  24. GetUserInfo = '/user',
  25. // GetMyInfo = '/user/me/info',
  26. // GetMyInfo = '/api-auth/oauth/userinfo',
  27. GetMyInfo = '/callProvider',
  28. GetPermCode = '/callProvider',
  29. RefreshToken = '/auth/token',
  30. SendLoginSmsCode = '/noauth/send_login_code/',
  31. ResetCode = '/noauth/reset_code/',
  32. ResetPassword = '/noauth/reset/',
  33. Appointment = "/user-center/position/GetPostTreeByOrgId",
  34. AppointPos = "/user-center/post/GetAtpPostTree",
  35. SelectGroupList = "/user-center/role/selectGroupList",
  36. AddLoginRecord = "/base-center/syslog/AddLogin",
  37. SaveRoleMenu = "/base-center/newmenu/saveRoleMenu",
  38. SaveUserMenu = "/base-center/newmenu/saveUserMenu",
  39. GetRoleMenus = "/base-center/newmenu/getRoleMenus",
  40. GetUserMenus = "/base-center/newmenu/getUserMenus",
  41. allSys = '/datastore/dir/sys/list',
  42. GetUserDetailInfo = '/user-center/role/selectMHRoleByUserId',
  43. GetPersonByDepId = '/user-center/user/getPersonByDepId', ///api-user/user/getPersonByDepId
  44. }
  45. const client = {
  46. grant_type: "password",
  47. scope: "all",
  48. client_id: "space",
  49. client_secret: 'e10adc3949ba59abbe56e057f20f883e',
  50. }
  51. const interfaceType = { apiUrl2: true };
  52. /**
  53. * @description: user login api
  54. */
  55. export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal') {
  56. session.setItem('loginFrom', params)
  57. const formData = new FormData();
  58. var a = { ...params, ...client };
  59. Object.keys(a).forEach((key) => formData.append(key, a[key]))
  60. return new Promise<void>((resolve, reject) => {
  61. defHttp.post<LoginResultModel>({ url: Api.Login, params: formData })
  62. .then((r) => {
  63. r.refreshToken = r.refresh_token;
  64. r.token = r.access_token;
  65. session.setItem('tokenSpace', r.access_token);
  66. resolve(r);
  67. allSys();
  68. // loginCallProvider();
  69. }).catch((err) => {
  70. resolve(err)
  71. })
  72. })
  73. }
  74. export function loginCallProvider() {
  75. var a = {
  76. interfaceName: "atp-provider.controller.AtpController",
  77. methodName: "getToken",
  78. args: ['superAtp', '#super&Atp@123']
  79. }
  80. const f = new FormData();
  81. Object.keys(a).forEach((key) => f.append(key, a[key]))
  82. return new Promise<void>((resolve, reject) => {
  83. defHttp.post<LoginResultModel>({ url: Api.GetPermCode, params: f, ...interfaceType, })
  84. .then((r) => {
  85. debugger;
  86. })
  87. })
  88. }
  89. export function getMyInfo() {
  90. var a1 = session.getItem('loginFrom');
  91. const formData = new URLSearchParams();
  92. formData.append('interfaceName', 'atp-provider.controller.AtpController');
  93. formData.append('methodName', 'misLogin');
  94. formData.append('args[]', 'space');
  95. formData.append('args[]', a1.username);
  96. formData.append('args[]', md5(a1.password));
  97. // formData.append('args[]', a1.username.toUpperCase());//地灾使用这个
  98. // formData.append('args[]', md5('Tofly@028'));//地灾使用这个
  99. formData.append('args[]', '');
  100. return new Promise<void>((resolve, reject) => {
  101. defHttp.post<UserInfoModel>({
  102. url: Api.GetMyInfo,
  103. params: formData,
  104. ...interfaceType,
  105. }, { joinPrefix: false }).then(async (i) => {
  106. if (i.status == 0) {
  107. var u = JSON.parse(i.result);
  108. console.log(u);
  109. if (!u.EMPLOYEE) {
  110. u.EMPLOYEE = {};
  111. // u.EMPLOYEE_MIS.EMPLOYEE_ID = a1.username;
  112. u.EMPLOYEE.NAME = a1.username;
  113. u.EMPLOYEE.LOGIN_NAME = a1.username;
  114. }
  115. //插入登录日志记录
  116. let addRecordParam = {
  117. systemLog: {
  118. cjrq: moment().format('YYYY-MM-DD HH:mm:ss'),
  119. czsm: "登录操作",
  120. opt: "login",
  121. sfcg: u.hasOwnProperty('tokenV2') ? 1 : 0,
  122. userid: u.EMPLOYEE_MIS.EMPLOYEE_ID,
  123. username: u.EMPLOYEE.NAME
  124. }
  125. }
  126. defHttp.post({ url: Api.AddLoginRecord, params: addRecordParam })
  127. var a = {
  128. info: u,
  129. "userId": "80808080-8080-8080-8080-808080808080",
  130. "realName": u.EMPLOYEE.NAME,
  131. "username": u.EMPLOYEE.NAME,
  132. "LOGIN_NAME": u.EMPLOYEE.LOGIN_NAME,
  133. "phoneNumber": "17313039356",
  134. "email": "1419750663@qq.com",
  135. "avatar": "",
  136. "tenantId": "13814000-1dd2-11b2-8080-808080808080",
  137. "needSetPwd": false,
  138. "roles": [
  139. "SYS_ADMIN"
  140. ],
  141. "nameroles": u.ROLES && u.ROLES.map(i => i.NAME).join(","),
  142. "plainRoles": [
  143. {
  144. "roleId": "81818181-8181-8181-8181-818181818181",
  145. "roleName": "超级管理员"
  146. }
  147. ]
  148. }
  149. await getUserIdInfo(u.EMPLOYEE_MIS.EMPLOYEE_ID);
  150. resolve(a);
  151. session.setItem("userInfo", u);
  152. session.setItem('tokenV2', u.tokenV2);
  153. session.setItem('userId', u.EMPLOYEE_MIS.EMPLOYEE_ID);
  154. } else {
  155. window.localStorage.clear();
  156. window.sessionStorage.clear();
  157. message.error("用户名或密码错误");
  158. resolve([]);
  159. }
  160. })
  161. })
  162. }
  163. /**
  164. * @description: 根据用户id获取详细信息
  165. */
  166. export const getUserIdInfo = (id) => {
  167. return new Promise((resolve) => {
  168. defHttp.post<Array<string>>({
  169. url: Api.GetUserDetailInfo, params: {
  170. userId: id,
  171. getRoleIds: true
  172. }
  173. }).then(r => {
  174. if (r.resp_code == 0 && r.datas && r.datas.length) {
  175. session.setItem("roles", r.datas.join(","));
  176. resolve(r.datas)
  177. }
  178. })
  179. })
  180. };
  181. /**
  182. * @description: 获取所有组织
  183. */
  184. export const appointment = (params: AccountParams) => {
  185. return new Promise<void>((resolve, reject) => {
  186. defHttp.post({ url: Api.Appointment }).then((res) => {
  187. resolve(tool.buildTree(res.datas, "0"))
  188. })
  189. })
  190. }
  191. /**
  192. * @description: id获取所属组织的岗位
  193. */
  194. export const appointPos = (id) => {
  195. const formData = new FormData();
  196. formData.append('zwId', id);
  197. return new Promise<void>((resolve, reject) => {
  198. defHttp.post({ url: Api.AppointPos, params: formData }).then((res) => {
  199. res.datas.map(i => { i.label = i.name, i.value = i.id })
  200. resolve(res.datas)
  201. })
  202. })
  203. }
  204. /**
  205. * @description: 角色列表
  206. */
  207. export const roleList = (id) => {
  208. const formData = new FormData();
  209. formData.append('zwId', id);
  210. return new Promise<void>((resolve, reject) => {
  211. defHttp.post({ url: Api.SelectGroupList, params: formData }).then((res) => {
  212. res.datas.map(i => {
  213. if (i.groupName == "系统角色") session.setItem("adminRole", i)
  214. i.label = i.groupName, i.value = i.groupid, i.id = i.groupid
  215. })
  216. resolve(res.datas)
  217. })
  218. })
  219. }
  220. /**
  221. * @description: 保存角色和菜单的关系
  222. */
  223. export const saveRoleMenu = (params) => {
  224. return new Promise<void>((resolve, reject) => {
  225. defHttp.post({ url: Api.SaveRoleMenu, params })
  226. .then((r) => resolve(r.datas && r.resp_code == 0)).catch(e => resolve())
  227. })
  228. }
  229. /**
  230. * @description: 保存角色和菜单的关系
  231. */
  232. export const saveUserMenu = (params) => {
  233. return new Promise<void>((resolve, reject) => {
  234. defHttp.post({ url: Api.SaveUserMenu, params })
  235. .then((r) => resolve(r.datas && r.resp_code == 0)).catch(e => resolve())
  236. })
  237. }
  238. /**
  239. * @description: 获取角色和菜单的关系
  240. */
  241. export const getRoleMenus = (params) => {
  242. return new Promise<void>((resolve, reject) => {
  243. defHttp.post({ url: Api.GetRoleMenus, params })
  244. .then((r) => resolve(r.datas)).catch(e => resolve())
  245. })
  246. }
  247. /**
  248. * @description: 获取角色和菜单的关系
  249. */
  250. export const getUserMenus = (params) => {
  251. return new Promise<void>((resolve, reject) => {
  252. defHttp.post({ url: Api.GetUserMenus, params })
  253. .then((r) => resolve(r.datas)).catch(e => resolve())
  254. })
  255. }
  256. /**
  257. * @description: 获取角色和菜单的关系
  258. */
  259. export function allSys() {
  260. defHttp.post({ url: Api.allSys })
  261. .then((r) => {
  262. if (r && r.datas) {
  263. var l = r.datas.filter(i => i.sysName == '中台文件系统')
  264. if (l && l.length) session.setItem('sysFild', l[0])
  265. }
  266. })
  267. }
  268. /**
  269. * @description: getUserInfo
  270. */
  271. export function getUserInfo() {
  272. return defHttp.get<GetUserInfoModel>({ url: Api.GetUserInfo });
  273. }
  274. export function getPermCode() {
  275. return new Promise<void>((resolve, reject) => {
  276. resolve(permissions)
  277. })
  278. // return defHttp.get<string[]>({ url: Api.GetPermCode });
  279. }
  280. export async function SendLoginSmsCode(phoneNumber: string) {
  281. return await defHttp.post<boolean>({ url: Api.SendLoginSmsCode + phoneNumber });
  282. }
  283. export async function doLogout() {
  284. await defHttp.post(
  285. {
  286. url: Api.Logout,
  287. },
  288. {
  289. joinPrefix: false,
  290. }
  291. );
  292. }
  293. export function doRefreshToken(params: RefreshTokenParams) {
  294. return defHttp.post<LoginResultModel>(
  295. {
  296. url: Api.RefreshToken,
  297. params,
  298. },
  299. {
  300. joinPrefix: false,
  301. }
  302. );
  303. }
  304. export function smsCodeLoginApi(params: SmsLoginParams, mode: ErrorMessageMode = 'modal') {
  305. return defHttp.post<LoginResultModel>(
  306. {
  307. url: Api.SmsCodeLogin,
  308. params,
  309. },
  310. {
  311. errorMessageMode: mode,
  312. }
  313. );
  314. }
  315. // 密码重置验证码
  316. export function passwordResetCode(mobile) {
  317. return defHttp.post({
  318. url: Api.ResetCode + mobile,
  319. });
  320. }
  321. // 重置密码
  322. export function forgetPasswordApi(data) {
  323. return defHttp.post({
  324. url: Api.ResetPassword + data.phoneNumber,
  325. data,
  326. });
  327. }
  328. export const getUserToken = (id: string) => {
  329. return defHttp.get<Record<'token' | 'refreshToken', string>>({
  330. url: `/third/login/id/${id}`,
  331. });
  332. };
  333. /**
  334. * 获取部门下所有人员基本信息
  335. * @params
  336. * depId 部门id
  337. */
  338. export const queryPersonByDepId = (params) => {
  339. const token = getJwtToken();
  340. params = Object.assign(params, { Authorization: token })
  341. return new Promise<void>((resolve) => {
  342. defHttp.post({ url: Api.GetPersonByDepId, params }).then((res) => {
  343. resolve(res)
  344. })
  345. })
  346. };