服务指令、长者标签禅道bug

This commit is contained in:
1378012178@qq.com 2025-08-28 16:03:57 +08:00
parent 2dbf9e1759
commit 4b3231c311
13 changed files with 119 additions and 61 deletions

View File

@ -9,7 +9,7 @@
<a-form-item name="sysOrgCode">
<template #label><span title="所属机构">所属机构</span></template>
<j-dict-select-tag placeholder="请选择所属机构" v-model:value="queryParam.sysOrgCode" :orgCode="'ope'"
dictCode="sys_depart,depart_name,org_code" allow-clear />
dictCode="sys_depart,depart_name,org_code,del_flag = '0'" allow-clear />
</a-form-item>
</a-col>
<a-col :lg="6">

View File

@ -1,27 +1,20 @@
<template>
<div class="compare-table-wrap">
<div style="margin-bottom: 14px;width: 100%;">
<a-button type="primary" style="float: right;" @click="showTargetOrgListModal"
<a-button type="primary" style="float: left;" @click="showTargetOrgListModal"
:disabled="loading">目标机构</a-button>
</div>
<a-table
:columns="headChildColumns"
:data-source="rows"
bordered
size="middle"
:scroll="{ y: 640 }"
:pagination="false"
>
<a-table :columns="headChildColumns" :data-source="rows" bordered size="middle" :scroll="{ y: 640 }"
:pagination="false">
<template #bodyCell="{ column, text, record }">
<template v-if="column.dataIndex === 'ownOrgName'">
{{ownOrgName}}
{{ ownOrgName }}
</template>
<template v-else-if="column.dataIndex === 'ownExist'">
<div class="org-badge">
<svg v-if="text" class="icon check" viewBox="0 0 24 24" aria-hidden="true">
<path
d="M20.285 6.709l-11.39 11.39-5.18-5.18 1.414-1.414 3.766 3.766 9.976-9.976z" />
<path d="M20.285 6.709l-11.39 11.39-5.18-5.18 1.414-1.414 3.766 3.766 9.976-9.976z" />
</svg>
<svg v-else class="icon cross" viewBox="0 0 24 24" aria-hidden="true">
<path
@ -30,13 +23,12 @@
</div>
</template>
<template v-else-if="column.dataIndex === 'own2OrgName'">
{{targetOrgInfo.comName}}
{{ targetOrgInfo.comName }}
</template>
<template v-else-if="column.dataIndex === 'targetExist'">
<div class="org-badge">
<svg v-if="text" class="icon check" viewBox="0 0 24 24" aria-hidden="true">
<path
d="M20.285 6.709l-11.39 11.39-5.18-5.18 1.414-1.414 3.766 3.766 9.976-9.976z" />
<path d="M20.285 6.709l-11.39 11.39-5.18-5.18 1.414-1.414 3.766 3.766 9.976-9.976z" />
</svg>
<svg v-else class="icon cross" viewBox="0 0 24 24" aria-hidden="true">
<path
@ -46,18 +38,19 @@
</template>
</template>
</a-table>
</div>
<a-modal v-model:visible="targetOrgListVisible" title="请选择目标机构" width="90vw" @cancel="handleCancelTarget"
:bodyStyle="{ padding: '14px', height: '70vh', display: 'flex', flexDirection: 'column', overflow: 'auto' }">
<a-drawer v-model:visible="targetOrgListVisible" title="请选择目标机构" width="90vw" @cancel="handleCancelTarget"
:bodyStyle="{ padding: '14px', height: '70vh', display: 'flex', flexDirection: 'column', overflow: 'auto' }"
:footer-style="{ textAlign: 'right' }">
<template #footer>
<a-button @click="handleCancelTarget" type="primary">取消</a-button>
<a-button @click="handleCancelTarget" type="primary" style="margin-right: 10px;">取消</a-button>
<a-button @click="handleGetTarget" type="primary">确认</a-button>
</template>
<OrgListCom class="step-content" ref="targetOrgListComRef" @handleOrgChoose="handleTargetOrgChoose"
:showChoose="true" :showDirectiveChoose="true" :pageSize="-1" :excludeOrgCode="ownOrgCode" />
</a-modal>
</a-drawer>
</template>
<script lang="ts" setup>
@ -318,4 +311,9 @@ async function initData() {
gap: 8px;
}
}
.step-content {
// overflow: auto;
height: 70vh;
}
</style>

