update
init
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
import { defHttp } from '/@/utils/http/axios';
|
||||
import { useMessage } from '/@/hooks/web/useMessage';
|
||||
|
||||
const { createConfirm } = useMessage();
|
||||
|
||||
enum Api {
|
||||
list = '/health-emergency/emergency/emergencySeriousDisease/list',
|
||||
save = '/health-emergency/emergency/emergencySeriousDisease/add',
|
||||
edit = '/health-emergency/emergency/emergencySeriousDisease/edit',
|
||||
deleteOne = '/health-emergency/emergency/emergencySeriousDisease/delete',
|
||||
deleteBatch = '/health-emergency/emergency/emergencySeriousDisease/deleteBatch',
|
||||
importExcel = '/health-emergency/emergency/emergencySeriousDisease/importExcel',
|
||||
exportXls = '/health-emergency/emergency/emergencySeriousDisease/exportXls',
|
||||
queryById = '/health-emergency/emergency/emergencySeriousDisease/queryById',
|
||||
getZHospital = '/health-emergency/api/emergency/resource/selectStationHospitalList',
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出api
|
||||
* @param params
|
||||
*/
|
||||
export const getExportUrl = Api.exportXls;
|
||||
|
||||
export const queryByIdUrl = Api.queryById;
|
||||
|
||||
/**
|
||||
* 导入api
|
||||
*/
|
||||
export const getImportUrl = Api.importExcel;
|
||||
|
||||
/**
|
||||
* 列表接口
|
||||
* @param params
|
||||
*/
|
||||
export const list = (params) => defHttp.get({ url: Api.list, params });
|
||||
export const getZHospitalApi = () => defHttp.get({ url: Api.getZHospital });
|
||||
|
||||
/**
|
||||
* 删除单个
|
||||
*/
|
||||
export const deleteOne = (params, handleSuccess) => {
|
||||
createConfirm({
|
||||
iconType: 'warning',
|
||||
title: '确认删除',
|
||||
content: '是否删除选中数据',
|
||||
okText: '确认',
|
||||
cancelText: '取消',
|
||||
onOk: () =>
|
||||
defHttp.delete({ url: Api.deleteOne, params }, { joinParamsToUrl: true }).then(() => {
|
||||
handleSuccess();
|
||||
}),
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
* @param params
|
||||
* @param handleSuccess
|
||||
*/
|
||||
export const batchDelete = (params, handleSuccess) => {
|
||||
createConfirm({
|
||||
iconType: 'warning',
|
||||
title: '确认删除',
|
||||
content: '是否删除选中数据',
|
||||
okText: '确认',
|
||||
cancelText: '取消',
|
||||
onOk: () => {
|
||||
return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
|
||||
handleSuccess();
|
||||
});
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 保存或者更新
|
||||
* @param params
|
||||
* @param isUpdate
|
||||
*/
|
||||
export const saveOrUpdate = (params, isUpdate) => {
|
||||
const url = isUpdate ? Api.edit : Api.save;
|
||||
return defHttp.post({ url: url, params });
|
||||
};
|
||||
@@ -0,0 +1,438 @@
|
||||
import { BasicColumn } from '/@/components/Table';
|
||||
import { FormSchema } from '/@/components/Table';
|
||||
import { render } from '/@/utils/common/renderUtils';
|
||||
import { getHospitalsList, getNewHospitalApi } from '../../system/user/user.api';
|
||||
import { personType } from '/@/views/emergency/outburst/ScheduleCustom/ScheduleDefault.api';
|
||||
import dayjs from 'dayjs';
|
||||
import { onSitePersonNewApi } from '/@/views/emergency/communication/components/commApi';
|
||||
import { useMessage } from '/@/hooks/web/useMessage';
|
||||
import moment from 'moment';
|
||||
import { getZHospitalApi } from '/@/views/emergency/EmergencySeriousDisease/EmergencySeriousDisease.api';
|
||||
|
||||
const { createMessage } = useMessage();
|
||||
//列表数据
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '就医人员',
|
||||
align: 'center',
|
||||
dataIndex: 'realname',
|
||||
customRender: ({ record }) => {
|
||||
const { realname, sex_dictText, age } = record;
|
||||
return `${realname}-${sex_dictText}-${age}`;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '部门',
|
||||
align: 'center',
|
||||
dataIndex: 'userDepart',
|
||||
},
|
||||
// {
|
||||
// title: '就医人员',
|
||||
// align: 'center',
|
||||
// dataIndex: 'sex_dictText',
|
||||
// ifShow: false,
|
||||
// },
|
||||
{
|
||||
title: '预约医院',
|
||||
align: 'center',
|
||||
dataIndex: 'hospitalName',
|
||||
},
|
||||
{
|
||||
title: '挂号类别',
|
||||
align: 'center',
|
||||
dataIndex: 'registerCategory',
|
||||
customRender: ({ text }) => {
|
||||
return render.renderDict(text, 'category');
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '预约科室',
|
||||
align: 'center',
|
||||
dataIndex: 'reservationOffice',
|
||||
},
|
||||
{
|
||||
title: '预约医生',
|
||||
align: 'center',
|
||||
dataIndex: 'reservationDoctor',
|
||||
},
|
||||
{
|
||||
title: '预约时间',
|
||||
align: 'center',
|
||||
dataIndex: 'reservationTime',
|
||||
// return !text ? '' : text.length > 10 ? text.substr(0, 14) : text;
|
||||
customRender: ({ text }) => {
|
||||
if (text) {
|
||||
return moment(text).format('yyyy-MM-DD HH:mm');
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '期望预约时间',
|
||||
align: 'center',
|
||||
dataIndex: 'desireTime',
|
||||
customRender: ({ text }) => {
|
||||
if (text) {
|
||||
return moment(text).format('yyyy-MM-DD HH:mm');
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
},
|
||||
},
|
||||
// {
|
||||
// title: '真实姓名',
|
||||
// align: 'center',
|
||||
// dataIndex: 'realname',
|
||||
// },
|
||||
{
|
||||
title: '驻场人员',
|
||||
align: 'center',
|
||||
dataIndex: 'stationUserName',
|
||||
},
|
||||
];
|
||||
//查询数据
|
||||
export const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
label: '就医人员',
|
||||
field: 'realname',
|
||||
component: 'Input',
|
||||
colProps: {
|
||||
span: 6,
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '医院',
|
||||
field: 'hospitalId',
|
||||
component: 'ApiSelect',
|
||||
colProps: {
|
||||
span: 6,
|
||||
},
|
||||
componentProps: {
|
||||
api: getNewHospitalApi,
|
||||
resultField: 'list',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
immediate: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '挂号类别',
|
||||
field: 'registerCategory',
|
||||
component: 'JDictSelectTag',
|
||||
colProps: {
|
||||
span: 6,
|
||||
},
|
||||
componentProps: {
|
||||
dictCode: 'category',
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '期望预约时间',
|
||||
field: 'desireTime',
|
||||
component: 'DatePicker',
|
||||
componentProps: {
|
||||
// format: 'YYYY-MM-DD HH:mm',
|
||||
// showTime: { format: 'YYYY-MM-DD HH:mm' },
|
||||
valueFormat: 'YYYY-MM-DD HH:mm:ss',
|
||||
placeholder: '请选择期望预约时间',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
function checkAge(_, value) {
|
||||
if (!value) {
|
||||
return Promise.reject('请输入年龄');
|
||||
}
|
||||
if (!Number.isInteger(value)) {
|
||||
return Promise.reject('年龄必须是整数');
|
||||
}
|
||||
if (Number(value) < 1) {
|
||||
return Promise.reject('请输入正确年龄');
|
||||
} else {
|
||||
return Promise.resolve();
|
||||
}
|
||||
}
|
||||
|
||||
//表单数据
|
||||
// @ts-ignore
|
||||
export const formSchema: FormSchema[] = [
|
||||
{
|
||||
label: '就医人员',
|
||||
field: 'realname',
|
||||
component: 'Input',
|
||||
required: true,
|
||||
componentProps: {
|
||||
placeholder: '请选择就医人员',
|
||||
readOnly: true,
|
||||
onClick: () => {
|
||||
// 弹窗选择所有用户
|
||||
selUserModal.openModal();
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '年龄',
|
||||
field: 'age',
|
||||
component: 'InputNumber',
|
||||
rules: [{ required: true, trigger: 'blur', validator: checkAge }],
|
||||
},
|
||||
{
|
||||
label: '性别',
|
||||
field: 'sex',
|
||||
component: 'JDictSelectTag',
|
||||
required: true,
|
||||
componentProps: {
|
||||
dictCode: 'sex2',
|
||||
type: 'radio',
|
||||
// stringToNumber: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '部门',
|
||||
field: 'userDepart',
|
||||
component: 'Input',
|
||||
ifShow: false,
|
||||
},
|
||||
{
|
||||
label: '手机号码',
|
||||
field: 'telPhone',
|
||||
component: 'Input',
|
||||
rules: [{ required: true, pattern: /^1[3456789]\d{9}$/, message: '${label}格式有误' }],
|
||||
},
|
||||
{
|
||||
label: '身份证号',
|
||||
field: 'idNo',
|
||||
component: 'Input',
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
pattern: /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/,
|
||||
message: '${label}格式有误',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: '',
|
||||
field: 'userId', // 就医人员选中的用户ID
|
||||
component: 'Input',
|
||||
show: false,
|
||||
},
|
||||
{
|
||||
label: '预约医院',
|
||||
field: 'hospitalId',
|
||||
component: 'ApiSelect',
|
||||
required: true,
|
||||
componentProps: ({ formModel }) => {
|
||||
return {
|
||||
api: getZHospitalApi,
|
||||
resultField: 'list',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
immediate: true,
|
||||
onChange: (val, option) => {
|
||||
formModel.hospitalId = val;
|
||||
formModel.stationUserId = '';
|
||||
formModel.stationUserName = '';
|
||||
formModel.hospitalName = option?.label;
|
||||
},
|
||||
onDeselect: () => {
|
||||
formModel.hospitalId = '';
|
||||
formModel.stationUserId = '';
|
||||
formModel.stationUserName = '';
|
||||
},
|
||||
// // 请求后回调
|
||||
// onOptionsChange: (options) => {
|
||||
// console.log('get options', options.length, options);
|
||||
// },
|
||||
onOptionsChange: () => {
|
||||
// console.log("options",options)
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '',
|
||||
field: 'hospitalName', // 医院名称选中的医院ID
|
||||
component: 'Input',
|
||||
show: false,
|
||||
},
|
||||
{
|
||||
label: '就诊卡号',
|
||||
field: 'medicalCardNo',
|
||||
component: 'Input',
|
||||
rules: [
|
||||
{
|
||||
pattern: /^[0-9]*$/,
|
||||
trigger: 'blur',
|
||||
message: '就诊卡号格式有误',
|
||||
required: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: '挂号类别 ',
|
||||
field: 'registerCategory',
|
||||
component: 'JDictSelectTag',
|
||||
required: true,
|
||||
componentProps: {
|
||||
dictCode: 'category',
|
||||
},
|
||||
},
|
||||
// {
|
||||
// label: '预约号',
|
||||
// field: 'reservationNo',
|
||||
// required: true,
|
||||
// component: 'Input',
|
||||
// },
|
||||
{
|
||||
label: '预约时间',
|
||||
field: 'reservationTime',
|
||||
component: 'DatePicker',
|
||||
required: true,
|
||||
componentProps: {
|
||||
format: 'YYYY-MM-DD HH:mm',
|
||||
valueFormat: 'YYYY-MM-DD HH:mm:ss',
|
||||
showTime: { format: 'YYYY-MM-DD HH:mm' },
|
||||
placeholder: '请选择预约时间',
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '期望预约时间',
|
||||
field: 'desireTime',
|
||||
component: 'DatePicker',
|
||||
required: true,
|
||||
componentProps: {
|
||||
format: 'YYYY-MM-DD HH:mm',
|
||||
valueFormat: 'YYYY-MM-DD HH:mm:ss',
|
||||
showTime: { format: 'YYYY-MM-DD HH:mm' },
|
||||
placeholder: '请选择期望预约时间',
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '预约科室',
|
||||
field: 'reservationOffice',
|
||||
component: 'Input',
|
||||
},
|
||||
{
|
||||
label: '预约医生',
|
||||
field: 'reservationDoctor',
|
||||
component: 'Input',
|
||||
},
|
||||
{
|
||||
label: '病情描述',
|
||||
field: 'diseaseDescribe',
|
||||
component: 'InputTextArea',
|
||||
},
|
||||
// {
|
||||
// label: '特殊要求',
|
||||
// field: 'specialRequirements',
|
||||
// component: 'InputTextArea',
|
||||
// },
|
||||
{
|
||||
label: '状态',
|
||||
field: 'state',
|
||||
component: 'JDictSelectTag',
|
||||
componentProps: {
|
||||
dictCode: 'serious_medical_condition',
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '驻场人员',
|
||||
field: 'stationUserId',
|
||||
component: 'ApiSelect',
|
||||
componentProps: ({ formModel }) => {
|
||||
return {
|
||||
getPopupContainer: () => document.body,
|
||||
api: onSitePersonNewApi,
|
||||
params: {
|
||||
personType: '7',
|
||||
hospital: formModel.hospitalId || '@&^*G',
|
||||
pageSize: 999,
|
||||
},
|
||||
resultField: 'list',
|
||||
labelField: 'realname',
|
||||
valueField: 'id',
|
||||
immediate: true,
|
||||
onChange: (e, option) => {
|
||||
formModel.stationUserId = e;
|
||||
formModel.stationUserName = option.label;
|
||||
},
|
||||
onFocus: () => {
|
||||
if (!formModel.hospitalId) {
|
||||
return createMessage.warn('请先选择医院!');
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
label: '驻场人员',
|
||||
field: 'stationUserName',
|
||||
component: 'Input',
|
||||
show: false,
|
||||
},
|
||||
{
|
||||
label: '派单时间',
|
||||
field: 'sendOrderTime',
|
||||
component: 'DatePicker',
|
||||
componentProps: {
|
||||
format: 'YYYY-MM-DD HH:mm',
|
||||
valueFormat: 'YYYY-MM-DD HH:mm:ss',
|
||||
showTime: { format: 'YYYY-MM-DD HH:mm' },
|
||||
placeholder: '请选择派单时间',
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '操作人员',
|
||||
field: 'operatorId',
|
||||
component: 'ApiSelect',
|
||||
componentProps: () => {
|
||||
return {
|
||||
getPopupContainer: () => document.body,
|
||||
api: personType,
|
||||
params: {
|
||||
personType: '5',
|
||||
pageSize: 999,
|
||||
},
|
||||
resultField: 'list',
|
||||
labelField: 'realname',
|
||||
valueField: 'id',
|
||||
immediate: true,
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '驳回时间',
|
||||
field: 'rejectionTime',
|
||||
component: 'DatePicker',
|
||||
componentProps: {
|
||||
format: 'YYYY-MM-DD HH:mm',
|
||||
valueFormat: 'YYYY-MM-DD HH:mm:ss',
|
||||
showTime: { format: 'YYYY-MM-DD HH:mm' },
|
||||
placeholder: '请选择驳回时间',
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '驳回原因',
|
||||
field: 'rejectionReason',
|
||||
component: 'InputTextArea',
|
||||
},
|
||||
// TODO 主键隐藏字段,目前写死为ID
|
||||
{
|
||||
label: '',
|
||||
field: 'id',
|
||||
component: 'Input',
|
||||
show: false,
|
||||
},
|
||||
];
|
||||
|
||||
/**
|
||||
* 流程表单调用这个方法获取formSchema
|
||||
* @param _formData
|
||||
*/
|
||||
export function getBpmFormSchema(_formData): FormSchema[] {
|
||||
// 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema
|
||||
return formSchema;
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
<template>
|
||||
<div>
|
||||
<!--引用表格-->
|
||||
<BasicTable :rowSelection="rowSelection" @register="registerTable">
|
||||
<!--插槽:table标题-->
|
||||
<template #tableTitle>
|
||||
<a-button v-auth="'emergency:emergency_serious_disease:add'" preIcon="ant-design:plus-outlined" type="primary" @click="handleAdd">
|
||||
新增
|
||||
</a-button>
|
||||
<a-button type="primary" @click="batchHandleDelete" preIcon="ant-design:delete-outlined"> 批量删除 </a-button>
|
||||
<a-button
|
||||
v-auth="'emergency:emergency_serious_disease:exportXls'"
|
||||
preIcon="ant-design:export-outlined"
|
||||
type="primary"
|
||||
@click="onExportXls"
|
||||
>导出</a-button
|
||||
>
|
||||
</template>
|
||||
<!--操作栏-->
|
||||
<template #action="{ record }">
|
||||
<TableAction :actions="getTableAction(record)" />
|
||||
</template>
|
||||
</BasicTable>
|
||||
<!-- 表单区域 -->
|
||||
<EmergencySeriousDiseaseModal @register="registerDrawer" @success="handleSuccess" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" name="emergency-emergencySeriousDisease" setup>
|
||||
import { BasicTable, TableAction } from '/@/components/Table';
|
||||
import { useListPage } from '/@/hooks/system/useListPage';
|
||||
import EmergencySeriousDiseaseModal from './components/EmergencySeriousDiseaseModal.vue';
|
||||
import { columns, searchFormSchema } from './EmergencySeriousDisease.data';
|
||||
import { batchDelete, deleteOne, list } from './EmergencySeriousDisease.api';
|
||||
import { message } from 'ant-design-vue';
|
||||
import { useDrawer } from '/@/components/Drawer';
|
||||
//注册model
|
||||
const [registerDrawer, { openDrawer }] = useDrawer();
|
||||
//注册table数据
|
||||
const { tableContext, onExportXls } = useListPage({
|
||||
tableProps: {
|
||||
title: '大病就医',
|
||||
api: list,
|
||||
columns,
|
||||
canResize: false,
|
||||
clearSelectOnPageChange: true,
|
||||
beforeFetch: (params) => {
|
||||
return params;
|
||||
},
|
||||
formConfig: {
|
||||
labelWidth: 90,
|
||||
schemas: searchFormSchema,
|
||||
autoSubmitOnEnter: true,
|
||||
showAdvancedButton: false,
|
||||
fieldMapToNumber: [],
|
||||
fieldMapToTime: [],
|
||||
},
|
||||
actionColumn: {
|
||||
width: 160,
|
||||
fixed: 'right',
|
||||
},
|
||||
},
|
||||
});
|
||||
const [registerTable, { reload }, { rowSelection, selectedRowKeys }] = tableContext;
|
||||
/**
|
||||
* 新增事件
|
||||
*/
|
||||
function handleAdd() {
|
||||
openDrawer(true, {
|
||||
isUpdate: false,
|
||||
showFooter: true,
|
||||
title: '新增',
|
||||
});
|
||||
}
|
||||
/**
|
||||
* 编辑事件
|
||||
*/
|
||||
function handleEdit(record: Recordable) {
|
||||
openDrawer(true, {
|
||||
record,
|
||||
isUpdate: true,
|
||||
showFooter: true,
|
||||
title: '编辑',
|
||||
});
|
||||
}
|
||||
/**
|
||||
* 详情
|
||||
*/
|
||||
function handleDetail(record: Recordable) {
|
||||
openDrawer(true, {
|
||||
record,
|
||||
isUpdate: true,
|
||||
showFooter: false,
|
||||
title: '详情',
|
||||
});
|
||||
}
|
||||
/**
|
||||
* 删除事件
|
||||
*/
|
||||
function handleDelete(record: Recordable) {
|
||||
deleteOne({ id: record.id }, handleSuccess);
|
||||
}
|
||||
/**
|
||||
* 批量删除事件
|
||||
*/
|
||||
function batchHandleDelete() {
|
||||
if (selectedRowKeys.value.length === 0) {
|
||||
return message.warning('未选中任何数据');
|
||||
}
|
||||
batchDelete({ ids: selectedRowKeys.value }, handleSuccess);
|
||||
}
|
||||
/**
|
||||
* 成功回调
|
||||
*/
|
||||
function handleSuccess() {
|
||||
(selectedRowKeys.value = []) && reload();
|
||||
}
|
||||
/**
|
||||
* 操作栏
|
||||
*/
|
||||
function getTableAction(record: Recordable) {
|
||||
return [
|
||||
{
|
||||
label: '编辑',
|
||||
onClick: handleEdit.bind(null, record),
|
||||
auth: 'emergency:emergency_serious_disease:edit',
|
||||
},
|
||||
{
|
||||
label: '详情',
|
||||
onClick: handleDetail.bind(null, record),
|
||||
},
|
||||
{
|
||||
label: '删除',
|
||||
onClick: handleDelete.bind(null, record),
|
||||
auth: 'emergency:emergency_serious_disease:delete',
|
||||
},
|
||||
];
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
:deep(.ant-popover-inner) {
|
||||
min-width: 150px;
|
||||
}
|
||||
</style>
|
||||
+175
@@ -0,0 +1,175 @@
|
||||
<template>
|
||||
<div>
|
||||
<BasicDrawer
|
||||
v-bind="$attrs"
|
||||
:showFooter="showFooter"
|
||||
@register="registerModal"
|
||||
destroyOnClose
|
||||
:title="title"
|
||||
:width="800"
|
||||
@ok="handleSubmit"
|
||||
:maskClosable="false"
|
||||
>
|
||||
<BasicForm @register="registerForm" style="overflow: auto" />
|
||||
</BasicDrawer>
|
||||
<!-- <UserSelectModal rowKey="id" @register="registerSelUserModal" @getSelectResult="onSelectUserOk" />-->
|
||||
<replace-other ref="replaceOtherRef" title="选择用户" @choose-employ="onSelectUserOk" />
|
||||
<list-user-by-person-type @register="registerListModal" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, unref } from 'vue';
|
||||
import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
|
||||
import { BasicForm, useForm } from '/@/components/Form/index';
|
||||
import { formSchema } from '../EmergencySeriousDisease.data';
|
||||
import { saveOrUpdate } from '../EmergencySeriousDisease.api';
|
||||
import UserSelectModal from '/@/components/Form/src/jeecg/components/modal/UserSelectModalIllness.vue';
|
||||
import { useModal } from '/@/components/Modal';
|
||||
import { useDrawer } from '/@/components/Drawer';
|
||||
import ListUserByPersonType from '/@/views/emergency/EmergencySeriousDisease/components/listUserByPersonType.vue';
|
||||
import ReplaceOther from '/@/views/emergency/communication/components/replaceOther.vue';
|
||||
const [registerSelUserModal, selUserModal] = useDrawer();
|
||||
const [registerListModal, { openDrawer: openListModal }] = useDrawer();
|
||||
// Emits声明
|
||||
const emit = defineEmits(['register', 'success']);
|
||||
const replaceOtherRef = ref();
|
||||
const isUpdate = ref(true);
|
||||
const showFooter = ref<boolean>(true);
|
||||
//设置标题
|
||||
const title = ref<string>('');
|
||||
formSchema[0].componentProps.onClick = () => {
|
||||
replaceOtherRef.value.showModal();
|
||||
};
|
||||
formSchema[7].componentProps.onOptionsChange = (options) => {
|
||||
onSelectHospital(options);
|
||||
};
|
||||
|
||||
function c(type, title) {
|
||||
openListModal(true, {
|
||||
personType: type,
|
||||
title: title,
|
||||
});
|
||||
}
|
||||
//
|
||||
// formSchema.map((item) => {
|
||||
// switch (item.field) {
|
||||
// case 'stationUserName':
|
||||
// item.componentProps.onClick = () => c('7', '驻场人员');
|
||||
// break;
|
||||
// case 'operatorName':
|
||||
// item.componentProps.onClick = () => c('6', '操作人员');
|
||||
// break;
|
||||
// }
|
||||
// });
|
||||
|
||||
//表单配置
|
||||
const [registerForm, { setProps, resetFields, setFieldsValue, validate, clearValidate, updateSchema }] = useForm({
|
||||
//labelWidth: 150,
|
||||
schemas: formSchema,
|
||||
showActionButtonGroup: false,
|
||||
baseColProps: { span: 24 },
|
||||
});
|
||||
//表单赋值
|
||||
const [registerModal, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
|
||||
//重置表单
|
||||
await resetFields();
|
||||
setDrawerProps({ confirmLoading: false, showCancelBtn: !!data?.showFooter, showOkBtn: !!data?.showFooter });
|
||||
isUpdate.value = !!data?.isUpdate;
|
||||
showFooter.value = data.showFooter;
|
||||
title.value = data.title;
|
||||
if (unref(isUpdate)) {
|
||||
await updateSchema([{ field: 'userDepart', ifShow: true }]);
|
||||
//表单赋值
|
||||
await setFieldsValue({
|
||||
...data.record,
|
||||
});
|
||||
if (!!data?.showFooter) {
|
||||
await updateSchema([
|
||||
{ field: 'age', ifShow: false },
|
||||
{ field: 'sex', ifShow: false },
|
||||
{ field: 'userDepart', ifShow: false },
|
||||
{ field: 'telPhone', ifShow: false },
|
||||
{ field: 'idNo', ifShow: false },
|
||||
{ field: 'stationUserId', ifShow: true },
|
||||
{ field: 'sendOrderTime', ifShow: true },
|
||||
{ field: 'operatorId', ifShow: true },
|
||||
{ field: 'rejectionTime', ifShow: true },
|
||||
{ field: 'rejectionReason', ifShow: true },
|
||||
]);
|
||||
} else {
|
||||
await updateSchema([
|
||||
{ field: 'age', ifShow: true },
|
||||
{ field: 'sex', ifShow: true },
|
||||
{ field: 'userDepart', ifShow: true },
|
||||
{ field: 'telPhone', ifShow: true },
|
||||
{ field: 'idNo', ifShow: true },
|
||||
{ field: 'stationUserId', ifShow: !!data.record.stationUserName },
|
||||
{ field: 'sendOrderTime', ifShow: !!data.record.sendOrderTime },
|
||||
{ field: 'operatorId', ifShow: !!data.record.operatorId },
|
||||
{ field: 'rejectionTime', ifShow: !!data.record.rejectionTime },
|
||||
{ field: 'rejectionReason', ifShow: !!data.record.rejectionReason },
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
await updateSchema([
|
||||
{ field: 'age', ifShow: false },
|
||||
{ field: 'sex', ifShow: false },
|
||||
{ field: 'userDepart', ifShow: false },
|
||||
{ field: 'telPhone', ifShow: false },
|
||||
{ field: 'idNo', ifShow: false },
|
||||
{ field: 'stationUserId', ifShow: true },
|
||||
{ field: 'sendOrderTime', ifShow: true },
|
||||
{ field: 'operatorId', ifShow: true },
|
||||
{ field: 'rejectionTime', ifShow: true },
|
||||
{ field: 'rejectionReason', ifShow: true },
|
||||
]);
|
||||
}
|
||||
await clearValidate();
|
||||
// 隐藏底部时禁用整个表单
|
||||
await setProps({ disabled: !data?.showFooter });
|
||||
});
|
||||
//表单提交事件
|
||||
async function handleSubmit() {
|
||||
try {
|
||||
let values = await validate();
|
||||
setDrawerProps({ confirmLoading: true });
|
||||
//提交表单
|
||||
await saveOrUpdate(values, isUpdate.value);
|
||||
//关闭弹窗
|
||||
closeDrawer();
|
||||
//刷新列表
|
||||
emit('success');
|
||||
} finally {
|
||||
setDrawerProps({ confirmLoading: false });
|
||||
}
|
||||
}
|
||||
|
||||
// 选择用户成功
|
||||
async function onSelectUserOk(e) {
|
||||
let json = JSON.parse(e);
|
||||
await setFieldsValue({
|
||||
realname: json.realname,
|
||||
userId: json.id,
|
||||
});
|
||||
}
|
||||
|
||||
// 选择医院名称
|
||||
async function onSelectHospital(options) {
|
||||
await setFieldsValue({
|
||||
hospitalName: options[0]['label'],
|
||||
hospitalId: options[0]['value'],
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
/** 时间和数字输入框样式 */
|
||||
:deep(.ant-input-number) {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
:deep(.ant-calendar-picker) {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,16 @@
|
||||
import { BasicColumn, FormSchema } from '/@/components/Table';
|
||||
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '名称',
|
||||
align: 'center',
|
||||
dataIndex: 'realname',
|
||||
},
|
||||
{
|
||||
title: '性别',
|
||||
align: 'center',
|
||||
dataIndex: 'sex_dictText',
|
||||
},
|
||||
];
|
||||
|
||||
export const searchFormPersonType: FormSchema[] = [];
|
||||
@@ -0,0 +1,55 @@
|
||||
<template>
|
||||
<!-- <BasicDrawer v-bind="$attrs" @register="registerModal" destroyOnClose :title="title" :width="600" @ok="handleSubmit">-->
|
||||
<BasicDrawer
|
||||
:title="title"
|
||||
width="70%"
|
||||
:showFooter="false"
|
||||
destroyOnClose
|
||||
v-bind="$attrs"
|
||||
@ok="handleSubmit"
|
||||
@register="registerModal"
|
||||
:maskClosable="false"
|
||||
>
|
||||
<BasicTable :rowSelection="{ type: 'radio' }" @register="registerTable" />
|
||||
</BasicDrawer>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import BasicTable from '/@/components/Table/src/BasicTable.vue';
|
||||
import { useListPage } from '/@/hooks/system/useListPage';
|
||||
import { personType } from '/@/views/emergency/outburst/ScheduleCustom/ScheduleDefault.api';
|
||||
import { columns } from '/@/views/emergency/EmergencySeriousDisease/components/listUserByPersonType.data';
|
||||
import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
|
||||
const personTypes = ref<String>('5');
|
||||
const title = ref<String>('5');
|
||||
const emit = defineEmits(['choosePerson']);
|
||||
|
||||
const [registerModal] = useDrawerInner(async (data) => {
|
||||
personTypes.value = data.personType;
|
||||
title.value = data.title;
|
||||
});
|
||||
const { tableContext } = useListPage({
|
||||
tableProps: {
|
||||
api: personType,
|
||||
columns,
|
||||
canResize: false,
|
||||
clearSelectOnPageChange: true,
|
||||
clickToRowSelect: true,
|
||||
beforeFetch: (params) => {
|
||||
params['personType'] = personTypes.value;
|
||||
return params;
|
||||
},
|
||||
useSearchForm: false,
|
||||
showActionColumn: false,
|
||||
},
|
||||
});
|
||||
const [registerTable, {}, { rowSelection, selectedRowKeys }] = tableContext;
|
||||
const handleSubmit = () => {
|
||||
emit('choosePerson', {});
|
||||
};
|
||||
</script>
|
||||
<style scoped lang="less">
|
||||
:deep(.ant-table-title) {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user