From 1ba9a2de669ad5f8994c2c0ef935c9c911c910a8 Mon Sep 17 00:00:00 2001 From: "1378012178@qq.com" <1378012178@qq.com> Date: Mon, 25 Aug 2025 14:56:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=8C=87=E4=BB=A4=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.production | 6 +- .../elder/canaddet/CanAddElderTag.api.ts | 21 + .../elder/canaddet/CanAddElderTag.data.ts | 31 ++ .../elder/canaddet/CanAddElderTagList.vue | 248 ++++++++++ .../components/CanAddElderTagForm.vue | 120 +++++ .../components/CanAddElderTagModal.vue | 81 ++++ src/views/elder/eldertag/ElderTag.api.ts | 10 +- src/views/elder/eldertag/ElderTag.data.ts | 10 +- src/views/elder/eldertag/ElderTagList.vue | 90 +++- .../components/CompareElderTagList.vue | 353 ++++++++++++++ .../eldertag/components/ElderTag.data.ts | 10 +- .../eldertag/components/ElderTagForm.vue | 4 +- .../components/ElderTagRespositoryList.vue | 2 +- src/views/orgcom/OrgApplyInfo.api.ts | 96 ++++ src/views/orgcom/OrgCardCom.vue | 153 ++++++ src/views/orgcom/OrgListCom.vue | 146 ++++++ src/views/orgcom/orgaddressbk.png | Bin 0 -> 39178 bytes .../canadddirective/CanAddDirective.api.ts | 72 +++ .../canadddirective/CanAddDirective.data.ts | 83 ++++ .../canadddirective/CanAddDirectiveList.vue | 228 +++++++++ .../components/CanAddDirectiveDetail.vue | 315 +++++++++++++ .../components/CanAddDirectiveDetailModal.vue | 148 ++++++ .../components/CanAddDirectiveForm.vue | 445 ++++++++++++++++++ .../components/CanAddDirectiveModal.vue | 145 ++++++ .../directivemedia/DirectiveMedia.api.ts | 72 +++ .../directivemedia/DirectiveMedia.data.ts | 63 +++ .../directivemedia/DirectiveMediaList.vue | 308 ++++++++++++ .../components/DirectiveMediaForm.vue | 336 +++++++++++++ .../components/DirectiveMediaModal.vue | 83 ++++ .../ConfigServiceDirective.api.ts | 18 +- .../ConfigServiceDirective.data.ts | 32 +- .../ConfigServiceDirectiveList.vue | 189 ++++++-- .../components/AbnormalDirectiveList.vue | 320 +++++++++++++ .../components/CompareDirectiveList.vue | 357 ++++++++++++++ .../components/ConfigServiceDirective.data.ts | 24 +- .../components/ConfigServiceDirectiveForm.vue | 261 ++++++---- ...m1.vue => ConfigServiceDirectiveForm2.vue} | 199 +++----- .../components/DirectiveRadioCom.vue | 11 +- .../components/DirectiveRespositoryList.vue | 2 +- 39 files changed, 4803 insertions(+), 289 deletions(-) create mode 100644 src/views/elder/canaddet/CanAddElderTag.api.ts create mode 100644 src/views/elder/canaddet/CanAddElderTag.data.ts create mode 100644 src/views/elder/canaddet/CanAddElderTagList.vue create mode 100644 src/views/elder/canaddet/components/CanAddElderTagForm.vue create mode 100644 src/views/elder/canaddet/components/CanAddElderTagModal.vue create mode 100644 src/views/elder/eldertag/components/CompareElderTagList.vue create mode 100644 src/views/orgcom/OrgApplyInfo.api.ts create mode 100644 src/views/orgcom/OrgCardCom.vue create mode 100644 src/views/orgcom/OrgListCom.vue create mode 100644 src/views/orgcom/orgaddressbk.png create mode 100644 src/views/services/canadddirective/CanAddDirective.api.ts create mode 100644 src/views/services/canadddirective/CanAddDirective.data.ts create mode 100644 src/views/services/canadddirective/CanAddDirectiveList.vue create mode 100644 src/views/services/canadddirective/components/CanAddDirectiveDetail.vue create mode 100644 src/views/services/canadddirective/components/CanAddDirectiveDetailModal.vue create mode 100644 src/views/services/canadddirective/components/CanAddDirectiveForm.vue create mode 100644 src/views/services/canadddirective/components/CanAddDirectiveModal.vue create mode 100644 src/views/services/directivemedia/DirectiveMedia.api.ts create mode 100644 src/views/services/directivemedia/DirectiveMedia.data.ts create mode 100644 src/views/services/directivemedia/DirectiveMediaList.vue create mode 100644 src/views/services/directivemedia/components/DirectiveMediaForm.vue create mode 100644 src/views/services/directivemedia/components/DirectiveMediaModal.vue create mode 100644 src/views/services/serviceDirective/components/AbnormalDirectiveList.vue create mode 100644 src/views/services/serviceDirective/components/CompareDirectiveList.vue rename src/views/services/serviceDirective/components/{ConfigServiceDirectiveForm1.vue => ConfigServiceDirectiveForm2.vue} (76%) diff --git a/.env.production b/.env.production index cb59464..04195f8 100644 --- a/.env.production +++ b/.env.production @@ -2,7 +2,7 @@ VITE_USE_MOCK = false # 发布路径 -VITE_PUBLIC_PATH = /biz103 +VITE_PUBLIC_PATH = /biz101 # 是否启用gzip或brotli压缩 # 选项值: gzip | brotli | none @@ -13,10 +13,10 @@ VITE_BUILD_COMPRESS = 'gzip' VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false #后台接口父地址(必填) -VITE_GLOB_API_URL=/nursingunit103 +VITE_GLOB_API_URL=/nursingunit101 #后台接口全路径地址(必填) -VITE_GLOB_DOMAIN_URL=https://www.focusnu.com/nursingunit103 +VITE_GLOB_DOMAIN_URL=https://www.focusnu.com/nursingunit101 # 接口父路径前缀 VITE_GLOB_API_URL_PREFIX= diff --git a/src/views/elder/canaddet/CanAddElderTag.api.ts b/src/views/elder/canaddet/CanAddElderTag.api.ts new file mode 100644 index 0000000..dfb22da --- /dev/null +++ b/src/views/elder/canaddet/CanAddElderTag.api.ts @@ -0,0 +1,21 @@ +import { defHttp } from '/@/utils/http/axios'; +import { useMessage } from '/@/hooks/web/useMessage'; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/eldertag/canAddElderTag/list', + exportXls = '/eldertag/canAddElderTag/exportXls', +} + +/** + * 列表接口 + * @param params + */ +export const list = (params) => defHttp.get({ url: Api.list, params }); + +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; diff --git a/src/views/elder/canaddet/CanAddElderTag.data.ts b/src/views/elder/canaddet/CanAddElderTag.data.ts new file mode 100644 index 0000000..6a4d999 --- /dev/null +++ b/src/views/elder/canaddet/CanAddElderTag.data.ts @@ -0,0 +1,31 @@ +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: 'sysOrgCode_dictText', + }, + { + title: '标签类型', + align: 'center', + dataIndex: 'type_dictText', + }, + { + title: '标签名称', + align: 'center', + dataIndex: 'tagName', + }, + { + title: '价格(元)', + align: 'center', + dataIndex: 'price', + }, +]; + +// 高级查询数据 +export const superQuerySchema = {}; diff --git a/src/views/elder/canaddet/CanAddElderTagList.vue b/src/views/elder/canaddet/CanAddElderTagList.vue new file mode 100644 index 0000000..c08ecef --- /dev/null +++ b/src/views/elder/canaddet/CanAddElderTagList.vue @@ -0,0 +1,248 @@ + + + + + diff --git a/src/views/elder/canaddet/components/CanAddElderTagForm.vue b/src/views/elder/canaddet/components/CanAddElderTagForm.vue new file mode 100644 index 0000000..e582962 --- /dev/null +++ b/src/views/elder/canaddet/components/CanAddElderTagForm.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/src/views/elder/canaddet/components/CanAddElderTagModal.vue b/src/views/elder/canaddet/components/CanAddElderTagModal.vue new file mode 100644 index 0000000..6a8c0b6 --- /dev/null +++ b/src/views/elder/canaddet/components/CanAddElderTagModal.vue @@ -0,0 +1,81 @@ + + + + + + diff --git a/src/views/elder/eldertag/ElderTag.api.ts b/src/views/elder/eldertag/ElderTag.api.ts index 8b461fc..27c6fbe 100644 --- a/src/views/elder/eldertag/ElderTag.api.ts +++ b/src/views/elder/eldertag/ElderTag.api.ts @@ -14,6 +14,7 @@ enum Api { listByDS = '/elder/elderTag/listByDS', idListByDS = '/elder/elderTag/idListByDS', syncElderTag = '/elder/elderTag/syncElderTag', + compareList = '/elder/elderTag/compareList', } /** @@ -94,4 +95,11 @@ export const idListByDS = (params) => defHttp.get({ url: Api.idListByDS, params */ export const syncElderTag = (dataSourceCode: string, params: any) => { return defHttp.post({ url: `${Api.syncElderTag}?sourceOrgCode=${encodeURIComponent(dataSourceCode)}`, params }); -}; \ No newline at end of file +}; + +/** + * 差异数据对比 + * @param params compareOrgCode + * @returns + */ +export const compareList = (params) => defHttp.get({ url: Api.compareList, params }); \ No newline at end of file diff --git a/src/views/elder/eldertag/ElderTag.data.ts b/src/views/elder/eldertag/ElderTag.data.ts index 5d681eb..32ff1a8 100644 --- a/src/views/elder/eldertag/ElderTag.data.ts +++ b/src/views/elder/eldertag/ElderTag.data.ts @@ -26,11 +26,11 @@ export const columns: BasicColumn[] = [ dataIndex: 'pic', customRender: render.renderImage, }, - { - title: '排序', - align: 'center', - dataIndex: 'sort', - }, + // { + // title: '排序', + // align: 'center', + // dataIndex: 'sort', + // }, { title: '是否启用', align: 'center', diff --git a/src/views/elder/eldertag/ElderTagList.vue b/src/views/elder/eldertag/ElderTagList.vue index a6ddff7..b79c76f 100644 --- a/src/views/elder/eldertag/ElderTagList.vue +++ b/src/views/elder/eldertag/ElderTagList.vue @@ -45,6 +45,10 @@ preIcon="ant-design:plus-outlined"> 新增 标准标签库 + 差异比对 + 差异标签 @@ -63,7 +91,7 @@ import { ref, reactive, onMounted } from 'vue'; import { BasicTable, useTable, TableAction } from '/@/components/Table'; import { useListPage } from '/@/hooks/system/useListPage'; import { columns, superQuerySchema } from './ElderTag.data'; -import { list, deleteOne, batchDelete, getImportUrl, getExportUrl } from './ElderTag.api'; +import { list, idListByDS, deleteOne, batchDelete, getImportUrl, getExportUrl } from './ElderTag.api'; import { downloadFile } from '/@/utils/common/renderUtils'; import ElderTagModal from './components/ElderTagModal.vue' import { useUserStore } from '/@/store/modules/user'; @@ -72,6 +100,8 @@ import JInput from "/@/components/Form/src/jeecg/components/JInput.vue"; import { queryByKey } from '/@/views/admin/sysconfig/SysConfig.api' import { getOrgInfo } from '@/api/common/api' import { useMessage } from '/@/hooks/web/useMessage'; +import CanAddElderTagList from '/@/views/elder/canaddet/CanAddElderTagList.vue' +import CompareElderTagList from './components/CompareElderTagList.vue' const formRef = ref(); const queryParam = reactive({}); @@ -80,6 +110,14 @@ const registerModal = ref(); const userStore = useUserStore(); const isShowETM = ref(false)//是否展示标签库功能 const mainOrgCode = ref()//标准标签库编码 +const canAddElderTagRef = ref() +const newElderTagVisible = ref(false) +const existETIds = ref([])//指令库已存在指令id +const ownOrgCode = ref('') //本机构编码 +const ownOrgName = ref('') //本机构名称 +const elderTagMainOrgInfo = ref() +const compareListRef = ref() +const compareListOpen = ref(false) //注册table数据 const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({ tableProps: { @@ -92,16 +130,16 @@ const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({ width: 120, fixed: 'right', }, - defSort: { - column: 'sort', - order: 'asc', - }, + // defSort: { + // column: 'sort', + // order: 'asc', + // }, beforeFetch: async (params) => { return Object.assign(params, queryParam); }, }, exportConfig: { - name: "长者标签", + name: "差异标签", url: getExportUrl, params: queryParam, }, @@ -225,12 +263,50 @@ function handleDirectiveMainOpen() { } async function getElderTagMainOrgCode() { - let { orgCode } = await getOrgInfo() + let { orgCode, orgName } = await getOrgInfo() + ownOrgCode.value = orgCode + ownOrgName.value = orgName let { configValue } = await queryByKey({ key: 'elder_tag_main_org_code' }) mainOrgCode.value = configValue if (orgCode != configValue) isShowETM.value = true } +//刷新已有指令库 +async function refreshDMExistedIds(dmOrgInfo, izReset = false, izQuery = true) { + await idListByDS({ dataSourceCode: 'master' }).then(res => { + existETIds.value = res.records + if (izReset) { + canAddElderTagRef.value?.searchReset() + } else { + canAddElderTagRef.value?.reload() + } + }) +} + +async function handleLookNewDirectives() { + await refreshDMExistedIds(elderTagMainOrgInfo.value, true) + newElderTagVisible.value = true +} + +/** + * 关闭新增指令 + */ +function handleCancelNewElderTag() { + newElderTagVisible.value = false +} + + +/** + * 差异比对 + */ +function handleCompare() { + compareListOpen.value = true +} + +function onCompareListClose() { + compareListOpen.value = false +} + // 添加音频结束监听 onMounted(() => { getElderTagMainOrgCode() diff --git a/src/views/elder/eldertag/components/CompareElderTagList.vue b/src/views/elder/eldertag/components/CompareElderTagList.vue new file mode 100644 index 0000000..ef1631d --- /dev/null +++ b/src/views/elder/eldertag/components/CompareElderTagList.vue @@ -0,0 +1,353 @@ + + + + + diff --git a/src/views/elder/eldertag/components/ElderTag.data.ts b/src/views/elder/eldertag/components/ElderTag.data.ts index 30e954d..a237b16 100644 --- a/src/views/elder/eldertag/components/ElderTag.data.ts +++ b/src/views/elder/eldertag/components/ElderTag.data.ts @@ -20,11 +20,11 @@ export const columns: BasicColumn[] = [ align: 'center', dataIndex: 'price', }, - { - title: '排序', - align: 'center', - dataIndex: 'sort', - }, + // { + // title: '排序', + // align: 'center', + // dataIndex: 'sort', + // }, { title: '是否启用', align: 'center', diff --git a/src/views/elder/eldertag/components/ElderTagForm.vue b/src/views/elder/eldertag/components/ElderTagForm.vue index 93195ea..8f24dd6 100644 --- a/src/views/elder/eldertag/components/ElderTagForm.vue +++ b/src/views/elder/eldertag/components/ElderTagForm.vue @@ -30,11 +30,11 @@ - + defHttp.get({ url: Api.list, params }); + +/** + * 获取机构详细信息(包含sys_depart信息) + * @param params orgCode部门编码 不传查所有 + * @returns + */ +export const getOrgInfo = (params) => defHttp.get({ url: Api.getOrgInfo, 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 }); +} + + +export const editCg = (params, isUpdate) => { + return defHttp.post({ url: Api.editCg, params }, { isTransformResponse: false }); +} + +/** + * 保存并提交 + * @param params + * @param isUpdate + */ +export const submitContract = (params) => { + return defHttp.post({ url: Api.submitContract, params }); +} diff --git a/src/views/orgcom/OrgCardCom.vue b/src/views/orgcom/OrgCardCom.vue new file mode 100644 index 0000000..eecbd80 --- /dev/null +++ b/src/views/orgcom/OrgCardCom.vue @@ -0,0 +1,153 @@ + + + + + \ No newline at end of file diff --git a/src/views/orgcom/OrgListCom.vue b/src/views/orgcom/OrgListCom.vue new file mode 100644 index 0000000..8cf5087 --- /dev/null +++ b/src/views/orgcom/OrgListCom.vue @@ -0,0 +1,146 @@ + + + \ No newline at end of file diff --git a/src/views/orgcom/orgaddressbk.png b/src/views/orgcom/orgaddressbk.png new file mode 100644 index 0000000000000000000000000000000000000000..e8fd3dd071e938d3959451da3ac7fa73bb9dc293 GIT binary patch literal 39178 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 QqyPW_07*qoM6N<$f;K?JPXGV_ literal 0 HcmV?d00001 diff --git a/src/views/services/canadddirective/CanAddDirective.api.ts b/src/views/services/canadddirective/CanAddDirective.api.ts new file mode 100644 index 0000000..1837053 --- /dev/null +++ b/src/views/services/canadddirective/CanAddDirective.api.ts @@ -0,0 +1,72 @@ +import { defHttp } from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/canadddirective/canAddDirective/list', + save='/canadddirective/canAddDirective/add', + edit='/canadddirective/canAddDirective/edit', + deleteOne = '/canadddirective/canAddDirective/delete', + deleteBatch = '/canadddirective/canAddDirective/deleteBatch', + importExcel = '/canadddirective/canAddDirective/importExcel', + exportXls = '/canadddirective/canAddDirective/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/services/canadddirective/CanAddDirective.data.ts b/src/views/services/canadddirective/CanAddDirective.data.ts new file mode 100644 index 0000000..ab9f0bd --- /dev/null +++ b/src/views/services/canadddirective/CanAddDirective.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: 'orgCode_dictText', + width:200, + }, + { + title: '分类标签', + align: 'center', + dataIndex: 'instructionTag', + width: 170, + }, + { + title: '服务类别', + align: 'center', + dataIndex: 'category', + width: 170, + }, + { + title: '服务类型', + align: 'center', + dataIndex: 'type', + width: 170, + }, + { + title: '服务指令', + align: 'center', + dataIndex: 'directiveName', + }, + { + title: '周期类型', + align: 'center', + dataIndex: 'cycleType', + width: 120, + }, + { + title: '收费价格(元)', + align: 'center', + dataIndex: 'tollPrice', + width: 100, + }, + { + title: '提成价格(元)', + align: 'center', + dataIndex: 'comPrice', + }, + { + title: '服务时长(分钟)', + align: 'center', + dataIndex: 'serviceDuration', + width: 135, + }, + { + title: '服务指令描述', + align: 'center', + dataIndex: 'serviceContent', + width: 200, + }, + { + title: '创建日期', + align: 'center', + dataIndex: 'createTime', + width: 160, + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + instructionTag: { title: '分类标签', order: 0, view: 'text', type: 'string' }, + category: { title: '服务类别', order: 1, view: 'text', type: 'string' }, + type: { title: '服务类型', order: 2, view: 'text', type: 'string' }, + directiveName: { title: '服务指令', order: 3, view: 'text', type: 'string' }, + cycleType: { title: '周期类型', order: 4, view: 'text', type: 'string' }, + createTime: { title: '创建日期', order: 5, view: 'datetime', type: 'string' }, + orgCode: { title: '所属部门', order: 6, view: 'list', type: 'string', dictTable: 'sys_depart', dictCode: 'org_code', dictText: 'depart_name' }, +}; diff --git a/src/views/services/canadddirective/CanAddDirectiveList.vue b/src/views/services/canadddirective/CanAddDirectiveList.vue new file mode 100644 index 0000000..0673171 --- /dev/null +++ b/src/views/services/canadddirective/CanAddDirectiveList.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/src/views/services/canadddirective/components/CanAddDirectiveDetail.vue b/src/views/services/canadddirective/components/CanAddDirectiveDetail.vue new file mode 100644 index 0000000..8430579 --- /dev/null +++ b/src/views/services/canadddirective/components/CanAddDirectiveDetail.vue @@ -0,0 +1,315 @@ + + + + + diff --git a/src/views/services/canadddirective/components/CanAddDirectiveDetailModal.vue b/src/views/services/canadddirective/components/CanAddDirectiveDetailModal.vue new file mode 100644 index 0000000..034af9d --- /dev/null +++ b/src/views/services/canadddirective/components/CanAddDirectiveDetailModal.vue @@ -0,0 +1,148 @@ + + + + + + diff --git a/src/views/services/canadddirective/components/CanAddDirectiveForm.vue b/src/views/services/canadddirective/components/CanAddDirectiveForm.vue new file mode 100644 index 0000000..a41bc2e --- /dev/null +++ b/src/views/services/canadddirective/components/CanAddDirectiveForm.vue @@ -0,0 +1,445 @@ + + + + + diff --git a/src/views/services/canadddirective/components/CanAddDirectiveModal.vue b/src/views/services/canadddirective/components/CanAddDirectiveModal.vue new file mode 100644 index 0000000..47dd7e9 --- /dev/null +++ b/src/views/services/canadddirective/components/CanAddDirectiveModal.vue @@ -0,0 +1,145 @@ + + + + + + diff --git a/src/views/services/directivemedia/DirectiveMedia.api.ts b/src/views/services/directivemedia/DirectiveMedia.api.ts new file mode 100644 index 0000000..7533d8f --- /dev/null +++ b/src/views/services/directivemedia/DirectiveMedia.api.ts @@ -0,0 +1,72 @@ +import { defHttp } from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/services/directiveMedia/list', + save='/services/directiveMedia/add', + edit='/services/directiveMedia/edit', + deleteOne = '/services/directiveMedia/delete', + deleteBatch = '/services/directiveMedia/deleteBatch', + importExcel = '/services/directiveMedia/importExcel', + exportXls = '/services/directiveMedia/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/services/directivemedia/DirectiveMedia.data.ts b/src/views/services/directivemedia/DirectiveMedia.data.ts new file mode 100644 index 0000000..5c8c8a8 --- /dev/null +++ b/src/views/services/directivemedia/DirectiveMedia.data.ts @@ -0,0 +1,63 @@ +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: 'directiveName' + }, + { + title: '分类标签', + align: "center", + dataIndex: 'instructionTagId_dictText' + }, + { + title: '服务类别', + align: "center", + dataIndex: 'categoryId_dictText' + }, + { + title: '服务类型', + align: "center", + dataIndex: 'typeId_dictText' + }, + { + title: '周期类型', + align: "center", + dataIndex: 'cycleType_dictText' + }, + { + title: '服务指令图片大图', + align: "center", + dataIndex: 'previewFile', + customRender: render.renderImage, + }, + { + title: '服务指令图片小图', + align: "center", + dataIndex: 'previewFileSmall', + customRender: render.renderImage, + }, + { + title: '即时指令图标', + align: "center", + dataIndex: 'immediateFile', + customRender: render.renderImage, + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + directiveName: {title: '服务指令名称',order: 0,view: 'text', type: 'string',}, + instructionTagId: {title: '分类标签id',order: 1,view: 'list', type: 'string',dictCode: '',}, + categoryId: {title: '服务类别id',order: 2,view: 'list', type: 'string',dictCode: '',}, + typeId: {title: '服务类型id',order: 3,view: 'list', type: 'string',dictCode: '',}, + cycleType: {title: '周期类型',order: 4,view: 'list', type: 'string',dictCode: '',}, + previewFile: {title: '服务指令图片大图',order: 5,view: 'image', type: 'string',}, + previewFileSmall: {title: '服务指令图片小图',order: 6,view: 'image', type: 'string',}, + immediateFile: {title: '即时指令图标',order: 7,view: 'image', type: 'string',}, +}; diff --git a/src/views/services/directivemedia/DirectiveMediaList.vue b/src/views/services/directivemedia/DirectiveMediaList.vue new file mode 100644 index 0000000..4eaf4fa --- /dev/null +++ b/src/views/services/directivemedia/DirectiveMediaList.vue @@ -0,0 +1,308 @@ + + + + + diff --git a/src/views/services/directivemedia/components/DirectiveMediaForm.vue b/src/views/services/directivemedia/components/DirectiveMediaForm.vue new file mode 100644 index 0000000..11db597 --- /dev/null +++ b/src/views/services/directivemedia/components/DirectiveMediaForm.vue @@ -0,0 +1,336 @@ + + + + + diff --git a/src/views/services/directivemedia/components/DirectiveMediaModal.vue b/src/views/services/directivemedia/components/DirectiveMediaModal.vue new file mode 100644 index 0000000..c365040 --- /dev/null +++ b/src/views/services/directivemedia/components/DirectiveMediaModal.vue @@ -0,0 +1,83 @@ + + + + + + diff --git a/src/views/services/serviceDirective/ConfigServiceDirective.api.ts b/src/views/services/serviceDirective/ConfigServiceDirective.api.ts index c0541d6..2edfbaf 100644 --- a/src/views/services/serviceDirective/ConfigServiceDirective.api.ts +++ b/src/views/services/serviceDirective/ConfigServiceDirective.api.ts @@ -6,6 +6,7 @@ const { createConfirm } = useMessage(); enum Api { list = '/services/serviceDirective/list', save = '/services/serviceDirective/add', + batchAdd = '/services/serviceDirective/batchAdd', edit = '/services/serviceDirective/edit', deleteOne = '/services/serviceDirective/delete', deleteBatch = '/services/serviceDirective/deleteBatch', @@ -21,6 +22,7 @@ enum Api { idListByDS = '/services/serviceDirective/idListByDS', syncDirective = '/services/serviceDirective/syncDirective', useOrStopCascade = '/services/serviceDirective/useOrStopCascade', + compareList = '/services/serviceDirective/compareList', } /** @@ -94,6 +96,13 @@ export const saveOrUpdate = (params, isUpdate) => { let url = isUpdate ? Api.edit : Api.save; return defHttp.post({ url: url, params }, { isTransformResponse: false }); }; +/** + * 批量新增 + * @param params + */ +export const batchAdd = (params) => { + return defHttp.post({ url: Api.batchAdd, params }, { isTransformResponse: false }); +}; /** * 同步数据 @@ -141,4 +150,11 @@ export const syncDirective = (dataSourceCode: string, params: any) => { */ export const useOrStopCascade = (params) => { return defHttp.post({ url: Api.useOrStopCascade, params }); -}; \ No newline at end of file +}; + +/** + * 差异数据对比 + * @param params compareOrgCode + * @returns + */ +export const compareList = (params) => defHttp.get({ url: Api.compareList, params }); \ No newline at end of file diff --git a/src/views/services/serviceDirective/ConfigServiceDirective.data.ts b/src/views/services/serviceDirective/ConfigServiceDirective.data.ts index b0c2edb..9356621 100644 --- a/src/views/services/serviceDirective/ConfigServiceDirective.data.ts +++ b/src/views/services/serviceDirective/ConfigServiceDirective.data.ts @@ -78,18 +78,18 @@ export const columns: BasicColumn[] = [ dataIndex: 'comPrice', width: 95, }, - { - title: '医保报销', - align: 'center', - dataIndex: 'izReimbursement_dictText', - width: 100, - }, - { - title: '机构优惠', - align: 'center', - dataIndex: 'izPreferential_dictText', - width: 100, - }, + // { + // title: '医保报销', + // align: 'center', + // dataIndex: 'izReimbursement_dictText', + // width: 100, + // }, + // { + // title: '机构优惠', + // align: 'center', + // dataIndex: 'izPreferential_dictText', + // width: 100, + // }, { title: '周期类型', align: 'center', @@ -114,11 +114,17 @@ export const columns: BasicColumn[] = [ width: 100, }, { - title: '服务指令图片', + title: '服务指令图片大图', align: 'center', dataIndex: 'previewFile', customRender: render.renderImage, }, + { + title: '服务指令图片小图', + align: 'center', + dataIndex: 'previewFileSmall', + customRender: render.renderImage, + }, { title: '服务指令描述', align: 'center', diff --git a/src/views/services/serviceDirective/ConfigServiceDirectiveList.vue b/src/views/services/serviceDirective/ConfigServiceDirectiveList.vue index 5b22c78..c72bef7 100644 --- a/src/views/services/serviceDirective/ConfigServiceDirectiveList.vue +++ b/src/views/services/serviceDirective/ConfigServiceDirectiveList.vue @@ -73,7 +73,8 @@
-
+
@@ -88,7 +89,7 @@
新增分类标签 + v-show="mainOrgCode == ownOrgCode" preIcon="ant-design:plus-outlined">新增分类标签 + + diff --git a/src/views/services/serviceDirective/components/CompareDirectiveList.vue b/src/views/services/serviceDirective/components/CompareDirectiveList.vue new file mode 100644 index 0000000..c1075b9 --- /dev/null +++ b/src/views/services/serviceDirective/components/CompareDirectiveList.vue @@ -0,0 +1,357 @@ + + + + + diff --git a/src/views/services/serviceDirective/components/ConfigServiceDirective.data.ts b/src/views/services/serviceDirective/components/ConfigServiceDirective.data.ts index a364a3b..369c371 100644 --- a/src/views/services/serviceDirective/components/ConfigServiceDirective.data.ts +++ b/src/views/services/serviceDirective/components/ConfigServiceDirective.data.ts @@ -77,18 +77,18 @@ export const columns: BasicColumn[] = [ align: 'center', dataIndex: 'comPrice', }, - { - title: '医保报销', - align: 'center', - dataIndex: 'izReimbursement_dictText', - width: 100, - }, - { - title: '机构优惠', - align: 'center', - dataIndex: 'izPreferential_dictText', - width: 100, - }, + // { + // title: '医保报销', + // align: 'center', + // dataIndex: 'izReimbursement_dictText', + // width: 100, + // }, + // { + // title: '机构优惠', + // align: 'center', + // dataIndex: 'izPreferential_dictText', + // width: 100, + // }, { title: '周期类型', align: 'center', diff --git a/src/views/services/serviceDirective/components/ConfigServiceDirectiveForm.vue b/src/views/services/serviceDirective/components/ConfigServiceDirectiveForm.vue index 96e92de..3a30f7f 100644 --- a/src/views/services/serviceDirective/components/ConfigServiceDirectiveForm.vue +++ b/src/views/services/serviceDirective/components/ConfigServiceDirectiveForm.vue @@ -1,12 +1,46 @@