czh-20260616-更换选人组件;调深系统颜色

This commit is contained in:
zhihao
2026-06-16 15:10:07 +08:00
parent 6dc90eddf8
commit bb68283128
11 changed files with 101 additions and 60 deletions
+2
View File
@@ -82,6 +82,7 @@ import RoleSelectInput from './jeecg/components/roleSelect/RoleSelectInput.vue';
import {DatePickerInFilter, CascaderPcaInFilter} from "@/components/InFilter";
import SzSelectUser from '@/components/semri/userComponent/SzUserSelect.vue';
import SzSelectUserByDept from '@/components/semri/userComponent/SzSelectUserByDept.vue';
import SzDeptUserSelect from '@/components/semri/deptUserComponent/SzDeptUserModal.vue';
const componentMap = new Map<ComponentType, Component>();
@@ -182,6 +183,7 @@ componentMap.set('RoleSelect', RoleSelectInput);
componentMap.set('JInputSelect', JInputSelect);
componentMap.set('SzSelectUser', SzSelectUser);
componentMap.set('SzSelectUserByDept',SzSelectUserByDept)
componentMap.set('SzDeptUserSelect', SzDeptUserSelect)
export function add(compName: ComponentType, component: Component) {
componentMap.set(compName, component);
@@ -1,6 +1,6 @@
<template>
<div>
<a-row class="j-select-row" type="flex" :gutter="8">
<a-row v-if="!hideTrigger" class="j-select-row" type="flex" :gutter="8">
<a-col class="left">
<a-select
:value="selectDisplayValue"
@@ -18,7 +18,7 @@
</a-row>
<a-modal
:width="1200"
title="选择人员"
:title="title"
v-model:open="visible"
centered
:confirm-loading="confirmLoading"
@@ -60,6 +60,9 @@ const props = withDefaults(
isSpecial?: number;
disabled?: boolean;
multi?: boolean;
valueKey?: 'id' | 'username';
title?: string;
hideTrigger?: boolean;
}>(),
{
value: '',
@@ -69,10 +72,13 @@ const props = withDefaults(
isSpecial: 0,
disabled: false,
multi: true,
valueKey: 'username',
title: '选择人员',
hideTrigger: false,
}
);
const emit = defineEmits(['update:value', 'change']);
const emit = defineEmits(['update:value', 'change', 'confirm']);
const userStore = useUserStore();
const visible = ref(false);
@@ -100,11 +106,12 @@ watch(
{ immediate: true }
);
async function loadUsersByUsernames(usernames: string) {
async function loadUsersByUsernames(valueStr: string) {
try {
const paramKey = props.valueKey === 'id' ? 'id' : 'username';
const res: any = await defHttp.get({
url: '/sys/user/queryUserComponentData',
params: { username: usernames, isMultiTranslate: 'true', pageNo: 1, pageSize: 9999 },
params: { [paramKey]: valueStr, isMultiTranslate: 'true', pageNo: 1, pageSize: 9999 },
});
innerSelectedUsers.value = [...(res.records || res)];
} catch {
@@ -118,6 +125,17 @@ function openModal() {
visible.value = true;
}
async function open() {
if (props.disabled) return;
if (props.value) {
await loadUsersByUsernames(props.value);
} else {
innerSelectedUsers.value = [];
}
tempSelectedUsers.value = [...innerSelectedUsers.value];
visible.value = true;
}
function handleTempUsersChange(users: UserItem[]) {
tempSelectedUsers.value = [...users];
}
@@ -128,15 +146,19 @@ function clearTemp() {
function handleOk() {
innerSelectedUsers.value = [...tempSelectedUsers.value];
const usernames = innerSelectedUsers.value.map((u) => u.username).join(',');
emit('update:value', usernames);
emit('change', usernames);
const keyValue = innerSelectedUsers.value.map((u) => u[props.valueKey]).join(',');
const nameValue = innerSelectedUsers.value.map((u) => u.realname).join(',');
emit('update:value', keyValue);
emit('change', keyValue);
emit('confirm', keyValue, nameValue);
visible.value = false;
}
function handleCancel() {
visible.value = false;
}
defineExpose({ open });
</script>
<style lang="less" scoped>
@@ -38,7 +38,7 @@
:columns="columns"
:data-source="dataSource"
:pagination="ipagination"
:row-selection="{ selectedRowKeys: selectedRowKeys, onSelectAll: onSelectAll, onSelect: onSelect, type: getType }"
:row-selection="{ selectedRowKeys: selectedRowKeys, onSelectAll: onSelectAll, onSelect: onSelect, type: getType, preserveSelectedRowKeys: true }"
:loading="loading"
@change="handleTableChange"
:custom-row="customRow"
@@ -291,22 +291,20 @@ function onSelect(record: UserItem, selected: boolean) {
} else {
deleteIfExist(selectedRows.value, record, 'id');
}
selectedRows.value.sort((a, b) => (a.sortno || 0) - (b.sortno || 0));
emit('update:checkedUser', selectedRows.value);
}
function onSelectAll(selected: boolean, selectedRecords: UserItem[], changeRecords: UserItem[]) {
function onSelectAll(selected: boolean, _selectedRecords: UserItem[], changeRecords: UserItem[]) {
const changedRows = Array.isArray(changeRecords) ? changeRecords.filter(Boolean) : [];
if (selected) {
selectedRecords.forEach((item) => {
changedRows.forEach((item) => {
pushIfNotExist(selectedRows.value, item, 'id');
});
} else {
const rowsToRemove = changeRecords && changeRecords.length > 0 ? changeRecords : dataSource.value;
rowsToRemove.forEach((item) => {
changedRows.forEach((item) => {
deleteIfExist(selectedRows.value, item, 'id');
});
}
selectedRows.value.sort((a, b) => (a.sortno || 0) - (b.sortno || 0));
emit('update:checkedUser', selectedRows.value);
}
@@ -345,7 +343,6 @@ function selectAll() {
allUserList.value.forEach((item) => {
pushIfNotExist(selectedRows.value, item, 'id');
});
selectedRows.value.sort((a, b) => (a.sortno || 0) - (b.sortno || 0));
emit('update:checkedUser', selectedRows.value);
}
@@ -370,7 +367,6 @@ function customRow(record: UserItem) {
} else {
pushIfNotExist(selectedRows.value, record, 'id');
}
selectedRows.value.sort((a, b) => (a.sortno || 0) - (b.sortno || 0));
emit('update:checkedUser', selectedRows.value);
},
};