123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417 |
- import {
- login,
- logout,
- userinfo,
- menuList,
- dingdingdetail,
- usergetinfo,
- roleProcessInfo,
- requsetCompanyList
- } from "@/apis/user";
- import {
- getToken,
- setToken,
- removeToken,
- getMenu,
- setMenu,
- removeMenu,
- getBtn,
- setBtn,
- removeBtn,
- get_business_company,
- set_business_company,
- remove_business_company,
- get_business_companyNo,
- set_business_companyNo,
- remove_business_companyNo,
- get_private_field,
- set_private_field,
- remove_private_field,
- get_action_data,
- set_action_data,
- remove_action_data,
- get_role_level,
- set_role_level,
- remove_role_level,
- getUserCompany,
- } from "@/utils/auth";
- import store from "..";
- const state = {
- token: getToken(),
- name: "",
- avatar: require("@/assets/img/avatar.gif"),
- introduction: "",
- roles: ["admin"],
- btnList: getBtn(),
- navList: getMenu(),
- role_level:get_role_level() || "1",
- business_company: get_business_company() || "",
- business_companyNo: get_business_companyNo() || "",
- private_field: get_private_field() || [],
- roleProcess: get_action_data() || [],
- currentCompany: getUserCompany()
- };
- const mutations = {
- SET_TOKEN: (state, token) => {
- state.token = token;
- },
- SET_MENU: (state, menu) => {
- state.menu = menu;
- },
- SET_HAS: (state, has) => {
- state.has = has;
- },
- SET_INTRODUCTION: (state, introduction) => {
- state.introduction = introduction;
- },
- SET_NAME: (state, name) => {
- state.name = name;
- },
- SET_AVATAR: (state, avatar) => {
- state.avatar = avatar;
- },
- SET_ROLES: (state, roles) => {
- state.roles = roles;
- },
- navListFn(state, val) {
- if (!val) {
- val = [];
- }
- state.navList = val;
- setMenu(val);
- },
- btnListFn(state, val) {
- if (!val) {
- val = [];
- }
- state.btnList = val;
- setBtn(val);
- },
- business_company(state, val) {
- state.business_company = val;
- set_business_company(val);
- },
- business_companyNo(state, val) {
- state.business_companyNo = val;
- set_business_companyNo(val);
- },
- roleProcess(state, val) {
- state.roleProcess = val;
- set_action_data(val);
- },
- private_field(state, val) {
- state.private_field = val;
- set_private_field(val);
- },
- setCurrentCompany(state,val){
- state.currentCompany = val;
- }
- };
- const actions = {
- // user login
- login({ commit }, userInfo) {
- const { username, password } = userInfo;
- return new Promise((resolve, reject) => {
- login({ username: username.trim(), password: password })
- .then((response) => {
- const {code, data } = response;
- if (code === 0) {
- const {token,nickname}=data
- commit("SET_TOKEN", token);
- commit("SET_NAME", nickname);
- setToken(token);
- }
- resolve(response);
- })
- .catch((error) => {
- reject(error);
- });
- });
- },
- dingUserInfor({ commit }, code) {
- return new Promise(async (resolve, reject) => {
- dingdingdetail(code)
- .then((response) => {
- const { data } = response;
- if (response.code === 0) {
- commit("SET_TOKEN", data.token);
- setToken(data.token);
- resolve("success");
- } else {
- resolve("error");
- }
- })
- .catch((error) => {
- reject(error);
- });
- });
- },
- async getMenuList({ commit, that }) {
- return new Promise(async (resolve, reject) => {
- if (!getToken()) {
- resolve("noToken");
- } else {
- const { ucode, udata, umsg } = await getUserInfo();
- if (ucode >= 100 && ucode <= 104) {
- resolve("noToken");
- } else if (ucode !== 0) {
- resolve({ code: ucode, data: udata, massage: umsg });
- } else {
-
- // // 保存默认业务公司名称
- // commit("business_company", business_company);
- // // 保存默认业务公司编号
- // commit("business_companyNo", business_companyNo);
- // 关键字段设置
- // commit("private_field", private_field === "" ? [] : private_field);
- // const { pcode, pdata, pmsg } = await getRoleProcess(roleid);
- // if (pcode >= 100 && pcode <= 104) {
- // resolve("noToken");
- // } else if (pcode !== 0) {
- // resolve({ code: pcode, data: {}, massage: pmsg });
- // } else {
- // 保存默认业务公司编号
- // commit("roleProcess", pdata ?? []);
- const { mcode, mdata, mmsg } = await getRoleMenuList();
- if (mcode >= 100 && mcode <= 104) {
- resolve("noToken");
- } else if (mcode !== 0) {
- resolve({ code: mcodd, data: {}, massage: mmsg });
- } else {
- const { arrag, isok, btnList } = mdata;
- // 生成页面权限
- commit("navListFn", arrag);
- // 生成按钮权限
- commit("btnListFn", btnList);
- // 生成路由
- initRouter(arrag, that);
- resolve(isok ? "success-dataV" : "success");
- }
- // }
- }
- }
- });
- },
- // user logout
- logout({ commit, state, dispatch }) {
- return new Promise((resolve, reject) => {
- commit("SET_TOKEN", "");
- commit("SET_ROLES", []);
- removeToken();
- commit("SET_MENU", "");
- commit("SET_HAS", "");
- removeMenu();
- removeBtn();
- remove_business_company();
- commit("business_company", "");
- commit("business_companyNo", "");
- remove_business_companyNo();
- remove_private_field();
- commit("private_field", []);
- remove_action_data();
- commit("action_data", []);
- // removeMainList()
- // reset visited views and cached views
- // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485
- dispatch("tagsView/delAllViews", null, { root: true });
- resolve();
- });
- },
- // remove token
- resetToken({ commit }) {
- return new Promise((resolve) => {
- commit("SET_TOKEN", "");
- commit("SET_ROLES", []);
- removeToken();
- resolve();
- });
- },
- };
- async function getUserInfo() {
- const { code, data, meaasge } = await usergetinfo({});
- return {
- ucode: code,
- udata: data,
- umsg: meaasge,
- };
- }
- async function initalUserInfo() {
- const { code, data } = await usergetinfo({});
- if (code === 0) {
- store.commit("user/SET_NAME", data.nickname);
- }
- }
- async function getRoleProcess(roleid) {
- const { code, data, meaasge } = await roleProcessInfo({ roleid });
- let list = data;
- list.map((si) => {
- si.action = [];
- if (si.child && si.child.length > 0) {
- si.child.map((sii) => {
- si.action.push(sii.order_process + "");
- return sii;
- });
- }
- return si;
- });
- return {
- pcode: code,
- pdata: list,
- pmsg: meaasge,
- };
- }
- async function getRoleMenuList() {
- const { code, data, meaasge } = await menuList({});
- let arrag = [];
- let btnList = [];
- let list = [];
- let isok = false;
- if (code === 0) {
- list = data ?? [];
- list = list.filter((item) => item.child && item.child.length > 0);
- list.forEach((v1) => {
- const { menu_route, child } = v1;
- if (menu_route === "bigScreen" && child.length) {
- isok = true;
- }
- let pItem = {
- name: v1.menu_route,
- path: `/${v1.menu_route}`,
- meta: {
- title: v1.menu_name,
- icon: v1.menu_img,
- },
- children: [],
- };
- v1.child.forEach((v2) => {
- let item = {
- path: v2.menu_route,
- name: v2.menu_route,
- hidden: parseInt(v2.is_display + "") === 0,
- meta: {
- title: v2.menu_name,
- icon: v2.menu_img,
- },
- url: v2.menu_url,
- };
- let model = {
- menu_route: v2.menu_route,
- action: v2.action,
- };
- btnList.push(model);
- pItem.children.push(item);
- });
- arrag.push(pItem);
- });
- }
- return {
- mcode: code,
- mdata: {
- isok,
- arrag,
- btnList,
- },
- mmsg: meaasge,
- };
- }
- function initRouter(arr) {
- const IndexRoute = [
- // 个人信息
- {
- path: "/person",
- component: () => import("@/layout/index"),
- redirect: "/person/my-message",
- hidden: true,
- alwaysShow: true,
- meta: {
- title: "个人中心",
- icon: "user",
- },
- children: [
- {
- path: "my-message",
- component: () => import("@/views/person-infor/my-message"),
- name: "MyMessage",
- alwaysShow: true,
- meta: { title: "我的信息", noCache: true, breadcrumb: true },
- },
- {
- path: "change-phone",
- component: () => import("@/views/person-infor/change-phone"),
- name: "ChangePhone",
- alwaysShow: true,
- meta: { title: "更换手机号", noCache: true, breadcrumb: true },
- },
- {
- path: "change-password",
- component: () => import("@/views/person-infor/change-password"),
- name: "ChangePassword",
- alwaysShow: true,
- meta: { title: "修改密码", noCache: true, breadcrumb: true },
- },
- ],
- },
- //欢迎页
- {
- path: "/welcome",
- component: () => import("@/layout/index"),
- redirect: "/welcome/dashboard",
- children: [
- {
- path: "dashboard",
- component: () => import("@/views/dashboard/index"),
- name: "Dashboard",
- meta: { title: "首页", icon: "dashboard", affix: true },
- },
- ],
- },
- ];
- arr.map((v1) => {
- v1.component = (resolve) => require([`@/layout/index.vue`], resolve);
- if (v1.children && v1.children.length > 0) {
- v1.redirect = `/${v1.name}/${v1.children[0].name}`;
- v1.children.map((v2) => {
- v2.component = (resolve) => require([`@/views/${v2.url}.vue`], resolve);
- return v2;
- });
- }
- return v1;
- });
- IndexRoute.push(...arr);
- IndexRoute.push({
- path: "404",
- component: () => import("@/views/error-page/404"),
- hidden: false,
- noCache: true,
- });
- IndexRoute.push({
- path: "*",
- redirect: "/404",
- });
- window.vm.$router.addRoutes(IndexRoute);
- }
- initalUserInfo();
- export default {
- namespaced: true,
- state,
- mutations,
- actions,
- };
|