Files
xj-admin/src/views/consult/resource/conResource.data.ts
T
lianlonggang eeb1496483 feat(upload): 配置文件上传组件的业务路径和文本提示
- 在 JImageUpload 组件中添加 bizPath 属性以指定上传路径
- 为头像上传功能统一设置 bizPath: 'avatar'
- 为图片上传功能设置 bizPath: 'img'
- 为视频上传功能设置 bizPath: 'video'
- 为PDF文件上传设置 bizPath: 'bizfile'
- 为APP文件上传设置 bizPath: 'appfile'
- 添加 text 属性统一显示 '上传头像' 提示文本
- 在系统横幅管理中配置图片上传的业务路径
- 为新资源管理模块添加完整的数据结构定义
2026-04-30 08:56:14 +08:00

365 lines
10 KiB
TypeScript

import { BasicColumn } from '/@/components/Table';
import { FormSchema } from '/@/components/Table';
import { getDefaultImage, getFileAccessHttpUrl } from '/@/utils/common/compUtils';
import { h } from 'vue';
import { EyeOutlined } from '@ant-design/icons-vue';
import { Image } from 'ant-design-vue';
import { render } from '/@/utils/common/renderUtils';
import { getDoctor } from '/@/views/consult/resource/conResource.api';
import { message } from 'ant-design-vue';
//列表数据
export const columns: BasicColumn[] = [
{
title: '序号',
align: 'center',
width: 80,
customRender: ({ index }) => {
return index + 1;
},
},
{
title: '医院名称',
align: 'center',
dataIndex: 'resourceName',
},
{
title: '主图',
align: 'center',
dataIndex: 'img',
width: 100,
customRender: ({ text }) => {
return h(Image, {
placeholder: true,
src: getFileAccessHttpUrl(text),
height: 50,
width: 50,
fallback: getDefaultImage(),
previewMask: () => {
return h(EyeOutlined, {
style: {
color: 'white',
},
});
},
});
},
},
{
title: '详细地址',
align: 'center',
dataIndex: 'address',
},
// {
// title: '医院类型',
// align: 'center',
// dataIndex: 'type',
// customRender: ({ text }) => {
// return render.renderDict(text, 'h_type');
// },
// },
{
title: '医院级别',
align: 'center',
dataIndex: 'level',
customRender: ({ text }) => {
return render.renderDict(text, 'hospital_level');
},
},
{
title: '是否置顶',
align: 'center',
dataIndex: 'tfTop',
customRender: ({ text }) => (text === 1 ? '是' : '否'),
},
{
title: '排序',
align: 'center',
dataIndex: 'sort',
},
{
title: '状态',
align: 'center',
dataIndex: 'status',
customRender: ({ text }) => {
if (text == '1') {
return '正常';
} else {
return '冻结';
}
},
},
];
//查询数据
export const searchFormSchema: FormSchema[] = [
{
label: '医院名称',
field: 'resourceName',
component: 'Input',
},
{
label: '地址',
field: 'province',
component: 'Input',
},
{
label: '医院级别',
field: 'level',
component: 'JDictSelectTag',
componentProps: {
dictCode: 'hospital_level',
},
},
// {
// label: '医院类型',
// field: 'type',
// component: 'JDictSelectTag',
// componentProps: {
// dictCode: 'h_type',
// },
// },
];
const validate = async (_rule, value) => {
if (!value) {
return Promise.reject('请选择状态');
} else {
return Promise.resolve();
}
};
const departmentValidator = async (_rule, value) => {
if (!value || !value.length) {
return Promise.reject('请选择院内科室');
}
return Promise.resolve();
};
//表单数据
export const formSchema: FormSchema[] = [
{
label: '',
field: 'id',
component: 'Input',
show: false,
},
{
label: '医院名称',
field: 'resourceName',
component: 'Input',
required: true,
rules: [{ required: true, message: '请输入医院名称!' }],
},
// {
// label: '医院类型',
// field: 'type',
// component: 'JDictSelectTag',
// componentProps: {
// dictCode: 'h_type',
// },
// rules: [{ required: true }],
// },
{
label: '医院级别',
field: 'level',
component: 'JDictSelectTag',
componentProps: {
dictCode: 'hospital_level',
},
rules: [{ required: true }],
},
{
label: '医院主图',
field: 'img',
component: 'JImageUpload',
componentProps: {
bizPath: 'img',
fileMax: 1,
},
rules: [{ required: false }],
},
{
label: '状态',
field: 'status',
component: 'JDictSelectTag',
componentProps: {
options: [
{
value: 1,
label: '正常',
},
{
value: 2,
label: '冻结',
},
],
type: 'radio',
},
rules: [{ required: true, validator: validate, trigger: 'blur' }],
},
{
label: '医院简介',
field: 'synopsis',
component: 'InputTextArea',
componentProps: {
showCount: true,
rows: 4,
},
rules: [{ required: true }],
},
{
label: '医院介绍',
field: 'resourceDetail',
component: 'JEditor',
rules: [{ required: true }],
},
{
label: '地址',
field: 'customAddress',
component: 'Input',
slot: 'customAddress',
rules: [{ required: true }],
ifShow: false,
},
{
label: '详细地址',
field: 'address',
component: 'Input',
slot: 'address',
rules: [{ required: true }],
},
{
label: '',
field: 'longitude',
component: 'Input',
show: false,
},
{
label: '',
field: 'latitude',
component: 'Input',
show: false,
},
{
label: '院内科室',
field: 'conDepartmentList',
component: 'JTreeDepartment',
componentProps: ({ formModel }) => {
return {
valueField: 'departmentId',
field: 'departmentId',
allDep: true,
multiple: true,
immediate: true,
treeCheckable: true,
treeCheckStrictly: true,
showCheckedStrategy: 'SHOW_ALL',
checkFather: true,
onChange: (val) => {
if (!val) {
formModel.conSicksList = [];
formModel.conDoctorList = [];
}
},
};
},
rules: [{ required: true, trigger: 'blur', validator: departmentValidator }],
},
{
label: '主治疾病',
field: 'conSicksList',
component: 'ApiSelect',
show: false,
// componentProps: ({ formModel }) => {
// let departmentId = '1321354';
// if (formModel?.conDepartmentList) {
// if (Array.isArray(formModel?.conDepartmentList)) {
// departmentId = formModel?.conDepartmentList?.join(',');
// } else {
// departmentId = formModel?.conDepartmentList;
// }
// }
// return {
// api: getDepartmentList,
// params: {
// departmentId: departmentId,
// isDoctor: false, //通用接口标识 是否是医生的情况下查询疾病
// },
// labelField: 'sicksName',
// valueField: 'id',
// mode: 'multiple',
// immediate: true,
// onFocus: () => {
// if (!formModel?.conDepartmentList || formModel?.conDepartmentList.length < 1) {
// return message.warn('请先选择院内科室');
// }
// },
// disabledInitValue: true,
// getPopupContainer: () => document.body,
// };
// },
},
{
label: '院内专家',
field: 'conDoctorList',
component: 'ApiSelect',
componentProps: ({ formModel }) => {
let departmentId = '1321354';
if (formModel?.conDepartmentList) {
if (Array.isArray(formModel?.conDepartmentList)) {
departmentId = formModel?.conDepartmentList?.join(',');
} else {
departmentId = formModel?.conDepartmentList;
}
}
return {
api: getDoctor,
params: {
departmentId: departmentId,
isAdd: !formModel.id,
},
labelField: 'doctorName',
valueField: 'id',
mode: 'multiple',
immediate: true,
onFocus: () => {
if (!formModel?.conDepartmentList || formModel?.conDepartmentList.length < 1) {
return message.warn('请先选择院内科室');
}
},
// disabledInitValue: true,
getPopupContainer: () => document.body,
disabled: true,
};
},
ifShow: ({ values }) => values?.id,
},
{
label: '是否置顶',
field: 'tfTop',
component: 'RadioGroup',
componentProps: {
options: [
{
label: '是',
value: 1,
},
{
label: '否',
value: 0,
},
],
},
},
{
label: '排序',
field: 'sort',
component: 'InputNumber',
},
];
/**
* 流程表单调用这个方法获取formSchema
* @param _formData
*/
export function getBpmFormSchema(_formData): FormSchema[] {
// 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema
return formSchema;
}