Merge remote-tracking branch 'origin/user_data_permission'
This commit is contained in:
@@ -10,6 +10,14 @@ export function listUser(query) {
|
||||
})
|
||||
}
|
||||
|
||||
// 查询用户下拉选项(登录即可访问,仅含 id/账号/姓名/部门等展示字段)
|
||||
export function optionUserList() {
|
||||
return request({
|
||||
url: '/system/user/optionselect',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 查询用户详细
|
||||
export function getUser(userId) {
|
||||
return request({
|
||||
|
||||
@@ -8,17 +8,17 @@
|
||||
:loading="loading"
|
||||
:size="size"
|
||||
:multiple="false"
|
||||
value-on-clear="null"
|
||||
style="width: 100%;"
|
||||
@change="handleChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.userId"
|
||||
:label="item.nickName || item.userName"
|
||||
:label="formatLabel(item)"
|
||||
:value="String(item.userId)"
|
||||
:disabled="item.status === '1'"
|
||||
>
|
||||
<span>{{ item.nickName || item.userName }}</span>
|
||||
<span>{{ item.nickName || item.userName }}<template v-if="item.status === '1'">(停用)</template></span>
|
||||
<span
|
||||
v-if="showCode && item.userName"
|
||||
class="user-select-sub"
|
||||
@@ -83,6 +83,12 @@ const options = computed(() => {
|
||||
return list
|
||||
})
|
||||
|
||||
/** 选项文本:停用用户追加(停用)标记,便于编辑历史数据时识别 */
|
||||
function formatLabel(item) {
|
||||
const name = item.nickName || item.userName
|
||||
return item.status === '1' ? `${name}(停用)` : name
|
||||
}
|
||||
|
||||
function handleChange(val) {
|
||||
const value = val === '' ? null : val
|
||||
emit('update:modelValue', value)
|
||||
|
||||
@@ -1,20 +1,26 @@
|
||||
import { ref } from 'vue'
|
||||
import { listUser } from '@/api/system/user'
|
||||
import { optionUserList } from '@/api/system/user'
|
||||
|
||||
/**
|
||||
* 用户列表模块级共享缓存:整个应用只拉取一次,UserSelect / UserName 共用
|
||||
* 走 /system/user/optionselect(登录即可),不依赖 system:user:list 权限,
|
||||
* 避免销售等业务角色页面出现403提示、下拉无数据。
|
||||
*/
|
||||
const userList = ref([])
|
||||
let loadingPromise = null
|
||||
|
||||
export function useUsers() {
|
||||
/** 确保用户列表已加载(force=true 强制刷新) */
|
||||
/** 确保用户列表已加载(force=true 强制刷新);失败时返回空数组,避免未捕获的 Promise 异常 */
|
||||
function ensureUsers(force = false) {
|
||||
if (!force && loadingPromise) return loadingPromise
|
||||
if (!force && userList.value.length) return Promise.resolve(userList.value)
|
||||
loadingPromise = listUser({ pageNum: 1, pageSize: 1000 })
|
||||
loadingPromise = optionUserList()
|
||||
.then(res => {
|
||||
userList.value = res.rows || []
|
||||
userList.value = res.data || []
|
||||
return userList.value
|
||||
})
|
||||
.catch(() => {
|
||||
userList.value = []
|
||||
return userList.value
|
||||
})
|
||||
.finally(() => {
|
||||
|
||||
Reference in New Issue
Block a user