View File

@ -46,21 +46,25 @@ export const headChildColumns: BasicColumn[] = [
title: '标签类型',
align: 'center',
dataIndex: 'type',
ellipsis: true,
},
{
title: '标签名称',
align: 'center',
dataIndex: 'tagName',
ellipsis: true,
},
{
title: '说明',
align: 'center',
dataIndex: 'describ',
ellipsis: true,
},
{
title: '价格(元)',
align: 'center',
dataIndex: 'price',
ellipsis: true,
},
],
},
@ -71,12 +75,14 @@ export const headChildColumns: BasicColumn[] = [
title: '名称',
align: 'center',
dataIndex: 'ownOrgName',
ellipsis: true,
width: 200,
},
{
title: '是否存在',
align: 'center',
dataIndex: 'ownExist',
ellipsis: true,
width: 100,
},
],
@ -88,12 +94,14 @@ export const headChildColumns: BasicColumn[] = [
title: '名称',
align: 'center',
dataIndex: 'own2OrgName',
ellipsis: true,
width: 200,
},
{
title: '是否存在',
align: 'center',
dataIndex: 'targetExist',
ellipsis: true,
width: 100,
},
],

View File

@ -6,15 +6,14 @@
<a-row>
<a-col :span="24">
<a-form-item label="标签类型" v-bind="validateInfos.type" id="ElderTagForm-type" name="type">
<j-dict-select-tag v-model:value="formData.type"
dictCode="elder_tag_type" placeholder="请选择标签类型" allowClear
:disabled="!!formData.id" />
<j-dict-select-tag v-model:value="formData.type" dictCode="elder_tag_type" placeholder="请选择标签类型"
allowClear :disabled="!!formData.id" />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="标签名称" v-bind="validateInfos.tagName" id="ElderTagForm-tagName" name="tagName">
<a-input v-model:value="formData.tagName" placeholder="请输入标签名称" allow-clear
:disabled="!!formData.id"></a-input>
<a-input v-model:value="formData.tagName" placeholder="请输入标签名称" allow-clear :disabled="!!formData.id"
:maxlength="10" :showCount="true"></a-input>
</a-form-item>
</a-col>
<a-col :span="24">

View File

