diff --git a/src/api/platform/system/controller/report.ts b/src/api/platform/system/controller/report.ts new file mode 100644 index 0000000..7129399 --- /dev/null +++ b/src/api/platform/system/controller/report.ts @@ -0,0 +1,33 @@ +import {DoctorParams,DoctorItem,DoctorItemListResult} from '/@/api/platform/system/entity/doctorModel'; +import { defHttp } from '/@/utils/http/axios'; +import {isDef} from '/@/utils/is'; + + + + +enum Api { + QueryById = '/system_proxy/system/doctor/query', + list = '/system_proxy/system/doctor/list', + add = '/system_proxy/system/doctor/add', + edit = '/system_proxy/system/doctor/update', + del = '/system_proxy/system/doctor/remove', + get = '/system_proxy/system/doctor' +} + +export const queryById = (params: { id: String }) => + defHttp.get({url: Api.QueryById + `/${params.id}`}); + +/** 查询医生列表 */ +export const listReport = (params?: Partial) => defHttp.get({ url: Api.list, params }, { isReturnResultResponse: true }); + +/** 新增医生*/ +export const addReport = (params: Partial) => defHttp.post({ url: Api.add, data: params }); + +/** 修改医生 */ +export const editReport = (params: Partial) => defHttp.put({ url: Api.edit, data: params }); + +/** 查询医生详细 */ +export const getReport = (id: string) => defHttp.get({ url: `${Api.get}/${id}` }); + +/** 删除医生 */ +export const delReport = (id: string) => defHttp.delete({ url: `${Api.del}/${id}` }); \ No newline at end of file diff --git a/src/api/platform/system/entity/report.ts b/src/api/platform/system/entity/report.ts new file mode 100644 index 0000000..ecf7b95 --- /dev/null +++ b/src/api/platform/system/entity/report.ts @@ -0,0 +1,49 @@ +// 引入基础包 +import type { R } from '/#/axios'; +import type { Page } from '/@/api/common/data/entity'; + +export type DoctorParams = { + name?: string; + beginTime?: string; + endTime?: string; +} & Page; + + +export interface DoctorItem { + + /**医生ID*/ + id: string; + /**医生姓名*/ + name: string; + /**医生职称*/ + title: string; + /**医生性别*/ + sex: string; + /**医生电话*/ + phone: string; + /**医生邮箱*/ + email: string; + /**地址(门牌号)*/ + detailAddress: string; + /**组织类型*/ + organType: string; + /**组织id*/ + organId: string; + /**组织名称*/ + organName: string; + /**科室ID*/ + officeId: string; + /**科室名称*/ + officeName: string; + /**医生状态*/ + status: string; + + createById: string; + + createByName: string; + + createTime: string; + +} + +export type DoctorItemListResult = R; \ No newline at end of file diff --git a/src/views/institution/report/ReportModal.vue b/src/views/institution/report/ReportModal.vue new file mode 100644 index 0000000..7eed8f2 --- /dev/null +++ b/src/views/institution/report/ReportModal.vue @@ -0,0 +1,79 @@ + + diff --git a/src/views/institution/report/index.vue b/src/views/institution/report/index.vue new file mode 100644 index 0000000..a36cbd8 --- /dev/null +++ b/src/views/institution/report/index.vue @@ -0,0 +1,256 @@ + + + diff --git a/src/views/institution/report/report.data.ts b/src/views/institution/report/report.data.ts new file mode 100644 index 0000000..5db1f3a --- /dev/null +++ b/src/views/institution/report/report.data.ts @@ -0,0 +1,430 @@ +import { BasicColumn } from '/@/components/Table'; +import { FormSchema } from '/@/components/Table'; + +export const columns: BasicColumn[] = [ + { + title: '序号', + dataIndex: 'id', + width: 120, + }, + { + title: '送检时间', + dataIndex: 'name', + width: 120, + }, + { + title: '编号', + dataIndex: 'title', + width: 120, + }, + { + title: '姓名-性别-年龄', + dataIndex: 'sex', + width: 120, + }, + { + title: '医院-科室-医生', + dataIndex: 'phone', + width: 120, + }, + { + title: '医检机构', + dataIndex: 'email', + width: 120, + }, + { + title: '平台/医检条码号', + dataIndex: 'detailAddress', + width: 120, + }, + { + title: '送检项目', + dataIndex: 'organType', + width: 120, + + }, + { + title: '检测/打印', + dataIndex: 'officeName', + width: 120, + }, + { + title: '报告时间', + dataIndex: 'status', + width: 100, + + }, + { + title: '收样员', + dataIndex: 'createByName', + width: 180, + }, + { + title: '创建人', + dataIndex: 'createTime', + width: 180, + }, + { + title: '创建时间', + dataIndex: 'createTime', + width: 180, + }, + { + title: '上机状态', + dataIndex: 'createTime', + width: 180, + }, + { + title: '最新打印时间', + dataIndex: 'createTime', + width: 180, + } +]; + +export const searchFormSchema: FormSchema[] = [ + { + field: 'name', + label: ' ', + component: 'Input', + componentProps: { + placeholder: '平台/医检条码号', + }, + colProps: { span: 5 }, + }, + { + field: 'organType', + label: ' ', + component: 'Input', + componentProps: { + placeholder: '送检项目', + }, + colProps: {span: 5} + }, + { + field: 'organType', + label: ' ', + component: 'Input', + componentProps: { + placeholder: '患者姓名/手机/身份证' + }, + colProps: { span: 5 } + }, + { + field: 'status', + label: ' ', + component: 'Select', + componentProps: { + placeholder: '收样员姓名', + }, + colProps: {span: 5} + }, + { + field: 'createByName', + label: ' ', + component: 'Select', + componentProps: { + placeholder: '医院名称', + }, + colProps: {span: 5} + }, + { + field: 'detailAddress', + label: ' ', + component: 'Select', + componentProps: { + placeholder: '科室名称', + }, + colProps: {span: 5} + }, + { + field: 'officeName', + label: ' ', + component: 'Select', + componentProps: { + placeholder: '医生名称', + }, + colProps: {span: 5} + }, + { + field: 'email', + label: ' ', + component: 'Select', + componentProps: { + placeholder: '医检名称', + }, + colProps: {span: 5} + }, + { + field: 'phone', + label: ' ', + component: 'Select', + componentProps: { + options:[ + {label: '未收取',value:'0'}, + {label: '已收取',value:'5'}, + {label: '已送达',value:'10'}, + {label: '已收到',value:'12'}, + {label: '检测中',value:'15'}, + {label: '已出部分结果',value:'17'}, + {label: '已出结果',value:'20'}, + ], + placeholder: '报告单状态', + }, + colProps: {span: 5} + }, + { + field: 'sex', + label: ' ', + component: 'Select', + componentProps: { + options:[ + {label: '检测中',value:'0'}, + {label: '已出结果',value:'1'}, + ], + placeholder: '结果状态', + }, + colProps: {span: 5} + }, + { + field: 'card', + label: ' ', + component: 'Select', + componentProps: { + options:[ + {label: '未打印',value:'0'}, + {label: '已打印',value:'1'}, + ], + placeholder: '打印状态', + }, + colProps: {span: 5} + }, + { + field: 'dateRange', + label: ' ', + component: 'RangePicker', + componentProps: { + + valueFormat: 'YYYY-MM-DD', + placeholder: ['送检开始日期','送检结束日期'] + }, + colProps: { span: 5 } + }, + { + field: 'contactsName', + label: ' ', + component: 'Select', + componentProps: { + options:[ + {label: '条码号异常',value:'1'}, + {label: '姓名/身份证异常',value:'2'}, + {label: '年龄/性别异常',value: '3'}, + {label: '多条结果',value: '4'}, + {label: '报告单结果未全出',value: '7'}, + {label: '认证错误',value: '8'} + ], + placeholder: '异常状态', + }, + colProps: {span: 5} + }, + { + field: 'contactsTel', + label: ' ', + component: 'Input', + componentProps: { + placeholder: '采样编号', + }, + colProps: {span: 5} + }, + { + field: 'contactsTitle', + label: ' ', + component: 'Select', + defaultValue: '1', + componentProps: { + options:[ + {label: '正常',value:'1'}, + {label: '已删除',value:'-1'}, + ], + placeholder: '状态', + }, + colProps: {span: 5} + }, +]; + +export const doctorFormSchema: FormSchema[] = [ + { + field: 'id', + label: '医院名称', + component: 'Select', + componentProps:{ + + }, + required: true, + }, + { + field: 'name', + label: '科室名称', + component: 'Select', + componentProps:{ + + }, + required: true + }, + { + field: 'title', + label: '医生名称', + component: 'Select', + componentProps:{ + + }, + required: true, + }, + { + field: 'title', + label: '项目名称', + component: 'Input', + required: true, + }, + { + field: 'title', + label: '医院项目', + component: 'Select', + componentProps:{ + + }, + required: true, + }, + { + field: 'title', + label: '医检名称', + component: 'Select', + componentProps:{ + + }, + required: true, + }, + { + field: 'title', + label: '科室名称', + component: 'Select', + componentProps:{ + + }, + required: true, + }, + { + field: 'title', + label: '患者姓名', + component: 'Input', + required: true, + }, + { + field: 'sex', + label: '患者性别', + component: 'Select', + required: false, + defaultValue: 'M', + componentProps: { + options: [ + { label: '男', value: 'M' }, + { label: '女', value: 'F' }, + ] + } + }, + { + field: 'phone', + label: '医生电话', + component: 'Input', + rules: [ + { + pattern: new RegExp('^1[3|4|5|6|7|8|9][0-9]\\d{8}$'), + message: '请输入正确的手机号', + validateTrigger: 'change', + required: true + } + ], + }, + { + field: 'email', + label: '医生邮箱', + component: 'Input', + rules: [ + { + type: 'email', + message: '请输入正确的邮箱', + validateTrigger: 'change', + required: true + } + ], + }, + { + field: 'detailAddress', + label: '地址', + component: 'Input', + required: false, + }, + { + field: 'organType', + label: '所属组织类型', + component: 'Select', + componentProps: { + options: [ + { label: '医院', value: '1' }, + { label: '医检', value: '2' } + ] + }, + required: true, + }, + // { + // field: 'organId', + // label: '所属组织', + // component: 'ApiSelect', + // required: true, + // renderComponentContent: ({ schema, values, model, field }) => { + // const organType = model.organType; + // watch(organType, + // () => { + // const dataApi = organType=='1' ? hospitalList : institutionList; + // console.log(schema); + // schema.componentProps = deepMerge({ + // api: dataApi, + // labelField: 'name', + // valueField: 'id' + // }); + // }, + // { + // immediate: true, + // } + // ); + // } + // }, + // { + // field: 'officeId', + // label: '所属科室', + // component: 'ApiSelect', + // componentProps: { + // mode: 'multiple', + // resultField: 'list', + // labelField: 'name', + // valueField: 'id', + // api: officeList, + // }, + // }, + { + field: 'status', + label: '状态', + component: 'RadioButtonGroup', + defaultValue: '0', + componentProps: { + options: [ + { label: '启用', value: '0' }, + { label: '禁用', value: '1' }, + ], + }, + }, + { + label: '备注', + field: 'remarks', + component: 'InputTextArea', + } +]; \ No newline at end of file