diff --git a/src/main.js b/src/main.js index 4fccd46..9bb9851 100644 --- a/src/main.js +++ b/src/main.js @@ -27,8 +27,8 @@ import VueContextMenu from 'vue-contextmenu' import vcolorpicker from 'vcolorpicker' import VXETable from 'vxe-table' import 'vxe-table/lib/style.css' -import 'vue-easytable/libs/theme-default/index.css'; -import VueEasytable from 'vue-easytable'; +import 'vue-easytable/libs/theme-default/index.css' +import VueEasytable from 'vue-easytable' Vue.use(VXETable) Vue.use(VueContextMenu) @@ -38,9 +38,10 @@ Vue.use(socket, '/hubs/chatHub') Vue.use(VueAxios) Vue.use(Dialog) Vue.use(dataV) -Vue.use(VueEasytable); +Vue.use(VueEasytable) Vue.prototype.hasPerm = hasBtnPermission Vue.prototype.applocation = sysApplication +Vue.prototype.$bus = new Vue() Vue.config.productionTip = false new Vue({ diff --git a/src/permission.js b/src/permission.js index 2a4bbc1..9fabf97 100644 --- a/src/permission.js +++ b/src/permission.js @@ -101,7 +101,8 @@ router.beforeEach((to, from, next) => { .catch(() => { console.log('=== 测试跳转页面,获取个人信息失败 ===') store.dispatch('Logout').then(() => { - next({ path: '/user/login', query: { redirect: to.fullPath } }) + // next({ path: '/user/login', query: { redirect: to.fullPath } }) + next({ path: '/user/login' }) }) }) store.dispatch('getNoticReceiveList').then(res => {}) @@ -115,7 +116,8 @@ router.beforeEach((to, from, next) => { // 在免登录白名单,直接进入 next() } else { - next({ path: '/user/login', query: { redirect: to.fullPath } }) + // next({ path: '/user/login', query: { redirect: to.fullPath } }) + next({ path: '/user/login' }) NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it } } diff --git a/src/store/modules/user.js b/src/store/modules/user.js index a99f67c..aec24b0 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -1,30 +1,11 @@ import Vue from 'vue' -import { - login, - getLoginUser, - logout -} from '@/api/modular/system/loginManage' -import { - sysDictTypeTree -} from '@/api/modular/system/dictManage' -import { - sysMenuChange -} from '@/api/modular/system/menuManage' -import { - ACCESS_TOKEN, - ALL_APPS_MENU, - DICT_TYPE_TREE_DATA, - NOTICE_RECEIVED -} from '@/store/mutation-types' -import { - sysFileInfoPreview -} from '@/api/modular/system/fileManage' -import { - unReadNotice -} from '@/api/modular/system/noticeReceivedManage' -import { - welcome, dateFormat -} from '@/utils/util' +import { login, getLoginUser, logout } from '@/api/modular/system/loginManage' +import { sysDictTypeTree } from '@/api/modular/system/dictManage' +import { sysMenuChange } from '@/api/modular/system/menuManage' +import { ACCESS_TOKEN, ALL_APPS_MENU, DICT_TYPE_TREE_DATA, NOTICE_RECEIVED } from '@/store/mutation-types' +import { sysFileInfoPreview } from '@/api/modular/system/fileManage' +import { unReadNotice } from '@/api/modular/system/noticeReceivedManage' +import { welcome, dateFormat } from '@/utils/util' import store from '../index' import router from '../../router' @@ -47,10 +28,7 @@ const user = { SET_TOKEN: (state, token) => { state.token = token }, - SET_NAME: (state, { - name, - welcome - }) => { + SET_NAME: (state, { name, welcome }) => { state.name = name state.welcome = welcome }, @@ -74,21 +52,25 @@ const user = { }, APPEND_NOTICE: (state, notice) => { notice.publicTime = dateFormat(notice.publicTime, 'YYYY-mm-dd HH:MM:SS') - let notices = state.notices; - let temp = notices.rows.filter(m => { return m.value == notice.type })[0] - let other = notices.rows.filter(m => { return m.value != notice.type }) - temp.noticeData.unshift(notice); - notices.totalRows++; + let notices = state.notices + let temp = notices.rows.filter(m => { + return m.value == notice.type + })[0] + let other = notices.rows.filter(m => { + return m.value != notice.type + }) + temp.noticeData.unshift(notice) + notices.totalRows++ if (temp.noticeData.length > 6) { - temp.noticeData.pop(); + temp.noticeData.pop() } - notices.rows = []; - notices.rows.push(temp); - notices.rows.push.apply(notices.rows, other); + notices.rows = [] + notices.rows.push(temp) + notices.rows.push.apply(notices.rows, other) notices.rows.sort((obj1, obj2) => { return obj1.index - obj2.index }) - state.notices = notices; + state.notices = notices }, SET_BOOKINGLIST: (state, list) => { state.bookingList = list @@ -100,195 +82,197 @@ const user = { actions: { // 登录 - Login({ - commit - }, userInfo) { + Login({ commit }, userInfo) { return new Promise((resolve, reject) => { - login(userInfo).then(response => { - if (!response.success) { - reject(response.message) - return - } - const result = response.data - Vue.ls.set(ACCESS_TOKEN, result, 7 * 24 * 60 * 60 * 1000) - commit('SET_TOKEN', result) - resolve() - // eslint-disable-next-line handle-callback-err - }).catch(error => { - // eslint-disable-next-line prefer-promise-reject-errors - reject('后端未启动或代理错误') - }) + login(userInfo) + .then(response => { + if (!response.success) { + reject(response.message) + return + } + const result = response.data + Vue.ls.set(ACCESS_TOKEN, result, 7 * 24 * 60 * 60 * 1000) + commit('SET_TOKEN', result) + resolve() + // eslint-disable-next-line handle-callback-err + }) + .catch(error => { + // eslint-disable-next-line prefer-promise-reject-errors + reject('后端未启动或代理错误') + }) }) }, // 获取用户信息 - GetInfo({ - commit - }) { + GetInfo({ commit }) { return new Promise((resolve, reject) => { - getLoginUser().then(response => { - if (response.success) { - const data = response.data - commit('SET_ADMINTYPE', data.adminType) - commit('SET_ROLES', 1) - commit('SET_BUTTONS', data.permissions) - commit('SET_INFO', data) - commit('SET_NAME', { - name: data.name, - welcome: welcome() - }) - if (data.avatar != null) { - sysFileInfoPreview({ - id: data.avatar - }).then((res) => { - commit('SET_AVATAR', window.URL.createObjectURL(new Blob([res]))) - }).catch((err) => { - this.$message.error('预览错误:' + err.message) + getLoginUser() + .then(response => { + if (response.success) { + const data = response.data + commit('SET_ADMINTYPE', data.adminType) + commit('SET_ROLES', 1) + commit('SET_BUTTONS', data.permissions) + commit('SET_INFO', data) + commit('SET_NAME', { + name: data.name, + welcome: welcome() }) - // commit('SET_AVATAR', process.env.VUE_APP_API_BASE_URL + '/sysFileInfo/preview?id=' + data.avatar) + if (data.avatar != null) { + sysFileInfoPreview({ + id: data.avatar + }) + .then(res => { + commit('SET_AVATAR', window.URL.createObjectURL(new Blob([res]))) + }) + .catch(err => { + this.$message.error('预览错误:' + err.message) + }) + // commit('SET_AVATAR', process.env.VUE_APP_API_BASE_URL + '/sysFileInfo/preview?id=' + data.avatar) + } + resolve(data) + } else { + // eslint-disable-next-line no-undef + reject(new Error(data.message)) } - resolve(data) - } else { - // eslint-disable-next-line no-undef - reject(new Error(data.message)) - } - }).catch(error => { - reject(error) - }) + }) + .catch(error => { + reject(error) + }) }) }, // 登出 - Logout({ - commit, - state - }) { - return new Promise((resolve) => { - logout(state.token).then(() => { - resolve() - }).catch(() => { - resolve() - }).finally(() => { - commit('SET_TOKEN', '') - commit('SET_ROLES', []) - commit('SET_BUTTONS', []) - commit('SET_ADMINTYPE', '') - commit('SET_INFO', null) - Vue.ls.remove(ACCESS_TOKEN) - Vue.ls.remove(ALL_APPS_MENU) - Vue.ls.remove(DICT_TYPE_TREE_DATA) - }) + Logout({ commit, state }) { + return new Promise(resolve => { + logout(state.token) + .then(() => { + resolve() + }) + .catch(() => { + resolve() + }) + .finally(() => { + commit('SET_TOKEN', '') + commit('SET_ROLES', []) + commit('SET_BUTTONS', []) + commit('SET_ADMINTYPE', '') + commit('SET_INFO', null) + Vue.ls.remove(ACCESS_TOKEN) + Vue.ls.remove(ALL_APPS_MENU) + Vue.ls.remove(DICT_TYPE_TREE_DATA) + }) }) }, // 加载所有字典数据 dictTypeData() { return new Promise((resolve, reject) => { - sysDictTypeTree().then((data) => { - if (data.success) { - const result = data.data - Vue.ls.set(DICT_TYPE_TREE_DATA, result) - resolve() - } else { - // eslint-disable-next-line no-undef - reject(new Error(data.message)) - } - }).catch(error => { - reject(error) - }) + sysDictTypeTree() + .then(data => { + if (data.success) { + const result = data.data + Vue.ls.set(DICT_TYPE_TREE_DATA, result) + resolve() + } else { + // eslint-disable-next-line no-undef + reject(new Error(data.message)) + } + }) + .catch(error => { + reject(error) + }) }) }, // 切换应用菜单 - MenuChange({ - commit - }, application) { - return new Promise((resolve) => { + MenuChange({ commit }, application) { + return new Promise(resolve => { sysMenuChange({ application: application.code - }).then((res) => { - const apps = { - 'code': '', - 'name': '', - 'active': '', - 'menu': '' - } - apps.active = true - apps.menu = res.data - // eslint-disable-next-line camelcase - const all_app_menu = Vue.ls.get(ALL_APPS_MENU) - // eslint-disable-next-line camelcase - const new_false_all_app_menu = [] - // 先去除所有默认的,以为此时切换的即将成为前端缓存默认的应用 - all_app_menu.forEach(item => { - if (item.active) { - item.active = false + }) + .then(res => { + const apps = { + code: '', + name: '', + active: '', + menu: '' } - new_false_all_app_menu.push(item) + apps.active = true + apps.menu = res.data + // eslint-disable-next-line camelcase + const all_app_menu = Vue.ls.get(ALL_APPS_MENU) + // eslint-disable-next-line camelcase + const new_false_all_app_menu = [] + // 先去除所有默认的,以为此时切换的即将成为前端缓存默认的应用 + all_app_menu.forEach(item => { + if (item.active) { + item.active = false + } + new_false_all_app_menu.push(item) + }) + // 此时缓存中全部都是不默认的应用 + Vue.ls.set(ALL_APPS_MENU, new_false_all_app_menu) + apps.name = application.name + apps.code = application.code + const applocationR = [] + applocationR.push(apps) + Vue.ls.set(ALL_APPS_MENU, applocationR) + resolve(res) + const antDesignmenus = res.data + store + .dispatch('GenerateRoutes', { + antDesignmenus + }) + .then(() => { + router.addRoutes(store.getters.addRouters) + }) + // 切换应用刷新整体界面,暂且取消 + // window.location.reload() }) - // 此时缓存中全部都是不默认的应用 - Vue.ls.set(ALL_APPS_MENU, new_false_all_app_menu) - apps.name = application.name - apps.code = application.code - const applocationR = [] - applocationR.push(apps) - Vue.ls.set(ALL_APPS_MENU, applocationR) - resolve(res) - const antDesignmenus = res.data - store.dispatch('GenerateRoutes', { - antDesignmenus - }).then(() => { - router.addRoutes(store.getters.addRouters) + .catch(() => { + resolve() }) - // 切换应用刷新整体界面,暂且取消 - // window.location.reload() - }).catch(() => { - resolve() - }) }) }, // 获取收到的通知 - getNoticReceiveList({ - commit - }) { + getNoticReceiveList({ commit }) { return new Promise((resolve, reject) => { unReadNotice({ pageSize: 6 - }).then((data) => { - if (data.success) { - const result = data.data - commit('SET_NOTICES', result) - resolve() - } else { - // eslint-disable-next-line no-undef - reject(new Error(data.message)) - } - }).catch(error => { - reject(error) }) + .then(data => { + if (data.success) { + const result = data.data + commit('SET_NOTICES', result) + resolve() + } else { + // eslint-disable-next-line no-undef + reject(new Error(data.message)) + } + }) + .catch(error => { + reject(error) + }) }) }, // 设置订舱列表 - setBookingList({ - commit - }, obj) { - return new Promise((resolve) => { + setBookingList({ commit }, obj) { + return new Promise(resolve => { commit('SET_BOOKINGLIST', obj) resolve() }) }, // 设置需要保存页面 - setNeedSavePages({ - commit - }, obj) { - return new Promise((resolve) => { + setNeedSavePages({ commit }, obj) { + return new Promise(resolve => { commit('SET_NEEDSAVEPAGES', obj) resolve() }) - }, + } } } diff --git a/src/views/main/BookingLedger/detail/modules/operationArea.vue b/src/views/main/BookingLedger/detail/modules/operationArea.vue index 9e245b2..fc5d181 100644 --- a/src/views/main/BookingLedger/detail/modules/operationArea.vue +++ b/src/views/main/BookingLedger/detail/modules/operationArea.vue @@ -45,7 +45,7 @@
基本信息
++ 基本信息 +
联系人信息
++ 联系人信息 +
财务信息
++ 财务信息 +