@ -107,9 +107,30 @@ const handleDetail = () => {
}
.org-card {
margin-bottom: 16px;
border-radius: 8px;
// box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
transition: all 0.3s ease;
height: 90%;
&:hover {
border-color: #55a9f8;
box-shadow: 0 2px 8px rgba(37, 149, 255, 0.3);
transform: translateY(-4px);
// box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15);
// background: radial-gradient(circle at center, #c7e6ff 0%, #d4eeff 70%, #e4f0ff 100%);
}
:deep(.ant-card-head) {
border-bottom: 1px solid #f0f0f0;
padding: 0 16px;
min-height: 48px;
.ant-card-head-title {
padding: 12px 0;
font-weight: 500;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
}

View File

@ -9,7 +9,7 @@
<a-form-item name="orgCode">
<template #label><span title="所属机构">所属机构</span></template>
<j-dict-select-tag placeholder="请选择所属机构" v-model:value="queryParam.orgCode" :orgCode="'ope'"
dictCode="sys_depart,depart_name,org_code" allow-clear />
dictCode="sys_depart,depart_name,org_code,del_flag = '0'" allow-clear />
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">

View File

@ -23,6 +23,7 @@ import InstructionTagForm from './InstructionTagForm.vue'
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
import { useMessage } from '/@/hooks/web/useMessage';
import { saveOrUpdate } from '../InstructionTag.api';
import { clearCache } from '/@/utils/cache/cacheUtil'
const { createMessage } = useMessage();
const title = ref<string>('');
@ -67,6 +68,7 @@ function handleOk() {
*/
function submitCallback() {
handleCancel();
clearCache()
emit('success');
}

View File

@ -23,6 +23,7 @@ import ConfigServiceCategoryForm from './ConfigServiceCategoryForm.vue'
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
import { useMessage } from '/@/hooks/web/useMessage';
import { saveOrUpdate,useOrStopCascade } from '../ConfigServiceCategory.api';
import { clearCache } from '/@/utils/cache/cacheUtil'
const { createMessage } = useMessage();
const title = ref<string>('');
@ -67,6 +68,7 @@ function handleOk() {
*/
function submitCallback() {
handleCancel();
clearCache()
emit('success');
}

View File

@ -46,7 +46,8 @@
mode="inline" @openChange="onOpenChange">
<template v-for="item in treeData">
<!-- 第一层判断是否有下级 -->
<a-sub-menu v-if="item.children && item.children.length > 0" :key="item.key">
<a-sub-menu v-if="item.children && item.children.length > 0" :key="item.key"
@titleClick="handleTreeSelect([], {node:item})">
<template #icon>
<Icon :icon="item.icon" :size="20" v-if="item.icon" />
<Icon icon="ant-design:appstore-add-outlined" :size="20" v-else />
@ -79,7 +80,8 @@
<!-- 第二层判断是否有下级 -->
<template v-for="child in item.children">
<a-sub-menu :key="child.key" v-if="child.children && child.children.length > 0">
<a-sub-menu :key="child.key" v-if="child.children && child.children.length > 0"
@titleClick="handleTreeSelect([], {node:child})">
<!-- <template #icon>
<Icon icon="ant-design:border-verticle-outlined" :size="20" />
</template> -->
@ -110,7 +112,8 @@
</template>
<!-- 第三层判断是否有下级 -->
<template v-for="childThree in child.children">
<a-sub-menu :key="childThree.key" v-if="childThree.children && childThree.children.length > 0">
<a-sub-menu :key="childThree.key" v-if="childThree.children && childThree.children.length > 0"
@titleClick="handleTreeSelect([], {node:childThree})">
<!-- <template #icon>
<Icon icon="ant-design:border-bottom-outlined" :size="20" />
</template> -->
@ -142,7 +145,8 @@
</span>
</template>
<!-- 第四层判断是否有下级 -->
<a-menu-item :key="childFour.key" v-for="childFour in childThree.children">
<a-menu-item :key="childFour.key" v-for="childFour in childThree.children"
@click="handleTreeSelect([], {node:childFour})">
<span @mouseenter="childFour.showContent = true" @mouseleave="childFour.showContent = false"
class="auto-wrap">{{ childFour?.title + '(' + childFour?.cycleTypeName + ')' }}
<span v-if="childFour?.izEnabled == '1' && childFour.level != 5"
@ -170,7 +174,8 @@
</span>
</a-menu-item>
</a-sub-menu>
<a-menu-item :key="childThree.key" v-if="!childThree.children || childThree.children.length < 1">
<a-menu-item :key="childThree.key" v-if="!childThree.children || childThree.children.length < 1"
@click="handleTreeSelect([], {node:childThree})">
<!-- <template #icon>
<Icon icon="ant-design:border-bottom-outlined" :size="20" />
</template> -->
@ -202,7 +207,8 @@
</a-menu-item>
</template>
</a-sub-menu>
<a-menu-item :key="child.key" v-if="!child.children || child.children.length < 1">
<a-menu-item :key="child.key" v-if="!child.children || child.children.length < 1"
@click="handleTreeSelect([], {node:child})">
<!-- <template #icon>
<Icon icon="ant-design:border-verticle-outlined" :size="20" />
</template> -->
@ -231,7 +237,8 @@
</a-menu-item>
</template>
</a-sub-menu>
<a-menu-item :key="item.key" v-if="!item.children || item.children.length < 1">
<a-menu-item :key="item.key" v-if="!item.children || item.children.length < 1"
@click="handleTreeSelect([], {node:item})">
<template #icon>
<Icon :icon="item.icon" :size="20" v-if="item.icon" />
<Icon icon="ant-design:appstore-add-outlined" :size="20" v-else />

View File

@ -1,27 +1,20 @@
<template>
<div class="compare-table-wrap">
<div style="margin-bottom: 14px;width: 100%;">
<a-button type="primary" style="float: right;" @click="showTargetOrgListModal"
<a-button type="primary" style="float: left;" @click="showTargetOrgListModal"
:disabled="loading">目标机构</a-button>
</div>
<a-table
:columns="headChildColumns"
:data-source="rows"
bordered
size="middle"
:scroll="{ y: 640 }"
:pagination="false"
>
<a-table :columns="headChildColumns" :data-source="rows" bordered size="middle" :scroll="{ y: 640 }"
:pagination="false">
<template #bodyCell="{ column, text, record }">
<template v-if="column.dataIndex === 'ownOrgName'">
{{ownOrgName}}
{{ ownOrgName }}
</template>
<template v-else-if="column.dataIndex === 'ownExist'">
<div class="org-badge">
<svg v-if="text" class="icon check" viewBox="0 0 24 24" aria-hidden="true">
<path
d="M20.285 6.709l-11.39 11.39-5.18-5.18 1.414-1.414 3.766 3.766 9.976-9.976z" />
<path d="M20.285 6.709l-11.39 11.39-5.18-5.18 1.414-1.414 3.766 3.766 9.976-9.976z" />
</svg>
<svg v-else class="icon cross" viewBox="0 0 24 24" aria-hidden="true">
<path
@ -30,13 +23,12 @@
</div>
</template>
<template v-else-if="column.dataIndex === 'own2OrgName'">
{{targetOrgInfo.comName}}
{{ targetOrgInfo.comName }}
</template>
<template v-else-if="column.dataIndex === 'targetExist'">
<div class="org-badge">
<svg v-if="text" class="icon check" viewBox="0 0 24 24" aria-hidden="true">
<path
d="M20.285 6.709l-11.39 11.39-5.18-5.18 1.414-1.414 3.766 3.766 9.976-9.976z" />
<path d="M20.285 6.709l-11.39 11.39-5.18-5.18 1.414-1.414 3.766 3.766 9.976-9.976z" />
</svg>
<svg v-else class="icon cross" viewBox="0 0 24 24" aria-hidden="true">
<path
@ -46,18 +38,19 @@
</template>
</template>
</a-table>
</div>
<a-modal v-model:visible="targetOrgListVisible" title="请选择目标机构" width="90vw" @cancel="handleCancelTarget"
:bodyStyle="{ padding: '14px', height: '70vh', display: 'flex', flexDirection: 'column', overflow: 'auto' }">
<a-drawer v-model:visible="targetOrgListVisible" title="请选择目标机构" width="90vw" @cancel="handleCancelTarget"
:bodyStyle="{ padding: '14px', height: '70vh', display: 'flex', flexDirection: 'column', overflow: 'auto' }"
:footer-style="{ textAlign: 'right' }">
<template #footer>
<a-button @click="handleCancelTarget" type="primary">取消</a-button>
<a-button @click="handleCancelTarget" type="primary" style="margin-right: 10px;">取消</a-button>
<a-button @click="handleGetTarget" type="primary">确认</a-button>
</template>
<OrgListCom class="step-content" ref="targetOrgListComRef" @handleOrgChoose="handleTargetOrgChoose"
:showChoose="true" :showDirectiveChoose="true" :pageSize="-1" :excludeOrgCode="ownOrgCode" />
</a-modal>
</a-drawer>
</template>
<script lang="ts" setup>
@ -318,4 +311,9 @@ async function initData() {
gap: 8px;
}
}
.step-content {
// overflow: auto;
height: 70vh;
}
</style>

View File

@ -180,29 +180,34 @@ export const headChildColumns: BasicColumn[] = [
title: '分类标签',
align: 'center',
dataIndex: 'instructionName',
ellipsis: true,
width: 100,
},
{
title: '服务类别',
align: 'center',
dataIndex: 'categoryName',
ellipsis: true,
width: 100,
},
{
title: '服务类型',
align: 'center',
dataIndex: 'typeName',
ellipsis: true,
width: 100,
},
{
title: '服务指令',
align: 'center',
dataIndex: 'directiveName',
ellipsis: true,
},
{
title: '周期类型',
align: 'center',
dataIndex: 'cycleTypeName',
ellipsis: true,
width: 100,
},
]
@ -214,12 +219,14 @@ export const headChildColumns: BasicColumn[] = [
title: '名称',
align: 'center',
dataIndex: 'ownOrgName',
ellipsis: true,
width: 200,
},
{
title: '是否存在',
align: 'center',
dataIndex: 'ownExist',
ellipsis: true,
width: 100,
},
]
@ -231,12 +238,14 @@ export const headChildColumns: BasicColumn[] = [
title: '名称',
align: 'center',
dataIndex: 'own2OrgName',
ellipsis: true,
width: 200,
},
{
title: '是否存在',
align: 'center',
dataIndex: 'targetExist',
ellipsis: true,
width: 100,
},
]

