vue2-client 1.22.2 → 1.22.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +30 -30
- package/.eslintrc.js +74 -74
- package/.idea/.name +1 -0
- package/.idea/MarsCodeWorkspaceAppSettings.xml +2 -1
- package/.idea/af-vue2-client.iml +9 -0
- package/.idea/deployment.xml +14 -0
- package/.idea/gradle.xml +7 -0
- package/.idea/inspectionProfiles/Project_Default.xml +0 -18
- package/.idea/libraries/contour_plot.xml +9 -0
- package/.idea/material_theme_project_new.xml +18 -0
- package/.idea/misc.xml +88 -0
- package/.idea/modules.xml +1 -1
- package/Components.md +60 -60
- package/index.js +31 -31
- package/jest-transform-stub.js +8 -8
- package/jest.setup.js +7 -7
- package/package.json +1 -1
- package/src/assets/img/querySlotDemo.svg +15 -15
- package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
- package/src/base-client/components/common/CitySelect/index.js +3 -3
- package/src/base-client/components/common/CitySelect/index.md +109 -109
- package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
- package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
- package/src/base-client/components/common/HIS/HButtons/HButtons.vue +55 -1
- package/src/base-client/components/common/HIS/HTab/HTab.vue +88 -1
- package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
- package/src/base-client/components/common/PersonSetting/index.js +3 -3
- package/src/base-client/components/common/Tree/index.js +2 -2
- package/src/base-client/components/common/Upload/index.js +3 -3
- package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
- package/src/base-client/components/common/XAddReport/XAddReport.vue +16 -1
- package/src/base-client/components/common/XCard/XCard.vue +64 -64
- package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
- package/src/base-client/components/common/XDataDrawer/index.js +3 -3
- package/src/base-client/components/common/XDataDrawer/index.md +41 -41
- package/src/base-client/components/common/XDescriptions/index.js +3 -3
- package/src/base-client/components/common/XDescriptions/index.md +382 -382
- package/src/base-client/components/common/XForm/index.md +178 -178
- package/src/base-client/components/common/XInput/XInput.vue +32 -1
- package/src/base-client/components/common/XInspectionDetailDrawer/index.vue +1 -1
- package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
- package/src/base-client/components/common/XStepView/index.js +3 -3
- package/src/base-client/components/common/XStepView/index.md +31 -31
- package/src/base-client/components/common/XTable/index.md +255 -255
- package/src/base-client/components/his/HAi/HAi.vue +800 -59
- package/src/base-client/components/his/XList/XList.vue +337 -58
- package/src/base-client/components/his/XSidebar/XSidebar.vue +36 -12
- package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
- package/src/base-client/plugins/Config.js +19 -19
- package/src/base-client/plugins/GetLoginInfoService.js +4 -4
- package/src/base-client/plugins/tabs-page-plugin.js +39 -39
- package/src/components/Charts/Bar.vue +62 -62
- package/src/components/Charts/ChartCard.vue +134 -134
- package/src/components/Charts/Liquid.vue +67 -67
- package/src/components/Charts/MiniArea.vue +39 -39
- package/src/components/Charts/MiniBar.vue +39 -39
- package/src/components/Charts/MiniProgress.vue +75 -75
- package/src/components/Charts/MiniSmoothArea.vue +40 -40
- package/src/components/Charts/Radar.vue +68 -68
- package/src/components/Charts/RankList.vue +77 -77
- package/src/components/Charts/TagCloud.vue +113 -113
- package/src/components/Charts/TransferBar.vue +64 -64
- package/src/components/Charts/Trend.vue +82 -82
- package/src/components/Charts/chart.less +12 -12
- package/src/components/Charts/smooth.area.less +13 -13
- package/src/components/NumberInfo/NumberInfo.vue +54 -54
- package/src/components/NumberInfo/index.js +3 -3
- package/src/components/NumberInfo/index.less +54 -54
- package/src/components/NumberInfo/index.md +43 -43
- package/src/components/STable/index.js +953 -953
- package/src/components/card/ChartCard.vue +79 -79
- package/src/components/chart/Bar.vue +60 -60
- package/src/components/chart/MiniArea.vue +67 -67
- package/src/components/chart/MiniBar.vue +59 -59
- package/src/components/chart/MiniProgress.vue +57 -57
- package/src/components/chart/Radar.vue +80 -80
- package/src/components/chart/RankingList.vue +60 -60
- package/src/components/chart/Trend.vue +79 -79
- package/src/components/chart/index.less +9 -9
- package/src/components/checkbox/ColorCheckbox.vue +157 -157
- package/src/components/input/IInput.vue +66 -66
- package/src/components/menu/SideMenu.vue +75 -75
- package/src/components/menu/menu.js +273 -273
- package/src/components/tool/AStepItem.vue +60 -60
- package/src/layouts/CommonLayout.vue +56 -56
- package/src/lib.js +1 -1
- package/src/mock/extend/index.js +84 -84
- package/src/mock/goods/index.js +108 -108
- package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
- package/src/pages/system/dictionary/index.vue +44 -44
- package/src/pages/system/monitor/loginInfor/index.vue +37 -37
- package/src/pages/system/monitor/operLog/index.vue +37 -37
- package/src/services/api/cas.js +79 -79
- package/src/store/modules/setting.js +119 -119
- package/src/utils/errorCode.js +6 -6
- package/src/utils/login.js +11 -11
- package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
- package/.idea/google-java-format.xml +0 -6
- package/.idea/jsLinters/eslint.xml +0 -6
- package/.idea/vue2-client.iml +0 -12
- package/.vscode/settings.json +0 -28
package/src/services/api/cas.js
CHANGED
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
import { post } from '@vue2-client/services/api/restTools'
|
|
2
|
-
import notification from 'ant-design-vue/lib/notification'
|
|
3
|
-
import { logout } from '@vue2-client/services/user'
|
|
4
|
-
import Cookie from 'js-cookie'
|
|
5
|
-
|
|
6
|
-
const casApi = {
|
|
7
|
-
// 根据用户信息校验服务访问权限并生成ST
|
|
8
|
-
createSTByUserInfo: '/api/af-sso/logic/createSTByUserInfo',
|
|
9
|
-
// 根据TGC生成ST
|
|
10
|
-
createSTByTGC: '/api/af-sso/logic/createSTByTGC',
|
|
11
|
-
// 验证ST
|
|
12
|
-
serviceValidate: '/api/af-sso/logic/openapi/serviceValidate',
|
|
13
|
-
// 其他验证
|
|
14
|
-
otherValidate: '/api/af-sso/logic'
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function setTGTCookie (cookie) {
|
|
18
|
-
return Cookie.set('TGT-Cookie', cookie)
|
|
19
|
-
}
|
|
20
|
-
function removeTGTCookie () {
|
|
21
|
-
return Cookie.remove('TGT-Cookie')
|
|
22
|
-
}
|
|
23
|
-
export function getTGTCookie () {
|
|
24
|
-
return Cookie.get('TGT-Cookie')
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export function CASLoginByAuth (serviceKey) {
|
|
28
|
-
return new Promise((resolve, reject) => {
|
|
29
|
-
post(casApi.createSTByUserInfo, {
|
|
30
|
-
serviceKey: serviceKey
|
|
31
|
-
}).then(res => {
|
|
32
|
-
setTGTCookie(res.tgc)
|
|
33
|
-
resolve(res)
|
|
34
|
-
}).catch(msg => {
|
|
35
|
-
reject(msg)
|
|
36
|
-
})
|
|
37
|
-
})
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export function CASLogin (serviceKey, inner) {
|
|
41
|
-
// 从第三方跳转登录
|
|
42
|
-
const tgc = getTGTCookie()
|
|
43
|
-
if (tgc && !inner) {
|
|
44
|
-
return new Promise((resolve, reject) => {
|
|
45
|
-
post(casApi.createSTByTGC, {
|
|
46
|
-
serviceKey: serviceKey,
|
|
47
|
-
tgc: tgc
|
|
48
|
-
}).then(res => {
|
|
49
|
-
resolve(res)
|
|
50
|
-
}).catch(msg => {
|
|
51
|
-
if (msg === '当前操作没有权限') {
|
|
52
|
-
removeTGTCookie()
|
|
53
|
-
notification.error({
|
|
54
|
-
message: '授权已过期,请重新登录',
|
|
55
|
-
description: '2秒后自动跳转回登陆页面'
|
|
56
|
-
})
|
|
57
|
-
logout().then(() => {
|
|
58
|
-
setTimeout(() => {
|
|
59
|
-
window.location.href = '/login?serviceKey=' + serviceKey
|
|
60
|
-
}, 1500)
|
|
61
|
-
})
|
|
62
|
-
} else {
|
|
63
|
-
reject(msg)
|
|
64
|
-
}
|
|
65
|
-
})
|
|
66
|
-
})
|
|
67
|
-
} else {
|
|
68
|
-
return CASLoginByAuth(serviceKey)
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export function doOtherValidate (logicName, st, serviceKey) {
|
|
73
|
-
return post(casApi.otherValidate + '/' + logicName, {
|
|
74
|
-
st: st,
|
|
75
|
-
serviceKey: serviceKey
|
|
76
|
-
}, null)
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export default casApi
|
|
1
|
+
import { post } from '@vue2-client/services/api/restTools'
|
|
2
|
+
import notification from 'ant-design-vue/lib/notification'
|
|
3
|
+
import { logout } from '@vue2-client/services/user'
|
|
4
|
+
import Cookie from 'js-cookie'
|
|
5
|
+
|
|
6
|
+
const casApi = {
|
|
7
|
+
// 根据用户信息校验服务访问权限并生成ST
|
|
8
|
+
createSTByUserInfo: '/api/af-sso/logic/createSTByUserInfo',
|
|
9
|
+
// 根据TGC生成ST
|
|
10
|
+
createSTByTGC: '/api/af-sso/logic/createSTByTGC',
|
|
11
|
+
// 验证ST
|
|
12
|
+
serviceValidate: '/api/af-sso/logic/openapi/serviceValidate',
|
|
13
|
+
// 其他验证
|
|
14
|
+
otherValidate: '/api/af-sso/logic'
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function setTGTCookie (cookie) {
|
|
18
|
+
return Cookie.set('TGT-Cookie', cookie)
|
|
19
|
+
}
|
|
20
|
+
function removeTGTCookie () {
|
|
21
|
+
return Cookie.remove('TGT-Cookie')
|
|
22
|
+
}
|
|
23
|
+
export function getTGTCookie () {
|
|
24
|
+
return Cookie.get('TGT-Cookie')
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function CASLoginByAuth (serviceKey) {
|
|
28
|
+
return new Promise((resolve, reject) => {
|
|
29
|
+
post(casApi.createSTByUserInfo, {
|
|
30
|
+
serviceKey: serviceKey
|
|
31
|
+
}).then(res => {
|
|
32
|
+
setTGTCookie(res.tgc)
|
|
33
|
+
resolve(res)
|
|
34
|
+
}).catch(msg => {
|
|
35
|
+
reject(msg)
|
|
36
|
+
})
|
|
37
|
+
})
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function CASLogin (serviceKey, inner) {
|
|
41
|
+
// 从第三方跳转登录
|
|
42
|
+
const tgc = getTGTCookie()
|
|
43
|
+
if (tgc && !inner) {
|
|
44
|
+
return new Promise((resolve, reject) => {
|
|
45
|
+
post(casApi.createSTByTGC, {
|
|
46
|
+
serviceKey: serviceKey,
|
|
47
|
+
tgc: tgc
|
|
48
|
+
}).then(res => {
|
|
49
|
+
resolve(res)
|
|
50
|
+
}).catch(msg => {
|
|
51
|
+
if (msg === '当前操作没有权限') {
|
|
52
|
+
removeTGTCookie()
|
|
53
|
+
notification.error({
|
|
54
|
+
message: '授权已过期,请重新登录',
|
|
55
|
+
description: '2秒后自动跳转回登陆页面'
|
|
56
|
+
})
|
|
57
|
+
logout().then(() => {
|
|
58
|
+
setTimeout(() => {
|
|
59
|
+
window.location.href = '/login?serviceKey=' + serviceKey
|
|
60
|
+
}, 1500)
|
|
61
|
+
})
|
|
62
|
+
} else {
|
|
63
|
+
reject(msg)
|
|
64
|
+
}
|
|
65
|
+
})
|
|
66
|
+
})
|
|
67
|
+
} else {
|
|
68
|
+
return CASLoginByAuth(serviceKey)
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export function doOtherValidate (logicName, st, serviceKey) {
|
|
73
|
+
return post(casApi.otherValidate + '/' + logicName, {
|
|
74
|
+
st: st,
|
|
75
|
+
serviceKey: serviceKey
|
|
76
|
+
}, null)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export default casApi
|
|
@@ -1,119 +1,119 @@
|
|
|
1
|
-
import config from '@vue2-client/config'
|
|
2
|
-
import { ADMIN } from '@vue2-client/config/default'
|
|
3
|
-
import { formatFullPath } from '@vue2-client/utils/i18n'
|
|
4
|
-
import { filterMenu } from '@vue2-client/utils/authority-utils'
|
|
5
|
-
import { getLocalSetting } from '@vue2-client/utils/themeUtil'
|
|
6
|
-
import deepClone from 'lodash.clonedeep'
|
|
7
|
-
|
|
8
|
-
const localSetting = getLocalSetting(true)
|
|
9
|
-
const customTitlesStr = sessionStorage.getItem(process.env.VUE_APP_TBAS_TITLES_KEY)
|
|
10
|
-
const customTitles = (customTitlesStr && JSON.parse(customTitlesStr)) || []
|
|
11
|
-
|
|
12
|
-
export default {
|
|
13
|
-
namespaced: true,
|
|
14
|
-
state: {
|
|
15
|
-
isMobile: false,
|
|
16
|
-
animates: ADMIN.animates,
|
|
17
|
-
palettes: ADMIN.palettes,
|
|
18
|
-
pageMinHeight: 0,
|
|
19
|
-
menuData: [],
|
|
20
|
-
activatedFirst: undefined,
|
|
21
|
-
customTitles,
|
|
22
|
-
...config,
|
|
23
|
-
...localSetting
|
|
24
|
-
},
|
|
25
|
-
getters: {
|
|
26
|
-
menuData (state, getters, rootState) {
|
|
27
|
-
if (state.filterMenu) {
|
|
28
|
-
const { permissions, roles } = rootState.account
|
|
29
|
-
return filterMenu(deepClone(state.menuData), permissions, roles)
|
|
30
|
-
}
|
|
31
|
-
return state.menuData
|
|
32
|
-
},
|
|
33
|
-
firstMenu (state, getters) {
|
|
34
|
-
const { menuData } = getters
|
|
35
|
-
if (menuData.length > 0 && !menuData[0].fullPath) {
|
|
36
|
-
formatFullPath(menuData)
|
|
37
|
-
}
|
|
38
|
-
return menuData.map(item => {
|
|
39
|
-
const menuItem = { ...item }
|
|
40
|
-
delete menuItem.children
|
|
41
|
-
return menuItem
|
|
42
|
-
})
|
|
43
|
-
},
|
|
44
|
-
subMenu (state) {
|
|
45
|
-
const { menuData, activatedFirst } = state
|
|
46
|
-
if (menuData.length > 0 && !menuData[0].fullPath) {
|
|
47
|
-
formatFullPath(menuData)
|
|
48
|
-
}
|
|
49
|
-
const current = menuData.find(menu => menu.fullPath === activatedFirst)
|
|
50
|
-
return current && current.children || []
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
mutations: {
|
|
54
|
-
setDevice (state, isMobile) {
|
|
55
|
-
state.isMobile = isMobile
|
|
56
|
-
},
|
|
57
|
-
setTheme (state, theme) {
|
|
58
|
-
state.theme = theme
|
|
59
|
-
},
|
|
60
|
-
setLayout (state, layout) {
|
|
61
|
-
state.layout = layout
|
|
62
|
-
},
|
|
63
|
-
setMultiPage (state, multiPage) {
|
|
64
|
-
state.multiPage = multiPage
|
|
65
|
-
},
|
|
66
|
-
setAnimate (state, animate) {
|
|
67
|
-
state.animate = animate
|
|
68
|
-
},
|
|
69
|
-
setWeekMode (state, weekMode) {
|
|
70
|
-
state.weekMode = weekMode
|
|
71
|
-
},
|
|
72
|
-
setFixedHeader (state, fixedHeader) {
|
|
73
|
-
state.fixedHeader = fixedHeader
|
|
74
|
-
},
|
|
75
|
-
setFixedSideBar (state, fixedSideBar) {
|
|
76
|
-
state.fixedSideBar = fixedSideBar
|
|
77
|
-
},
|
|
78
|
-
setLang (state, lang) {
|
|
79
|
-
state.lang = lang
|
|
80
|
-
},
|
|
81
|
-
setHideSetting (state, hideSetting) {
|
|
82
|
-
state.hideSetting = hideSetting
|
|
83
|
-
},
|
|
84
|
-
correctPageMinHeight (state, minHeight) {
|
|
85
|
-
state.pageMinHeight += minHeight
|
|
86
|
-
},
|
|
87
|
-
setMenuData (state, menuData) {
|
|
88
|
-
state.menuData = menuData
|
|
89
|
-
},
|
|
90
|
-
setAsyncRoutes (state, asyncRoutes) {
|
|
91
|
-
state.asyncRoutes = asyncRoutes
|
|
92
|
-
},
|
|
93
|
-
setPageWidth (state, pageWidth) {
|
|
94
|
-
state.pageWidth = pageWidth
|
|
95
|
-
},
|
|
96
|
-
setActivatedFirst (state, activatedFirst) {
|
|
97
|
-
state.activatedFirst = activatedFirst
|
|
98
|
-
},
|
|
99
|
-
setFixedTabs (state, fixedTabs) {
|
|
100
|
-
state.fixedTabs = fixedTabs
|
|
101
|
-
},
|
|
102
|
-
setCustomTitle (state, { path, title }) {
|
|
103
|
-
if (title) {
|
|
104
|
-
const obj = state.customTitles.find(item => item.path === path)
|
|
105
|
-
if (obj) {
|
|
106
|
-
obj.title = title
|
|
107
|
-
} else {
|
|
108
|
-
state.customTitles.push({ path, title })
|
|
109
|
-
}
|
|
110
|
-
sessionStorage.setItem(process.env.VUE_APP_TBAS_TITLES_KEY, JSON.stringify(state.customTitles))
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
setSetting (state, setting) {
|
|
114
|
-
for (const key in setting) {
|
|
115
|
-
state[key] = setting[key]
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
1
|
+
import config from '@vue2-client/config'
|
|
2
|
+
import { ADMIN } from '@vue2-client/config/default'
|
|
3
|
+
import { formatFullPath } from '@vue2-client/utils/i18n'
|
|
4
|
+
import { filterMenu } from '@vue2-client/utils/authority-utils'
|
|
5
|
+
import { getLocalSetting } from '@vue2-client/utils/themeUtil'
|
|
6
|
+
import deepClone from 'lodash.clonedeep'
|
|
7
|
+
|
|
8
|
+
const localSetting = getLocalSetting(true)
|
|
9
|
+
const customTitlesStr = sessionStorage.getItem(process.env.VUE_APP_TBAS_TITLES_KEY)
|
|
10
|
+
const customTitles = (customTitlesStr && JSON.parse(customTitlesStr)) || []
|
|
11
|
+
|
|
12
|
+
export default {
|
|
13
|
+
namespaced: true,
|
|
14
|
+
state: {
|
|
15
|
+
isMobile: false,
|
|
16
|
+
animates: ADMIN.animates,
|
|
17
|
+
palettes: ADMIN.palettes,
|
|
18
|
+
pageMinHeight: 0,
|
|
19
|
+
menuData: [],
|
|
20
|
+
activatedFirst: undefined,
|
|
21
|
+
customTitles,
|
|
22
|
+
...config,
|
|
23
|
+
...localSetting
|
|
24
|
+
},
|
|
25
|
+
getters: {
|
|
26
|
+
menuData (state, getters, rootState) {
|
|
27
|
+
if (state.filterMenu) {
|
|
28
|
+
const { permissions, roles } = rootState.account
|
|
29
|
+
return filterMenu(deepClone(state.menuData), permissions, roles)
|
|
30
|
+
}
|
|
31
|
+
return state.menuData
|
|
32
|
+
},
|
|
33
|
+
firstMenu (state, getters) {
|
|
34
|
+
const { menuData } = getters
|
|
35
|
+
if (menuData.length > 0 && !menuData[0].fullPath) {
|
|
36
|
+
formatFullPath(menuData)
|
|
37
|
+
}
|
|
38
|
+
return menuData.map(item => {
|
|
39
|
+
const menuItem = { ...item }
|
|
40
|
+
delete menuItem.children
|
|
41
|
+
return menuItem
|
|
42
|
+
})
|
|
43
|
+
},
|
|
44
|
+
subMenu (state) {
|
|
45
|
+
const { menuData, activatedFirst } = state
|
|
46
|
+
if (menuData.length > 0 && !menuData[0].fullPath) {
|
|
47
|
+
formatFullPath(menuData)
|
|
48
|
+
}
|
|
49
|
+
const current = menuData.find(menu => menu.fullPath === activatedFirst)
|
|
50
|
+
return current && current.children || []
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
mutations: {
|
|
54
|
+
setDevice (state, isMobile) {
|
|
55
|
+
state.isMobile = isMobile
|
|
56
|
+
},
|
|
57
|
+
setTheme (state, theme) {
|
|
58
|
+
state.theme = theme
|
|
59
|
+
},
|
|
60
|
+
setLayout (state, layout) {
|
|
61
|
+
state.layout = layout
|
|
62
|
+
},
|
|
63
|
+
setMultiPage (state, multiPage) {
|
|
64
|
+
state.multiPage = multiPage
|
|
65
|
+
},
|
|
66
|
+
setAnimate (state, animate) {
|
|
67
|
+
state.animate = animate
|
|
68
|
+
},
|
|
69
|
+
setWeekMode (state, weekMode) {
|
|
70
|
+
state.weekMode = weekMode
|
|
71
|
+
},
|
|
72
|
+
setFixedHeader (state, fixedHeader) {
|
|
73
|
+
state.fixedHeader = fixedHeader
|
|
74
|
+
},
|
|
75
|
+
setFixedSideBar (state, fixedSideBar) {
|
|
76
|
+
state.fixedSideBar = fixedSideBar
|
|
77
|
+
},
|
|
78
|
+
setLang (state, lang) {
|
|
79
|
+
state.lang = lang
|
|
80
|
+
},
|
|
81
|
+
setHideSetting (state, hideSetting) {
|
|
82
|
+
state.hideSetting = hideSetting
|
|
83
|
+
},
|
|
84
|
+
correctPageMinHeight (state, minHeight) {
|
|
85
|
+
state.pageMinHeight += minHeight
|
|
86
|
+
},
|
|
87
|
+
setMenuData (state, menuData) {
|
|
88
|
+
state.menuData = menuData
|
|
89
|
+
},
|
|
90
|
+
setAsyncRoutes (state, asyncRoutes) {
|
|
91
|
+
state.asyncRoutes = asyncRoutes
|
|
92
|
+
},
|
|
93
|
+
setPageWidth (state, pageWidth) {
|
|
94
|
+
state.pageWidth = pageWidth
|
|
95
|
+
},
|
|
96
|
+
setActivatedFirst (state, activatedFirst) {
|
|
97
|
+
state.activatedFirst = activatedFirst
|
|
98
|
+
},
|
|
99
|
+
setFixedTabs (state, fixedTabs) {
|
|
100
|
+
state.fixedTabs = fixedTabs
|
|
101
|
+
},
|
|
102
|
+
setCustomTitle (state, { path, title }) {
|
|
103
|
+
if (title) {
|
|
104
|
+
const obj = state.customTitles.find(item => item.path === path)
|
|
105
|
+
if (obj) {
|
|
106
|
+
obj.title = title
|
|
107
|
+
} else {
|
|
108
|
+
state.customTitles.push({ path, title })
|
|
109
|
+
}
|
|
110
|
+
sessionStorage.setItem(process.env.VUE_APP_TBAS_TITLES_KEY, JSON.stringify(state.customTitles))
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
setSetting (state, setting) {
|
|
114
|
+
for (const key in setting) {
|
|
115
|
+
state[key] = setting[key]
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
package/src/utils/errorCode.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
401: '认证失败,无法访问系统资源',
|
|
3
|
-
403: '当前操作没有权限',
|
|
4
|
-
404: '访问资源不存在',
|
|
5
|
-
default: '系统未知错误,请反馈给管理员'
|
|
6
|
-
}
|
|
1
|
+
export default {
|
|
2
|
+
401: '认证失败,无法访问系统资源',
|
|
3
|
+
403: '当前操作没有权限',
|
|
4
|
+
404: '访问资源不存在',
|
|
5
|
+
default: '系统未知错误,请反馈给管理员'
|
|
6
|
+
}
|
package/src/utils/login.js
CHANGED
|
@@ -55,15 +55,14 @@ function setSingleAuthorization(auth, authType = AUTH_TYPE.BEARER) {
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
function setAccessToken(data) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
58
|
+
function setAccessToken(data, jwt) {
|
|
59
|
+
const token = jwt || data
|
|
60
|
+
localStorage.setItem(ACCESS_TOKEN, token)
|
|
61
|
+
let timestamp = new Date().getTime() // 当前的时间戳
|
|
62
|
+
timestamp = timestamp + 12 * 60 * 60 * 1000
|
|
63
|
+
// 格式化时间获取年月日, 登陆过期时间
|
|
64
|
+
const dateAfter = new Date(timestamp)
|
|
65
|
+
setSingleAuthorization({ token: token, expireAt: dateAfter })
|
|
67
66
|
}
|
|
68
67
|
|
|
69
68
|
function afterGeneral(result, options) {
|
|
@@ -108,11 +107,12 @@ function afterLogin(res, options) {
|
|
|
108
107
|
const data = encrypt.encrypt(
|
|
109
108
|
JSON.stringify({ username: name, password: password })
|
|
110
109
|
)
|
|
110
|
+
const jwt = res.jwtNew
|
|
111
111
|
// 获取路由配置
|
|
112
112
|
getRoutesConfig(data, setting.routeName)
|
|
113
113
|
.then((result) => {
|
|
114
114
|
Vue.$login
|
|
115
|
-
.login(result)
|
|
115
|
+
.login(result, jwt)
|
|
116
116
|
.then(() => {
|
|
117
117
|
// V3任何情况首位加入资源管理
|
|
118
118
|
const resourceManageMain = {
|
|
@@ -123,7 +123,7 @@ function afterLogin(res, options) {
|
|
|
123
123
|
}
|
|
124
124
|
result.functions.unshift(resourceManageMain)
|
|
125
125
|
afterGeneral(result, options)
|
|
126
|
-
setAccessToken(data)
|
|
126
|
+
setAccessToken(data, jwt)
|
|
127
127
|
if (result.deps === '用户工单登记') {
|
|
128
128
|
router.push(setting.ticketPage).catch(() => {
|
|
129
129
|
})
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
# vue2迁移vue3
|
|
2
|
-
|
|
3
|
-
1. 完成vue-cli,webpack,babel,eslint的升级
|
|
4
|
-
- core-js 3.30.1 -> 3.33.0
|
|
5
|
-
- add regenerator-runtime
|
|
6
|
-
- @babel/core 7.21.4 -> 7.22.20
|
|
7
|
-
- babel-eslint 10.1.0 -> @babel/eslint-parser 7.22.15
|
|
8
|
-
- @vue/cli 4.5.19 -> 5.0.8
|
|
9
|
-
- babel-jest 25.5.1 -> 26.6.3
|
|
10
|
-
- eslint 6.8.0 -> 7.32.0
|
|
11
|
-
- jest 24.0.0 -> 26.6.3
|
|
12
|
-
- webpack 4.46.0 -> 5.88.2
|
|
13
|
-
2. 完成vue2的2.7升级
|
|
14
|
-
- vue 2.6.14 -> 2.7.14
|
|
15
|
-
- eslint 7.32.0 -> 8.51.0
|
|
1
|
+
# vue2迁移vue3
|
|
2
|
+
|
|
3
|
+
1. 完成vue-cli,webpack,babel,eslint的升级
|
|
4
|
+
- core-js 3.30.1 -> 3.33.0
|
|
5
|
+
- add regenerator-runtime
|
|
6
|
+
- @babel/core 7.21.4 -> 7.22.20
|
|
7
|
+
- babel-eslint 10.1.0 -> @babel/eslint-parser 7.22.15
|
|
8
|
+
- @vue/cli 4.5.19 -> 5.0.8
|
|
9
|
+
- babel-jest 25.5.1 -> 26.6.3
|
|
10
|
+
- eslint 6.8.0 -> 7.32.0
|
|
11
|
+
- jest 24.0.0 -> 26.6.3
|
|
12
|
+
- webpack 4.46.0 -> 5.88.2
|
|
13
|
+
2. 完成vue2的2.7升级
|
|
14
|
+
- vue 2.6.14 -> 2.7.14
|
|
15
|
+
- eslint 7.32.0 -> 8.51.0
|
package/.idea/vue2-client.iml
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<module type="WEB_MODULE" version="4">
|
|
3
|
-
<component name="NewModuleRootManager">
|
|
4
|
-
<content url="file://$MODULE_DIR$">
|
|
5
|
-
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
|
6
|
-
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
|
7
|
-
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
|
8
|
-
</content>
|
|
9
|
-
<orderEntry type="inheritedJdk" />
|
|
10
|
-
<orderEntry type="sourceFolder" forTests="false" />
|
|
11
|
-
</component>
|
|
12
|
-
</module>
|
package/.vscode/settings.json
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
// 保存时自动格式化
|
|
3
|
-
"editor.formatOnSave": true,
|
|
4
|
-
// 保存时自动修复 ESLint 问题
|
|
5
|
-
"editor.codeActionsOnSave": {
|
|
6
|
-
"source.fixAll.eslint": "explicit"
|
|
7
|
-
},
|
|
8
|
-
// 统一使用 Prettier 格式化(跨 IDE 一致性)
|
|
9
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
10
|
-
"[vue]": {
|
|
11
|
-
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
|
|
12
|
-
},
|
|
13
|
-
"[javascript]": {
|
|
14
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
15
|
-
},
|
|
16
|
-
"[json]": {
|
|
17
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
18
|
-
},
|
|
19
|
-
// ESLint 验证的文件类型
|
|
20
|
-
"eslint.validate": [
|
|
21
|
-
"javascript",
|
|
22
|
-
"javascriptreact",
|
|
23
|
-
"vue"
|
|
24
|
-
],
|
|
25
|
-
"i18n-ally.localesPaths": [
|
|
26
|
-
"public/his/editor/vender/date97/lang"
|
|
27
|
-
]
|
|
28
|
-
}
|