Commit 74f33746 by caoyanzhi

update: 切换商户

parent 22731cf5
...@@ -7,17 +7,14 @@ ...@@ -7,17 +7,14 @@
* @LastEditTime: 2020-11-16 09:28:03 * @LastEditTime: 2020-11-16 09:28:03
*/ */
import Vue from 'vue'; import Vue from 'vue';
import VueAxios from 'vue-axios';
import axios from 'axios';
// import axios from 'axios'; // import axios from 'axios';
import qs from 'qs'; import qs from 'qs';
import { Message } from 'element-ui'; import { Message } from 'element-ui';
/** Vue.use(VueAxios, axios);
* 获取好办 企业 id Vue.axios.defaults.withCredentials = true; // cookie访问
*/
if (!!localStorage.getItem('userInfos')) {
let haobanSign = JSON.parse(localStorage.getItem('userInfos')).enterpriseId;
haobanSign ? (Vue.axios.defaults.headers.common['enterpriseId'] = haobanSign) : '';
}
Vue.axios.defaults.timeout = 500000; Vue.axios.defaults.timeout = 500000;
let local = window.location.origin; let local = window.location.origin;
...@@ -52,13 +49,6 @@ Vue.axios.interceptors.request.use( ...@@ -52,13 +49,6 @@ Vue.axios.interceptors.request.use(
cancel cancel
}); });
}); });
/**
* 获取好办 企业 id
*/
if (!!sessionStorage.getItem('userInfoBrandId')) {
let haobanSign = sessionStorage.getItem('userInfoBrandId');
haobanSign ? (config.headers.enterpriseId = haobanSign) : '';
}
return config; return config;
}, },
err => { err => {
......
...@@ -11,48 +11,32 @@ ...@@ -11,48 +11,32 @@
import expiredDialog from '@/components/company/expired-dialog.vue'; import expiredDialog from '@/components/company/expired-dialog.vue';
--> -->
<template> <template>
<el-dialog class="hide-close-dialog" style="top:88px;" title="到期提醒" :visible.sync="dialogVisible" width="600px" :before-close="handleClose"> <el-dialog title="到期提醒" :visible="visible" width="600px" @close="onClose">
<div class="m-b-20 text-center"> <div class="m-b-20 text-center">
<div class="img-tip-wrap text-center"><img src="../../assets/expired.png" alt="" /></div> <div class="img-tip-wrap"><img src="../../assets/expired.png" alt="" /></div>
<div class="font-18 color-303133 m-t-17 text-center">使用已到期</div> <div class="font-18 color-303133 m-t-17">使用已到期</div>
<div class="font-14 color-909399 m-t-10 line-h-20 text-center"><span class="font-14 color-909399">服务已到使用期限,请升级 </span><span class="color-2f54eb cursor-pointer" @click="toDamo">达摩服务</span></div> <div class="font-14 color-909399 m-t-10 line-h-20">
<span class="font-14 color-909399">服务已到使用期限,请升级</span>
<span class="color-2f54eb cursor-pointer" @click="toDamo">达摩服务</span>
</div>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
export default { export default {
props: { props: {
syncData: { visible: {
type: Object, type: Boolean,
default() { default: false
return {
syncStatus: '0'
};
}
} }
}, },
data() {
return {
dialogVisible: true
};
},
methods: { methods: {
handleClose(done) { onClose() {
const that = this; this.$emit('update:visible', false);
that.dialogVisible = true;
}, },
toDamo() { toDamo() {
window.open('https://www.demogic.com/'); window.open('https://www.demogic.com/');
} }
},
mounted() {
const that = this;
that.$nextTick(() => {
document.querySelector('.v-modal').style.top = '88px';
});
},
beforeDestroy() {
document.querySelector('.v-modal').style.top = '0px';
} }
}; };
</script> </script>
......
<template> <template>
<div> <div v-if="storeList.length > 0">
<el-popover placement="top" popper-class="change-store-popper" trigger="hover"> <el-dropdown @command="onChangeStore">
<span class="change-store-btn" slot="reference"> <span class="change-store-btn">
切换商户 切换商户
<i class="iconfont-hb3 iconxiajiantou change-store-icon"></i> <i class="iconfont-hb3 iconxiajiantou change-store-icon"></i>
</span> </span>
<div class="change-store"> <el-dropdown-menu slot="dropdown" class="change-store-popper">
<div class="store-item actived"> <el-dropdown-item v-for="el in storeList" :key="el.enterpriseId" :class="['store-item', { actived: el.enterpriseId == activedStoreId }]" :command="el.enterpriseId">
<div> <div>
<div class="store-name">金华达摩</div> <div class="store-name">{{ el.brandName }}</div>
<div class="default-store-tag">默认商户</div> <div class="default-store-tag" v-if="el.enterpriseId == defaultStoreId">默认商户</div>
</div>
<i class="el-icon-check checked"></i>
</div>
<div class="store-item">
<div class="store-name">达摩演示</div>
</div>
<div class="store-item">
<div class="store-name">金华达摩代理商</div>
</div> </div>
<div class="change-default-store"> <i class="el-icon-check checked" v-if="el.enterpriseId == activedStoreId"></i>
</el-dropdown-item>
<el-dropdown-item class="change-default-store">
<div class="change-default-store-btn" @click="onShow">更改默认商户</div> <div class="change-default-store-btn" @click="onShow">更改默认商户</div>
</div> </el-dropdown-item>
</div> </el-dropdown-menu>
</el-popover> </el-dropdown>
<el-dialog :visible.sync="changeStore.show" title="更改默认商户" width="600px" @closed="onClosed"> <el-dialog :visible.sync="changeStore.show" title="更改默认商户" width="600px" @closed="onClosed">
<div class="change-store-title">选择商户</div> <div class="change-store-title">选择商户</div>
<el-select class="change-store-selector" v-show="changeStore.selectShow"> <el-select class="change-store-selector" v-show="changeStore.selectShow" v-model="changeStore.storeId">
<el-option label="金华达摩" value="1"></el-option> <el-option v-for="el in storeList" :key="el.enterpriseId" :label="el.brandName" :value="el.enterpriseId"></el-option>
</el-select> </el-select>
<div slot="footer"> <div slot="footer">
<el-button @click="changeStore.show = false">取消</el-button> <el-button @click="changeStore.show = false">取消</el-button>
<el-button type="primary" :loading="changeStore.loading" @click="onSave">确定</el-button> <el-button type="primary" :loading="changeStore.loading" @click="onSave">确定</el-button>
</div> </div>
</el-dialog> </el-dialog>
<expired-dialog :visible.sync="isExpired"></expired-dialog>
</div> </div>
</template> </template>
<script> <script>
// 获取商户列表 // 更改默认商户 接口联调
// 切换商户
// 更改默认商户
import { getRequest } from '@/api/api.js'; import { getRequest } from '@/api/api.js';
import errorMsg from '@/common/js/error.js';
import expiredDialog from '@/components/company/expired-dialog.vue';
export default { export default {
name: 'ChangeStore', name: 'ChangeStore',
components: { expiredDialog },
data() { data() {
return { return {
changeStore: { changeStore: {
show: false, show: false,
selectShow: false, selectShow: false,
loading: false loading: false,
} storeId: ''
},
storeList: [],
activedStoreId: '',
defaultStoreId: '',
isExpired: false
}; };
}, },
created() { created() {
// this.getStoreList(); this.getStoreList();
this.activedStoreId = JSON.parse(sessionStorage.getItem('userInfos') || '{}').enterpriseId;
}, },
methods: { methods: {
getStoreList() { getStoreList() {
getRequest('/haoban-manage3-web/login-wx-enterprise-list', { requestProject: 'haoban-manage-web' }).then(resp => { getRequest('/haoban-manage3-web/wx-enterprise-list', {}).then(resp => {
console.log(resp); const { errorCode, result } = resp.data || {};
if (errorCode != 1) {
errorMsg.errorMsg(resp.data);
return;
}
this.storeList = Array.isArray(result) ? result : [];
});
},
onChangeStore(enterpriseId) {
if (enterpriseId == this.activedStoreId) return;
this.$emit('changeStore', true);
getRequest('/haoban-manage3-web/enterprise-is-over', { enterpriseId })
.then(res => {
let resData = res.data;
const { errorCode, result } = res.data || {};
if (errorCode != 1) {
errorMsg.errorMsg(resData);
return;
}
this.isExpired = result;
if (!result) {
location.reload();
}
})
.finally(() => {
setTimeout(() => {
this.$emit('changeStore', false);
}, 500);
}); });
}, },
onShow() { onShow() {
...@@ -120,7 +149,9 @@ export default { ...@@ -120,7 +149,9 @@ export default {
padding: 7px 0 0 !important; padding: 7px 0 0 !important;
width: 200px; width: 200px;
box-sizing: border-box; box-sizing: border-box;
.change-store { .el-dropdown-menu__item {
padding: 0;
}
.store-item { .store-item {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
...@@ -173,6 +204,5 @@ export default { ...@@ -173,6 +204,5 @@ export default {
cursor: pointer; cursor: pointer;
} }
} }
}
} }
</style> </style>
<template> <template>
<div class="hb-layout"> <div class="hb-layout" v-loading="changeStoreLoading">
<main-menu :menu-list="menuList" :actived-code="activedMenu.length > 0 ? activedMenu[0].menuCode : ''"></main-menu> <main-menu :menu-list="menuList" :actived-code="activedMenu.length > 0 ? activedMenu[0].menuCode : ''" @changeStore="loading => (changeStoreLoading = loading)"></main-menu>
<aside-menu :menu-list="activedMenu.length > 0 ? activedMenu[0].childList : []" :actived-code="activedMenu.length > 2 ? activedMenu[2].menuCode : ''"></aside-menu> <aside-menu :menu-list="activedMenu.length > 0 ? activedMenu[0].childList : []" :actived-code="activedMenu.length > 2 ? activedMenu[2].menuCode : ''"></aside-menu>
<div class="hb-layout-content"> <div class="hb-layout-content">
<bread-menu v-if="activedMenu.length > 3" :menu-list="activedMenu.slice(2)"></bread-menu> <bread-menu v-if="activedMenu.length > 3" :menu-list="activedMenu.slice(2)"></bread-menu>
...@@ -33,7 +33,8 @@ export default { ...@@ -33,7 +33,8 @@ export default {
// 侧边栏菜单数据 // 侧边栏菜单数据
asideMenu: [], asideMenu: [],
// 激活的菜单 // 激活的菜单
activedMenu: [] activedMenu: [],
changeStoreLoading: false
}; };
}, },
created() { created() {
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
</div> </div>
</div> </div>
<div class="main-info"> <div class="main-info">
<change-store></change-store> <change-store @changeStore="loading => $emit('changeStore', loading)"></change-store>
<div>消息中心</div> <div>消息中心</div>
<dm-user-info user-name-class="hb-layout-user-name"></dm-user-info> <dm-user-info user-name-class="hb-layout-user-name"></dm-user-info>
</div> </div>
......
...@@ -11,8 +11,6 @@ import promise from 'es6-promise'; ...@@ -11,8 +11,6 @@ import promise from 'es6-promise';
promise.polyfill(); promise.polyfill();
import App from './App'; import App from './App';
import router from './router'; import router from './router';
import VueAxios from 'vue-axios';
import axios from 'axios';
import store from './store/store'; import store from './store/store';
/* eslint-disable */ /* eslint-disable */
import '../static/css/index.less'; import '../static/css/index.less';
...@@ -32,6 +30,8 @@ import vueOfficeUploadImage from '@gic-test/vue-office-upload-image'; ...@@ -32,6 +30,8 @@ import vueOfficeUploadImage from '@gic-test/vue-office-upload-image';
import htmlToPdf from '@/components/utils/htmlToPdf'; import htmlToPdf from '@/components/utils/htmlToPdf';
import VueAMap from 'vue-amap'; import VueAMap from 'vue-amap';
import Vue from 'vue'; import Vue from 'vue';
import { postRequest } from '@/api/api.js';
import errorMsg from '@/common/js/error.js';
// Vue.use(contentmenu); // Vue.use(contentmenu);
Vue.use(VueAMap); Vue.use(VueAMap);
...@@ -50,9 +50,7 @@ Vue.use(vueOfficeHeader); ...@@ -50,9 +50,7 @@ Vue.use(vueOfficeHeader);
Vue.config.productionTip = false; Vue.config.productionTip = false;
// Vue.use(ElementUI, { size: 'large' }); // Vue.use(ElementUI, { size: 'large' });
Vue.use(VueAxios, axios);
Vue.axios.defaults.withCredentials = true; // cookie访问
// 全局注册过滤器 // 全局注册过滤器
Object.keys(filters).forEach(key => { Object.keys(filters).forEach(key => {
Vue.filter(key, filters[key]); Vue.filter(key, filters[key]);
...@@ -76,27 +74,6 @@ router.beforeEach((to, from, next) => { ...@@ -76,27 +74,6 @@ router.beforeEach((to, from, next) => {
} else { } else {
baseUrl = host; baseUrl = host;
} }
if (!localStorage.getItem('userInfos')) {
// axios
// .get(`${baseUrl}/haoban-manage-web/emp/get-user-info`, {})
// .then(res => {
// let resData = res.data;
// if (resData.errorCode == 1) {
// localStorage.setItem('userInfos', JSON.stringify(resData.result));
// return;
// }
// // Message.error({
// // duration: 1000,
// // message: resData.message
// // })
// })
// .catch(function(error) {
// Message.error({
// duration: 1000,
// message: error.message
// });
// });
}
if (to.path == '/') { if (to.path == '/') {
next({ path: '/login' }); next({ path: '/login' });
} else { } else {
...@@ -203,11 +180,30 @@ Vue.prototype.$getButtonLimit = (code) => { ...@@ -203,11 +180,30 @@ Vue.prototype.$getButtonLimit = (code) => {
return !!Vue.prototype.$buttonCode[code]; return !!Vue.prototype.$buttonCode[code];
} }
/* eslint-disable no-new */ postRequest('/haoban-manage3-web/get-login-info', {}).then(resp => {
new Vue({ // 正常情况下enterpriseId必定存在
// superManagerFlag 1:超管
// 如果enterpriseId不存在,而且不是超管,弹窗报错并且不进入页面
const { errorCode, result } = resp.data || {};
if (errorCode != 1) {
errorMsg.errorMsg(resp.data);
return;
}
sessionStorage.setItem('userInfos', JSON.stringify(result));
/**
* 获取好办 企业 id
*/
if (!!sessionStorage.getItem('userInfos')) {
let haobanSign = JSON.parse(sessionStorage.getItem('userInfos')).enterpriseId;
haobanSign ? (Vue.axios.defaults.headers.common['enterpriseId'] = haobanSign) : '';
}
}).finally(() => {
/* eslint-disable no-new */
new Vue({
el: '#app', el: '#app',
router, router,
store, store,
components: { App }, components: { App },
template: '<App/>' template: '<App/>'
});
}); });
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