From 9ab3903952bb9b1308731a3c0789c0127d56fcd6 Mon Sep 17 00:00:00 2001 From: lq Date: Fri, 16 May 2025 17:00:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=8D=AF=E5=B8=88=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/doctor/doctor/api/index.ts | 18 ++ .../doctor/components/BindStoreModal.vue | 70 ++++++ .../src/views/doctor/doctor/config/form.ts | 128 +---------- .../src/views/doctor/doctor/index.vue | 31 ++- .../src/views/doctor/pharmacist/api/index.ts | 127 +++++++++++ .../pharmacist/components/BindStoreModal.vue | 70 ++++++ .../doctor/pharmacist/components/modal.vue | 65 ++++++ .../views/doctor/pharmacist/config/form.ts | 54 +++++ .../views/doctor/pharmacist/config/search.ts | 89 ++++++++ .../views/doctor/pharmacist/config/table.ts | 82 +++++++ .../src/views/doctor/pharmacist/index.vue | 212 ++++++++++++++++++ .../src/views/system/process/config/table.ts | 2 +- .../src/views/system/process/index.vue | 42 ++-- .../src/views/system/region/api/index.ts | 58 +++++ .../views/system/region/components/modal.vue | 62 +++++ .../src/views/system/region/config/form.ts | 51 +++++ .../src/views/system/region/config/search.ts | 37 +++ .../src/views/system/region/config/table.ts | 65 ++++++ .../src/views/system/region/index.vue | 140 ++++++++++++ 19 files changed, 1250 insertions(+), 153 deletions(-) create mode 100644 apps/web-antd/src/views/doctor/doctor/components/BindStoreModal.vue create mode 100644 apps/web-antd/src/views/doctor/pharmacist/api/index.ts create mode 100644 apps/web-antd/src/views/doctor/pharmacist/components/BindStoreModal.vue create mode 100644 apps/web-antd/src/views/doctor/pharmacist/components/modal.vue create mode 100644 apps/web-antd/src/views/doctor/pharmacist/config/form.ts create mode 100644 apps/web-antd/src/views/doctor/pharmacist/config/search.ts create mode 100644 apps/web-antd/src/views/doctor/pharmacist/config/table.ts create mode 100644 apps/web-antd/src/views/doctor/pharmacist/index.vue create mode 100644 apps/web-antd/src/views/system/region/api/index.ts create mode 100644 apps/web-antd/src/views/system/region/components/modal.vue create mode 100644 apps/web-antd/src/views/system/region/config/form.ts create mode 100644 apps/web-antd/src/views/system/region/config/search.ts create mode 100644 apps/web-antd/src/views/system/region/config/table.ts create mode 100644 apps/web-antd/src/views/system/region/index.vue diff --git a/apps/web-antd/src/views/doctor/doctor/api/index.ts b/apps/web-antd/src/views/doctor/doctor/api/index.ts index 1fde8e27..74450e48 100644 --- a/apps/web-antd/src/views/doctor/doctor/api/index.ts +++ b/apps/web-antd/src/views/doctor/doctor/api/index.ts @@ -31,6 +31,24 @@ export async function getDoctorInfo(id: number) { return requestClient.get(`${prefix}detail`, { params: { id } }); } +/** + * 获取医生详情 + * @param id + */ +export async function storeByDoctorIdApi(id: number) { + return requestClient.get(`${prefix}store-by-doctor-id`, { + params: { id }, + }); +} + +/** + * 新增医生 + * @param data + */ +export async function updateDoctorStoreBindApi(data: Record) { + return requestClient.post(`${prefix}update-store-bind`, data); +} + /** * 新增医生 * @param data diff --git a/apps/web-antd/src/views/doctor/doctor/components/BindStoreModal.vue b/apps/web-antd/src/views/doctor/doctor/components/BindStoreModal.vue new file mode 100644 index 00000000..da007046 --- /dev/null +++ b/apps/web-antd/src/views/doctor/doctor/components/BindStoreModal.vue @@ -0,0 +1,70 @@ + + + + diff --git a/apps/web-antd/src/views/doctor/doctor/config/form.ts b/apps/web-antd/src/views/doctor/doctor/config/form.ts index fcc9cdb0..3d689fd7 100644 --- a/apps/web-antd/src/views/doctor/doctor/config/form.ts +++ b/apps/web-antd/src/views/doctor/doctor/config/form.ts @@ -1,12 +1,7 @@ import type { VbenFormProps } from '#/adapter/form'; -import { z } from '#/adapter/form'; -import { getRoleOption } from '#/views/system/role/api'; -import { getSupplierOption } from '#/views/system/supplier/api'; +import {getStoreOption} from "#/views/system/store/api"; -const defaultPassword = 'Xk123456@'; - -const supplierId = 7; export const modalFormProps: VbenFormProps = { wrapperClass: 'grid-cols-12', // 24栅格, commonConfig: { @@ -29,33 +24,6 @@ export const modalFormProps: VbenFormProps = { triggerFields: ['id'], }, }, - { - component: 'VbenInput', - componentProps: { - placeholder: '请输入医生昵称', - }, - fieldName: 'nick_name', - label: '昵称', - rules: 'required', - formItemClass: 'col-span-6', - }, - { - component: 'Avatar', - fieldName: 'avatar', - label: '头像', - rules: 'required', - formItemClass: 'col-span-6', - }, - { - component: 'VbenInput', - componentProps: { - placeholder: '请输入医生手机号码', - }, - fieldName: 'phone', - label: '手机号', - rules: 'required', - formItemClass: 'col-span-6', - }, { component: 'ApiSelect', componentProps: { @@ -72,101 +40,15 @@ export const modalFormProps: VbenFormProps = { value: item.id, })); }, - api: getRoleOption, + api: getStoreOption, placeholder: '请选择', + model: 'multiple', }, - fieldName: 'role_id', + fieldName: 'stores', formItemClass: 'col-span-6', - label: '角色', + label: '诊所', rules: 'required', }, - { - component: 'ApiSelect', - componentProps: { - allowClear: true, - filterOption: true, - showSearch: true, - // 菜单接口转options格式 - afterFetch: (data: { id: number; name: string }[]) => { - return data.map((item: any) => ({ - label: item.name, - value: item.id, - })); - }, - api: getSupplierOption, - placeholder: '请选择', - }, - dependencies: { - show: (values) => { - return values.role_id === supplierId; - }, - triggerFields: ['role_id'], - }, - fieldName: 'supplier_id', - formItemClass: 'col-span-6', - label: '所属供应商', - rules: 'required', - }, - { - fieldName: 'password', - label: '密码', - component: 'InputPassword', - help: '5-18位数字、字母、特殊字符组成。', - componentProps: { - placeholder: '请输入密码', - allowClear: true, - }, - defaultValue: defaultPassword, - rules: z - .string() - .regex( - /^(?=.*[A-Z0-9])(?=.*[!@#$%^&*])[A-Z0-9!@#$%^&*]{5,18}$/i, - '密码由5-18位数字、字母、特殊字符组成。', - ), - dependencies: { - if({ id }) { - return !id; - }, - triggerFields: ['id'], - }, - formItemClass: 'col-span-6', - }, - { - fieldName: 'confirmPassword', - label: '确认密码', - component: 'InputPassword', - componentProps: { - placeholder: '请输入确认密码', - allowClear: true, - }, - defaultValue: defaultPassword, - rules: z - .string() - .regex(/[\w!@#$%^&*]{5,18}/, '密码由5-18位数字、字母、特殊字符组成。'), - dependencies: { - if({ id }) { - return !id; - }, - triggerFields: ['id', 'confirmPassword'], - rules: (values) => { - return z - .string() - .regex( - /[\w!@#$%^&*]{5,18}/, - '密码由5-18位数字、字母、特殊字符组成。', - ) - .refine( - (confirmPassword) => { - return confirmPassword === values.password; - }, - { - message: '确认密码必须与密码一致', - }, - ); - }, - }, - formItemClass: 'col-span-6', - }, ], showDefaultActions: false, }; diff --git a/apps/web-antd/src/views/doctor/doctor/index.vue b/apps/web-antd/src/views/doctor/doctor/index.vue index 3446a5e4..a8fe8b7e 100644 --- a/apps/web-antd/src/views/doctor/doctor/index.vue +++ b/apps/web-antd/src/views/doctor/doctor/index.vue @@ -11,6 +11,7 @@ import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { TableAction } from '#/components/table-action'; import { auditApi, openPcWindowsApi, refuseApi } from './api'; +import BindStore from './components/BindStoreModal.vue'; import FormModalDemo from './components/modal.vue'; import { formOptions } from './config/search'; import { gridOptions } from './config/table'; @@ -40,6 +41,10 @@ const [FormModal, formModalApi] = useVbenModal({ connectedComponent: FormModalDemo, }); +const [BindStoreModal, BindStoreModalApi] = useVbenModal({ + connectedComponent: BindStore, +}); + const showModal = (data = {}, isUpdate = false) => { formModalApi.setData({ // 表单值 @@ -50,6 +55,15 @@ const showModal = (data = {}, isUpdate = false) => { formModalApi.open(); }; +const showBindStoreModal = (data: number) => { + BindStoreModalApi.setData({ + // 表单值 + values: data, + gridApi, + }); + BindStoreModalApi.open(); +}; + const openPcWindows = (id: number) => { openPcWindowsApi(id).then(() => { message.success('开通成功!'); @@ -75,6 +89,7 @@ const refuse = (id: number) => {