Commit ddda8b89 authored by wanli's avatar wanli

update

parent 883c66c3
......@@ -37,7 +37,7 @@ frontend/dist
backend/logs/*.log
backend/logs/*.log.*
backend/nohup.out
backend/scheduler.db
backend/app-store.db
backend/*.db-journal
backend/backup/*
backend/upload/
......
No preview for this file type
......@@ -67,6 +67,13 @@ class SignalManager(object):
actionGetDownloadList = PySignal()
actionUpdateDownload = PySignal()
# 系统菜单
actionAddMenu = PySignal()
actionDeleteMenu = PySignal()
actionGetMenu = PySignal()
actionGetMenuList = PySignal()
actionUpdateMenu = PySignal()
def __init__(self):
super(SignalManager, self).__init__()
......
......@@ -9,6 +9,7 @@ from .login_manager import loginManager
from .annex_manager import annexManager
from .upload_manager import uploadManager
from .apps_manager import appsManager
from .menu_manager import menuManager
from .download_manager import downloadManager
from .framework_manager import frameworkManager
from .build_logs_manager import buildLogsManager
......@@ -66,4 +67,11 @@ def initConnect():
signalManager.actionGetDownloadList.connect(downloadManager.getList)
signalManager.actionUpdateDownload.connect(downloadManager.update)
# 系统菜单
signalManager.actionAddMenu.connect(menuManager.add)
signalManager.actionDeleteMenu.connect(menuManager.delete)
signalManager.actionGetMenu.connect(menuManager.get)
signalManager.actionGetMenuList.connect(menuManager.getList)
signalManager.actionUpdateMenu.connect(menuManager.update)
initConnect()
\ No newline at end of file
......@@ -11,26 +11,25 @@ from datetime import datetime
from pony.orm import *
from flask import request
from model import fullStackDB
from model.summary import Summary
from model.menu import Menu
from model.user import User
from utils import sql_filter
logger = logging.getLogger("SummaryManager")
logger = logging.getLogger("MenuManager")
class SummaryManager(object):
class MenuManager(object):
def __init__(self):
super(SummaryManager, self).__init__()
super(MenuManager, self).__init__()
def add(self, data):
# 判断角色名是否存在
result = Summary.get(name=data.get("name"))
if result:
return False, "summary name has been exists."
editor = User.get(id=request.current_user.get("id"))
if not editor:
return False, "current user is not exists"
result = Menu.get(path=data.get("path"))
if result:
return False, "menu path has been exists."
data.update({
'create_by': editor,
'create_at': datetime.now(),
......@@ -38,22 +37,22 @@ class SummaryManager(object):
'update_at': datetime.now(),
})
result = fullStackDB.add(Summary, **data)
return result, "add summary {}.".format("success" if result else "fail")
result = fullStackDB.add(Menu, **data)
return result, "add menu {}.".format("success" if result else "fail")
def delete(self, uuid):
editor = User.get(id=request.current_user.get("id"))
if not editor:
return False, "current user is not exists"
result = fullStackDB.update(Summary, { 'uuid': uuid }, is_delete=True, delete_at=datetime.now(), delete_by=editor)
return result, "delete summary {}.".format("success" if result else "fail")
result = fullStackDB.update(Menu, { 'uuid': uuid }, is_delete=True, delete_at=datetime.now(), delete_by=editor)
return result, "delete menu {}.".format("success" if result else "fail")
def get(self, data):
result = Summary.get(**data)
result = Menu.get(**data)
if result:
result = result.to_dict(only=["uuid", "name", "create_at", "update_at"])
return result, "get summary {}.".format("success" if result else "no data")
return result, "get menu {}.".format("success" if result else "no data")
def getList(self, data):
if not data or len(data) <= 0:
......@@ -71,17 +70,17 @@ class SummaryManager(object):
temp.setdefault("is_delete", False)
if "scope_type" in data and data.get("scope_type") == "list":
result = Summary.select().where(**temp).order_by(desc(Summary.create_at))
result = Menu.select().where(**temp).order_by(desc(Menu.create_at))
temp = []
fields = ["uuid", "name"]
if "props" in data and isinstance(data.get("props"), list):
fields = data.get("props")
for item in result:
temp.append(item.to_dict(only=fields))
return temp, len(temp), "get summary {}.".format("success" if temp else "fail")
return temp, len(temp), "get menu {}.".format("success" if temp else "fail")
result = fullStackDB.pagination(Summary, Summary.create_at, pagenum=data.get("pagenum", 1), pagesize=data.get("pagesize", 10), **temp)
count = fullStackDB.count(Summary, **temp)
result = fullStackDB.pagination(Menu, Menu.create_at, pagenum=data.get("pagenum", 1), pagesize=data.get("pagesize", 10), **temp)
count = fullStackDB.count(Menu, **temp)
if result and len(result):
temp = []
......@@ -94,7 +93,7 @@ class SummaryManager(object):
temp.append(t)
result = temp
return result, count, "get summary {}.".format("success" if result else "no data")
return result, count, "get menu {}.".format("success" if result else "no data")
def update(self, uuid, data):
# 当参数为空时,直接返回错误
......@@ -106,7 +105,7 @@ class SummaryManager(object):
if not editor:
return False, "current user is not exists"
result = fullStackDB.update(Summary, { 'uuid': uuid }, update_at=datetime.now(), update_by=editor, **data)
return result, "update summary {}.".format("success" if result else "fail")
result = fullStackDB.update(Menu, { 'uuid': uuid }, update_at=datetime.now(), update_by=editor, **data)
return result, "update menu {}.".format("success" if result else "fail")
summaryManager = SummaryManager()
menuManager = MenuManager()
......@@ -94,7 +94,7 @@ class UserManager(object):
user = User.get(uuid=uuid)
if user:
user.set(update_at=datetime.now(), update_by=editor.id, **data)
result = user.to_dict(only=["account", "gender", "birthday", "hometown", "phone", "email",])
result = user.to_dict(only=["account", "gender", "birthday", "phone", "email",])
if result.get("birthday"):
result.update({ "birthday": result.get("birthday").strftime("%Y-%m-%d") })
return result, "update user success"
......@@ -105,9 +105,29 @@ class UserManager(object):
'''
查询单用户
'''
result = User.get(id=request.current_user.get("id"), is_delete=False)
if result:
temp = result.to_dict(with_collections=True, related_objects=True, only=["uuid", "username", "account", "phone", "email", "gender", "create_at", "update_at"])
# 根据用户账号类型,返回不同的菜单
menus = [
{'id': 1, 'path': '/', 'name': None, 'redirect': '/home', 'component': 'Layout', 'title': None, 'icon': None, 'parent_id': 0},
{'id': 2, 'path': 'home', 'name': 'AppIndex', 'redirect': None, 'component': 'Home', 'title': '应用管理', 'icon': 'gongzuotai', 'parent_id': 1},
{'id': 3, 'path': '/', 'name': None, 'redirect': '/build', 'component': 'Layout', 'title': None, 'icon': None, 'parent_id': 0},
{'id': 4, 'path': 'build', 'name': 'AppBuild', 'redirect': None, 'component': 'Build', 'title': '打包日志', 'icon': 'gongzuotai', 'parent_id': 3},
{'id': 5, 'path': '/', 'name': None, 'redirect': '/profile', 'component': 'Layout', 'title': None, 'icon': None, 'parent_id': 0},
{'id': 6, 'path': 'profile', 'name': 'Profile', 'redirect': None, 'component': 'Profile', 'title': '个人中心', 'icon': 'shangcheng', 'parent_id': 5},
]
if result.role == "ADMIN":
menus = menus + [
{'id': 7, 'path': '/', 'name': None, 'redirect': '/download', 'component': 'Layout', 'title': None, 'icon': None, 'parent_id': 0},
{'id': 8, 'path': 'download', 'name': 'Download', 'redirect': None, 'component': 'Download', 'title': '下载记录', 'icon': 'gongzuotai', 'parent_id': 7},
{'id': 9, 'path': '/', 'name': None, 'redirect': '/framework', 'component': 'Layout', 'title': None, 'icon': None, 'parent_id': 0},
{'id': 10, 'path': 'framework', 'name': 'Framework', 'redirect': None, 'component': 'Framework', 'title': '系统页面', 'icon': 'gongzuotai', 'parent_id': 9},
{'id': 11, 'path': '/', 'name': None, 'redirect': '/users', 'component': 'Layout', 'title': None, 'icon': None, 'parent_id': 0},
{'id': 12, 'path': 'users', 'name': 'User', 'redirect': None, 'component': 'User', 'title': '用户管理', 'icon': 'user', 'parent_id': 11},
]
temp = result.to_dict(with_collections=True, related_objects=True, only=["uuid", "username", "account", "role", "phone", "email", "gender", "create_at", "update_at"])
temp.update({
"create_at": result.create_at.strftime("%Y-%m-%d %H:%M:%S") if result.create_at else None,
"update_at": result.update_at.strftime("%Y-%m-%d %H:%M:%S") if result.update_at else None,
......
......@@ -9,28 +9,24 @@ from . import fullStackDB
db = fullStackDB.db
class Summary(db.Entity):
_table_ = "{}".format(config['TABLE_PREFIX']) + "summary"
class Menu(db.Entity):
_table_ = "{}".format(config['TABLE_PREFIX']) + "menu"
id = PrimaryKey(int, auto=True)
uuid = Required(uuid.UUID, unique=True, default=uuid.uuid1, index=True)
name = Required(str, max_len=200) # 总结标题
year_supervise_churn_rate = Required(float) # 年度监督流失率
year_recert_churn_rate = Required(float) # 年度再认证流失率
year_satis_churn_rate = Required(float) # 年度顾客满意率
year_dispatch_site_days = Required(int) # 年度调派技术现场总人天数
year_receiv_collection_rate = Required(float) # 年度应收款回款率
year_bad_project = Required(int) # 年度列入坏账并终止项目数
year_bad_debt_amount = Required(float) # 年度坏账金额
indus_project_rate = Required(float) # 行业项目比率
indus_project_count = Required(int) # 行业项目数量
channel_project_rate = Required(float) # 渠道开发项目比率
channel_project_count = Required(int) # 渠道开发项目数量
name = Optional(str)
title = Required(str)
path = Required(str)
icon = Optional(str)
hidden = Optional(bool, default=False)
component = Required(str)
redirect = Optional(str)
parent_id = Optional(str, default="")
create_at = Required(datetime, default=datetime.now)
create_by = Required("User", reverse='summary_creator') # Summary与User一对一关系
create_by = Required("User", reverse='menu_creator') # Menu与User一对一关系
update_at = Required(datetime, default=datetime.now)
update_by = Required("User", reverse='summary_updater') # Summary与User一对一关系
update_by = Required("User", reverse='menu_updater') # Menu与User一对一关系
delete_at = Optional(datetime)
delete_by = Optional("User", reverse='summary_deleter') # Summary与User一对一关系
delete_by = Optional("User", reverse='menu_deleter') # Menu与User一对一关系
is_delete = Required(bool, default=False)
sort = Optional(int, size=32, default=0)
remarks = Optional(str, max_len=255, default="", nullable=True)
\ No newline at end of file
......@@ -13,6 +13,7 @@ class User(db.Entity):
_table_ = "{}".format(config['TABLE_PREFIX']) + "user"
id = PrimaryKey(int, auto=True)
uuid = Required(uuid.UUID, unique=True, default=uuid.uuid1, index=True)
role = Required(str, default="User") # 角色
account = Required(str, unique=True) # 账号
username = Required(str, max_len=100) # 用户名
password = Required(str, max_len=64)
......@@ -43,4 +44,7 @@ class User(db.Entity):
build_logs_deleter = Set('BuildLogs', reverse='delete_by')
framework_creator = Set('Framework', reverse='create_by')
framework_updater = Set('Framework', reverse='update_by')
framework_deleter = Set('Framework', reverse='delete_by')
\ No newline at end of file
framework_deleter = Set('Framework', reverse='delete_by')
menu_creator = Set('Menu', reverse='create_by')
menu_updater = Set('Menu', reverse='update_by')
menu_deleter = Set('Menu', reverse='delete_by')
......@@ -13,13 +13,14 @@ from marshmallow import fields, validate, RAISE, INCLUDE, EXCLUDE
'''
class AddSchema(BaseSchema):
account = fields.String(required=True, validate=validate.Length(min=2, max=20))
username = fields.String(required=False, validate=validate.Length(min=2, max=20))
password = fields.String(required=True, validate=validate.Length(min=6, max=18))
account = fields.String(required=True)
username = fields.String(required=False)
password = fields.String(required=True)
email = fields.Email(required=False, default="")
phone = fields.String(required=False, default="")
gender = fields.Int(required=False, default=1)
birthday = fields.Date(required=False, default=None)
role = fields.String(required=False)
remarks = fields.String(required=False)
class Meta:
......@@ -31,12 +32,13 @@ class DeleteSchema(BaseSchema):
class UpdateSchema(BaseSchema):
uuid = fields.UUID(required=False)
account = fields.String(required=False, validate=validate.Length(min=2, max=20))
username = fields.String(required=False, validate=validate.Length(min=2, max=20))
account = fields.String(required=False)
username = fields.String(required=False)
email = fields.Email(required=False)
phone = fields.String(required=False)
gender = fields.Int(required=False)
birthday = fields.Date(missing=False)
birthday = fields.Date(required=False)
role = fields.String(required=False)
remarks = fields.String(required=False)
class Meta:
......@@ -53,16 +55,13 @@ class QuerySchema(BaseSchema):
class ResponseSchema(BaseSchema):
uuid = fields.UUID(required=True)
account = fields.String(required=True, validate=validate.Length(min=2, max=20))
username = fields.String(required=True, validate=validate.Length(min=2, max=20))
password = fields.String(required=True, validate=validate.Length(min=6, max=18))
account = fields.String(required=True)
username = fields.String(required=True)
password = fields.String(required=True)
email = fields.Email(required=False)
phone = fields.String(required=True)
gender = fields.Int(required=True)
birthday = fields.Date(required=False)
hometown = fields.String(required=False)
entry_time = fields.DateTime(required=True)
expire_date = fields.DateTime(required=True)
remarks = fields.String(required=True)
class Meta:
......
frontend/src/assets/images/logo.png

22.1 KB | W: | H:

frontend/src/assets/images/logo.png

23.8 KB | W: | H:

frontend/src/assets/images/logo.png
frontend/src/assets/images/logo.png
frontend/src/assets/images/logo.png
frontend/src/assets/images/logo.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -433,7 +433,7 @@
<div class="dropdown" v-show="userShow" style="right: 20px;">
<ul>
<li @click="redirectTo('/system/profile')">
<li @click="redirectTo('/profile')">
<i aria-label="图标: user" class="webicon">
<svg viewBox="64 64 896 896" data-icon="user" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false"><path d="M858.5 763.6a374 374 0 0 0-80.6-119.5 375.63 375.63 0 0 0-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 0 0-80.6 119.5A371.7 371.7 0 0 0 136 901.8a8 8 0 0 0 8 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 0 0 8-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z"></path></svg>
</i>个人中心
......
......@@ -3,7 +3,8 @@ import store from "@/store"; // get token from cookie
import NProgress from "nprogress"; // progress bar
import "nprogress/nprogress.css"; // progress bar style
import { getPageTitle } from "@/utils/index";
import { default as def } from "./settings";
const whiteList = ["/login", "/register"];
NProgress.configure({ showSpinner: false }); // NProgress Configuration
......@@ -27,7 +28,7 @@ router.beforeEach(async (to, from, next) => {
}
} else {
/* has no token*/
if (def.whiteList.indexOf(to.path) !== -1) {
if (whiteList.indexOf(to.path) !== -1) {
// in the free login whitelist, go directly
next();
} else {
......
import Vue from "vue";
import Router from "vue-router";
import setting from "@/settings.js";
const pageInfos = setting.pageInfos;
Vue.use(Router);
/* Layout */
import Layout from "@/layout";
import View from "@/layout/view";
/**
* Note: sub-menu only appear when route children.length >= 1
......@@ -29,64 +25,6 @@ import View from "@/layout/view";
}
*/
const newRules = [];
const recursion = (obj, parent) => {
return obj.children.map((ele) => {
let res = {};
if (ele.children && ele.children.length > 0) {
res.path = ele.path;
res.component = View;
res.redirect = `/${obj.path}/${ele.path}/${ele.children[0].path}`;
res.children = recursion(ele, `/${obj.path}`);
} else {
let t = {
path: `${parent ? parent : ""}/${obj.path}/${ele.path}`,
component: () => import(`@/views/${ele.vue}`),
meta: {
title: ele.title,
icon: ele.icon,
keepAlive: ele.keepAlive || false,
},
hidden: ele.hidden || false,
};
if (ele.name) res.name = ele.name;
if (ele.redirect) res.redirect = ele.redirect;
res = Object.assign(res, t);
}
return res;
});
};
pageInfos.forEach((item) => {
let routeObj = {
path: `/${item.path}`,
component: Layout,
hidden: item.hidden || false,
};
if (item.redirect) routeObj.redirect = item.redirect;
if (item.children && item.children.length > 0) {
routeObj.redirect = `/${item.path}/${item.children[0].path}`;
routeObj.children = recursion(item);
} else {
routeObj.children = [
{
path: `/${item.path}`,
name: item.name,
component: () => import(`@/views/${item.vue}`),
meta: {
title: item.title,
icon: item.icon,
keepAlive: item.keepAlive || false,
},
},
];
}
newRules.push(routeObj);
});
/**
* constantRoutes
......@@ -94,60 +32,133 @@ pageInfos.forEach((item) => {
* all roles can be accessed
*/
export const constantRoutes = [
{
path: "/login",
component: () => import("@/views/login/index"),
hidden: true,
},
{
path: "/register",
component: () => import("@/views/login/register"),
hidden: true,
},
{
path: '/',
redirect: '/404',
component: Layout,
children: [{
path: '404',
name: 'Page404',
component: () => import('@/views/error-pages/404'),
meta: { title: '404', icon: 'home' }
}]
},
{
path: '/',
redirect: '/403',
component: Layout,
children: [{
path: '403',
name: 'Page403',
component: () => import('@/views/error-pages/403'),
meta: { title: '403', icon: 'home' }
}]
},
...newRules,
{ path: "/", redirect: "/home", hidden: true },
// 404 page must be placed at the end !!!
{ path: "*", redirect: "/404", hidden: true },
{
path: "/login",
component: () => import("@/views/login/index"),
hidden: true,
},
{
path: "/register",
component: () => import("@/views/login/register"),
hidden: true,
},
{
path: '/',
redirect: '/home',
component: Layout,
children: [{
path: 'home',
name: 'AppIndex',
component: () => import('@/views/app-store/index.vue'),
meta: { title: '应用管理', icon: 'home' }
}]
},
{
path: '/',
redirect: '/build',
component: Layout,
children: [{
path: 'build',
name: 'AppBuild',
component: () => import('@/views/app-store/build.vue'),
meta: { title: '打包日志', icon: 'home' }
}]
},
{
path: '/',
redirect: '/download',
component: Layout,
children: [{
path: 'download',
name: 'AppDownload',
component: () => import('@/views/app-store/download.vue'),
meta: { title: '下载记录', icon: 'gongzuotai' }
}]
},
{
path: '/',
redirect: '/framework',
component: Layout,
children: [{
path: 'framework',
name: 'Framework',
component: () => import('@/views/app-store/framework.vue'),
meta: { title: '系统页面', icon: 'gongzuotai' }
}]
},
{
path: '/',
redirect: '/profile',
component: Layout,
children: [{
path: 'profile',
name: 'Profile',
component: () => import('@/views/profile/index.vue'),
meta: { title: '个人中心', icon: 'shangcheng' }
}]
},
{
path: '/',
redirect: '/user',
component: Layout,
children: [{
path: 'user',
name: 'UserIndex',
component: () => import('@/views/system/users.vue'),
meta: { title: '用户管理', icon: 'shangcheng' }
}]
},
{
path: '/',
redirect: '/404',
component: Layout,
children: [{
path: '404',
name: 'Page404',
component: () => import('@/views/error-pages/404'),
meta: { title: '404', icon: 'home' }
}]
},
{
path: '/',
redirect: '/403',
component: Layout,
children: [{
path: '403',
name: 'Page403',
component: () => import('@/views/error-pages/403'),
meta: { title: '403', icon: 'home' }
}]
}
];
// 404 page must be placed at the end !!!
export const notFound = { path: '*', redirect: '/404', hidden: true }
export const routerMap = {
Layout: () => import('@/layout'),
Home: () => import('@/views/app-store/index'),
Build: () => import('@/views/app-store/build'),
Profile: () => import('@/views/profile/index'),
Download: () => import('@/views/app-store/download'),
Framework: () => import('@/views/app-store/framework'),
User: () => import('@/views/system/users'),
}
const createRouter = () =>
new Router({
// mode: 'history', // require service support, 后台部署在/static 目录
// base: "/static", // 应用的基础路径: 默认为'/',修改为'/static'
scrollBehavior: () => ({ y: 0 }),
routes: constantRoutes,
});
new Router({
// mode: 'history', // require service support, 后台部署在/static 目录
// base: "/static", // 应用的基础路径: 默认为'/',修改为'/static'
scrollBehavior: () => ({ y: 0 }),
routes: constantRoutes,
});
const router = createRouter();
// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
const newRouter = createRouter();
router.matcher = newRouter.matcher; // reset router
const newRouter = createRouter();
router.matcher = newRouter.matcher; // reset router
}
export default router;
......@@ -71,6 +71,4 @@ export default {
path: "user",
},
],
whiteList: ["/login", "/register"],
};
......@@ -16,7 +16,7 @@
>查询</el-button
></el-form-item
>
<el-form-item><el-button @click="onReset">重置</el-button></el-form-item>
<el-form-item><el-button @click="onReset('form')">重置</el-button></el-form-item>
</el-form>
<el-table
v-loading="isLoading"
......@@ -31,25 +31,29 @@
<el-table-column
prop="app.app_name"
label="应用名称"
width="180"
min-width="180"
></el-table-column>
<el-table-column
prop="build_text"
label="打包信息"
min-width="250"
:show-overflow-tooltip="true"
prop="app.app_url"
label="应用路径"
min-width="180"
></el-table-column>
<el-table-column
prop="app.app_version"
label="应用版本"
min-width="180"
></el-table-column>
<el-table-column
prop="create_at"
label="创建时间"
width="150"
min-width="150"
></el-table-column>
<el-table-column
prop="create_by.username"
label="创建者"
width="150"
min-width="150"
></el-table-column>
<el-table-column label="操作" align="center" width="240" fixed="right">
<el-table-column label="操作" align="center" width="140" fixed="right">
<template slot-scope="scope">
<el-button
size="mini"
......@@ -57,18 +61,6 @@
@click="handleDownload(scope.$index, scope.row)"
>下载</el-button
>
<el-button
size="mini"
type="success"
@click="handleEdit(scope.$index, scope.row)"
>编辑</el-button
>
<el-button
size="mini"
type="danger"
@click="handleDelete(scope.$index, scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
......
......@@ -95,6 +95,7 @@ export default {
},
mounted() {},
created() {
if (this.$store.getters.role !== "ADMIN") this.$router.push({ path: "/403" })
this.fetchData(mapTrim(this.form))
}
}
......
......@@ -220,6 +220,7 @@ export default {
},
mounted() {},
created() {
if (this.$store.getters.role !== "ADMIN") this.$router.push({ path: "/403" })
this.fetchData()
this.fetchSelectData()
}
......
......@@ -51,8 +51,8 @@
</div>
</template>
<script>
import { doLogin, getUser } from "@/api/index";
import { strTrim } from "@/utils/index";
import { doLogin, getUser } from "@/api/index"
import { strTrim } from "@/utils/index"
let loading = null
......@@ -73,9 +73,9 @@ export default {
getUserPermission() {
getUser()
.then((res) => {
this.$store.dispatch("user/setRole", res.data.role);
sessionStorage.setItem("user", JSON.stringify(res.data));
this.$router.push({ path: "/home" });
this.$store.dispatch("user/setRole", res.data.role);
sessionStorage.setItem("user", JSON.stringify(res.data));
this.$router.push({ path: "/home" });
})
.catch((err) => {
this.$message.error(err.message);
......
......@@ -87,21 +87,6 @@
<el-input v-model.trim="user.email" />
</el-col>
</el-form-item>
<el-form-item label="籍贯" prop="hometown">
<el-col :md="8" :xs="24">
<el-input v-model.trim="user.hometown" />
</el-col>
</el-form-item>
<el-form-item label="部门">
<el-col :md="8" :xs="24">
<el-input v-model.trim="user.hometown" disabled />
</el-col>
</el-form-item>
<el-form-item label="角色">
<el-col :md="8" :xs="24">
<el-input v-model.trim="user.hometown" disabled />
</el-col>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('post')"
>更新资料</el-button
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment