From ef7ac29f66b859e52793f54adedbbb1004c7e811 Mon Sep 17 00:00:00 2001 From: yangjun <1173114630@qq.com> Date: Thu, 20 Mar 2025 08:30:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E4=BE=9B=E5=BA=94?= =?UTF-8?q?=E5=95=86=EF=BC=8C=E7=89=A9=E6=96=99=E7=B1=BB=E5=88=AB=EF=BC=8C?= =?UTF-8?q?=E7=89=A9=E6=96=99=E4=BF=A1=E6=81=AF=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Modal/src/hooks/useTwoModal.ts | 160 ++++++++++ src/utils/encryption/signMd5Utils.js | 1 - .../ConfigMaterial/ConfigMaterialAllList.vue | 192 +++++++++++ .../ConfigMaterialCategory.api.ts | 65 ++++ .../ConfigMaterialCategory.data.ts | 83 +++++ .../ConfigMaterialCategoryList.vue | 254 +++++++++++++++ .../ConfigMaterialCategoryListModal.vue | 75 +++++ .../ConfigMaterial/ConfigMaterialInfo.api.ts | 72 +++++ .../ConfigMaterial/ConfigMaterialInfo.data.ts | 100 ++++++ .../ConfigMaterial/ConfigMaterialInfoList.vue | 299 ++++++++++++++++++ .../ConfigMaterialMedication.api.ts | 72 +++++ .../ConfigMaterialMedication.data.ts | 29 ++ .../ConfigMaterialMedicationList.vue | 245 ++++++++++++++ .../ConfigMaterialMedicationListModal.vue | 75 +++++ .../ConfigMaterial/ConfigMaterialType.api.ts | 72 +++++ .../ConfigMaterial/ConfigMaterialType.data.ts | 24 ++ .../ConfigMaterial/ConfigMaterialTypeList.vue | 241 ++++++++++++++ .../ConfigMaterialTypeListModal.vue | 75 +++++ .../components/ConfigMaterialCategoryForm.vue | 70 ++++ .../ConfigMaterialCategoryModal.vue | 76 +++++ .../components/ConfigMaterialInfoForm.vue | 279 ++++++++++++++++ .../components/ConfigMaterialInfoModal.vue | 77 +++++ .../ConfigMaterialMedicationForm.vue | 167 ++++++++++ .../ConfigMaterialMedicationModal.vue | 77 +++++ .../components/ConfigMaterialTypeForm.vue | 160 ++++++++++ .../components/ConfigMaterialTypeModal.vue | 77 +++++ .../ConfigSuppliersInfoList.vue | 36 +-- 27 files changed, 3127 insertions(+), 26 deletions(-) create mode 100644 src/components/Modal/src/hooks/useTwoModal.ts create mode 100644 src/views/config/ConfigMaterial/ConfigMaterialAllList.vue create mode 100644 src/views/config/ConfigMaterial/ConfigMaterialCategory.api.ts create mode 100644 src/views/config/ConfigMaterial/ConfigMaterialCategory.data.ts create mode 100644 src/views/config/ConfigMaterial/ConfigMaterialCategoryList.vue create mode 100644 src/views/config/ConfigMaterial/ConfigMaterialCategoryListModal.vue create mode 100644 src/views/config/ConfigMaterial/ConfigMaterialInfo.api.ts create mode 100644 src/views/config/ConfigMaterial/ConfigMaterialInfo.data.ts create mode 100644 src/views/config/ConfigMaterial/ConfigMaterialInfoList.vue create mode 100644 src/views/config/ConfigMaterial/ConfigMaterialMedication.api.ts create mode 100644 src/views/config/ConfigMaterial/ConfigMaterialMedication.data.ts create mode 100644 src/views/config/ConfigMaterial/ConfigMaterialMedicationList.vue create mode 100644 src/views/config/ConfigMaterial/ConfigMaterialMedicationListModal.vue create mode 100644 src/views/config/ConfigMaterial/ConfigMaterialType.api.ts create mode 100644 src/views/config/ConfigMaterial/ConfigMaterialType.data.ts create mode 100644 src/views/config/ConfigMaterial/ConfigMaterialTypeList.vue create mode 100644 src/views/config/ConfigMaterial/ConfigMaterialTypeListModal.vue create mode 100644 src/views/config/ConfigMaterial/components/ConfigMaterialCategoryForm.vue create mode 100644 src/views/config/ConfigMaterial/components/ConfigMaterialCategoryModal.vue create mode 100644 src/views/config/ConfigMaterial/components/ConfigMaterialInfoForm.vue create mode 100644 src/views/config/ConfigMaterial/components/ConfigMaterialInfoModal.vue create mode 100644 src/views/config/ConfigMaterial/components/ConfigMaterialMedicationForm.vue create mode 100644 src/views/config/ConfigMaterial/components/ConfigMaterialMedicationModal.vue create mode 100644 src/views/config/ConfigMaterial/components/ConfigMaterialTypeForm.vue create mode 100644 src/views/config/ConfigMaterial/components/ConfigMaterialTypeModal.vue diff --git a/src/components/Modal/src/hooks/useTwoModal.ts b/src/components/Modal/src/hooks/useTwoModal.ts new file mode 100644 index 0000000..9c747b5 --- /dev/null +++ b/src/components/Modal/src/hooks/useTwoModal.ts @@ -0,0 +1,160 @@ +import type { UseModalReturnType, ModalMethods, ModalProps, ReturnMethods, UseModalInnerReturnType } from '../typing'; +import { ref, onUnmounted, unref, getCurrentInstance, reactive, watchEffect, nextTick, toRaw } from 'vue'; +import { isProdMode } from '/@/utils/env'; +import { isFunction } from '/@/utils/is'; +import { isEqual } from 'lodash-es'; +import { tryOnUnmounted } from '@vueuse/core'; +import { error } from '/@/utils/log'; +import { computed } from 'vue'; + +const dataTransfer = reactive({}); + +const visibleData = reactive<{ [key: number]: boolean }>({}); + +/** + * @description: Applicable to independent modal and call outside + */ +export function useModal(): UseModalReturnType { + const modal = ref>(null); + const loaded = ref>(false); + const uid = ref(''); + + function register(modalMethod: ModalMethods, uuid: string) { + if (!getCurrentInstance()) { + throw new Error('useModal() can only be used inside setup() or functional components!'); + } + uid.value = uuid; + isProdMode() && + onUnmounted(() => { + modal.value = null; + loaded.value = false; + dataTransfer[unref(uid)] = null; + }); + if (unref(loaded) && isProdMode() && modalMethod === unref(modal)) return; + + modal.value = modalMethod; + loaded.value = true; + modalMethod.emitVisible = (visible: boolean, uid: number) => { + visibleData[uid] = visible; + }; + } + + const getInstance = () => { + const instance = unref(modal); + if (!instance) { + error('useModal instance is undefined!'); + } + return instance; + }; + + const methods: ReturnMethods = { + setModalProps: (props: Partial): void => { + getInstance()?.setModalProps(props); + }, + + getVisible: computed((): boolean => { + return visibleData[~~unref(uid)]; + }), + getOpen: computed((): boolean => { + return visibleData[~~unref(uid)]; + }), + redoModalHeight: () => { + getInstance()?.redoModalHeight?.(); + }, + + openModal: (visible = true, data?: T, openOnSet = true): void => { + // update-begin--author:liaozhiyang---date:20231218---for:【QQYUN-6366】升级到antd4.x + getInstance()?.setModalProps({ + open: visible, + }); + // update-end--author:liaozhiyang---date:20231218---for:【QQYUN-6366】升级到antd4.x + + if (!data) return; + const id = unref(uid); + if (openOnSet) { + dataTransfer[id] = null; + dataTransfer[id] = toRaw(data); + return; + } + const equal = isEqual(toRaw(dataTransfer[id]), toRaw(data)); + if (!equal) { + dataTransfer[id] = toRaw(data); + } + }, + + openTwoModal: (visible = true, data?: T, openOnSet = true): void => { + // openModal() + }, + + closeModal: () => { + // update-begin--author:liaozhiyang---date:20231218---for:【QQYUN-6366】升级到antd4.x + getInstance()?.setModalProps({ open: false }); + // update-end--author:liaozhiyang---date:20231218---for:【QQYUN-6366】升级到antd4.x + }, + }; + return [register, methods]; +} + +export const useModalInner = (callbackFn?: Fn): UseModalInnerReturnType => { + const modalInstanceRef = ref>(null); + const currentInstance = getCurrentInstance(); + const uidRef = ref(''); + + const getInstance = () => { + const instance = unref(modalInstanceRef); + if (!instance) { + error('useModalInner instance is undefined!'); + } + return instance; + }; + + const register = (modalInstance: ModalMethods, uuid: string) => { + isProdMode() && + tryOnUnmounted(() => { + modalInstanceRef.value = null; + }); + uidRef.value = uuid; + modalInstanceRef.value = modalInstance; + currentInstance?.emit('register', modalInstance, uuid); + }; + + watchEffect(() => { + const data = dataTransfer[unref(uidRef)]; + if (!data) return; + if (!callbackFn || !isFunction(callbackFn)) return; + nextTick(() => { + callbackFn(data); + }); + }); + + return [ + register, + { + changeLoading: (loading = true) => { + getInstance()?.setModalProps({ loading }); + }, + getVisible: computed((): boolean => { + return visibleData[~~unref(uidRef)]; + }), + getOpen: computed((): boolean => { + return visibleData[~~unref(uidRef)]; + }), + changeOkLoading: (loading = true) => { + getInstance()?.setModalProps({ confirmLoading: loading }); + }, + + closeModal: () => { + getInstance()?.setModalProps({ open: false }); + }, + + setModalProps: (props: Partial) => { + getInstance()?.setModalProps(props); + }, + + redoModalHeight: () => { + const callRedo = getInstance()?.redoModalHeight; + callRedo && callRedo(); + }, + }, + ]; +}; diff --git a/src/utils/encryption/signMd5Utils.js b/src/utils/encryption/signMd5Utils.js index 9bd4fc8..0d07fd5 100644 --- a/src/utils/encryption/signMd5Utils.js +++ b/src/utils/encryption/signMd5Utils.js @@ -39,7 +39,6 @@ export default class signMd5Utils { //update-end---author:wangshuai---date:2024-04-16---for:【QQYUN-9005】发送短信加签--- let requestBody = this.sortAsc(jsonObj); delete requestBody._t; - console.log('sign requestBody:', requestBody); return md5(JSON.stringify(requestBody) + signatureSecret).toUpperCase(); } diff --git a/src/views/config/ConfigMaterial/ConfigMaterialAllList.vue b/src/views/config/ConfigMaterial/ConfigMaterialAllList.vue new file mode 100644 index 0000000..ede823b --- /dev/null +++ b/src/views/config/ConfigMaterial/ConfigMaterialAllList.vue @@ -0,0 +1,192 @@ + + + + + \ No newline at end of file diff --git a/src/views/config/ConfigMaterial/ConfigMaterialCategory.api.ts b/src/views/config/ConfigMaterial/ConfigMaterialCategory.api.ts new file mode 100644 index 0000000..6fd36df --- /dev/null +++ b/src/views/config/ConfigMaterial/ConfigMaterialCategory.api.ts @@ -0,0 +1,65 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/ConfigMaterial/configMaterialCategory/list', + selectMaterialList = '/ConfigMaterial/configMaterialCategory/selectMaterialList', + save='/ConfigMaterial/configMaterialCategory/add', + edit='/ConfigMaterial/configMaterialCategory/edit', + deleteOne = '/ConfigMaterial/configMaterialCategory/delete', + deleteBatch = '/ConfigMaterial/configMaterialCategory/deleteBatch', + importExcel = '/ConfigMaterial/configMaterialCategory/importExcel', + exportXls = '/ConfigMaterial/configMaterialCategory/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => defHttp.get({url: Api.list, params}); +export const selectMaterialList = (params) => defHttp.get({url: Api.selectMaterialList, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +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 + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/src/views/config/ConfigMaterial/ConfigMaterialCategory.data.ts b/src/views/config/ConfigMaterial/ConfigMaterialCategory.data.ts new file mode 100644 index 0000000..3f78862 --- /dev/null +++ b/src/views/config/ConfigMaterial/ConfigMaterialCategory.data.ts @@ -0,0 +1,83 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '物料类别名称', + align:"center", + dataIndex: 'categoryName' + }, + { + title: '是否启用', + align:"center", + dataIndex: 'izEnabled_dictText' + }, +]; + +export const allColumns: BasicColumn[] = [ + { + title: '物料类别名称', + align:"center", + dataIndex: 'categoryName' + }, + { + title: '物料类型名称', + align:"center", + dataIndex: 'typeName' + }, + { + title: '用药类型名称', + align:"center", + dataIndex: 'medicationName' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '物料类别名称', + field: 'categoryName', + component: 'Input', + dynamicRules: ({model,schema}) => { + return [ + { required: true, message: '请输入物料类别名称!'}, + ]; + }, + }, + { + label: '是否启用', + field: 'izEnabled', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"iz_enabled", + type: "radio" + }, + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + categoryName: {title: '物料类别名称',order: 0,view: 'text', type: 'string',}, + izEnabled: {title: '是否启用',order: 1,view: 'radio', type: 'string',dictCode: 'iz_enabled',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/src/views/config/ConfigMaterial/ConfigMaterialCategoryList.vue b/src/views/config/ConfigMaterial/ConfigMaterialCategoryList.vue new file mode 100644 index 0000000..93e9d9a --- /dev/null +++ b/src/views/config/ConfigMaterial/ConfigMaterialCategoryList.vue @@ -0,0 +1,254 @@ + + + + + \ No newline at end of file diff --git a/src/views/config/ConfigMaterial/ConfigMaterialCategoryListModal.vue b/src/views/config/ConfigMaterial/ConfigMaterialCategoryListModal.vue new file mode 100644 index 0000000..a2187d7 --- /dev/null +++ b/src/views/config/ConfigMaterial/ConfigMaterialCategoryListModal.vue @@ -0,0 +1,75 @@ + + diff --git a/src/views/config/ConfigMaterial/ConfigMaterialInfo.api.ts b/src/views/config/ConfigMaterial/ConfigMaterialInfo.api.ts new file mode 100644 index 0000000..2b60dbf --- /dev/null +++ b/src/views/config/ConfigMaterial/ConfigMaterialInfo.api.ts @@ -0,0 +1,72 @@ +import { defHttp } from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/configMaterialInfo/configMaterialInfo/list', + save='/configMaterialInfo/configMaterialInfo/add', + edit='/configMaterialInfo/configMaterialInfo/edit', + deleteOne = '/configMaterialInfo/configMaterialInfo/delete', + deleteBatch = '/configMaterialInfo/configMaterialInfo/deleteBatch', + importExcel = '/configMaterialInfo/configMaterialInfo/importExcel', + exportXls = '/configMaterialInfo/configMaterialInfo/exportXls', +} + +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; + +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; + +/** + * 列表接口 + * @param params + */ +export const list = (params) => defHttp.get({ url: Api.list, params }); + +/** + * 删除单个 + * @param params + * @param handleSuccess + */ +export const deleteOne = (params,handleSuccess) => { + return 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) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({ url: url, params }, { isTransformResponse: false }); +} diff --git a/src/views/config/ConfigMaterial/ConfigMaterialInfo.data.ts b/src/views/config/ConfigMaterial/ConfigMaterialInfo.data.ts new file mode 100644 index 0000000..063e00a --- /dev/null +++ b/src/views/config/ConfigMaterial/ConfigMaterialInfo.data.ts @@ -0,0 +1,100 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '货品名称', + align: "center", + dataIndex: 'materialName' + }, + { + title: '货品编码', + align: "center", + dataIndex: 'materialNo' + }, + { + title: '规格型号', + align: "center", + dataIndex: 'specificationModel' + }, + { + title: '销售单价', + align: "center", + dataIndex: 'salesUnitPrice' + }, + { + title: '参考单价', + align: "center", + dataIndex: 'referenceUnitPrice' + }, + { + title: '货品单位', + align: "center", + dataIndex: 'materialUnits' + }, + { + title: '供应商', + align: "center", + dataIndex: 'suppliers_dictText' + }, + { + title: '物料类别', + align: "center", + dataIndex: 'categoryId_dictText' + }, + { + title: '物料类型', + align: "center", + dataIndex: 'typeId_dictText' + }, + { + title: '用药类型', + align: "center", + dataIndex: 'medicationId_dictText' + }, + { + title: '物料图片', + align: "center", + dataIndex: 'materialImg', + customRender: render.renderImage, + }, + { + title: '物料标识', + align: "center", + dataIndex: 'materialIdent', + customRender: render.renderImage, + }, + { + title: '是否启用', + align: "center", + dataIndex: 'izEnabled_dictText' + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + categoryId: {title: '物料类别',order: 0,view: 'radio', type: 'string',dictTable: "config_material_category", dictCode: 'id', dictText: 'category_name',}, + typeId: {title: '物料类型',order: 1,view: 'radio', type: 'string',dictTable: "config_material_type", dictCode: 'id', dictText: 'type_name',}, + medicationId: {title: '用药类型',order: 2,view: 'radio', type: 'string',dictTable: "config_material_medication", dictCode: 'id', dictText: 'medication_name',}, + materialName: {title: '货品名称',order: 3,view: 'text', type: 'string',}, + materialNo: {title: '货品编码',order: 4,view: 'text', type: 'string',}, + specificationModel: {title: '规格型号',order: 5,view: 'text', type: 'string',}, + salesUnitPrice: {title: '销售单价',order: 6,view: 'number', type: 'number',}, + referenceUnitPrice: {title: '参考单价',order: 7,view: 'number', type: 'number',}, + materialUnits: {title: '货品单位',order: 8,view: 'text', type: 'string',}, + multiUnitSwitch: {title: '多单位开关',order: 9,view: 'switch', type: 'string',}, + oneUnit: {title: '父级单位',order: 10,view: 'text', type: 'string',}, + oneUnitProportion: {title: '父级单位兑换比例',order: 11,view: 'number', type: 'number',}, + oneUnitPrice: {title: '父级单位价格',order: 12,view: 'number', type: 'number',}, + twoUnit: {title: '爷级单位',order: 13,view: 'text', type: 'string',}, + twoUnitProportion: {title: '爷级单位兑换比例',order: 14,view: 'number', type: 'number',}, + twoUnitPrice: {title: '爷级单位价格',order: 15,view: 'number', type: 'number',}, + multiUnitType: {title: '多单位采购默认使用 0子集 1父级 2爷级',order: 16,view: 'text', type: 'string',}, + suppliers: {title: '供应商',order: 17,view: 'text', type: 'string',}, + materialImg: {title: '物料图片',order: 18,view: 'image', type: 'string',}, + materialIdent: {title: '物料标识',order: 19,view: 'image', type: 'string',}, + izEnabled: {title: '是否启用',order: 20,view: 'radio', type: 'string',dictCode: ' iz_enabled',}, +}; diff --git a/src/views/config/ConfigMaterial/ConfigMaterialInfoList.vue b/src/views/config/ConfigMaterial/ConfigMaterialInfoList.vue new file mode 100644 index 0000000..ca0911a --- /dev/null +++ b/src/views/config/ConfigMaterial/ConfigMaterialInfoList.vue @@ -0,0 +1,299 @@ + + + + + diff --git a/src/views/config/ConfigMaterial/ConfigMaterialMedication.api.ts b/src/views/config/ConfigMaterial/ConfigMaterialMedication.api.ts new file mode 100644 index 0000000..37011e5 --- /dev/null +++ b/src/views/config/ConfigMaterial/ConfigMaterialMedication.api.ts @@ -0,0 +1,72 @@ +import { defHttp } from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/ConfigMaterial/configMaterialMedication/list', + save='/ConfigMaterial/configMaterialMedication/add', + edit='/ConfigMaterial/configMaterialMedication/edit', + deleteOne = '/ConfigMaterial/configMaterialMedication/delete', + deleteBatch = '/ConfigMaterial/configMaterialMedication/deleteBatch', + importExcel = '/ConfigMaterial/configMaterialMedication/importExcel', + exportXls = '/ConfigMaterial/configMaterialMedication/exportXls', +} + +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; + +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; + +/** + * 列表接口 + * @param params + */ +export const list = (params) => defHttp.get({ url: Api.list, params }); + +/** + * 删除单个 + * @param params + * @param handleSuccess + */ +export const deleteOne = (params,handleSuccess) => { + return 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) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({ url: url, params }, { isTransformResponse: false }); +} diff --git a/src/views/config/ConfigMaterial/ConfigMaterialMedication.data.ts b/src/views/config/ConfigMaterial/ConfigMaterialMedication.data.ts new file mode 100644 index 0000000..21849d7 --- /dev/null +++ b/src/views/config/ConfigMaterial/ConfigMaterialMedication.data.ts @@ -0,0 +1,29 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '物料类别', + align: "center", + dataIndex: 'categoryId_dictText' + }, + { + title: '物料类型', + align: "center", + dataIndex: 'typeId_dictText' + }, + { + title: '名称', + align: "center", + dataIndex: 'medicationName' + }, + { + title: '是否启用', + align: "center", + dataIndex: 'izEnabled_dictText' + }, +]; + diff --git a/src/views/config/ConfigMaterial/ConfigMaterialMedicationList.vue b/src/views/config/ConfigMaterial/ConfigMaterialMedicationList.vue new file mode 100644 index 0000000..d9a0a70 --- /dev/null +++ b/src/views/config/ConfigMaterial/ConfigMaterialMedicationList.vue @@ -0,0 +1,245 @@ + + + + + diff --git a/src/views/config/ConfigMaterial/ConfigMaterialMedicationListModal.vue b/src/views/config/ConfigMaterial/ConfigMaterialMedicationListModal.vue new file mode 100644 index 0000000..fc4a7ec --- /dev/null +++ b/src/views/config/ConfigMaterial/ConfigMaterialMedicationListModal.vue @@ -0,0 +1,75 @@ + + diff --git a/src/views/config/ConfigMaterial/ConfigMaterialType.api.ts b/src/views/config/ConfigMaterial/ConfigMaterialType.api.ts new file mode 100644 index 0000000..8cd2fe5 --- /dev/null +++ b/src/views/config/ConfigMaterial/ConfigMaterialType.api.ts @@ -0,0 +1,72 @@ +import { defHttp } from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/ConfigMaterial/configMaterialType/list', + save='/ConfigMaterial/configMaterialType/add', + edit='/ConfigMaterial/configMaterialType/edit', + deleteOne = '/ConfigMaterial/configMaterialType/delete', + deleteBatch = '/ConfigMaterial/configMaterialType/deleteBatch', + importExcel = '/ConfigMaterial/configMaterialType/importExcel', + exportXls = '/ConfigMaterial/configMaterialType/exportXls', +} + +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; + +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; + +/** + * 列表接口 + * @param params + */ +export const list = (params) => defHttp.get({ url: Api.list, params }); + +/** + * 删除单个 + * @param params + * @param handleSuccess + */ +export const deleteOne = (params,handleSuccess) => { + return 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) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({ url: url, params }, { isTransformResponse: false }); +} diff --git a/src/views/config/ConfigMaterial/ConfigMaterialType.data.ts b/src/views/config/ConfigMaterial/ConfigMaterialType.data.ts new file mode 100644 index 0000000..93b5467 --- /dev/null +++ b/src/views/config/ConfigMaterial/ConfigMaterialType.data.ts @@ -0,0 +1,24 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '物料类别', + align: "center", + dataIndex: 'categoryId_dictText' + }, + { + title: '物料类型', + align: "center", + dataIndex: 'typeName' + }, + { + title: '是否启用', + align: "center", + dataIndex: 'izEnabled_dictText' + }, +]; + diff --git a/src/views/config/ConfigMaterial/ConfigMaterialTypeList.vue b/src/views/config/ConfigMaterial/ConfigMaterialTypeList.vue new file mode 100644 index 0000000..80f4056 --- /dev/null +++ b/src/views/config/ConfigMaterial/ConfigMaterialTypeList.vue @@ -0,0 +1,241 @@ + + + + + diff --git a/src/views/config/ConfigMaterial/ConfigMaterialTypeListModal.vue b/src/views/config/ConfigMaterial/ConfigMaterialTypeListModal.vue new file mode 100644 index 0000000..f8612a3 --- /dev/null +++ b/src/views/config/ConfigMaterial/ConfigMaterialTypeListModal.vue @@ -0,0 +1,75 @@ + + diff --git a/src/views/config/ConfigMaterial/components/ConfigMaterialCategoryForm.vue b/src/views/config/ConfigMaterial/components/ConfigMaterialCategoryForm.vue new file mode 100644 index 0000000..5315af2 --- /dev/null +++ b/src/views/config/ConfigMaterial/components/ConfigMaterialCategoryForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/src/views/config/ConfigMaterial/components/ConfigMaterialCategoryModal.vue b/src/views/config/ConfigMaterial/components/ConfigMaterialCategoryModal.vue new file mode 100644 index 0000000..776982f --- /dev/null +++ b/src/views/config/ConfigMaterial/components/ConfigMaterialCategoryModal.vue @@ -0,0 +1,76 @@ + + + + + \ No newline at end of file diff --git a/src/views/config/ConfigMaterial/components/ConfigMaterialInfoForm.vue b/src/views/config/ConfigMaterial/components/ConfigMaterialInfoForm.vue new file mode 100644 index 0000000..a44684c --- /dev/null +++ b/src/views/config/ConfigMaterial/components/ConfigMaterialInfoForm.vue @@ -0,0 +1,279 @@ + + + + + diff --git a/src/views/config/ConfigMaterial/components/ConfigMaterialInfoModal.vue b/src/views/config/ConfigMaterial/components/ConfigMaterialInfoModal.vue new file mode 100644 index 0000000..5d51502 --- /dev/null +++ b/src/views/config/ConfigMaterial/components/ConfigMaterialInfoModal.vue @@ -0,0 +1,77 @@ + + + + + + diff --git a/src/views/config/ConfigMaterial/components/ConfigMaterialMedicationForm.vue b/src/views/config/ConfigMaterial/components/ConfigMaterialMedicationForm.vue new file mode 100644 index 0000000..4867f12 --- /dev/null +++ b/src/views/config/ConfigMaterial/components/ConfigMaterialMedicationForm.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/src/views/config/ConfigMaterial/components/ConfigMaterialMedicationModal.vue b/src/views/config/ConfigMaterial/components/ConfigMaterialMedicationModal.vue new file mode 100644 index 0000000..541fc66 --- /dev/null +++ b/src/views/config/ConfigMaterial/components/ConfigMaterialMedicationModal.vue @@ -0,0 +1,77 @@ + + + + + + diff --git a/src/views/config/ConfigMaterial/components/ConfigMaterialTypeForm.vue b/src/views/config/ConfigMaterial/components/ConfigMaterialTypeForm.vue new file mode 100644 index 0000000..4d8f62b --- /dev/null +++ b/src/views/config/ConfigMaterial/components/ConfigMaterialTypeForm.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/src/views/config/ConfigMaterial/components/ConfigMaterialTypeModal.vue b/src/views/config/ConfigMaterial/components/ConfigMaterialTypeModal.vue new file mode 100644 index 0000000..d4007ce --- /dev/null +++ b/src/views/config/ConfigMaterial/components/ConfigMaterialTypeModal.vue @@ -0,0 +1,77 @@ + + + + + + diff --git a/src/views/config/configSuppliersInfo/ConfigSuppliersInfoList.vue b/src/views/config/configSuppliersInfo/ConfigSuppliersInfoList.vue index 1bd3d60..58997bc 100644 --- a/src/views/config/configSuppliersInfo/ConfigSuppliersInfoList.vue +++ b/src/views/config/configSuppliersInfo/ConfigSuppliersInfoList.vue @@ -1,27 +1,12 @@