af-mobile-client-vue3 1.1.2 → 1.1.3
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/package.json
CHANGED
|
@@ -30,7 +30,7 @@ interface IUserState {
|
|
|
30
30
|
token?: string
|
|
31
31
|
userInfo: UserInfo
|
|
32
32
|
lastUpdateTime: number
|
|
33
|
-
permissions:
|
|
33
|
+
permissions: string[]
|
|
34
34
|
roles: [{ id: string, operation: string[] }]
|
|
35
35
|
routesConfig: Array<any>
|
|
36
36
|
single: Array<ExtraRouteRecordRaw>
|
|
@@ -119,13 +119,13 @@ export const useUserStore = defineStore('app-user', () => {
|
|
|
119
119
|
userState.value.single.push(page)
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
|
-
const setPermissions = (permissions: [
|
|
122
|
+
const setPermissions = (permissions: []) => {
|
|
123
123
|
userState.value.permissions = permissions
|
|
124
124
|
Storage.set(APP_PERMISSIONS_KEY, permissions)
|
|
125
125
|
}
|
|
126
126
|
const setRoles = (roles: [{ id: string, operation: string[] }]) => {
|
|
127
127
|
userState.value.roles = roles
|
|
128
|
-
Storage.set(
|
|
128
|
+
Storage.set(APP_ROLES_KEY, roles)
|
|
129
129
|
}
|
|
130
130
|
const setRoutesConfig = (routesConfig: Array<any>) => {
|
|
131
131
|
userState.value.routesConfig = routesConfig
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { queryProse } from '@af-mobile-client-vue3/api/mock'
|
|
3
|
+
import { getUserPermissions } from '@af-mobile-client-vue3/services/api/search'
|
|
3
4
|
import { post } from '@af-mobile-client-vue3/services/restTools'
|
|
5
|
+
import useUserStore from '@af-mobile-client-vue3/stores/modules/user'
|
|
4
6
|
import { showToast, Button as VanButton, Cell as VanCell, CellGroup as VanCellGroup } from 'vant'
|
|
5
7
|
import { reactive, ref } from 'vue'
|
|
6
8
|
import { useRouter } from 'vue-router'
|
|
7
9
|
|
|
8
10
|
// 路由
|
|
9
11
|
const router = useRouter()
|
|
12
|
+
// 用户store
|
|
13
|
+
const userStore = useUserStore()
|
|
10
14
|
|
|
11
15
|
// 数据定义
|
|
12
16
|
const requestTypes = ref('GET, POST, DELETE')
|
|
13
17
|
const getResult = ref('')
|
|
14
18
|
const postResult = ref('')
|
|
19
|
+
const permissionsResult = ref('')
|
|
20
|
+
const storePermissionsResult = ref('')
|
|
15
21
|
const postData = reactive({
|
|
16
22
|
name: '',
|
|
17
23
|
value: '',
|
|
@@ -36,6 +42,31 @@ async function handleGetRequest() {
|
|
|
36
42
|
}
|
|
37
43
|
}
|
|
38
44
|
|
|
45
|
+
// 获取用户权限
|
|
46
|
+
async function handleGetPermissions() {
|
|
47
|
+
try {
|
|
48
|
+
const userInfo = userStore.getUserInfo()
|
|
49
|
+
if (!userInfo || !userInfo.id) {
|
|
50
|
+
showToast('请先登录')
|
|
51
|
+
return
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// 从API获取权限
|
|
55
|
+
const permissions = await getUserPermissions(userInfo.id.toString())
|
|
56
|
+
permissionsResult.value = JSON.stringify(permissions, null, 2)
|
|
57
|
+
|
|
58
|
+
// 从Store获取权限
|
|
59
|
+
const storePermissions = userStore.getPermissions()
|
|
60
|
+
storePermissionsResult.value = JSON.stringify(storePermissions, null, 2)
|
|
61
|
+
|
|
62
|
+
showToast('获取权限成功')
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
console.error('获取权限失败:', error)
|
|
66
|
+
showToast('获取权限失败')
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
39
70
|
// 定义请求数据类型
|
|
40
71
|
interface RequestData {
|
|
41
72
|
name: string
|
|
@@ -118,6 +149,24 @@ const userInfo = await get<UserInfo>('/api/user/info')
|
|
|
118
149
|
</div>
|
|
119
150
|
</div>
|
|
120
151
|
|
|
152
|
+
<!-- 用户权限部分 -->
|
|
153
|
+
<div class="request-section">
|
|
154
|
+
<h3>用户权限获取</h3>
|
|
155
|
+
<VanButton type="primary" size="small" @click="handleGetPermissions">
|
|
156
|
+
获取用户权限
|
|
157
|
+
</VanButton>
|
|
158
|
+
|
|
159
|
+
<div v-if="permissionsResult" class="result-box">
|
|
160
|
+
<h4>API请求权限结果:</h4>
|
|
161
|
+
<pre>{{ permissionsResult }}</pre>
|
|
162
|
+
</div>
|
|
163
|
+
|
|
164
|
+
<div v-if="storePermissionsResult" class="result-box">
|
|
165
|
+
<h4>Store缓存权限结果:</h4>
|
|
166
|
+
<pre>{{ storePermissionsResult }}</pre>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
|
|
121
170
|
<!-- 类型定义说明 -->
|
|
122
171
|
<div class="code-section">
|
|
123
172
|
<h3>类型定义</h3>
|
|
@@ -172,7 +172,6 @@ async function afterGeneral(result) {
|
|
|
172
172
|
// 如果result中没有返回 权限 需要主动获取权限列表
|
|
173
173
|
if (!result.permissions) {
|
|
174
174
|
result.permissions = await getUserPermissions(result.id)
|
|
175
|
-
console.log(result.permissions, '====')
|
|
176
175
|
}
|
|
177
176
|
userState.setPermissions(result.permissions)
|
|
178
177
|
userState.setRoles([{ id: 'admin', operation: ['add', 'edit', 'delete'] }])
|