View File

@ -115,21 +115,33 @@
</a-row>
<a-row style="padding: 0px 20px;">
<a-col :span="24" v-show="directiveMediaBtnValue == 0">
<JImageUploadtz v-model:value="formData.previewFile" maxCount="1" :disabled="disabled || !isMain" />
<JImageUploadtz v-if="opeType == 'dmlook'" :value="mediaApiAddress + formData.previewFile" maxCount="1"
:disabled="disabled || !isMain" />
<JImageUploadtz v-else v-model:value="formData.previewFile" maxCount="1"
:disabled="disabled || !isMain" />
</a-col>
<a-col :span="24" v-show="directiveMediaBtnValue == 1">
<JImageUploadtz v-model:value="formData.previewFileSmall" maxCount="1"
<JImageUploadtz v-if="opeType == 'dmlook'" :value="mediaApiAddress + formData.previewFileSmall"
maxCount="1" :disabled="disabled || !isMain" />
<JImageUploadtz v-else v-model:value="formData.previewFileSmall" maxCount="1"
:disabled="disabled || !isMain" />
</a-col>
<a-col :span="24" v-show="directiveMediaBtnValue == 2">
<JUploadMP3 v-model:value="formData.mp3File" maxCount="1" :disabled="disabled || !isMain" />
<JUploadMP3 v-if="opeType == 'dmlook'" :value="mediaApiAddress + formData.mp3File" maxCount="1"
:disabled="disabled || !isMain" />
<JUploadMP3 v-else v-model:value="formData.mp3File" maxCount="1" :disabled="disabled || !isMain" />
</a-col>
<a-col :span="24" v-show="directiveMediaBtnValue == 3">
<JUploadMP4 v-model:value="formData.mp4File" maxCount="1" fileType="mp4"
<JUploadMP4 v-if="opeType == 'dmlook'" :value="mediaApiAddress + formData.mp4File" maxCount="1"
fileType="mp4" :disabled="disabled || !isMain" />
<JUploadMP4 v-else v-model:value="formData.mp4File" maxCount="1" fileType="mp4"
:disabled="disabled || !isMain" />
</a-col>
<a-col :span="24" v-show="directiveMediaBtnValue == 4">
<JImageUploadtz v-model:value="formData.immediateFile" maxCount="1" :disabled="disabled || !isMain" />
<JImageUploadtz v-if="opeType == 'dmlook'" :value="mediaApiAddress + formData.immediateFile"
maxCount="1" :disabled="disabled || !isMain" />
<JImageUploadtz v-else v-model:value="formData.immediateFile" maxCount="1"
:disabled="disabled || !isMain" />
</a-col>
</a-row>
<a-row style="padding: 20px;">

View File

@ -21,6 +21,7 @@ import ConfigServiceTypeForm from './ConfigServiceTypeForm.vue'
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
import { useMessage } from '/@/hooks/web/useMessage';
import { saveOrUpdate ,useOrStopCascade } from '../ConfigServiceType.api';
import { clearCache } from '/@/utils/cache/cacheUtil'
const { createMessage } = useMessage();
const title = ref<string>('');
@ -66,6 +67,7 @@ function handleOk() {
*/
function submitCallback() {
handleCancel();
clearCache()
emit('success');
}