@indfnd/utils 0.0.31
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/CHANGELOG.md +247 -0
- package/dist/ind-utils.es.js +10831 -0
- package/dist/ind-utils.umd.cjs +36 -0
- package/global.d.ts +8 -0
- package/package.json +63 -0
- package/src/api/com.ts +8 -0
- package/src/api/index.ts +5 -0
- package/src/api/item.ts +20 -0
- package/src/api/platform/dict.ts +59 -0
- package/src/api/platform/index.ts +4 -0
- package/src/api/platform/menu.ts +44 -0
- package/src/api/platform/oss.ts +8 -0
- package/src/api/platform/user.ts +29 -0
- package/src/api/user.ts +8 -0
- package/src/config/base.config.ts +47 -0
- package/src/config/dev.config.ts +5 -0
- package/src/config/index.ts +11 -0
- package/src/config/prod.config.ts +5 -0
- package/src/index.ts +3 -0
- package/src/utils/cache/dict-cache.ts +11 -0
- package/src/utils/cache/index.ts +3 -0
- package/src/utils/cache/permission-cache.ts +15 -0
- package/src/utils/cache/user-cache.ts +15 -0
- package/src/utils/date.ts +57 -0
- package/src/utils/enum.ts +133 -0
- package/src/utils/event.ts +53 -0
- package/src/utils/excel.js +642 -0
- package/src/utils/half-year.ts +53 -0
- package/src/utils/index.ts +18 -0
- package/src/utils/is-type.ts +164 -0
- package/src/utils/mime-type.ts +67 -0
- package/src/utils/number.ts +144 -0
- package/src/utils/quarter.ts +58 -0
- package/src/utils/request/axios.extends.ts +9 -0
- package/src/utils/request/cache-rules.ts +19 -0
- package/src/utils/request/content-type.ts +16 -0
- package/src/utils/request/index.ts +20 -0
- package/src/utils/request/interceptors.ts +99 -0
- package/src/utils/request/url-params.ts +18 -0
- package/src/utils/sm3/index.ts +29 -0
- package/src/utils/sm3/sm3.ts +238 -0
- package/src/utils/storage.ts +51 -0
- package/src/utils/table.ts +252 -0
- package/src/utils/token.ts +57 -0
- package/src/utils/uuid.ts +10 -0
- package/src/utils/validate.ts +149 -0
- package/types/api/com.d.ts +2 -0
- package/types/api/com.d.ts.map +1 -0
- package/types/api/index.d.ts +5 -0
- package/types/api/index.d.ts.map +1 -0
- package/types/api/item.d.ts +5 -0
- package/types/api/item.d.ts.map +1 -0
- package/types/api/platform/dict.d.ts +4 -0
- package/types/api/platform/dict.d.ts.map +1 -0
- package/types/api/platform/index.d.ts +5 -0
- package/types/api/platform/index.d.ts.map +1 -0
- package/types/api/platform/menu.d.ts +17 -0
- package/types/api/platform/menu.d.ts.map +1 -0
- package/types/api/platform/oss.d.ts +2 -0
- package/types/api/platform/oss.d.ts.map +1 -0
- package/types/api/platform/user.d.ts +17 -0
- package/types/api/platform/user.d.ts.map +1 -0
- package/types/api/user.d.ts +2 -0
- package/types/api/user.d.ts.map +1 -0
- package/types/config/base.config.d.ts +31 -0
- package/types/config/base.config.d.ts.map +1 -0
- package/types/config/dev.config.d.ts +4 -0
- package/types/config/dev.config.d.ts.map +1 -0
- package/types/config/index.d.ts +61 -0
- package/types/config/index.d.ts.map +1 -0
- package/types/config/prod.config.d.ts +4 -0
- package/types/config/prod.config.d.ts.map +1 -0
- package/types/index.d.ts +4 -0
- package/types/index.d.ts.map +1 -0
- package/types/utils/cache/dict-cache.d.ts +3 -0
- package/types/utils/cache/dict-cache.d.ts.map +1 -0
- package/types/utils/cache/index.d.ts +3 -0
- package/types/utils/cache/index.d.ts.map +1 -0
- package/types/utils/cache/permission-cache.d.ts +4 -0
- package/types/utils/cache/permission-cache.d.ts.map +1 -0
- package/types/utils/cache/user-cache.d.ts +4 -0
- package/types/utils/cache/user-cache.d.ts.map +1 -0
- package/types/utils/date.d.ts +4 -0
- package/types/utils/date.d.ts.map +1 -0
- package/types/utils/enum.d.ts +90 -0
- package/types/utils/enum.d.ts.map +1 -0
- package/types/utils/event.d.ts +17 -0
- package/types/utils/event.d.ts.map +1 -0
- package/types/utils/excel.d.ts +48 -0
- package/types/utils/excel.d.ts.map +1 -0
- package/types/utils/half-year.d.ts +6 -0
- package/types/utils/half-year.d.ts.map +1 -0
- package/types/utils/index.d.ts +18 -0
- package/types/utils/index.d.ts.map +1 -0
- package/types/utils/is-type.d.ts +34 -0
- package/types/utils/is-type.d.ts.map +1 -0
- package/types/utils/mime-type.d.ts +68 -0
- package/types/utils/mime-type.d.ts.map +1 -0
- package/types/utils/number.d.ts +20 -0
- package/types/utils/number.d.ts.map +1 -0
- package/types/utils/quarter.d.ts +7 -0
- package/types/utils/quarter.d.ts.map +1 -0
- package/types/utils/request/axios.extends.d.ts +9 -0
- package/types/utils/request/axios.extends.d.ts.map +1 -0
- package/types/utils/request/cache-rules.d.ts +7 -0
- package/types/utils/request/cache-rules.d.ts.map +1 -0
- package/types/utils/request/content-type.d.ts +9 -0
- package/types/utils/request/content-type.d.ts.map +1 -0
- package/types/utils/request/index.d.ts +8 -0
- package/types/utils/request/index.d.ts.map +1 -0
- package/types/utils/request/interceptors.d.ts +4 -0
- package/types/utils/request/interceptors.d.ts.map +1 -0
- package/types/utils/request/url-params.d.ts +8 -0
- package/types/utils/request/url-params.d.ts.map +1 -0
- package/types/utils/sm3/index.d.ts +7 -0
- package/types/utils/sm3/index.d.ts.map +1 -0
- package/types/utils/sm3/sm3.d.ts +3 -0
- package/types/utils/sm3/sm3.d.ts.map +1 -0
- package/types/utils/storage.d.ts +8 -0
- package/types/utils/storage.d.ts.map +1 -0
- package/types/utils/table.d.ts +56 -0
- package/types/utils/table.d.ts.map +1 -0
- package/types/utils/token.d.ts +3 -0
- package/types/utils/token.d.ts.map +1 -0
- package/types/utils/uuid.d.ts +5 -0
- package/types/utils/uuid.d.ts.map +1 -0
- package/types/utils/validate.d.ts +9 -0
- package/types/utils/validate.d.ts.map +1 -0
package/src/api/item.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { axios } from '@/utils'
|
|
2
|
+
import { config } from '@/config'
|
|
3
|
+
|
|
4
|
+
const CONTEXT = config.ismAmServerContext
|
|
5
|
+
|
|
6
|
+
export function listItemTreeApi(params) {
|
|
7
|
+
return axios.get(`${CONTEXT}/tree/item/listItemTree`, { params })
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function getPriceCode(params) {
|
|
11
|
+
return axios.get(`${CONTEXT}/tree/item/listComTree`, { params })
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function getPriceSeg(params) {
|
|
15
|
+
return axios.get(`${CONTEXT}/tree/item/listComTree`, { params })
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function getItem(params) {
|
|
19
|
+
return axios.get(`${CONTEXT}/tree/item/listComTree`, { params })
|
|
20
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { IS_OR_NOT_ENUM_KEY, IS_OR_NOT_ENUM_LIST, axios } from '@/utils'
|
|
2
|
+
import { getDictCache, setDictCache } from '@/utils/cache/dict-cache'
|
|
3
|
+
import { config } from '@/config'
|
|
4
|
+
|
|
5
|
+
const CONTEXT = config.authServerContext
|
|
6
|
+
|
|
7
|
+
export function getDictsMapApi(dictId: string) {
|
|
8
|
+
return axios.get(`${CONTEXT}/anon/dict/getDictsMap`, { params: { dictId } })
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export async function getDictApi(dictId: string) {
|
|
12
|
+
if (dictId === IS_OR_NOT_ENUM_KEY) {
|
|
13
|
+
return IS_OR_NOT_ENUM_LIST
|
|
14
|
+
}
|
|
15
|
+
const dictValue = getDictCache(dictId)
|
|
16
|
+
if (!!dictValue) {
|
|
17
|
+
return dictValue
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
try {
|
|
21
|
+
const { data } = await axios.get(`${CONTEXT}/dict/getDicts`, { params: { dictId } })
|
|
22
|
+
setDictCache(dictId, data)
|
|
23
|
+
return data
|
|
24
|
+
} catch (error) {
|
|
25
|
+
console.error(`getDict error dictId=${dictId}`, error)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/*
|
|
30
|
+
入参:枚举ID数组,如['IMP_YES_NO', 'IMP_TRANS_TYPE']
|
|
31
|
+
输出:{
|
|
32
|
+
'IMP_YES_NO': {
|
|
33
|
+
data: {
|
|
34
|
+
'0': '否',
|
|
35
|
+
'1': '是'
|
|
36
|
+
},
|
|
37
|
+
renderData: [
|
|
38
|
+
{K: '1', V: '是'},
|
|
39
|
+
{K: '0', V: '否'},
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
...
|
|
43
|
+
}
|
|
44
|
+
*/
|
|
45
|
+
export async function getDictMapApi(dictIdArr: string[]) {
|
|
46
|
+
const resultMap = {}
|
|
47
|
+
const result = await Promise.all(dictIdArr.map((dictId) => getDictApi(dictId)))
|
|
48
|
+
dictIdArr.forEach((dictId, i) => {
|
|
49
|
+
if (result[i]) {
|
|
50
|
+
const resultValue = {}
|
|
51
|
+
result[i].forEach((item) => {
|
|
52
|
+
resultValue[item.K] = item.V
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
resultMap[dictId] = { data: resultValue, renderData: result[i] }
|
|
56
|
+
}
|
|
57
|
+
})
|
|
58
|
+
return resultMap
|
|
59
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { axios } from '@/utils'
|
|
2
|
+
import { config } from '@/config'
|
|
3
|
+
|
|
4
|
+
const CONTEXT = config.authServerContext
|
|
5
|
+
|
|
6
|
+
export function getPermissionApi() {
|
|
7
|
+
return axios.get(`${CONTEXT}/manage/menu/getAllPermission`)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function getMenuHistoryApi() {
|
|
11
|
+
return axios.get(`${CONTEXT}/manage/upmsMenuHistory/list`)
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function menuHistoryApi(params) {
|
|
15
|
+
return axios.post(`${CONTEXT}/manage/upmsMenuHistory/add`, null, { params })
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function deleteMenuHistoryApi(historyId) {
|
|
19
|
+
return axios.get(`${CONTEXT}/manage/upmsMenuHistory/delete/` + historyId)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function getMenuCollectApi() {
|
|
23
|
+
return axios.get(`${CONTEXT}/manage/upmsMenuCollect/list`)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function addMenuCollectApi(params) {
|
|
27
|
+
return axios.post(`${CONTEXT}/manage/upmsMenuCollect/add`, null, { params })
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function deleteMenuCollectApi(collectId) {
|
|
31
|
+
return axios.get(`${CONTEXT}/manage/upmsMenuCollect/delete/` + collectId)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function removeMenuCollectApi(params) {
|
|
35
|
+
return axios.post(`${CONTEXT}/manage/upmsMenuCollect/remove`, null, { params })
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function getAppListApi() {
|
|
39
|
+
return axios.get(`${CONTEXT}/manage/app/list`)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function getMaxTabNumValueApi() {
|
|
43
|
+
return axios.get(`${CONTEXT}/ipm/bc/basic/item/getMaxTabNum`)
|
|
44
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { axios } from '@/utils'
|
|
2
|
+
import { config } from '@/config'
|
|
3
|
+
|
|
4
|
+
const CONTEXT = config.authServerContext
|
|
5
|
+
|
|
6
|
+
export function loginApi({ userName, password, validCodeId, validCodeInput }) {
|
|
7
|
+
const data = { username: userName, password, validCodeId, validCodeInput }
|
|
8
|
+
return axios.formPost(CONTEXT + '/sso/login', data)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function getUserInfoApi() {
|
|
12
|
+
return axios.get(`${CONTEXT}/manage/user/getCurrentInfo`)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function getGlobalPolicyApi() {
|
|
16
|
+
return axios.get(`${CONTEXT}/anon/user/getGlobalPolicy`)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function updatePasswordApi(data) {
|
|
20
|
+
return axios.post(`${CONTEXT}/manage/user/updatePassword`, data)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function getCaptchaURL(validCodeId: string) {
|
|
24
|
+
return `${CONTEXT}/anon/user/getCaptcha/` + validCodeId
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function logoutApi() {
|
|
28
|
+
return axios.get(`${CONTEXT}/sso/logout`)
|
|
29
|
+
}
|
package/src/api/user.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
// 配置显示在浏览器标签的title
|
|
3
|
+
title: '',
|
|
4
|
+
// icomId
|
|
5
|
+
icomId: '',
|
|
6
|
+
// 是否展示菜单
|
|
7
|
+
showMenus: false,
|
|
8
|
+
// 路由base路径
|
|
9
|
+
routerBase: 'ind',
|
|
10
|
+
// 登录页的路由name
|
|
11
|
+
loginRouteName: 'login',
|
|
12
|
+
// 根路由name
|
|
13
|
+
rootRouteName: 'root',
|
|
14
|
+
// 首页的路由name
|
|
15
|
+
homeRouteName: 'home',
|
|
16
|
+
// auth-server 登录认证组件
|
|
17
|
+
authServerContext: '/user-manage-server',
|
|
18
|
+
// 文件上传组件
|
|
19
|
+
ossServerContext: '/user-manage-server',
|
|
20
|
+
// ism-am-server
|
|
21
|
+
ismAmServerContext: '/ind-ism-am-server',
|
|
22
|
+
// ism-ac-server
|
|
23
|
+
ismAcServerContext: '/ind-ism-ac-server',
|
|
24
|
+
// ism-sq-server
|
|
25
|
+
ismSqServerContext: '/ind-ism-sq-server',
|
|
26
|
+
// ilm-server
|
|
27
|
+
ilmServerContext: '/ind-ilm-server',
|
|
28
|
+
// uc-ext-server
|
|
29
|
+
ucExtServerContext: '/ind-uc-ext-server',
|
|
30
|
+
// kkfilepreview 预览文件组件
|
|
31
|
+
kkfilepreviewContext: '/kkfilepreview',
|
|
32
|
+
// 错误文案
|
|
33
|
+
errorMessage: '系统开小差了,请稍后尝试',
|
|
34
|
+
// 用户即将过期提醒,用户距离过期天数小于等于leftLockDays提醒用户修改密码
|
|
35
|
+
leftLockDays: 7,
|
|
36
|
+
// 查询条件title所占宽度
|
|
37
|
+
labelStyle: {
|
|
38
|
+
labelWidthButton: 50,
|
|
39
|
+
labelWidthSmall: 100 + 40,
|
|
40
|
+
labelWidthMiddle: 120 + 40,
|
|
41
|
+
labelWidthMiddleLarge: 140 + 40,
|
|
42
|
+
labelWidthLarge: 160 + 40,
|
|
43
|
+
labelWidthSuperLarge: 180 + 40,
|
|
44
|
+
},
|
|
45
|
+
/** 点击跳转的文字颜色 */
|
|
46
|
+
linkColor: '#488AFF',
|
|
47
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import baseConfig from './base.config'
|
|
2
|
+
import { getDevConfig } from './dev.config'
|
|
3
|
+
import { getProdConfig } from './prod.config'
|
|
4
|
+
|
|
5
|
+
export function useConfig(isDev?: boolean) {
|
|
6
|
+
return isDev
|
|
7
|
+
? Object.assign({}, baseConfig, getDevConfig())
|
|
8
|
+
: Object.assign({}, baseConfig, getProdConfig())
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const config = useConfig()
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { getSessionStorage, setSessionStorage } from '@/utils/storage'
|
|
2
|
+
|
|
3
|
+
const DICT_KEY = 'ind-dict_'
|
|
4
|
+
|
|
5
|
+
export function getDictCache(dictId: string) {
|
|
6
|
+
return getSessionStorage(`${DICT_KEY}${dictId}`)
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function setDictCache(dictId: string, data: any) {
|
|
10
|
+
setSessionStorage(`${DICT_KEY}${dictId}`, data)
|
|
11
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { getSessionStorage, setSessionStorage, removeSessionStorage } from '@/utils/storage'
|
|
2
|
+
|
|
3
|
+
const PERMISSION_KEY = 'ibp-permission'
|
|
4
|
+
|
|
5
|
+
export function getPermissionCache() {
|
|
6
|
+
return getSessionStorage(PERMISSION_KEY)
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function setPermissionCache(data: any) {
|
|
10
|
+
setSessionStorage(PERMISSION_KEY, data)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function clearPermissionCache() {
|
|
14
|
+
removeSessionStorage(PERMISSION_KEY)
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { getLocalStorage, removeLocalStorage, setLocalStorage } from '@/utils/storage'
|
|
2
|
+
|
|
3
|
+
const USER_INFO_KEY = 'userInfo'
|
|
4
|
+
|
|
5
|
+
export function getUserInfoCache() {
|
|
6
|
+
return getLocalStorage(USER_INFO_KEY)
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function setUserInfoCache(data: any) {
|
|
10
|
+
setLocalStorage(USER_INFO_KEY, data)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function clearUserInfoCache() {
|
|
14
|
+
removeLocalStorage(USER_INFO_KEY)
|
|
15
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import dayjs from 'dayjs'
|
|
2
|
+
|
|
3
|
+
export function str2Date(value: string): Date {
|
|
4
|
+
if (value) {
|
|
5
|
+
return dayjs(value, ['YYYYMMDDHHmmss', 'YYYYMMDDHHmm', 'YYYYMMDD', 'YYYYMM', 'YYYY']).toDate()
|
|
6
|
+
} else {
|
|
7
|
+
return null
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function formatDate(value: string): string {
|
|
12
|
+
if (value) {
|
|
13
|
+
switch (value.length) {
|
|
14
|
+
case 14: {
|
|
15
|
+
return dayjs(value, ['YYYYMMDDHHmmss']).format('YYYY-MM-DD HH:mm:ss')
|
|
16
|
+
}
|
|
17
|
+
case 12: {
|
|
18
|
+
return dayjs(value, ['YYYYMMDDHHmmss']).format('YYYY-MM-DD HH:mm')
|
|
19
|
+
}
|
|
20
|
+
case 8: {
|
|
21
|
+
return dayjs(value, ['YYYYMMDD']).format('YYYY-MM-DD')
|
|
22
|
+
}
|
|
23
|
+
case 6: {
|
|
24
|
+
return dayjs(value, ['YYYYMM']).format('YYYY-MM')
|
|
25
|
+
}
|
|
26
|
+
case 4: {
|
|
27
|
+
return value.substring(0, 2) + '-' + value.substring(2, 2)
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
} else {
|
|
31
|
+
return '-'
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function formatDateChinese(value: string): string {
|
|
36
|
+
if (value) {
|
|
37
|
+
switch (value.length) {
|
|
38
|
+
case 14: {
|
|
39
|
+
return dayjs(value, ['YYYYMMDDHHmmss']).format('YYYY年MM月DD日 HH:mm:ss')
|
|
40
|
+
}
|
|
41
|
+
case 12: {
|
|
42
|
+
return dayjs(value, ['YYYYMMDDHHmmss']).format('YYYY年MM月DD日 HH:mm')
|
|
43
|
+
}
|
|
44
|
+
case 8: {
|
|
45
|
+
return dayjs(value, ['YYYYMMDD']).format('YYYY年MM月DD日')
|
|
46
|
+
}
|
|
47
|
+
case 6: {
|
|
48
|
+
return dayjs(value, ['YYYYMM']).format('YYYY年MM月')
|
|
49
|
+
}
|
|
50
|
+
case 4: {
|
|
51
|
+
return value.substring(0, 2) + '年' + value.substring(2, 2) + '月'
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
} else {
|
|
55
|
+
return '-'
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { isArray } from './is-type'
|
|
2
|
+
import _ from 'lodash'
|
|
3
|
+
|
|
4
|
+
/** 是否枚举的key */
|
|
5
|
+
export const IS_OR_NOT_ENUM_KEY = 'IS_ENUM'
|
|
6
|
+
/** 是否枚举的map形式 */
|
|
7
|
+
export const IS_OR_NOT_ENUM = { '1': '是', '0': '否' }
|
|
8
|
+
/** 是否枚举的list形式 */
|
|
9
|
+
export const IS_OR_NOT_ENUM_LIST = [
|
|
10
|
+
{ K: '1', V: '是' },
|
|
11
|
+
{ K: '0', V: '否' },
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
// 中台相关枚举,暂时写死
|
|
15
|
+
export const UC_ENUM = {
|
|
16
|
+
MANAGE_UNIT_ID: '00000000000000000000000020370001', // 管理单元Id
|
|
17
|
+
ORG_CODE_ADMIN: 'default', // 行政树类型
|
|
18
|
+
ORG_CODE_MKT: '08', // 营销业务树类型
|
|
19
|
+
ORG_CODE_LOG: '08', // 物流业务树类型,之前说要分开建的,现在和营销一个树
|
|
20
|
+
ORG_CODE_ACTIVITY: '08', // 宣促业务树类型,之前说要分开建的,现在和营销一个树
|
|
21
|
+
ADMIN_LEVEL_IND: '01', // 行政树组织级别 - 工业公司
|
|
22
|
+
ADMIN_LEVEL_CENTER: '02', // 行政树组织级别 - 营销中心
|
|
23
|
+
ADMIN_LEVEL_FAC: '03', // 行政树组织级别 - 卷烟厂
|
|
24
|
+
ADMIN_LEVEL_DIST: '04', // 行政树组织级别 - 区域
|
|
25
|
+
ADMIN_LEVEL_COMMON_DEPT: '08', // 行政树组织级别 - 普通部门
|
|
26
|
+
ADMIN_LEVEL_COMMON_POST: '80', // 行政树组织级别 - 普通岗位
|
|
27
|
+
LEVEL_IND: '01', // 业务树组织级别 - 工业公司
|
|
28
|
+
LEVEL_CENTER: '02', // 业务树组织级别 - 营销中心
|
|
29
|
+
LEVEL_FAC: '02', // 业务树组织级别 - 卷烟厂
|
|
30
|
+
LEVEL_DIST: '04', // 业务树组织级别 - 普通卷烟营销的区域
|
|
31
|
+
LEVEL_CIGAR_DIST: '05', // 业务树组织级别 - 雪茄片区
|
|
32
|
+
LEVEL_COMMON_DEPT: '03', // 业务树组织级别 - 普通部门
|
|
33
|
+
LEVEL_COMMON_POST: '80', // 业务树组织级别 - 普通岗位
|
|
34
|
+
LEVEL_DIST_MANAGE_POST: '81', // 业务树组织级别 - 区域经理岗位
|
|
35
|
+
LEVEL_CUST_MANAGE_POST: '82', // 业务树组织级别 - 客户经理岗位
|
|
36
|
+
LEVEL_CIGAR_DIST_MANAGE_POST: '83', // 业务树组织级别 - 雪茄片区经理岗位
|
|
37
|
+
LEVEL_CIGAR_CUST_MANAGE_POST: '84', // 业务树组织级别 - 雪茄客户经理岗位
|
|
38
|
+
LEVEL_INTERNAL_POST: '85', // 业务树组织级别 - 内勤岗位
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* 将自定义的列表转换为枚举列表格式,如
|
|
43
|
+
* ```
|
|
44
|
+
* let list = [{ brandId: '0916', brandName: '泰山' }]
|
|
45
|
+
* renderEnumList(list, 'brandId', 'brandName') // 返回 [{ K: '0916', V: '泰山' }]
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @param list 枚举列表
|
|
49
|
+
* @param kProp key对应属性名
|
|
50
|
+
* @param vProp value对应属性名
|
|
51
|
+
* @returns 公共组件可直接使用的枚举列表
|
|
52
|
+
*/
|
|
53
|
+
export function renderEnumList(list = [], kProp = 'K', vProp = 'V') {
|
|
54
|
+
return list.map((item) => ({ K: item[kProp], V: item[vProp] }))
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* 将自定义的列表转换为枚举对象格式,如
|
|
59
|
+
* ```
|
|
60
|
+
* let list = [{ brandId: '0916', brandName: '泰山' }]
|
|
61
|
+
* renderEnumData(list, 'brandId', 'brandName') // 返回 { '0916': '泰山' }
|
|
62
|
+
* ```
|
|
63
|
+
* @param list 枚举列表
|
|
64
|
+
* @param kProp key对应属性名
|
|
65
|
+
* @param vProp value对应属性名
|
|
66
|
+
* @returns 公共组件可直接使用的枚举对象
|
|
67
|
+
*/
|
|
68
|
+
export function renderEnumData(list = [], kProp = 'K', vProp = 'V') {
|
|
69
|
+
return list.reduce((item) => ({ ...item, [item[kProp]]: item[vProp] }), {})
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* 统一处理表格列定义的枚举列
|
|
74
|
+
* - 由于表格组件不方便获取枚举数据,需要各业务先获取枚举数据后,重新组织列定义
|
|
75
|
+
* - 需通过特定接口获取的数据可以经 `renderEnumList` 或 `renderEnumData` 处理成枚举后使用
|
|
76
|
+
*
|
|
77
|
+
* @param columns 列定义,对type为 `enum` 或 `select` 的列进行处理
|
|
78
|
+
* @param enumRelation 枚举数据,支持多个枚举,格式为 `{ '枚举Id1': [{ K: '', V: ''}] }` 或 `{ '枚举Id1': { 'K': 'V' } }`
|
|
79
|
+
* @returns 新的列定义
|
|
80
|
+
*/
|
|
81
|
+
export function renderColumnEnums(columns = [], enumRelation = {}) {
|
|
82
|
+
const rlt = _.cloneDeep(columns)
|
|
83
|
+
const enumKeys = Object.keys(enumRelation)
|
|
84
|
+
|
|
85
|
+
rlt.forEach((column) => {
|
|
86
|
+
const key = column.field || column.key
|
|
87
|
+
const isType = ['enum', 'select'].includes(column.type)
|
|
88
|
+
if (enumKeys.includes(key) && isType) {
|
|
89
|
+
if (!column.cellRendererParams) {
|
|
90
|
+
column.cellRendererParams = {}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const enums = enumRelation[key]
|
|
94
|
+
if (column.type === 'enum') {
|
|
95
|
+
if (isArray(enums)) {
|
|
96
|
+
column.cellRendererParams.enumList = enums
|
|
97
|
+
} else {
|
|
98
|
+
column.cellRendererParams.enumData = enums
|
|
99
|
+
}
|
|
100
|
+
} else if (column.type === 'select') {
|
|
101
|
+
column.cellRendererParams.datas = enums
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
})
|
|
105
|
+
return rlt
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* 统一处理表单的类枚举列
|
|
110
|
+
* - 用于处理需特定接口获取数据的列表
|
|
111
|
+
* - 获取数据后可以经 `renderEnumList` 或 `renderEnumData` 处理成枚举后使用
|
|
112
|
+
*
|
|
113
|
+
* @param fieldList 表单项定义,其中对 `formKey` 和 `enumRelation` 的属性匹配上的表单项进行处理
|
|
114
|
+
* @param enumRelation 枚举数据,支持多个枚举,格式为 `{ '枚举Id1': [{ K: '', V: ''}] }` 或 `{ '枚举Id1': { 'K': 'V' } }`
|
|
115
|
+
* @returns 新的表单定义
|
|
116
|
+
*/
|
|
117
|
+
export function renderFieldEnums(fieldList = [], enumRelation = {}) {
|
|
118
|
+
const rlt = _.cloneDeep(fieldList)
|
|
119
|
+
const enumKeys = Object.keys(enumRelation)
|
|
120
|
+
|
|
121
|
+
rlt.forEach((field) => {
|
|
122
|
+
const key = field.formKey
|
|
123
|
+
if (enumKeys.includes(key)) {
|
|
124
|
+
const enums = enumRelation[key]
|
|
125
|
+
if (isArray(enums)) {
|
|
126
|
+
field.enumList = enums
|
|
127
|
+
} else {
|
|
128
|
+
field.enumData = enums
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
})
|
|
132
|
+
return rlt
|
|
133
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
function onFn() {
|
|
2
|
+
if (document.addEventListener) {
|
|
3
|
+
return function (element, event, handler) {
|
|
4
|
+
if (element && event && handler) {
|
|
5
|
+
element.addEventListener(event, handler, false)
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
} else {
|
|
9
|
+
return function (element, event: string, handler: EventListenerOrEventListenerObject) {
|
|
10
|
+
if (element && event && handler) {
|
|
11
|
+
element.attachEvent('on' + event, handler)
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function offFn() {
|
|
18
|
+
if (window.document.removeEventListener) {
|
|
19
|
+
return function (
|
|
20
|
+
element: HTMLElement,
|
|
21
|
+
event: string,
|
|
22
|
+
handler: EventListenerOrEventListenerObject,
|
|
23
|
+
) {
|
|
24
|
+
if (element && event) {
|
|
25
|
+
element.removeEventListener(event, handler, false)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
} else {
|
|
29
|
+
return function (element, event: string, handler: EventListenerOrEventListenerObject) {
|
|
30
|
+
if (element && event) {
|
|
31
|
+
element.detachEvent('on' + event, handler)
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @description 绑定事件 on(element, event, handler)
|
|
39
|
+
*/
|
|
40
|
+
export function on(element, event, handler) {
|
|
41
|
+
const fn = onFn()
|
|
42
|
+
fn(element, event, handler)
|
|
43
|
+
return fn
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @description 解绑事件 off(element, event, handler)
|
|
48
|
+
*/
|
|
49
|
+
export function off(element, event, handler) {
|
|
50
|
+
const fn = offFn()
|
|
51
|
+
fn(element, event, handler)
|
|
52
|
+
return fn
|
|
53
|
+
}
|