123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- import { store } from "/@/store";
- import { router } from "/@/router";
- import { defineStore } from "pinia";
- import { userType, resType } from "./types";
- import { routerArrays } from "/@/layout/types";
- import { storageSession } from "@pureadmin/utils";
- import { useMultiTagsStoreHook } from "/@/store/modules/multiTags";
- import { getRelaComName, getRelaComNo, setRelaComName } from "/@/utils/auth";
- import {
- getLogin,
- getAsyncRoutes,
- ddDetail,
- refreshToken,
- httpCompany,
- httpUserInfo,
- httpSystemLast
- } from "/@/api/user";
- import {
- getToken,
- setToken,
- setRelaComNo,
- removeToken,
- getAction,
- setAction,
- removeAction
- } from "/@/utils/auth";
- import { removeMenus } from "/@/store/modules/permission";
- export const useUserStore = defineStore({
- id: "pure-user",
- state: (): userType => ({
- token: getToken(),
- name: "admin",
- // 前端生成的验证码(按实际需求替换)
- verifyCode: "",
- // 登录显示组件判断 0:登录 1:手机登录 2:二维码登录 3:注册 4:忘记密码,默认0:登录
- currentPage: 0,
- menuActions: getAction(),
- companyList: [],
- currentCompany: null,
- isSuperUser: false,
- swithingCompany: false,
- disabledCompany: false,
- systemInfo: {},
- info: {}
- }),
- actions: {
- SET_TOKEN(token) {
- this.token = token;
- },
- SET_NAME(name) {
- this.name = name;
- },
- SET_VERIFYCODE(verifyCode) {
- this.verifyCode = verifyCode;
- },
- SET_CURRENTPAGE(value) {
- this.currentPage = value;
- },
- SET_ACTIONS(value) {
- this.actions = value;
- },
- SET_CURRENT_COMPANY(currentCompany) {
- this.currentCompany = currentCompany;
- },
- // 登入
- async loginByUsername(form) {
- return new Promise((resolve, reject) => {
- getLogin(form)
- .then((res: resType) => {
- const { code, data } = res;
- if (code === 0) {
- const { token, companyNo, company_name } = data;
- setRelaComNo(companyNo);
- setRelaComName(company_name);
- setToken(token);
- resolve(res);
- } else {
- resolve(res);
- }
- })
- .catch(error => {
- reject(error);
- });
- });
- },
- //钉钉code 获取用户账号详情
- dingUserInfor(code) {
- return new Promise((resolve, reject) => {
- ddDetail(code)
- .then((res: resType) => {
- const { code, data } = res;
- if (code === 0) {
- const { token, companyNo } = data;
- setToken(token);
- setRelaComNo(companyNo);
- resolve(res);
- } else {
- resolve("error");
- }
- })
- .catch(error => {
- reject(error);
- });
- });
- },
- async requesetUserInfo() {
- // this.currentCompany = null;
- const { code, data } = await httpUserInfo({
- noRela: true
- });
- this.info = data;
- if (Number(code) === 0) {
- const { role_level } = data;
- this.isSuperUser = role_level === "1";
- const code = getRelaComNo();
- const companyName = getRelaComName();
- if (!this.isSuperUser && this.companyList.length === 0) {
- const { code: __code, data: __data } = await httpCompany({
- companyName
- });
- if (Number(__code) === 0) {
- this.companyList = __data.list;
- }
- }
- const index = this.companyList.findIndex(
- ({ companyNo }) => companyNo === code
- );
- const _index = index >= 0 ? index : 0;
- this.currentCompany = !this.isSuperUser ? this.companyList[_index] : "";
- } else {
- throw new Error();
- }
- },
- async requsetSystemInfo() {
- const { data, code } = await httpSystemLast({});
- if (Number(code) === 0) {
- this.systemInfo = data;
- } else {
- throw new Error();
- }
- },
- // 获取当前账号菜单数据
- async postMenuList(form) {
- try {
- await this.requesetUserInfo();
- await this.requsetSystemInfo();
- return new Promise((resolve, reject) => {
- getAsyncRoutes(form)
- .then((res: resType) => {
- const { code, data } = res;
- const actionList: Array<any> = [];
- switch (Number(code)) {
- case 0:
- data.forEach(e => {
- e.child?.forEach(s => {
- const item = {
- menu_route: s.menu_route,
- action: s.action
- };
- actionList.push(item);
- });
- });
- setAction(JSON.stringify(actionList));
- resolve(res);
- break;
- case 10000:
- removeMenus();
- this.disabledCompany = true;
- reject(10000);
- return;
- default:
- resolve(res);
- break;
- }
- this.disabledCompany = false;
- })
- .catch(error => {
- reject(error);
- });
- });
- } catch (err) {
- window.location.hash = "login";
- }
- },
- // 登出 清空缓存
- logOut() {
- this.token = "";
- this.name = "";
- removeToken();
- removeAction();
- storageSession.clear();
- this.currentComapny = "";
- this.companyList = [];
- useMultiTagsStoreHook().handleTags("equal", routerArrays);
- router.push("/login");
- },
- // 刷新token
- async refreshToken(data) {
- return refreshToken(data).then(data => {
- if (data) {
- setToken(data);
- return data;
- }
- });
- },
- getMenuActions(code) {
- const arr = getAction();
- if (arr && arr.length > 0) {
- const powerHook = JSON.parse(arr);
- const arr1 = powerHook.find(i => i.menu_route == code)?.action || [];
- return arr1;
- } else {
- return [];
- }
- }
- }
- });
- export async function initalUser() {
- return useUserStore().requesetUserInfo();
- }
- export function useUserStoreHook() {
- return useUserStore(store);
- }
|