Commit 50285386 authored by 仇晓婷's avatar 仇晓婷

Merge branch 'master' of http://git.mes123.com/zhouyx/mes-ui into qin

parents 172f73a4 6ceaea37
......@@ -2,7 +2,7 @@ import request from '@/plugins/request';
export function AccountLogin (data) {
return request({
url: '/api/login',
url: `${authUrl}/api/services/app/auth/login`,
method: 'post',
data
});
......
......@@ -500,6 +500,10 @@ export default {
watch:{
"data.length"(){
this.list=this.data;
},
"height"()
{
this.tableHeight=this.height;
}
}
}
......
......@@ -1019,13 +1019,9 @@ export default {
},
mes_op_task_plan_simulate: { //参数设置的表
id: '',
// partTaskPk: 订单ID,
// opTaskPk: 工单ID,
flog: 0,//参数应用
planMethod: "转序规则", // 平行 重叠
op_task_pk: '工单编号',
part_task_pk: '计划编号',
taskSeq: '工序号',
task_seq: '工序号',
task_name: '工序名称',
put_into_qty: '投产数量',
plan_start: '计划排产开始',
......@@ -1034,23 +1030,21 @@ export default {
run_time: '单件工时',
transport_time: '转运时间',
check_time: '检验时间',
efficiencyValue: '效率系数',
efficiency_value: '效率系数',
singleout: '单件产出',
first_equip: '设备编号',
equip_type: '设备类型',
calId: '连班策略',
cal_id: '连班策略',
machine_rule: '设备优先规则',
plan_method: '重叠转序',
overTime: '六日加班',
isDiscrete: '是否离散',
discrete: '离散值',
over_time: '六日加班',
isdiscrete: '是否离散',
discrete_value: '离散值',
multi_machine: '多台分配',
notes: '备注',
insert_flag: '插单',
outside_time: '外协时间',
discrete_percent: '离散百分比%',
multipleEquip: "是否多台安排设备",// 否 是
multipleEquipIds: "设备id", //用英文逗号分隔
taskseq_des: '',
workshopcode: '',
routing_detail_id: '',
......@@ -1058,44 +1052,6 @@ export default {
comb_param: '',
rule_qty: '',
},
routing_header: {
id: '',
creationTime: '',
creatorUserId: '',
lastModificationTime: '',
lastModifierUserId: '',
deleterUserId: '',
deletionTime: '',
classId: '类id',
unicode: 'unicode',
name: '工艺名称',
code: '工艺编号',
productId: '产品id',
productName: '产品名称',
productCode: '产品图号',
version: '工艺文件版本',
author: '编制人',
departmentId: '',
isMain: '',
upId: '',
upDetailId: '',
routingType: '工艺类型',
status: '',
approvalStatus: '状态',
remark: '工艺说明',
roufile: '多媒体附件',
approvalStatusRemark: '',
auditUserId1: '审核人',
auditUserId2: '审批人',
isDeleted: '',
platesnum: '',
isEffect: '',
developmentMode: '研制方式',
changeOrderCode: '更改单编号',
changeOrderDate: '更改单日期',
changeMethod: '更改办法',
taskType: '任务类型',
},
routing_detail: {
id: '',
creationTime: '创建时间',
......
This diff is collapsed.
......@@ -33,7 +33,6 @@ export default {
},
mounted() {
this.getMenu();
this.initUserInfo();
},
watch: {
// 监听路由 控制侧边栏显示 标记当前顶栏菜单(如需要)
......@@ -66,29 +65,7 @@ export default {
}
},
methods: {
//获取用户基本信息
initUserInfo() {
let userInfo = this.$store.state.admin.user.info;
let parma = {
Id: userInfo.userId
};
this.$http.sysUser.getuserinfo(parma).then(res => {
if (res.result) {
if (
res.result.avatarUrl &&
res.result.avatarUrl != "" &&
res.result.avatarUrl != null
) {
res.result.avatarUrl = fileUrlDown + res.result.avatarUrl;
}
this.$store.commit("admin/user/setUserAvatar", res.result);
} else {
this.$Message.error("用户信息查询失败!");
}
});
},
//用户中心结束
//menu
getMenu() {
this.$http.sysUser.getusermenu().then(res => {
if (res.result) {
......
<template>
<Layout class="i-layout">
<Header>
<i-header-breadcrumb v-if="showBreadcrumb && !headerMenu && !isMobile" ref="breadcrumb" />
<div class="i-layout-header-right">
<i-header-search v-if="(showSearch && isMobile) || (showSearch && (headerMenu || showBreadcrumb))" />
<i-header-log v-if="isDesktop && showLog" />
<i-header-bug />
<i-header-fullscreen v-if="isDesktop && showFullscreen" />
<i-header-notice v-if="showNotice" />
<i-header-user />
<i-header-i18n v-if="showI18n" />
<i-header-setting v-if="enableSetting && !isMobile" />
</div>
</Header>
<Content> <nuxt v-if="loadRouter"/></Content>
</Layout>
</template>
\ No newline at end of file
<template>
<div class="account">
<Carousel v-model="value1" autoplay autoplay-speed="5000" loop class="zmd">
<Carousel v-model="value1" autoplay :autoplay-speed="5000" loop class="zmd">
<CarouselItem>
<div class="bg bg0">1</div>
</CarouselItem>
......@@ -29,17 +29,16 @@
<!-- <div class="page-account-top-desc tc">SaaS MES 制造执行系统</div> -->
</div>
<h3 class="mb20">用户登陆</h3>
<Login @on-submit="oidc">
<UserName name="username" value="admin" />
<Password name="password" value="admin" enter-to-submit />
<Login @on-submit="handleSubmit">
<UserName name="username" value="13211111111" />
<Password name="password" value="1" enter-to-submit />
<div class="page-account-auto-login mb20">
<Checkbox v-model="autoLogin" >{{ $t('page.login.remember') }}</Checkbox>
<Checkbox v-model="autoLogin">{{ $t('page.login.remember') }}</Checkbox>
<a href>{{ $t('page.login.forgot') }}</a>
</div>
<div class="mt20">
<Submit class="shadown">{{ $t('page.login.submit') }}</Submit>
</div>
</Login>
</div>
</div>
......@@ -58,6 +57,7 @@ export default {
components: { iCopyright },
data() {
return {
value1: 0,
autoLogin: true
};
},
......@@ -66,34 +66,6 @@ export default {
},
methods: {
...mapActions("admin/account", ["login"]),
oidc() {
let that = this;
mgr.getUser().then(function(user) {
if (user) {
console.info("user",user)
that.msg = "该用户已经登录";
const userInfos = {
token: user.access_token,
login_id: user.profile.name,
userId:
user.profile[
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"
],
accountId: user.profile.sub,
tanantCode: user.profile.TanantCode,
name: "Aresn",
avatar:
"https://dev-file.iviewui.com/userinfoPDvn9gKWYihR24SpgC319vXY8qniCqj4/avatar",
access: ["admin"]
};
// that.$store.commit('setUserInfo',userInfos);
that.oidcLogin(userInfos);
window.location = "/";
} else {
mgr.signinRedirect();
}
});
},
/**
* @description 登录
* 表单校验已有 iView Pro 自动完成,如有需要修改,请阅读 iView Pro 文档
......@@ -104,26 +76,50 @@ export default {
this.login({
username,
password
}).then(() => {
// 重定向对象不存在则返回顶层路径
this.$router.replace(this.$route.query.redirect || "/");
}).then(r => {
if (r > 0) {
this.$Message.success("登陆成功!");
this.initUserInfo(r);
} else {
this.$Message.error("登陆失败!");
}
});
}
},
oidcLogin(user) {
util.cookies.set("uuid", user.userId);
util.cookies.set("token", user.token);
// 设置 vuex 用户信息
this.$store.dispatch("admin/user/set", user, { root: true });
// 用户登录后从持久化数据加载一系列的设置
this.$store.dispatch("load");
this.$store.commit("setUserInfo", user);
initUserInfo(id) {
let parma = {
Id: id
};
this.$http.sysUser.getuserinfo(parma).then(res => {
if (res.result) {
if (
res.result.avatarUrl &&
res.result.avatarUrl != "" &&
res.result.avatarUrl != null
) {
res.result.avatarUrl = fileUrlDown + res.result.avatarUrl;
}
let info = res.result;
info.auth = ["admin"];
info.avatar = info.avatarUrl;
info.userId=info.id;
info.name=info.userName;
this.$store.dispatch("admin/user/set", info, {
root: true
});
// setUserInfo
this.$store.commit("setUserInfo",info)
this.$router.replace(this.$route.query.redirect || "/");
} else {
this.$Message.error("用户信息22查询失败!");
}
});
}
}
};
</script>
<style lang="less">
@jianju:40px;
@jianju: 40px;
.account {
position: fixed;
width: 100%;
......@@ -160,12 +156,14 @@ export default {
left: @jianju;
right: @jianju;
bottom: @jianju;
background: rgba(38,128,235, 0.3);
background: rgba(38, 128, 235, 0.3);
display: flex;
.ad{
.ad {
flex: 1;
text-align: center;
img{margin-top: 400px;}
img {
margin-top: 400px;
}
}
.login {
background-color: white;
......@@ -176,14 +174,13 @@ export default {
// background-position-y: 525px;
.ivu-input-wrapper {
margin-bottom: 5px;
}
.mt20{
.mt20 {
margin-top: 50px;
.shadown{
box-shadow: 1px 5px 15px #2680EB;
.shadown {
box-shadow: 1px 5px 15px #2680eb;
}
.ivu-btn-large{
.ivu-btn-large {
height: 50px !important;
}
}
......
......@@ -53,7 +53,7 @@ export default {
return Api.post(`${apsUrl}/apspoolappservices/processschemedispatch`, params);
},
//APS排产前数据合法性校验
recoveryoptasksimluate(params) {
apsdatachecked(params) {
return Api.post(`${apsUrl}/apspoolappservices/apsdatachecked`, params);
},
//获取连班策略
......
......@@ -10,14 +10,12 @@
:border="false"
:data="data1"
:page="false"
:height="gridHeight"
></DataGrid>
<Modal v-model="editModal" title="编辑" footer-hide width="800">
<Edit :eid="curId" @on-close="cancel" />
</Modal>
<Modal v-model="deletelModal" title="删除" @on-ok="removeOk" @on-cancel="cancel">
<p>确定删除?</p>
</Modal>
<Modal v-model="insertlModal" title="插单" @on-ok="insertOk" @on-cancel="cancel">
<p>确定进行 {{insertTItle}} 操作?</p>
</Modal>
......@@ -51,10 +49,10 @@ export default {
setParsModal: false,
editModal: false,
detailModal: false,
deletelModal: false,
insertlModal: false,
rowIndex: null,
curId: 0,
gridHeight: 50,
columns: [
{ key: "id", title: this.l("id"), hide: true, align: "left" },
{ title: " ", width: 130 },
......@@ -301,6 +299,7 @@ export default {
attrs: {
icon: "md-options",
type: "icon",
oprate: "detail",
title: "工序参数设置"
},
on: { click: () => this.openParms(params.row.id) }
......@@ -323,14 +322,15 @@ export default {
oprate: "delete",
msg: "确认要刪除工序吗?"
},
on: { click: () => this.remove(params.row.id, params.index) }
on: { click: () => this.remove(params.row, params.index) }
})
]);
}
}
],
data1: [],
insertTItle: "插单"
insertTItle: "插单",
selectRoutingDetail: {} //需那种工序
};
},
mounted() {
......@@ -344,9 +344,11 @@ export default {
loadData(expendId) {
let params = {
id: expendId
}
Api.getbyorderid(params).then((res) => {
};
Api.getbyorderid(params).then(res => {
if (res.success) {
this.gridHeight = 50;
this.gridHeight = (res.result.length +1) * 48;
this.data1 = res.result;
}
});
......@@ -392,25 +394,22 @@ export default {
//编辑工序end----
//删除工序事件start-----
remove(id, index) {
this.deletelModal = true;
this.curId = Number(id);
remove(row, index) {
//this.curId = Number(id);
this.rowIndex = index;
},
removeOk() {
alert(this.rowIndex);
this.selectRoutingDetail = row;
let params = {
partPk: this.selectRoutingDetail.part_task_pk,
detailIdstr: this.selectRoutingDetail.routing_detail_id
};
Api.removeoptasksimluate(params).then(r => {
if (r.success) {
this.$Message.success("删除成功");
this.data1.splice(this.rowIndex, 1);
// Api.delete({ id: this.curId }).then((r) => {
// if (r.success) {
// this.$refs.grid.load()
// this.deletelModal = false
// this.$Message.success('删除成功')
// }
// })
},
removeCancel() {
this.deletelModal = false;
}
});
},
//删除工序时间end-----
cancel() {
this.curId = 0;
......
......@@ -8,7 +8,7 @@
:high="false"
@on-drag-drop="onDragDrop"
:page="false"
@on-select="onSelect"
@on-selection-change="onSelect"
:batch="true"
:border="false"
:easy="false"
......@@ -28,13 +28,13 @@
<Button type="primary" @click="apsModal=true">APS排产</Button>
</template>
<template slot="batch">
<Button type="primary" class="mr10 ml10">移出排产</Button>
<Button type="primary" class="mr10 ml10" @click="removeOk">移出排产</Button>
</template>
</DataGrid>
<Modal v-model="addModal" title="工序参数设置" footer-hide width="1000">
<Add @on-close="cancel" @on-ok="addOk" />
</Modal>
<Modal v-model="apsModal" title="确定APS排产" @on-ok="removeOk" @on-cancel="cancel">
<Modal v-model="apsModal" title="确定APS排产" @on-ok="apsOk" @on-cancel="cancel">
<p>确定进行APS排产?</p>
</Modal>
</div>
......@@ -123,7 +123,10 @@ export default {
key: "priority",
title: this.l("priority"),
align: "left",
high: true
high: true,
render: (h, params) => {
return h("span", {}, params.index + 1);
}
},
{
key: "plan_qty",
......@@ -209,7 +212,7 @@ export default {
oprate: "delete",
msg: "确认要移出排产吗?"
},
on: { click: () => this.remove(params.row.id) }
on: { click: () => this.remove(params.row.part_task_pk) }
}),
h("op", {
attrs: {
......@@ -219,12 +222,13 @@ export default {
oprate: "delete",
msg: "确认要恢复工序吗?"
},
on: { click: () => this.remove(params.row.id) }
on: { click: () => this.refresh(params.row.part_task_pk) }
})
]);
}
}
]
],
arrPartPkId: []
};
},
mounted() {
......@@ -257,21 +261,49 @@ export default {
this.editModal = true;
this.curId = id;
},
remove(id) {
this.deletelModal = true;
this.curId = id;
refresh(partPkId) {
//恢复工序
let params = {
id: partPkId
};
Api.recoveryoptasksimluate(params).then(r => {
if (r.success) {
this.$Message.success("恢复成功");
this.list = [];
this.loadList()
}
});
},
onSelect(a, b) {},
removeOk() {
Api.delete({ id: this.curId }).then(r => {
remove(partPkId) {
//移出排产池
let paramsArry = [];
if (partPkId.constructor == Array) {
paramsArry = partPkId;
} else {
paramsArry.push(partPkId);
}
let params = {
partPks: paramsArry
};
Api.shiftoutapspool(params).then(r => {
if (r.success) {
this.$refs.grid.load();
this.deletelModal = false;
this.$Message.success("删除成功");
this.$Message.success("移出排产池操作成功");
this.loadList();
}
});
},
onSelect(a, b) {
//批量选择
let selectRows = a;
this.arrPartPkId = [];
selectRows.forEach(e => {
this.arrPartPkId.push(e.part_task_pk);
});
},
removeOk() {
//批量选择移出排产池
this.remove(this.arrPartPkId);
},
removeCancel() {
this.deletelModal = false;
},
......@@ -292,6 +324,50 @@ export default {
l(key) {
let vkey = "mes_part_task_plan_simulate" + "." + key;
return this.$t(vkey) || key;
},
//a确定aps排产
apsOk() {
//APS排产前订单优先级功能
let parmsOrderpriority = { alls: [] };
let arryIds = [];
this.list.forEach((e, index) => {
let objIds = {};
objIds.orderId = e.part_task_pk;
objIds.priority = index + 1;
arryIds.push(objIds);
});
parmsOrderpriority.alls = arryIds;
// alert(JSON.stringify(parmsOrderpriority));
Api.orderpriority(parmsOrderpriority).then(res => {
if (res.success) {
if (res.result) {
this.$Message.success("排序成功");
//apsp排产前检查
Api.apsdatachecked().then(res1=>{
if(res1.success)
{
if(res1.result)
{
this.$Message.success("数据校验成功");
}
else
{
this.$Message.success("数据校验失败");
}
}
else{
this.$Message.error("操作失败:数据校验");
}
})
} else {
this.$Message.error("排序失败,请重新APS排产操作");
}
} else {
this.$Message.error("操作失败:排序");
}
});
//APS排产前数据合法性校验
}
}
};
......
......@@ -16,6 +16,7 @@
}
.dispatch_part{
border: 1px solid #ccc;
height: 100%;
.dispatch_part_top{
height: 50px;
line-height: 50px;
......
......@@ -433,6 +433,7 @@ export default {
.then(r => {
if (r.success) {
this.$Message.success("移入排产成功");
this.$refs.grid.reload(this.easySearch);
} else {
this.$Message.error("移入排产失败");
}
......
import Api from '@/plugins/request'
export default {
// index: `${apsResult}/scheduletotal/getall`,
// index: `${apsUrl}/scheduletotal/getall`,
paged(params) {
return Api.get(`${apsResult}/scheduletotal/getall`, params);
return Api.get(`${apsUrl}/scheduletotal/getall`, params);
},
getall(params) {
return Api.get(`${apsResult}/schema/getall`, params);
return Api.get(`${apsUrl}/schema/getall`, params);
},
clearall(params) {
return Api.post(`${apsResult}/schema/clearall`, params);
return Api.post(`${apsUrl}/schema/clearall`, params);
},
getdetail(params) {
return Api.get(`${apsResult}/scheduletotal/getdetail`, params);
return Api.get(`${apsUrl}/scheduletotal/getdetail`, params);
},
}
......@@ -61,7 +61,7 @@
<Input
v-model="formValidate.parameters"
type="textarea"
rows="3"
:rows="3"
style="width:634px;"
></Input>
</FormItem>
......@@ -71,7 +71,7 @@
<Input
v-model="formValidate.exception"
type="textarea"
rows="3"
:rows="3"
style="width:634px;"
></Input>
</FormItem>
......
......@@ -21,7 +21,7 @@
ref="grid"
:action="action"
:conditions="easySearch"
placeholder="请输入姓名或者员工编号进行搜索"
placeholder="请输入姓名/员工编号"
:high="true"
:height="tdHeight"
>
......@@ -126,6 +126,7 @@ import Edit from "./edit";
import Detail from "./detail";
import Search from "./search";
import service from "@/plugins/request";
import util from '@/libs/util';
export default {
name: "list",
components: {
......@@ -451,7 +452,7 @@ export default {
let parms = {
userId: this.curId,
accountId: this.selectRow.accountId,
tanantCode: this.$store.state.userInfo.tanantCode,
tanantCode: util.cookies.get('tanantCode'),
isDeleted: true
};
Api.authAccount(parms).then(res => {
......@@ -604,7 +605,7 @@ export default {
userId: this.selectRow.id,
loginName: this.selectRow.phone,
status: this.selectRow.status,
tanantCode: this.$store.state.userInfo.tanantCode
tanantCode:util.cookies.get('tanantCode'),
};
if (this.selectRow.phone && this.selectRow.phone != "") {
Api.authAccount(parms).then(res => {
......
......@@ -44,6 +44,7 @@
padding : 8px 15px;
border-bottom: 1px solid #e4e6ed;
position : relative;
height: 46px;
}
.state {
......
......@@ -169,8 +169,8 @@ export default {
},
formcontextdata: {
measures:'',
triaLevel:'',
conclusion:'',
triaLevel:[],
conclusion:[],
causeAnalysis:'',
},
formcontextclosedata:
......
<template>
<div>
<DataGrid :columns="columns" ref="grid" :action="action"><template slot="easySearch"><Form ref="formInline" :model="easySearch" inline><FormItem prop="keys"><Input placeholder="请输入关键字数据源名称/服务器地址/用户名" v-model="easySearch.keys.value" /> </FormItem>
<DataGrid :columns="columns" ref="grid" :action="action"><template slot="easySearch"><Form ref="formInline" :model="easySearch" inline><FormItem prop="keys"><Input placeholder="请输入数据源/服务器/用户" class="w200" v-model="easySearch.keys.value" /> </FormItem>
<FormItem><Button type="primary" @click="search">查询</Button></FormItem>
</Form></template>
<template slot="searchForm">
......
......@@ -4,7 +4,7 @@
<template slot="easySearch">
<Form ref="formInline" :model="easySearch" inline>
<FormItem prop="keys">
<Input placeholder="请输入关键字公司名称/公司编码" v-model="easySearch.keys.value" />
<Input placeholder="请输入公司名称/公司编码" v-model="easySearch.keys.value" class="w200"/>
</FormItem>
<FormItem>
<Button type="primary" @click="search">查询</Button>
......
......@@ -94,7 +94,7 @@ Vue.component("DTSpan", DTSpan)
Vue.component("DTSearch", DTSearch)
//注入mock
require("../mock")
// require("../mock")
Vue.prototype.$api=request;
Vue.prototype.$http=Api;
Vue.prototype.$u = Henq;
......
......@@ -13,6 +13,14 @@ function errorCreate (msg) {
// 记录和显示错误
function errorLog (err) {
if(err&&err.response&&err.response.status==500){
console.log(err.response)
Message.error({
content: err.response.data.error.message,
duration: 5
})
return;
}
// 添加到日志
$nuxt.$store.dispatch('admin/log/push', {
message: '数据请求异常',
......@@ -28,18 +36,18 @@ function errorLog (err) {
console.log(err);
}
// 显示提示,可配置使用 iView 的 $Message 还是 $Notice 组件来显示
if (Setting.errorModalType === 'Message') {
Message.error({
content: err.message,
duration: Setting.modalDuration
});
} else if (Setting.errorModalType === 'Notice') {
Notice.error({
title: '提示',
desc: err.message,
duration: Setting.modalDuration
});
}
// if (Setting.errorModalType === 'Message') {
// Message.error({
// content: err.message,
// duration: Setting.modalDuration
// });
// } else if (Setting.errorModalType === 'Notice') {
// Notice.error({
// title: '提示',
// desc: err.message,
// duration: Setting.modalDuration
// });
// }
}
// 创建一个 axios 实例
......@@ -83,7 +91,7 @@ service.interceptors.request.use(
},
error => {
// 发送失败
console.log(error);
// console.log(error);
Promise.reject(error);
}
);
......
......@@ -3,10 +3,14 @@
* */
import util from '@/libs/util';
// import router from '@/router';
import { AccountLogin, AccountRegister } from '@/api/account';
import Oidc from 'oidc-client'
import { Modal } from 'view-design';
export const actions={
import {
AccountLogin,
AccountRegister
} from '@/api/account';
import {
Modal
} from 'view-design';
export const actions = {
/**
* @description 登录
* @param {Object} param context
......@@ -14,7 +18,9 @@ export const actions={
* @param {Object} param password {String} 密码
* @param {Object} param route {Object} 登录成功后定向的路由对象 任何 vue-router 支持的格式
*/
login ({ dispatch }, {
login({
dispatch
}, {
username = '',
password = ''
} = {}) {
......@@ -32,14 +38,24 @@ export const actions={
// 如有必要 token 需要定时更新,默认保存一天,可在 setting.js 中修改
// 如果你的 token 不是通过 cookie 携带,而是普通字段,也可视情况存储在 localStorage
console.warn(res);
util.cookies.set('uuid', res.uuid);
util.cookies.set('token', res.token);
// 设置 vuex 用户信息
await dispatch('admin/user/set', res.info, { root: true });
// 用户登录后从持久化数据加载一系列的设置
await dispatch('load');
if (res.result) {
util.cookies.set('uuid', res.result.userId);
util.cookies.set('tanantCode', res.result.tanantCode);
util.cookies.set('token', res.result.accessToken);
sessionStorage.setItem('token', res.result.accessToken)
// // 设置 vuex 用户信息
// await dispatch('admin/user/set', res.info, {
// root: true
// });
// // 用户登录后从持久化数据加载一系列的设置
// await dispatch('load');
// 结束
resolve(res.result.userId);
} else {
resolve();
}
})
.catch(err => {
// console.log('err: ', err);
......@@ -50,23 +66,23 @@ export const actions={
/**
* @description 退出登录
* */
logout ({ commit, dispatch }, { confirm = false, vm } = {}) {
var mgr = new Oidc.UserManager(window.authConfig)
async function logout () {
logout({
commit,
dispatch
}, {
confirm = false,
vm
} = {}) {
async function logout() {
// 删除cookie
util.cookies.remove('token');
util.cookies.remove('uuid');
// 清空 vuex 用户信息
await dispatch('admin/user/set', {}, { root: true });
// 跳转路由
// alert(123)
window.frames[0].sessionStorage.clear()
sessionStorage.clear()
mgr.events.addUserSignedOut(function() {
log('User signed out of OP')
mgr.removeUser()
})
await dispatch('admin/user/set', {}, {
root: true
});
sessionStorage.clear();
localStorage.clear();
$nuxt.$router.push("/account/login");
}
......@@ -74,7 +90,7 @@ export const actions={
Modal.confirm({
title: vm.$t('basicLayout.logout.confirmTitle'),
content: vm.$t('basicLayout.logout.confirmContent'),
onOk () {
onOk() {
logout();
}
});
......@@ -90,7 +106,9 @@ export const actions={
* @param {Object} param mobile {String} 手机号码
* @param {Object} param captcha {String} 验证码
*/
register ({ dispatch }, {
register({
dispatch
}, {
mail = '',
password = '',
mobile = '',
......@@ -110,7 +128,9 @@ export const actions={
util.cookies.set('uuid', res.uuid);
util.cookies.set('token', res.token);
// 设置 vuex 用户信息
await dispatch('admin/user/set', res.info, { root: true });
await dispatch('admin/user/set', res.info, {
root: true
});
// 用户登录后从持久化数据加载一系列的设置
await dispatch('load');
// 结束
......@@ -127,12 +147,19 @@ export const actions={
* @param {Object} state vuex state
* @param {Object} dispatch vuex dispatch
*/
load ({ state, dispatch }) {
load({
state,
dispatch
}) {
return new Promise(async resolve => {
// 加载用户登录信息
await dispatch('admin/user/load', null, { root: true });
await dispatch('admin/user/load', null, {
root: true
});
// 持久化数据加载上次退出时的多页列表
await dispatch('admin/page/openedLoad', null, { root: true });
await dispatch('admin/page/openedLoad', null, {
root: true
});
// end
resolve();
})
......
......@@ -41,8 +41,8 @@ export const mutations={
},
setUserInfo(state, userInfo) {
state.userInfo = userInfo;
sessionStorage.setItem("userInfo", JSON.stringify(userInfo));
sessionStorage.setItem("token", userInfo.token);
// sessionStorage.setItem("userInfo", JSON.stringify(userInfo));
// sessionStorage.setItem("token", userInfo.token);
},
addUser(state,user){
state.userMap.push(user);
......
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