Browse Source

🔥 fix:bgs

master
wangxiang 3 years ago
parent
commit
2f6f9f8bca
  1. 2
      src/api/platform/core/controller/user.ts
  2. 83
      src/components/AMap/src/TaskModal.vue
  3. 76
      src/components/AMap/src/map.data.ts
  4. 37
      src/views/institution/doctor/doctor.data.ts
  5. 31
      src/views/institution/office/office.data.ts

2
src/api/platform/core/controller/user.ts

@ -21,7 +21,7 @@ enum Api {
/** 用户登录接口 */ /** 用户登录接口 */
export const login = (params: LoginParams, options?: boolean | RequestOptions) => { export const login = (params: LoginParams, options?: boolean | RequestOptions) => {
// 非对称密钥ASE加密处理 // 非对称密钥AES加密处理
const user = encryptionLogin({ const user = encryptionLogin({
data: params, data: params,
key: globSetting.gatewayAseEncodeSecret, key: globSetting.gatewayAseEncodeSecret,

83
src/components/AMap/src/TaskModal.vue

@ -1,7 +1,6 @@
<template> <template>
<BasicModal v-bind="$attrs" <BasicModal v-bind="$attrs"
:width="720" :width="920"
:height="600"
@register="registerModal" @register="registerModal"
@ok="handleSubmit" @ok="handleSubmit"
> >
@ -16,14 +15,20 @@
</template> </template>
</BasicTable> </BasicTable>
<BasicTable @register="schemeRegisterTable"> <BasicTable @register="schemeRegisterTable">
<template #action="{ record }"> <template #toolbar>
<a-button type="primary"
@click="handleMutualTaskAdd()"
>新增任务</a-button>
</template>
<template #action="{ record, column }">
<TableAction :actions="[ <TableAction :actions="[
{ {
label: '预览路线方案', label: '设置为交接任务',
icon: 'fa6-regular:pen-to-square', icon: 'fa6-regular:pen-to-square',
onClick: handlePathPreview.bind(null, record) onClick: handlePathPreview.bind(null, record)
}]" }]"
/> />
<TableAction :actions="createMutualActions(record, column)"/>
</template> </template>
</BasicTable> </BasicTable>
</BasicModal> </BasicModal>
@ -32,7 +37,7 @@
import { reactive } from 'vue'; import { reactive } from 'vue';
import { BasicModal, ModalProps, useModalInner } from '/@/components/Modal'; import { BasicModal, ModalProps, useModalInner } from '/@/components/Modal';
import { BasicTable, useTable, EditRecordRow, BasicColumn, ActionItem, TableAction } from '/@/components/Table'; import { BasicTable, useTable, EditRecordRow, BasicColumn, ActionItem, TableAction } from '/@/components/Table';
import { formTaskColumns, formSchemeColumns, largeHospitalMapList, smallHospitalMapList, } from './map.data'; import { formTaskColumns, formMutualTaskColumns, largeHospitalMapList, smallHospitalMapList, } from './map.data';
import { buildUUID } from '/@/utils/uuid'; import { buildUUID } from '/@/utils/uuid';
import { add, divide } from 'lodash-es'; import { add, divide } from 'lodash-es';
@ -49,6 +54,10 @@
currentEditKeyRef: '', currentEditKeyRef: '',
formData: {} formData: {}
}); });
const mutualState = reactive<WindowState>({
currentEditKeyRef: '',
formData: {}
});
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const [registerModal, { setModalProps, closeModal }] = useModalInner(async data => { const [registerModal, { setModalProps, closeModal }] = useModalInner(async data => {
driving = data.driving; driving = data.driving;
@ -59,6 +68,7 @@
setModalProps(props); setModalProps(props);
}); });
const [registerTable, { reload, getDataSource }] = useTable({ const [registerTable, { reload, getDataSource }] = useTable({
title: '任务设置',
columns: formTaskColumns, columns: formTaskColumns,
pagination: { pagination: {
pageSize: 3, pageSize: 3,
@ -77,9 +87,13 @@
slots: { customRender: 'action' }, slots: { customRender: 'action' },
} }
}); });
const [schemeRegisterTable, { reload: schemeReload, setProps }] = useTable({ const [schemeRegisterTable, { reload: schemeReload, getDataSource: getMutualDataSource, setProps }] = useTable({
columns: formSchemeColumns, title: '交接任务设置',
pagination: false, columns: formMutualTaskColumns,
pagination: {
pageSize: 3,
showSizeChanger: false
},
striped: false, striped: false,
useSearchForm: false, useSearchForm: false,
showTableSetting: false, showTableSetting: false,
@ -102,6 +116,39 @@
}); });
} }
/** 处理任务新增 */
function handleMutualTaskAdd() {
getMutualDataSource().push({
smallHospitalId: '',
largeHospitalId: ''
});
}
function createMutualActions(record: EditRecordRow, column: BasicColumn): ActionItem[] {
if (!record.editable) {
return [
{
label: '编辑',
disabled: mutualState.currentEditKeyRef ? mutualState.currentEditKeyRef !== record.key : false,
onClick: handleMutualEdit.bind(null, record),
}
];
}
return [
{
label: '保存',
onClick: handleMutualSave.bind(null, record, column)
},
{
label: '取消',
popConfirm: {
title: '是否取消编辑',
confirm: handleMutualCancel.bind(null, record, column)
}
}
];
}
/** 创建操作列 */ /** 创建操作列 */
function createActions(record: EditRecordRow, column: BasicColumn): ActionItem[] { function createActions(record: EditRecordRow, column: BasicColumn): ActionItem[] {
if (!record.editable) { if (!record.editable) {
@ -147,6 +194,26 @@
} }
} }
function handleMutualEdit(record: EditRecordRow) {
mutualState.currentEditKeyRef = record.key;
record.onEdit?.(true);
}
function handleMutualCancel(record: EditRecordRow) {
mutualState.currentEditKeyRef = '';
record.onEdit?.(false, false);
}
async function handleMutualSave(record: EditRecordRow) {
const valid = await record.onValid?.();
if (valid) {
const pass = await record.onEdit?.(false, true);
pass && (mutualState.currentEditKeyRef = '');
}
}
/** 智能计算方案 */ /** 智能计算方案 */
function computeScheme() { function computeScheme() {
const scheme = []; const scheme = [];

76
src/components/AMap/src/map.data.ts

@ -92,27 +92,79 @@ export const formTaskColumns: BasicColumn[] = [
// todo: 后做 // todo: 后做
title: '上传文件', title: '上传文件',
dataIndex: 'file' dataIndex: 'file'
},
{
title: '要求时间',
dataIndex: 'timeRequired',
editRow: true,
editComponent: 'DatePicker',
editComponentProps: {
valueFormat: 'YYYY-MM-DD',
format: 'YYYY-MM-DD',
}
} }
]; ];
export const formSchemeColumns: BasicColumn[] = [ export const formMutualTaskColumns: BasicColumn[] = [
{ {
title: '方案名称', title: '下级医院',
dataIndex: 'schemeName', dataIndex: 'smallHospitalId',
edit: true, editRow: true,
editRule: true editRule: true,
editComponent: 'Select',
editComponentProps: {
options: [
{
label: 'Option1',
value: '1'
},
{
label: 'Option2',
value: '2'
},
{
label: 'Option3',
value: '3'
}
]
}
}, },
{ {
title: '起点', title: '上级医院',
dataIndex: 'origin' dataIndex: 'largeHospitalId',
editRow: true,
editRule: true,
editComponent: 'Select',
editComponentProps: {
'options': [
{
'label': 'Option1',
'value': '1'
},
{
'label': 'Option2',
'value': '2'
},
{
'label': 'Option3',
'value': '3'
}
]
}
}, },
{ {
title: '终点', // todo: 后做
dataIndex: 'destination' title: '上传文件',
dataIndex: 'file'
}, },
{ {
title: '途径点', title: '要求时间',
dataIndex: 'waypoints', dataIndex: 'timeRequired',
ellipsis: true editRow: true,
editComponent: 'DatePicker',
editComponentProps: {
valueFormat: 'YYYY-MM-DD',
format: 'YYYY-MM-DD',
}
} }
]; ];

37
src/views/institution/doctor/doctor.data.ts

@ -1,10 +1,11 @@
import { BasicColumn } from '/@/components/Table'; import { BasicColumn } from '/@/components/Table';
import { FormSchema } from '/@/components/Table'; import { FormSchema } from '/@/components/Table';
import {h} from 'vue'; import {h, watch, watchEffect, watchSyncEffect} from 'vue';
import {Tag} from 'ant-design-vue'; import {Tag} from 'ant-design-vue';
import { list as hospitalList } from '/@/api/platform/system/controller/hospital'; import { list as hospitalList } from '/@/api/platform/system/controller/hospital';
import {list as institutionList, list as institutalList} from '/@/api/platform/system/controller/institution'; import {list as institutionList, list as institutalList} from '/@/api/platform/system/controller/institution';
import { list as officeList } from '/@/api/platform/system/controller/office'; import { list as officeList } from '/@/api/platform/system/controller/office';
import {deepMerge} from "/@/utils";
export const columns: BasicColumn[] = [ export const columns: BasicColumn[] = [
@ -71,9 +72,9 @@ export const columns: BasicColumn[] = [
text = '未知'; text = '未知';
color = 'gray'; color = 'gray';
break; break;
} }
return h(Tag, { color: color }, () => text); return h(Tag, { color: color }, () => text);
} }
}, },
@ -197,17 +198,23 @@ export const doctorFormSchema: FormSchema[] = [
label: '所属组织', label: '所属组织',
component: 'ApiSelect', component: 'ApiSelect',
required: true, required: true,
renderComponentContent: renderCallbackParams => { renderComponentContent: ({ schema, values, model, field }) => {
const organType = renderCallbackParams.model.organType; const organType = model.organType;
const dataApi = organType=='1' ? hospitalList : institutionList; watch(organType,
() => {
renderCallbackParams.schema.componentProps = { const dataApi = organType=='1' ? hospitalList : institutionList;
resultField: 'list', console.log(schema);
labelField: 'name', schema.componentProps = deepMerge({
valueField: 'id', api: dataApi,
api: dataApi labelField: 'name',
}; valueField: 'id'
}, });
},
{
immediate: true,
}
);
}
}, },
// { // {
// field: 'officeId', // field: 'officeId',
@ -232,4 +239,4 @@ export const doctorFormSchema: FormSchema[] = [
field: 'remarks', field: 'remarks',
component: 'InputTextArea', component: 'InputTextArea',
} }
]; ];

