fix(healthMonitor): 修复健康监测模块中的组织机构数据显示和绑定功能

- 在sectoralData.data.ts中添加单位名称列的颜色渲染,三级单位显示为红色
- 在sectoralDataList.vue中添加组织代码长度限制,小于6位时禁用明细和导出功能
- 修复toolManagement组件中bindModal.vue的参数传递问题
- 修改toolManagement.data.ts中部门选择器的默认值和禁用状态
- 移除重复的单位名称表单项并优化搜索表单的组织机构选择逻辑
- 添加单位名称列到员工表格中并调整搜索表单的字段映射
This commit is contained in:
2026-04-30 16:50:55 +08:00
parent 34e1590382
commit fdce66d761
4 changed files with 98 additions and 57 deletions
@@ -3,6 +3,7 @@ import { message } from 'ant-design-vue';
import { allSecondaryDepartsNew, getThirdDepartsNew } from '/@/utils/system/api'; import { allSecondaryDepartsNew, getThirdDepartsNew } from '/@/utils/system/api';
import moment from 'moment'; import moment from 'moment';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import { h } from 'vue';
export const columns: BasicColumn[] = [ export const columns: BasicColumn[] = [
{ {
@@ -133,6 +134,10 @@ export const columnsNew: BasicColumn[] = [
{ {
title: '单位名称', title: '单位名称',
dataIndex: ['orgCodeName'], dataIndex: ['orgCodeName'],
customRender: ({ text, record }) => {
const isRed = record?.orgCode?.length === 3;
return h('span', { style: isRed ? { color: 'red' } : {} }, text);
},
}, },
{ {
title: '部门名称', title: '部门名称',
@@ -88,20 +88,23 @@
const [registerTable, { reload, getForm }] = tableContext; const [registerTable, { reload, getForm }] = tableContext;
function getTableAction(record: any) { function getTableAction(record: any) {
let orgCodeLenth = record?.orgCode?.length;
let flag = record?.orgCodeLeafName == '-'; let flag = record?.orgCodeLeafName == '-';
return [ return [
{ {
label: '明细', label: '明细',
onClick: handleDetail.bind(null, record), onClick: handleDetail.bind(null, record),
disabled: orgCodeLenth < 6,
}, },
{ {
label: '明细导出', label: '明细导出',
onClick: handleExport.bind(null, record), onClick: handleExport.bind(null, record),
disabled: orgCodeLenth < 6,
}, },
{ {
label: '周报', label: '周报',
onClick: handleWeekReport.bind(null, record), onClick: handleWeekReport.bind(null, record),
disabled: !flag, disabled: !flag || orgCodeLenth < 6,
}, },
]; ];
} }
@@ -105,7 +105,7 @@
// orgCodeSecond:data.record?.orgCode // orgCodeSecond:data.record?.orgCode
}); });
bindUserId.value = data.record?.bindUserId; bindUserId.value = data.record?.bindUserId;
paramsInfo.value = { orgCode: data.record?.orgCode }; paramsInfo.value = { orgCode: 'A01' };
await clearValidate(); await clearValidate();
// 隐藏底部时禁用整个表单 // 隐藏底部时禁用整个表单
await setProps({ disabled: !data?.showFooter }); await setProps({ disabled: !data?.showFooter });
@@ -211,21 +211,16 @@ export const formSchema: FormSchema[] = [
field: 'deptId', field: 'deptId',
required: true, required: true,
component: 'ApiSelect', component: 'ApiSelect',
componentProps: ({ formModel }) => { defaultValue: '1683768826307096578',
const { getVal: getVal1, disabled: disabled1 } = initD(); show: false,
getVal1('id'); componentProps: () => {
return { return {
api: allSecondaryDepartsNew, api: allSecondaryDepartsNew,
resultField: 'result', resultField: 'result',
labelField: 'departName', labelField: 'departName',
immediate: true, immediate: true,
valueField: 'id', valueField: 'id',
disabled: disabled1, disabled: true,
afterFetch: (res: any) => {
if (res.length === 1) {
formModel.deptId = res[0].id;
}
},
getPopupContainer: () => document.body, getPopupContainer: () => document.body,
showSearch: true, showSearch: true,
filterOption: (input: string, option: any): boolean => { filterOption: (input: string, option: any): boolean => {
@@ -326,40 +321,40 @@ export const rkFormSchema: FormSchema[] = [
required: true, required: true,
slot: 'file', slot: 'file',
}, },
{ // {
label: '单位名称', // label: '单位名称',
field: 'deptId', // field: 'deptId',
component: 'ApiSelect', // component: 'ApiSelect',
required: true, // required: true,
componentProps: ({ formModel, schema }) => { // componentProps: ({ formModel, schema }) => {
const { getVal, disabled } = initD(); // const { getVal, disabled } = initD();
getVal('id'); // getVal('id');
return { // return {
api: allSecondaryDepartsNew, // api: allSecondaryDepartsNew,
resultField: 'list', // resultField: 'list',
labelField: 'departName', // labelField: 'departName',
valueField: 'id', // valueField: 'id',
immediate: true, // immediate: true,
onChange: (val: any) => { // onChange: (val: any) => {
if (val) { // if (val) {
formModel['orgId'] = ''; // formModel['orgId'] = '';
} // }
}, // },
onDeselect: () => { // onDeselect: () => {
formModel.deptId = ''; // formModel.deptId = '';
formModel['orgId'] = ''; // formModel['orgId'] = '';
}, // },
showSearch: true, // showSearch: true,
filterOption: (input: string, option: any): boolean => { // filterOption: (input: string, option: any): boolean => {
const str: string = input.toLowerCase(); // const str: string = input.toLowerCase();
return option.label.toLowerCase().indexOf(str) >= 0; // return option.label.toLowerCase().indexOf(str) >= 0;
}, // },
disabled: disabled, // disabled: disabled,
getPopupContainer: () => document.body, // getPopupContainer: () => document.body,
}; // };
}, // },
}, // },
{ /*{
label: '部门名称', label: '部门名称',
field: 'orgId', field: 'orgId',
component: 'ApiSelect', component: 'ApiSelect',
@@ -390,7 +385,7 @@ export const rkFormSchema: FormSchema[] = [
}; };
}, },
show: false, show: false,
}, },*/
]; ];
// 绑定导入 // 绑定导入
export const bindUserFormSchema: FormSchema[] = [ export const bindUserFormSchema: FormSchema[] = [
@@ -726,6 +721,11 @@ export const mColumns: BasicColumn[] = [
dataIndex: 'realname', dataIndex: 'realname',
align: 'center', align: 'center',
}, },
{
title: '单位名称',
dataIndex: ['secondDepart', 'departName'],
align: 'center',
},
{ {
title: '部门名称', title: '部门名称',
dataIndex: ['depart', 'departName'], dataIndex: ['depart', 'departName'],
@@ -737,7 +737,7 @@ export const mColumns: BasicColumn[] = [
align: 'center', align: 'center',
}, },
]; ];
export const mSearchFormSchema = (orgCode) => { export const mSearchFormSchema = (orgCode = 'orgCode', orgCode1 = 'orgCode1', threeOrgCode = 'threeOrgCode') => {
const schemaInfo: FormSchema[] = [ const schemaInfo: FormSchema[] = [
{ {
label: '员工姓名', label: '员工姓名',
@@ -746,33 +746,66 @@ export const mSearchFormSchema = (orgCode) => {
}, },
{ {
label: '单位', label: '单位名称',
field: 'orgCode', field: orgCode1,
component: 'Input', component: 'ApiSelect',
defaultValue: orgCode, componentProps: ({ formModel, schema }) => {
show: false, return {
api: allSecondaryDepartsNew,
resultField: 'list',
labelField: 'departName',
valueField: 'orgCode',
placeholder: '请选择单位',
showSearch: true,
filterOption: (input: string, option: any): boolean => {
const str: string = input.trim().toLowerCase();
return option.departName.toLowerCase().indexOf(str) >= 0;
},
onChange: (val) => {
// 选中单位时,orgCode 赋值为单位的 orgCode,并清空部门
formModel[orgCode] = val || '';
formModel[threeOrgCode] = '';
},
onDeselect: () => {
formModel[orgCode] = '';
formModel[orgCode1] = '';
formModel[threeOrgCode] = '';
},
};
},
}, },
{ {
label: '部门名称', label: '部门名称',
field: 'threeOrgCode', field: threeOrgCode,
component: 'ApiSelect', component: 'ApiSelect',
componentProps: ({ formModel }) => { componentProps: ({ formModel }) => {
console.log(formModel, '11111111111');
return { return {
api: getThirdDepartsNew, api: getThirdDepartsNew,
resultField: 'list', resultField: 'list',
labelField: 'departName', labelField: 'departName',
params: {
idOrCode: formModel?.orgCode || '12313',
},
valueField: 'orgCode', valueField: 'orgCode',
placeholder: '请选择部门',
showSearch: true,
params: {
idOrCode: formModel[orgCode1] || '12313',
},
immediate: true, immediate: true,
style: { style: {
width: '195px', width: '195px',
}, },
onChange: (val) => {
// 选中部门时覆盖 orgCode,清空时回退到单位的 orgCode
formModel[orgCode] = val || formModel[orgCode1] || '';
},
}; };
}, },
}, },
{
label: '',
field: orgCode,
component: 'Input',
show: false,
},
{ {
label: '员工编号', label: '员工编号',
field: 'workNo', field: 'workNo',