提交 48512367 authored 作者: leon's avatar leon

用户管理fix

上级 8d6fce93
......@@ -13,7 +13,7 @@ VITE_PUBLIC_PATH=/
VITE_DROP_CONSOLE=false
# Basic interface address SPA
VITE_GLOB_API_URL=http://101.34.156.75:8101
VITE_GLOB_API_URL=http://192.168.101.69:8087
# File upload address, optional
VITE_GLOB_UPLOAD_URL=http://192.168.101.69:8087/v1/sys/upload
......
......@@ -4,6 +4,7 @@
import * as DistributorApi from '/@/api/system/distributorApi';
import get from 'lodash.get';
import * as HospitalApi from '/@/api/system/hospitalApi';
import * as DoctorApi from '/@/api/system/doctorApi';
export const getDistributorText = (text) => {
if (text === 0) {
......@@ -76,4 +77,35 @@ const getHospitalId = ({ colProps }) => {
};
};
export { getDistributorId, getHospitalId };
const getDoctorId = ({ colProps }) => {
return {
field: 'doctorId',
label: '医生',
defaultValue: undefined,
form: {
itemProps: {
validateTrigger: 'blur',
},
componentProps: {
labelInValue: true,
api: DoctorApi.all,
params: {},
resultField: 'records',
labelField: 'name',
valueField: 'id',
allowClear: false,
placeholder: '医生',
optionFilterProp: 'label',
showSearch: true,
},
colProps,
component: 'ApiSelect',
rules: [{ required: true, type: 'object', message: '请选择医生!' }],
},
table: {
customRender: ({ record }) => get(record, 'hospital.name') || '(已删除/不存在)',
},
};
};
export { getDistributorId, getHospitalId, getDoctorId };
......@@ -203,9 +203,6 @@
(schemas) => {
resetSchema(schemas ?? []);
},
{
deep: true,
},
);
watch(
......
<template>
<BasicDrawer v-bind="$attrs" @register="registerDrawer" showFooter :confirmDisabled="getConfirmDisabled" :title="getTitle" width="600px" @ok="handleSubmit">
<BasicDrawer
v-bind="$attrs"
@register="registerDrawer"
showFooter
:confirmDisabled="getConfirmDisabled"
:title="getTitle"
width="1000px"
@ok="handleSubmit"
>
<a-spin :spinning="isLoading">
<BasicForm @register="registerForm" />
</a-spin>
......@@ -31,13 +39,13 @@
isLoading,
execute,
} = useAsyncState(
() => {
return OperationOrderApi.getById(entityId.value).then((res: OperationOrder) => res);
},
null,
{
immediate: false,
},
() => {
return OperationOrderApi.getById(entityId.value).then((res: OperationOrder) => res);
},
null,
{
immediate: false,
},
);
const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
......@@ -51,8 +59,8 @@
if (detail.value) {
const formData: any = {
...detail.value,
hospitalId: { label: detail.value.hospital?.name || '(已删除/不存在)', value: detail.value.hospitalId },
};
hospitalId: { label: detail.value.hospital?.name || '(已删除/不存在)', value: detail.value.hospitalId },
};
await setFieldsValue(formData);
}
}
......@@ -65,17 +73,13 @@
return false;
}
});
const getTitle = computed(() => (!unref(isUpdate) ? '新增' : '编辑'));
async function handleSubmit() {
try {
const values = await validate();
setDrawerProps({ confirmLoading: true });
const {
hospitalId,
...rest
} = values;
const { hospitalId, ...rest } = values;
const action = !unref(isUpdate) ? OperationOrderApi.add : OperationOrderApi.update;
const data = !unref(isUpdate)
? {
......@@ -83,14 +87,15 @@
hospitalId: hospitalId.value,
hospitalName: hospitalId.label,
}
: Object.assign({},
{
...rest,
id: unref(entityId),
hospitalId: hospitalId.value,
hospitalName: hospitalId.label,
},
);
: Object.assign(
{},
{
...rest,
id: unref(entityId),
hospitalId: hospitalId.value,
hospitalName: hospitalId.label,
},
);
await action(data);
closeDrawer();
emit('success');
......
......@@ -40,7 +40,7 @@
onClick: handleEdit.bind(null, record),
ifShow: hasPermission('AUTH_ORDER_OPERATION_ORDER:EDIT'),
},
{
{
tooltip: '详情',
icon: 'ant-design:eye-outlined',
onClick: handleView.bind(null, record),
......@@ -76,23 +76,19 @@
import componentSetting from '/@/settings/componentSetting';
import OperationOrderDrawer from './drawer.vue';
import { columns, searchFormSchema } from './schema';
import { useUserStore } from '/@/store/modules/user';
const userStore = useUserStore();
const { hasPermission } = usePermission();
const go = useGo();
const {
formConfig,
showTableSetting,
bordered,
showIndexColumn,
} = componentSetting.table;
const { formConfig, showTableSetting, bordered, showIndexColumn } = componentSetting.table;
const checkedKeys = ref<Array<string | number>>([]);
const onSelectChange = (selectedRowKeys: (string | number)[]) => {
checkedKeys.value = selectedRowKeys;
}
};
const [registerDrawer, { openDrawer }] = useDrawer();
const [registerTable, { reload ,setLoading}] = useTable({
const [registerTable, { reload, setLoading }] = useTable({
title: '手术订单管理',
api: (params) => OperationOrderApi.search(handleParams(params)),
columns,
......@@ -142,6 +138,10 @@
}
}
});
// 如果是经销商,只能看到自己的数据
if (userStore.getIsDistributor) {
handledParams.distributorId = userStore.getDistributorId;
}
return handledParams;
};
......@@ -160,20 +160,24 @@
const handleDelete = (record: Recordable) => {
setLoading(true);
OperationOrderApi.remove(record.id).then((_) => {
reload();
}).catch(() => {
setLoading(false);
});
OperationOrderApi.remove(record.id)
.then((_) => {
reload();
})
.catch(() => {
setLoading(false);
});
};
const handleBatchDelete = () => {
setLoading(true);
OperationOrderApi.batchRemove(checkedKeys.value).then((_) => {
reload();
}).catch(() => {
setLoading(false);
});
OperationOrderApi.batchRemove(checkedKeys.value)
.then((_) => {
reload();
})
.catch(() => {
setLoading(false);
});
};
const handleSuccess = () => {
......
......@@ -8,8 +8,8 @@
import { BasicColumn } from '/@/components/Table';
import { FormSchema } from '/@/components/Table';
import get from 'lodash.get';
import * as HospitalApi from '/@/api/system/hospitalApi';
import { useUserStore } from '/@/store/modules/user';
import { getDistributorId, getDoctorId, getHospitalId } from '/@/commonSchemaProperty';
export enum YesNoEnum {
YES = '是',
......@@ -37,7 +37,7 @@ for (const key in StatusEnum) {
}
const colProps = { xs: { span: 24 }, sm: { span: 24 }, lg: { span: 8 } };
const colPropsInDrawer = { span: 24 };
const colPropsInDrawer = { span: 12 };
export const schema = {
model: 'OperationOrder',
......@@ -45,36 +45,20 @@ export const schema = {
properties: [
{
field: 'id',
label: 'ID系统自动生成',
label: 'ID',
defaultValue: undefined,
form: {
componentProps: {
allowClear: false,
placeholder: 'ID系统自动生成',
placeholder: 'ID',
},
colProps,
component: 'InputNumber',
rules: [{ required: true, message: '请输入ID系统自动生成!' }],
},
table: {
},
},
{
field: 'distributorId',
label: '经销商id',
defaultValue: undefined,
form: {
componentProps: {
allowClear: false,
placeholder: '经销商id',
},
colProps,
component: 'InputNumber',
rules: [{ required: true, message: '请输入经销商id!' }],
},
table: {
rules: [{ required: true, message: '请输入ID!' }],
},
table: {},
},
getDistributorId({ colProps }),
{
field: 'orderSn',
label: '订单编号',
......@@ -88,8 +72,7 @@ export const schema = {
component: 'Input',
rules: [{ required: true, message: '请输入订单编号!' }],
},
table: {
},
table: {},
},
{
field: 'productLineName',
......@@ -103,31 +86,9 @@ export const schema = {
colProps,
component: 'Input',
},
table: {
},
},
{
field: 'hospitalId',
label: '医院id',
defaultValue: undefined,
form: {
componentProps: {
labelInValue: true,
api: HospitalApi.all,
params: {},
resultField: 'records',
labelField: 'id',
valueField: 'id',
allowClear: true,
placeholder: '医院id',
},
colProps,
component: 'ApiSelect',
},
table: {
customRender: ({ text, record }) => get(record, 'hospital.name') || text,
},
table: {},
},
getHospitalId({ colProps }),
{
field: 'saleUserId',
label: '业务员id',
......@@ -140,8 +101,7 @@ export const schema = {
colProps,
component: 'InputNumber',
},
table: {
},
table: {},
},
{
field: 'saleUserName',
......@@ -155,24 +115,9 @@ export const schema = {
colProps,
component: 'Input',
},
table: {
},
},
{
field: 'doctorId',
label: '医生id',
defaultValue: undefined,
form: {
componentProps: {
allowClear: true,
placeholder: '医生id',
},
colProps,
component: 'InputNumber',
},
table: {
},
table: {},
},
getDoctorId({ colProps }),
{
field: 'doctorName',
label: '医生名称',
......@@ -185,8 +130,7 @@ export const schema = {
colProps,
component: 'Input',
},
table: {
},
table: {},
},
{
field: 'surgicalName',
......@@ -200,8 +144,7 @@ export const schema = {
colProps,
component: 'Input',
},
table: {
},
table: {},
},
{
field: 'surgicalTime',
......@@ -217,8 +160,7 @@ export const schema = {
showTime: true,
},
},
table: {
},
table: {},
},
{
field: 'deliveryTime',
......@@ -234,8 +176,7 @@ export const schema = {
showTime: true,
},
},
table: {
},
table: {},
},
{
field: 'needTool',
......@@ -252,7 +193,7 @@ export const schema = {
},
table: {
customRender: ({ text }) => {
const option = YesNoEnumOptions.find((item) => item.value === text)
const option = YesNoEnumOptions.find((item) => item.value === text);
return option ? option.label : text;
},
},
......@@ -269,8 +210,7 @@ export const schema = {
colProps,
component: 'Input',
},
table: {
},
table: {},
},
{
field: 'receiveName',
......@@ -284,8 +224,7 @@ export const schema = {
colProps,
component: 'Input',
},
table: {
},
table: {},
},
{
field: 'receivePhone',
......@@ -299,8 +238,7 @@ export const schema = {
colProps,
component: 'Input',
},
table: {
},
table: {},
},
{
field: 'address',
......@@ -314,8 +252,7 @@ export const schema = {
component: 'InputTextArea',
colProps: { span: 24 },
},
table: {
},
table: {},
},
{
field: 'status',
......@@ -333,7 +270,7 @@ export const schema = {
},
table: {
customRender: ({ text }) => {
const option = StatusEnumOptions.find((item) => item.value === text)
const option = StatusEnumOptions.find((item) => item.value === text);
return option ? option.label : text;
},
},
......@@ -354,7 +291,7 @@ export const schema = {
},
table: {
customRender: ({ text }) => {
const option = YesNoEnumOptions.find((item) => item.value === text)
const option = YesNoEnumOptions.find((item) => item.value === text);
return option ? option.label : text;
},
},
......@@ -371,8 +308,7 @@ export const schema = {
colProps,
component: 'Input',
},
table: {
},
table: {},
},
{
field: 'deleteStatus',
......@@ -389,7 +325,7 @@ export const schema = {
},
table: {
customRender: ({ text }) => {
const option = YesNoEnumOptions.find((item) => item.value === text)
const option = YesNoEnumOptions.find((item) => item.value === text);
return option ? option.label : text;
},
},
......@@ -407,8 +343,7 @@ export const schema = {
component: 'InputNumber',
rules: [{ required: true, message: '请输入操作人ID!' }],
},
table: {
},
table: {},
},
{
field: 'editorName',
......@@ -423,8 +358,7 @@ export const schema = {
component: 'Input',
rules: [{ required: true, message: '请输入操作人!' }],
},
table: {
},
table: {},
},
{
field: 'createTime',
......@@ -441,8 +375,7 @@ export const schema = {
component: 'RangePicker',
rules: [{ required: true, message: '请输入CreateTime!' }],
},
table: {
},
table: {},
},
{
field: 'updateTime',
......@@ -459,18 +392,123 @@ export const schema = {
component: 'RangePicker',
rules: [{ required: true, message: '请输入UpdateTime!' }],
},
table: {
},
table: {},
},
],
};
const queryFields = ['id','distributorId','orderSn','productLineName','hospitalId','saleUserId','saleUserName','doctorId','doctorName','surgicalName','surgicalTime','deliveryTime','needTool','logisticsMode','receiveName','receivePhone','status','type','remark','deleteStatus','editorId','editorName','createTime','updateTime'];
const editFields = ['distributorId','orderSn','productLineName','hospitalId','saleUserId','saleUserName','doctorId','doctorName','surgicalName','surgicalTime','deliveryTime','needTool','logisticsMode','receiveName','receivePhone','address','status','type','remark','deleteStatus'];
const tableFields = ['id','distributorId','orderSn','productLineName','hospitalId','saleUserId','saleUserName','doctorId','doctorName','surgicalName','surgicalTime','deliveryTime','needTool','logisticsMode','receiveName','receivePhone','address','status','type','remark','deleteStatus','editorId','editorName','createTime','updateTime'];
const descriptionFields = ['id','distributorId','orderSn','productLineName','hospitalId','saleUserId','saleUserName','doctorId','doctorName','surgicalName','surgicalTime','deliveryTime','needTool','logisticsMode','receiveName','receivePhone','address','status','type','remark','deleteStatus','editorId','editorName','createTime','updateTime'];
export const searchFormSchema: FormSchema[] = schema.properties.filter(item => queryFields.includes(item.field))
const queryFields = [
// 'id',
'distributorId',
'orderSn',
'productLineName',
'hospitalId',
'saleUserId',
'saleUserName',
'doctorId',
'doctorName',
'surgicalName',
'surgicalTime',
'deliveryTime',
'needTool',
'logisticsMode',
'receiveName',
'receivePhone',
'status',
'type',
'remark',
'deleteStatus',
'editorId',
'editorName',
'createTime',
'updateTime',
];
const editFields = [
'distributorId',
'orderSn',
'productLineName',
'hospitalId',
'saleUserId',
'saleUserName',
'doctorId',
'doctorName',
'surgicalName',
'surgicalTime',
'deliveryTime',
'needTool',
'logisticsMode',
'receiveName',
'receivePhone',
'address',
'status',
'type',
'remark',
'deleteStatus',
];
const tableFields = [
'id',
'distributorId',
'orderSn',
'productLineName',
'hospitalId',
'saleUserId',
'saleUserName',
'doctorId',
'doctorName',
'surgicalName',
'surgicalTime',
'deliveryTime',
'needTool',
'logisticsMode',
'receiveName',
'receivePhone',
'address',
'status',
'type',
'remark',
'deleteStatus',
'editorId',
'editorName',
'createTime',
'updateTime',
];
const descriptionFields = [
'id',
'distributorId',
'orderSn',
'productLineName',
'hospitalId',
'saleUserId',
'saleUserName',
'doctorId',
'doctorName',
'surgicalName',
'surgicalTime',
'deliveryTime',
'needTool',
'logisticsMode',
'receiveName',
'receivePhone',
'address',
'status',
'type',
'remark',
'deleteStatus',
'editorId',
'editorName',
'createTime',
'updateTime',
];
const userStore = useUserStore();
export const searchFormSchema: FormSchema[] = schema.properties
.filter((item) => queryFields.includes(item.field))
.filter((item) => {
if (item.field === 'distributorId') {
return queryFields.includes(item.field) && userStore.getDistributorId === 0;
} else {
return queryFields.includes(item.field);
}
})
.map(
({ field, label, form: { rules = [], ...formProps } }) =>
({
......@@ -482,7 +520,8 @@ export const searchFormSchema: FormSchema[] = schema.properties.filter(item => q
} as FormSchema),
);
export const formSchema: FormSchema[] = schema.properties.filter(item => editFields.includes(item.field))
export const formSchema: FormSchema[] = schema.properties
.filter((item) => editFields.includes(item.field))
.map(
({ field, label, defaultValue, form }) =>
({
......@@ -494,17 +533,19 @@ export const formSchema: FormSchema[] = schema.properties.filter(item => editFie
} as FormSchema),
);
export const columns: BasicColumn[] = schema.properties.filter(item => tableFields.includes(item.field))
export const columns: BasicColumn[] = schema.properties
.filter((item) => tableFields.includes(item.field))
.map(
({ field, label, table }) =>
({
dataIndex: field,
title: label,
...table,
} as BasicColumn)
} as BasicColumn),
);
export const descriptionColumns: BasicColumn[] = schema.properties.filter(item => descriptionFields.includes(item.field))
export const descriptionColumns: BasicColumn[] = schema.properties
.filter((item) => descriptionFields.includes(item.field))
.map(
({ field, label, table }) =>
({
......
......@@ -142,7 +142,7 @@
const userStore = useUserStore();
const [registerDrawer, { openDrawer }] = useDrawer();
const [registerTable, { reload, setLoading, getLoading }] = useTable({
const [registerTable, { reload, setLoading }] = useTable({
title: '医生管理',
api: (params) => DoctorApi.search(handleParams(params)),
columns,
......
......@@ -33,18 +33,7 @@
showActionButtonGroup: false,
});
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm(useFormProps.value);
/**
* @description: 编辑时候影藏密码表单项 , 创建时候显示
*/
const handlePwdFiled = () => {
useFormProps.value.schemas?.forEach((item: any) => {
if (item.field === PASSWORD) {
item.show = !unref(isUpdate);
}
});
};
const [registerForm, { resetFields, setFieldsValue, validate, updateSchema }] = useForm(useFormProps.value);
// id 查询
const {
......@@ -68,9 +57,12 @@
isUpdate.value = !!data?.isUpdate;
entityId.value = data?.record?.id;
handlePwdFiled();
if (unref(isUpdate)) {
// 更新时,不显示密码
await updateSchema({
field: PASSWORD,
show: false,
});
await execute();
if (detail.value) {
const formData: any = { ...detail.value };
......@@ -90,6 +82,12 @@
formData.roleList = roleObj;
await setFieldsValue(formData);
}
} else {
// 新增时,显示密码
await updateSchema({
field: PASSWORD,
show: true,
});
}
});
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论