dev
张同海 2 years ago
parent 7d05fbe1a3
commit f651fc4298

@ -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
}
}

@ -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()
})
},
}
}
}

@ -19,7 +19,7 @@
@search="handleSearch"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:filter-option="filterOption"
:not-found-content="null"
>
<a-select-option v-for="item in CodeData" :key="item.code" :value="item.code">
@ -115,6 +115,9 @@ export default {
},
mounted() {},
methods: {
filterOption(input, option) {
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
CarrierHandleSearch(data) {
commondbCarrierlist({ cnName: data }).then(res => {
this.carrierCodeData = res.data

@ -19,7 +19,7 @@
@search="handleSearch"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:filter-option="filterOption"
:not-found-content="null"
>
<a-select-option v-for="item in CodeData" :key="item.code" :value="item.code">
@ -117,6 +117,9 @@ export default {
},
mounted() {},
methods: {
filterOption(input, option) {
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
CarrierHandleSearch(data) {
commondbCarrierlist({ cnName: data }).then(res => {
this.carrierCodeData = res.data

@ -10,51 +10,14 @@
<a-row :gutter="48">
<a-col :md="18">
<a-row :gutter="48">
<a-col :md="8" :sm="24" v-for="item in ColumnsQuery" :key="`${item.dataIndex}1`">
<a-form-item
:label="item.title"
v-if="
item.title != '备注' && item.title != '船公司' && item.title != '箱型' && item.title != '模块'
"
>
<a-input v-model="queryParam[item.dataIndex]" allow-clear :placeholder="`请输入${item.title}`" />
<a-col :md="8" :sm="24">
<a-form-item label="关键字:">
<a-input v-model="queryParam.KeyWord" allow-clear placeholder="请输入关键字" />
</a-form-item>
<a-form-item :label="item.title" v-if="item.title == '箱型'">
<a-select
allow-clear
show-search
placeholder="请选择箱型"
v-model="queryParam[item.dataIndex]"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="handleSearch"
>
<a-select-option v-for="item in WCodeData" :key="item.code" :value="item.code">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
<a-form-item :label="item.title" v-if="item.title == '船公司'">
<a-select
allow-clear
show-search
placeholder="请选择船公司"
v-model="queryParam[item.dataIndex]"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="handleSearch"
>
<a-select-option v-for="item in carrierCodeData" :key="item.code" :value="item.code">
{{ item.cnName }}
</a-select-option>
</a-select>
</a-form-item>
<a-form-item :label="item.title" v-if="item.title == '模块'">
<a-select allow-clear placeholder="请选择模块" v-model="queryParam[item.dataIndex]">
</a-col>
<a-col :md="8" :sm="24">
<a-form-item label="模块">
<a-select allow-clear placeholder="请选择模块" v-model="queryParam.module">
<a-select-option v-for="item in ModulesData" :key="item.code" :value="item.code">
{{ item.name }}
</a-select-option>
@ -189,6 +152,9 @@ export default {
this.init()
},
methods: {
filterOption(input, option) {
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
handleSearch(data) {
commondbCtn({ Name: data }).then(res => {
this.WCodeData = res.data
@ -228,7 +194,6 @@ export default {
this.advanced = !this.advanced
},
init() {
Object.assign(this.$data, this.$options.data())
this.ColumnsQuery = this.columns
this.FnGetData()

@ -19,7 +19,7 @@
@search="handleSearch"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:filter-option="filterOption"
:not-found-content="null"
>
<a-select-option v-for="item in CodeData" :key="item.code" :value="item.code">
@ -99,6 +99,9 @@ export default {
},
mounted() {},
methods: {
filterOption(input, option) {
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
handleSearch(data) {
commondbYardlist({ name: data }).then(res => {
this.CodeData = res.data

@ -19,7 +19,7 @@
@search="handleSearch"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:filter-option="filterOption"
:not-found-content="null"
>
<a-select-option v-for="item in CodeData" :key="item.code" :value="item.code">
@ -101,6 +101,9 @@ export default {
},
mounted() {},
methods: {
filterOption(input, option) {
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
handleSearch(data) {
commondbYardlist({ name: data }).then(res => {
this.CodeData = res.data

@ -10,32 +10,14 @@
<a-row :gutter="48">
<a-col :md="18">
<a-row :gutter="48">
<a-col :md="8" :sm="24" v-for="item in ColumnsQuery" :key="`${item.dataIndex}1`">
<a-form-item
:label="item.title"
v-if="item.title != '备注' && item.title != '场站' && item.title != '模块'"
>
<a-input v-model="queryParam[item.dataIndex]" allow-clear :placeholder="`请输入${item.title}`" />
<a-col :md="8" :sm="24">
<a-form-item label="关键字:">
<a-input v-model="queryParam.KeyWord" allow-clear placeholder="请输入关键字" />
</a-form-item>
<a-form-item :label="item.title" v-if="item.title == '场站'">
<a-select
allow-clear
show-search
placeholder="请选择场站"
v-model="queryParam[item.dataIndex]"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="handleSearch"
>
<a-select-option v-for="item in WCodeData" :key="item.code" :value="item.code">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
<a-form-item :label="item.title" v-if="item.title == '模块'">
<a-select allow-clear placeholder="请选择模块" v-model="queryParam[item.dataIndex]">
</a-col>
<a-col :md="8" :sm="24">
<a-form-item label="模块">
<a-select allow-clear placeholder="请选择模块" v-model="queryParam.module">
<a-select-option v-for="item in ModulesData" :key="item.code" :value="item.code">
{{ item.name }}
</a-select-option>

Loading…
Cancel
Save