fix(加班申请、工作报告、我的绩效): 重构页面样式、修复一系列bug、对不合理的地方进行调整。

This commit is contained in:
dk
2026-06-22 23:07:21 +08:00
parent b1d52b852f
commit 632c123112
30 changed files with 1574 additions and 451 deletions

View File

@@ -5,6 +5,21 @@ import TableSearchFields, { type SearchField } from '@/components/custom/table-s
defineOptions({ name: 'OvertimeApplicationSearch' });
interface Option {
label: string;
value: string | number;
}
interface Props {
teamMode?: boolean;
subordinateOptions?: Option[];
}
const props = withDefaults(defineProps<Props>(), {
teamMode: false,
subordinateOptions: () => []
});
const emit = defineEmits<{
reset: [];
search: [];
@@ -15,7 +30,7 @@ const model = defineModel<Api.OvertimeApplication.OvertimeApplicationSearchParam
});
const searchModel = reactive<Record<string, any>>({
applicantName: '',
applicantIds: undefined,
overtimeDate: undefined,
statusCode: undefined,
approverName: ''
@@ -26,11 +41,10 @@ const statusOptions = ref<Array<{ label: string; value: string }>>([]);
let syncingFromSource = false;
watch(
() =>
[model.value.applicantName, model.value.overtimeDate, model.value.statusCode, model.value.approverName] as const,
([applicantName, overtimeDate, statusCode, approverName]) => {
() => [model.value.applicantIds, model.value.overtimeDate, model.value.statusCode, model.value.approverName] as const,
([applicantIds, overtimeDate, statusCode, approverName]) => {
syncingFromSource = true;
searchModel.applicantName = applicantName ?? '';
searchModel.applicantIds = applicantIds;
searchModel.overtimeDate = overtimeDate;
searchModel.statusCode = statusCode;
searchModel.approverName = approverName ?? '';
@@ -40,14 +54,14 @@ watch(
);
watch(
() =>
[searchModel.applicantName, searchModel.overtimeDate, searchModel.statusCode, searchModel.approverName] as const,
([applicantName, overtimeDate, statusCode, approverName]) => {
() => [searchModel.applicantIds, searchModel.overtimeDate, searchModel.statusCode, searchModel.approverName] as const,
([applicantIds, overtimeDate, statusCode, approverName]) => {
if (syncingFromSource) {
return;
}
model.value.applicantName = applicantName?.trim() || undefined;
model.value.applicantIds = applicantIds;
model.value.applicantName = undefined;
model.value.overtimeDate = overtimeDate;
model.value.statusCode = statusCode;
model.value.approverName = approverName?.trim() || undefined;
@@ -73,33 +87,47 @@ onMounted(async () => {
await loadStatusOptions();
});
const fields = computed<SearchField[]>(() => [
{
key: 'applicantName',
label: '申请人',
type: 'input',
placeholder: '请输入申请人'
},
{
key: 'overtimeDate',
label: '加班日期',
type: 'dateRange',
placeholder: '请选择加班日期'
},
{
key: 'statusCode',
label: '状态',
type: 'select',
options: statusOptions.value,
placeholder: '请选择状态'
},
{
key: 'approverName',
label: '审批人',
type: 'input',
placeholder: '请输入审批人'
const fields = computed<SearchField[]>(() => {
const baseFields: SearchField[] = [
...(props.teamMode
? [
{
key: 'applicantIds',
label: '申请人',
type: 'select' as const,
options: props.subordinateOptions,
placeholder: '请选择申请人',
transformValue: (value: string | number | null | undefined) => (value ? [value] : undefined),
resolveValue: (value: unknown) => (Array.isArray(value) ? value[0] : value)
}
]
: []),
{
key: 'overtimeDate',
label: '加班日期',
type: 'dateRange',
placeholder: '请选择加班日期'
},
{
key: 'statusCode',
label: '状态',
type: 'select',
options: statusOptions.value,
placeholder: '请选择状态'
}
];
if (props.teamMode) {
baseFields.push({
key: 'approverName',
label: '审批人',
type: 'input',
placeholder: '请输入审批人'
});
}
]);
return baseFields;
});
function handleReset() {
emit('reset');