@yqg/permission 1.3.2-alpha.1 → 1.3.2
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/dist/{apply-modal-BNdUCpv3.js → apply-modal-bqIJ2QXS.js} +12 -7
- package/dist/{category-selector-DN93T2dR.js → category-selector-B8MH3Q3G.js} +69 -68
- package/dist/{index-wZrMoTve.js → index-CzfXAbzR.js} +3 -3
- package/dist/{index-C8n_Swh6.js → index-u37w35am.js} +3 -3
- package/dist/index.js +2 -2
- package/dist/{permission-item-BSOmY3P3.js → permission-item-BlYq3oFU.js} +4 -4
- package/dist/{yqg-permission-80IS5NzA.js → yqg-permission-owkq3rvu.js} +2388 -2440
- package/dist/yqg-permission.umd.js +55 -55
- package/package.json +1 -1
- package/src/App.vue +3 -5
- package/src/components/apply-modal.vue +8 -3
- package/src/components/category-selector.vue +4 -3
- package/src/components/yqg-permission.vue +11 -7
- package/src/i18n/en-US.ts +50 -50
- package/src/i18n/index.ts +2 -5
- package/src/i18n/zh-CH.ts +8 -0
- package/src/utils/index.ts +2 -17
- package/src/i18n/in-ID.ts +0 -57
package/package.json
CHANGED
package/src/App.vue
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import {
|
|
2
|
+
import {ref} from 'vue';
|
|
3
3
|
import {Button} from 'ant-design-vue';
|
|
4
4
|
|
|
5
5
|
// 中英印尼菲律宾
|
|
@@ -8,9 +8,7 @@ type LocaleType = 'zh-CN' | 'en-US' | 'id-ID' | 'fil-PH';
|
|
|
8
8
|
const color = ref<string>('#1677ff');
|
|
9
9
|
const locale = ref<LocaleType>('zh-CN');
|
|
10
10
|
|
|
11
|
-
const permissions =
|
|
12
|
-
'yewei0313.REAQS.DEPAWED_ANQ2.QUERY',
|
|
13
|
-
]);
|
|
11
|
+
const permissions = ref('CALL_CENTER.DATA_BUSINESS.QUERY,CALL_CENTER.ENTER_ADMIN,CALL_CENTER.USER.QUERY,CALL_CENTER.USER.MANAGE,CALL_CENTER.BUSINESS.QUERY,CALL_CENTER.SKILL_GROUP.QUERY');
|
|
14
12
|
// const permissions = reactive(['CRANE.BUSINESS.QUERY', 'RANE.BUSINESS.CREATE', 'CRANE.BUSINESS.UPDATE', 'CRANE.BUSINESS.DELETE']);
|
|
15
13
|
const changeColor = () => {
|
|
16
14
|
color.value = color.value === '#f00' ? '#1677ff' : '#f00';
|
|
@@ -31,7 +29,7 @@ const changeLocale = () => {
|
|
|
31
29
|
<!-- 03541 -->
|
|
32
30
|
<!-- 02124 -->
|
|
33
31
|
<!-- 05184 -->
|
|
34
|
-
<yqg-permission :permissions="permissions" workNumber="
|
|
32
|
+
<yqg-permission :permissions="permissions" workNumber="05615" :color="color" :locale="locale"
|
|
35
33
|
@onSuccess="() => {console.log('成功')}">
|
|
36
34
|
</yqg-permission>
|
|
37
35
|
</div>
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<Modal v-model:open="open" width="1100px" :maskClosable="false">
|
|
2
|
+
<Modal v-model:open="open" width="1100px" :maskClosable="false" :zIndex="zIndex">
|
|
3
3
|
<template #footer>
|
|
4
4
|
<Button @click="open = false" v-show="!isAllChecked && permissionList.length">{{ t('cancel') }}</Button>
|
|
5
5
|
<Button type="primary" @click="handleOk" :loading="loading">{{ t('submit') }}</Button>
|
|
6
6
|
</template>
|
|
7
7
|
<template #title>
|
|
8
8
|
<span>{{ t('permissionApply') }}</span>
|
|
9
|
-
<span v-show="isAllChecked && permissionList.length" class="crane-permission-title-tips">{{
|
|
9
|
+
<span v-show="isAllChecked && permissionList.length" class="crane-permission-title-tips">{{
|
|
10
|
+
t('isAllOwnTips') }}</span>
|
|
10
11
|
</template>
|
|
11
12
|
<Form ref="formRef" :model="formState" :labelCol="{ span: 4 }" :wrapperCol="{ span: 19 }">
|
|
12
13
|
<FormItem :label="t('applyPermission')" name="features"
|
|
@@ -110,7 +111,11 @@ const props = defineProps({
|
|
|
110
111
|
isAllChecked: {
|
|
111
112
|
type: Boolean,
|
|
112
113
|
default: false
|
|
113
|
-
}
|
|
114
|
+
},
|
|
115
|
+
zIndex: {
|
|
116
|
+
type: Number,
|
|
117
|
+
default: 1000
|
|
118
|
+
},
|
|
114
119
|
|
|
115
120
|
});
|
|
116
121
|
const emit = defineEmits(['onSubmit', 'onSuccess']);
|
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
v-show="categoryValuesMap[item.id]?.length"
|
|
9
9
|
:rules="[{ required: true, message: t('pleaseChoose'), trigger: ['change', 'blur'] }]">
|
|
10
10
|
<TreeSelect treeCheckable treeDefaultExpandAll :tree-data="categoryValuesMap[item.id]" showSearch
|
|
11
|
-
allowClear v-model:value="item.attributeValueIds_view"
|
|
12
|
-
v-model:searchValue="searchValue"
|
|
13
|
-
|
|
11
|
+
:getPopupContainer="() => $el" allowClear v-model:value="item.attributeValueIds_view"
|
|
12
|
+
treeNodeFilterProp="attributeName" v-model:searchValue="searchValue"
|
|
13
|
+
:fieldNames="{ label: 'attributeName', value: 'id' }" treeNodeLabelProp="attributeName"
|
|
14
|
+
:show-checked-strategy="SHOW_PARENT">
|
|
14
15
|
<template #title="{ attributeName }">
|
|
15
16
|
<span v-if="searchValue.toLowerCase() && attributeName.includes(searchValue.toLowerCase())"
|
|
16
17
|
style="color: #1677ff; font-weight: bold;">{{ attributeName
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
colorPrimary: props.color,
|
|
5
5
|
}
|
|
6
6
|
}">
|
|
7
|
-
<div class="crane-wraper"
|
|
7
|
+
<div class="crane-wraper">
|
|
8
8
|
<template v-if="[COM_TYPE.FLOATBUTTON, COM_TYPE.TEXT].includes(type)">
|
|
9
9
|
<FloatButton ref="dragElement" type="primary" :tooltip="t('clickToApply')" :style="{
|
|
10
10
|
right: RIGHT_DEFAULT,
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
</div>
|
|
43
43
|
<div>
|
|
44
44
|
<Button class="crane-margin-right10" @click="goViewApproval">{{ t('viewApprovalDetail')
|
|
45
|
-
|
|
45
|
+
}}</Button>
|
|
46
46
|
<Button type="primary" @click="showModal">+ {{ t('applyMore') }}</Button>
|
|
47
47
|
</div>
|
|
48
48
|
</template>
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
64
|
|
|
65
|
-
<ApplyModal v-model="open" :permissionList="permissionList" :spining="loading" :workNumber="workNumber"
|
|
65
|
+
<ApplyModal v-model="open" :permissionList="permissionList" :spining="loading" :workNumber="workNumber" :zIndex="zIndex"
|
|
66
66
|
:defaultCheckedIds="defaultCheckedIds" :isAllChecked="isAllChecked" @onSuccess="() => emit('onSuccess')"
|
|
67
67
|
@onSubmit="getPermissions">
|
|
68
68
|
</ApplyModal>
|
|
@@ -75,7 +75,7 @@ import { Button, ConfigProvider, Popover, message, FloatButton } from 'ant-desig
|
|
|
75
75
|
import applyIconUrl from '@/assets/applyicon.png';
|
|
76
76
|
import noauthority from '@/assets/noauthority.png';
|
|
77
77
|
import Http from '../axios/index';
|
|
78
|
-
import t
|
|
78
|
+
import t from '../utils';
|
|
79
79
|
import useDraggable from '../hooks/useDragable';
|
|
80
80
|
import useStatus from '../hooks/useStatus';
|
|
81
81
|
import useFormat from '../hooks/useFormat';
|
|
@@ -112,7 +112,7 @@ const props = defineProps({
|
|
|
112
112
|
},
|
|
113
113
|
locale: {
|
|
114
114
|
type: String,
|
|
115
|
-
default: 'zh'
|
|
115
|
+
default: 'zh-CN'
|
|
116
116
|
},
|
|
117
117
|
color: {
|
|
118
118
|
type: String,
|
|
@@ -125,7 +125,11 @@ const props = defineProps({
|
|
|
125
125
|
top: {
|
|
126
126
|
type: String,
|
|
127
127
|
default: '100px'
|
|
128
|
-
}
|
|
128
|
+
},
|
|
129
|
+
zIndex: {
|
|
130
|
+
type: Number,
|
|
131
|
+
default: 10000
|
|
132
|
+
},
|
|
129
133
|
});
|
|
130
134
|
|
|
131
135
|
const open = ref(false);
|
|
@@ -188,7 +192,7 @@ watchEffect(() => {
|
|
|
188
192
|
});
|
|
189
193
|
watch(() => props.locale, (cur, pre) => {
|
|
190
194
|
if (cur === pre) return;
|
|
191
|
-
|
|
195
|
+
localStorage.setItem('permission_locale', props.locale);
|
|
192
196
|
}, { immediate: true });
|
|
193
197
|
</script>
|
|
194
198
|
|
package/src/i18n/en-US.ts
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
1
|
export default {
|
|
2
|
-
permissionApply: '
|
|
3
|
-
applyPermission: '
|
|
4
|
-
applyReason: '
|
|
5
|
-
approvalProcess: '
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
2
|
+
permissionApply: '权限申请',
|
|
3
|
+
applyPermission: '申请权限',
|
|
4
|
+
applyReason: '申请理由',
|
|
5
|
+
approvalProcess: '审批流程',
|
|
6
|
+
applyReasonPlaceholder: '请尽可能详细说明申请原因和使用场景,不要只填写“工作需要”之类的理由,以免影响你获取权限的审批时间。',
|
|
7
|
+
applyReasonTips: '示例:由于XX项目需要,需要查看/操作XXXX场景/问题,涉及到XXX权限的使用,因此提交申请!',
|
|
8
|
+
cancel: '取消',
|
|
9
|
+
submit: '确定',
|
|
10
|
+
close: '关闭',
|
|
11
|
+
viewApprovalDetail: '查看审批详情',
|
|
12
|
+
applyMore: '继续申请其他权限',
|
|
13
|
+
successTips: '已提交申请,审批通过后可拥有相关权限',
|
|
14
|
+
resoultTitle: '操作结果反馈',
|
|
15
|
+
start: '发起',
|
|
16
|
+
end: '结束',
|
|
17
|
+
noNeed: '无需审批',
|
|
18
|
+
adaptDepartment: '适用部门',
|
|
19
|
+
noApprovalProcess: '无审批流程',
|
|
20
|
+
excessTips: '一次最多可申请{number}个权限',
|
|
21
|
+
unavailableTips: '您暂无权限查看/操作该页面,请点击下方按钮进行申请',
|
|
22
|
+
appliedTips: '权限已申请,正在{status}...',
|
|
23
|
+
unapplyTips: '您暂无权限查看/操作该页面,且该页面中没有您可以申请的权限,',
|
|
24
|
+
callManager: '如有需要请联系系统管理员',
|
|
25
|
+
manager: '系统管理员',
|
|
26
|
+
availableTime: '有效期',
|
|
27
|
+
selectPlaceholder: '请选择权限点',
|
|
28
|
+
reasonPlaceholder: '请输入申请理由',
|
|
29
|
+
maxCountTips: '一次最多只可申请{count}个权限',
|
|
30
|
+
maxLengthTips: '最多{length}个字符',
|
|
31
|
+
lastDays: '{count}天后到期',
|
|
32
|
+
taday: '今天到期',
|
|
33
|
+
clickToApply: '点击申请权限',
|
|
34
|
+
noPermissionTips: '该菜单下暂无权限点',
|
|
35
|
+
availiables: {
|
|
36
|
+
SEVEN_DAYS: '7天',
|
|
37
|
+
THIRTY_DAYS: '30天',
|
|
38
|
+
SIXTY_DAYS: '60天',
|
|
39
|
+
NINETY_DAYS: '90天',
|
|
40
|
+
FOREVER: '永久有效',
|
|
41
|
+
},
|
|
42
42
|
levels: {
|
|
43
|
-
L1: '
|
|
44
|
-
L2: '
|
|
45
|
-
L3: '
|
|
43
|
+
L1: '低',
|
|
44
|
+
L2: '中',
|
|
45
|
+
L3: '高',
|
|
46
46
|
},
|
|
47
47
|
status: {
|
|
48
|
-
PENDING: '
|
|
49
|
-
NO: '
|
|
50
|
-
OWNER: '
|
|
51
|
-
TEMP_OWNER: '
|
|
48
|
+
PENDING: '审批中',
|
|
49
|
+
NO: '不可申请',
|
|
50
|
+
OWNER: '永久拥有',
|
|
51
|
+
TEMP_OWNER: '临时拥有',
|
|
52
52
|
},
|
|
53
53
|
operationType: {
|
|
54
|
-
QUERY: '
|
|
55
|
-
MANAGE: '
|
|
54
|
+
QUERY: '查询',
|
|
55
|
+
MANAGE: '操作',
|
|
56
56
|
}
|
|
57
|
-
};
|
|
57
|
+
};
|
package/src/i18n/index.ts
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import enUS from './en-US';
|
|
2
2
|
import zhCH from './zh-CH';
|
|
3
|
-
import inID from './in-ID';
|
|
4
3
|
|
|
5
4
|
const language: {
|
|
6
5
|
[key: string]: any;
|
|
7
6
|
} = {
|
|
8
|
-
'zh': zhCH,
|
|
9
|
-
'en': enUS,
|
|
10
|
-
'id': inID,
|
|
7
|
+
'zh-CN': zhCH,
|
|
8
|
+
'en-US': enUS,
|
|
11
9
|
};
|
|
12
10
|
|
|
13
|
-
|
|
14
11
|
export default language;
|
package/src/i18n/zh-CH.ts
CHANGED
|
@@ -39,6 +39,14 @@ export default {
|
|
|
39
39
|
category: '数据权限',
|
|
40
40
|
categotySelectTips: '上方选中的权限包含数据权限,请根据实际工作需要申请/更改数据范围。',
|
|
41
41
|
categoryChangeTips: '提醒:您选择的数据权限范围较大!请确认实际工作场景是否需要全量「{category}」权限,并在申请理由中写明,避免审批不通过!',
|
|
42
|
+
availiables: {
|
|
43
|
+
SEVEN_DAYS: '7天',
|
|
44
|
+
THIRTY_DAYS: '30天',
|
|
45
|
+
SIXTY_DAYS: '60天',
|
|
46
|
+
NINETY_DAYS: '90天',
|
|
47
|
+
ONE_YEARS: '1年',
|
|
48
|
+
FOREVER: '永久有效',
|
|
49
|
+
},
|
|
42
50
|
levels: {
|
|
43
51
|
L1: '低',
|
|
44
52
|
L2: '中',
|
package/src/utils/index.ts
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import language from '../i18n';
|
|
2
2
|
|
|
3
|
-
const localkey = 'yqg_permission_sdk_locale';
|
|
4
|
-
|
|
5
3
|
type optionsType = {
|
|
6
4
|
[key: string]: any;
|
|
7
5
|
};
|
|
8
6
|
const t = (key: string, options?: optionsType) => {
|
|
9
7
|
// key的格式为:'xxx.xxx.xxx'//国际化todo
|
|
10
|
-
const en = localStorage.getItem(
|
|
11
|
-
console.log('en', localStorage.getItem(localkey));
|
|
8
|
+
const en = localStorage.getItem('permission_locale') || 'zh-CN';
|
|
12
9
|
const keys = key.split('.');
|
|
13
|
-
let result = language[en as string] || language['en'];
|
|
10
|
+
let result = language[en as string] || language['en-US'];
|
|
14
11
|
for (let i = 0; i < keys.length; i++) {
|
|
15
12
|
result = result[keys[i]];
|
|
16
13
|
}
|
|
@@ -57,15 +54,3 @@ export const deepTree = (tree: any[], fn: (item:any) => void) => {
|
|
|
57
54
|
}
|
|
58
55
|
|
|
59
56
|
export default t;
|
|
60
|
-
|
|
61
|
-
export const setLocale = (locale: string) => {
|
|
62
|
-
let finalLocale = '';
|
|
63
|
-
if (locale.startsWith('zh')) {
|
|
64
|
-
finalLocale = 'zh';
|
|
65
|
-
} else if (locale.startsWith('en')) {
|
|
66
|
-
finalLocale = 'en';
|
|
67
|
-
} else if (locale.startsWith('id') || locale.startsWith('in')) {
|
|
68
|
-
finalLocale = 'id';
|
|
69
|
-
}
|
|
70
|
-
localStorage.setItem(localkey, finalLocale);
|
|
71
|
-
}
|
package/src/i18n/in-ID.ts
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
permissionApply: 'Aplikasi Izin',
|
|
3
|
-
applyPermission: 'Ajukan Izin',
|
|
4
|
-
applyReason: 'Alasan Pengajuan',
|
|
5
|
-
approvalProcess: 'Proses Persetujuan',
|
|
6
|
-
isAllOwnTips: 'Halaman saat ini sudah memiliki izin atau sedang dalam proses persetujuan, tidak perlu mengajukan permohonan',
|
|
7
|
-
applyReasonPlaceholder: 'Harap jelaskan alasan pengajuan dan skenario penggunaan selengkap mungkin. Hindari hanya menyebutkan "kebutuhan kerja" untuk mencegah penundaan dalam proses persetujuan.',
|
|
8
|
-
applyReasonTips: 'Contoh: Karena kebutuhan proyek XX, perlu melihat/mengoperasikan skenario/masalah XXXX, yang melibatkan penggunaan izin XXX, oleh karena itu mengajukan permohonan ini!',
|
|
9
|
-
cancel: 'Batal',
|
|
10
|
-
submit: 'Konfirmasi',
|
|
11
|
-
close: 'Tutup',
|
|
12
|
-
viewApprovalDetail: 'Lihat Detail Persetujuan',
|
|
13
|
-
applyMore: 'Ajukan Izin Lainnya',
|
|
14
|
-
successTips: 'Pengajuan telah dikirim. Izin terkait akan diberikan setelah disetujui.',
|
|
15
|
-
resoultTitle: 'Umpan Balik Hasil Operasi',
|
|
16
|
-
start: 'Mulai',
|
|
17
|
-
end: 'Selesai',
|
|
18
|
-
noNeed: 'Tidak Perlu Persetujuan',
|
|
19
|
-
adaptDepartment: 'Departemen yang Berlaku',
|
|
20
|
-
noApprovalProcess: 'Tidak Ada Proses Persetujuan',
|
|
21
|
-
excessTips: 'Maksimal {number} izin dapat diajukan sekaligus',
|
|
22
|
-
unavailableTips: 'Anda saat ini tidak memiliki izin untuk melihat/mengoperasikan halaman ini. Silakan klik tombol di bawah untuk mengajukan.',
|
|
23
|
-
appliedTips: 'Izin telah diajukan, saat ini {status}...',
|
|
24
|
-
unapplyTips: 'Anda tidak memiliki izin untuk melihat/mengoperasikan halaman ini, dan tidak ada izin yang dapat diajukan di halaman ini.',
|
|
25
|
-
callManager: 'Jika diperlukan, silakan hubungi administrator sistem',
|
|
26
|
-
manager: 'Administrator Sistem',
|
|
27
|
-
availableTime: 'Masa Berlaku',
|
|
28
|
-
selectPlaceholder: 'Silakan pilih titik izin',
|
|
29
|
-
reasonPlaceholder: 'Silakan masukkan alasan pengajuan',
|
|
30
|
-
pleaseChoose: 'Silakan pilih',
|
|
31
|
-
maxCountTips: 'Maksimal {count} izin dapat diajukan sekaligus',
|
|
32
|
-
maxLengthTips: 'Maksimal {length} karakter',
|
|
33
|
-
today: 'Kadaluarsa hari ini',
|
|
34
|
-
clickToApply: 'Klik untuk mengajukan izin',
|
|
35
|
-
noPermissionTips: 'Tidak ada titik izin di menu ini, tidak perlu mengajukan permohonan',
|
|
36
|
-
lastDays: '{count} hari',
|
|
37
|
-
categoryTips: 'Cakupan data Anda saat ini adalah sebagai berikut:',
|
|
38
|
-
empty: 'Kosong',
|
|
39
|
-
category: 'Izin Data',
|
|
40
|
-
categotySelectTips: 'Izin yang dipilih di atas mencakup izin data. Silakan ajukan/ubah cakupan data sesuai kebutuhan kerja aktual.',
|
|
41
|
-
categoryChangeTips: 'Peringatan: Cakupan izin data yang Anda pilih relatif besar! Harap konfirmasi apakah skenario kerja aktual Anda memerlukan akses penuh ke izin 「{category}」, dan jelaskan secara jelas dalam alasan pengajuan untuk menghindari penolakan!',
|
|
42
|
-
levels: {
|
|
43
|
-
L1: 'Rendah',
|
|
44
|
-
L2: 'Sedang',
|
|
45
|
-
L3: 'Tinggi',
|
|
46
|
-
},
|
|
47
|
-
status: {
|
|
48
|
-
PENDING: 'Menunggu Persetujuan',
|
|
49
|
-
NO: 'Tidak Dapat Diajukan',
|
|
50
|
-
OWNER: 'Dimiliki Secara Permanen',
|
|
51
|
-
TEMP_OWNER: 'Dimiliki Sementara',
|
|
52
|
-
},
|
|
53
|
-
operationType: {
|
|
54
|
-
QUERY: 'Kueri',
|
|
55
|
-
MANAGE: 'Operasi',
|
|
56
|
-
}
|
|
57
|
-
};
|