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; }