31
src/views/institution/office/office.data.ts

@ -1,9 +1,10 @@
import { BasicColumn } from '/@/components/Table'; import { BasicColumn } from '/@/components/Table';
import { FormSchema } from '/@/components/Table'; import { FormSchema } from '/@/components/Table';
import {h} from 'vue'; import {h, watch} from 'vue';
import {Tag} from 'ant-design-vue'; import {Tag} from 'ant-design-vue';
import { list as hospitalList } from '/@/api/platform/system/controller/hospital'; import { list as hospitalList } from '/@/api/platform/system/controller/hospital';
import { list as institutionList } from '/@/api/platform/system/controller/institution'; import { list as institutionList } from '/@/api/platform/system/controller/institution';
import {deepMerge} from "/@/utils";
export const columns: BasicColumn[] = [ export const columns: BasicColumn[] = [
@ -140,16 +141,22 @@ export const officeFormSchema: FormSchema[] = [
label: '所属组织', label: '所属组织',
component: 'ApiSelect', component: 'ApiSelect',
required: true, required: true,
renderComponentContent: renderCallbackParams => { renderComponentContent: ({ schema, values, model, field }) => {
const organType = renderCallbackParams.model.organType; const organType = model.organType;
const dataApi = organType==1 ? hospitalList : institutionList; watch(organType,
() => {
renderCallbackParams.schema.componentProps = { const dataApi = organType=='1' ? hospitalList : institutionList;
resultField: 'list', console.log(schema);
labelField: 'name', schema.componentProps = deepMerge({
valueField: 'id', api: dataApi,
api: dataApi labelField: 'name',
}; valueField: 'id'
});
},
{
immediate: true,
}
);
}, },
}, },
{ {
@ -187,4 +194,4 @@ export const officeFormSchema: FormSchema[] = [
field: 'remarks', field: 'remarks',
component: 'InputTextArea', component: 'InputTextArea',
} }
]; ];

Loading…
Cancel
Save