|
@@ -101,11 +101,24 @@ const option = ref({
|
|
|
type: 'category',
|
|
type: 'category',
|
|
|
data: [] as string[],
|
|
data: [] as string[],
|
|
|
boundaryGap: false,
|
|
boundaryGap: false,
|
|
|
|
|
+ axisLine: { show: false },
|
|
|
|
|
+ axisTick: { show: false }, // 不显示横坐标刻度
|
|
|
|
|
+ axisLabel: { show: false }, // 不显示横坐标刻度名字
|
|
|
},
|
|
},
|
|
|
yAxis: {
|
|
yAxis: {
|
|
|
type: 'value',
|
|
type: 'value',
|
|
|
min: 20,
|
|
min: 20,
|
|
|
max: 100,
|
|
max: 100,
|
|
|
|
|
+ interval: 20,
|
|
|
|
|
+ axisLine: { show: false }, // 不显示Y轴线
|
|
|
|
|
+ axisLabel: { color: '#7ec8bb' },
|
|
|
|
|
+ splitLine: {
|
|
|
|
|
+ show: true,
|
|
|
|
|
+ lineStyle: {
|
|
|
|
|
+ type: 'dashed',
|
|
|
|
|
+ color: '#e0e0e0',
|
|
|
|
|
+ },
|
|
|
|
|
+ },
|
|
|
},
|
|
},
|
|
|
series: [
|
|
series: [
|
|
|
{
|
|
{
|
|
@@ -114,9 +127,26 @@ const option = ref({
|
|
|
smooth: true,
|
|
smooth: true,
|
|
|
symbol: 'circle',
|
|
symbol: 'circle',
|
|
|
symbolSize: 12,
|
|
symbolSize: 12,
|
|
|
- itemStyle: { color: '#ff9900', borderColor: '#fff', borderWidth: 2 },
|
|
|
|
|
- lineStyle: { color: '#bfa' },
|
|
|
|
|
- label: { show: false },
|
|
|
|
|
|
|
+ itemStyle: {
|
|
|
|
|
+ color: '#ffd700', // 黄色中心
|
|
|
|
|
+ borderColor: '#ff8c00', // 橙色轮廓
|
|
|
|
|
+ borderWidth: 2,
|
|
|
|
|
+ },
|
|
|
|
|
+ lineStyle: {
|
|
|
|
|
+ color: '#b0c4de', // 浅蓝色线条
|
|
|
|
|
+ width: 2,
|
|
|
|
|
+ },
|
|
|
|
|
+ label: {
|
|
|
|
|
+ show: true,
|
|
|
|
|
+ position: 'top',
|
|
|
|
|
+ color: '#fff',
|
|
|
|
|
+ backgroundColor: '#ff6b6b', // 红色标签背景
|
|
|
|
|
+ borderRadius: 4,
|
|
|
|
|
+ padding: [4, 8],
|
|
|
|
|
+ formatter: function (params: any) {
|
|
|
|
|
+ return params.name;
|
|
|
|
|
+ },
|
|
|
|
|
+ },
|
|
|
markPoint: {
|
|
markPoint: {
|
|
|
symbol: 'circle',
|
|
symbol: 'circle',
|
|
|
symbolSize: 16,
|
|
symbolSize: 16,
|
|
@@ -206,41 +236,46 @@ const progressTextMap: Record<string, string> = {
|
|
|
'2': '用户取消',
|
|
'2': '用户取消',
|
|
|
'3': '未开始',
|
|
'3': '未开始',
|
|
|
'4': '调理中',
|
|
'4': '调理中',
|
|
|
- '5': '已完结'
|
|
|
|
|
|
|
+ '5': '已完结',
|
|
|
|
|
+ '6': '待收货',
|
|
|
};
|
|
};
|
|
|
-
|
|
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
|
<template>
|
|
|
<div class="care-progress-card">
|
|
<div class="care-progress-card">
|
|
|
- <div class="header" v-if="careProcessList">
|
|
|
|
|
- <span class="title">
|
|
|
|
|
- {{ progressTextMap[careProcessList?.progress] || '' }}
|
|
|
|
|
|
|
+ <div v-if="careProcessList">
|
|
|
|
|
+ <div class="title-wrapper" v-if="careProcessList?.conditioningWrapName">{{ careProcessList?.conditioningWrapName }}</div>
|
|
|
|
|
+ <div class="header">
|
|
|
|
|
+ <span class="title" v-if="careProcessList?.progress">
|
|
|
|
|
+ {{ progressTextMap[careProcessList?.progress] || '' }}
|
|
|
</span>
|
|
</span>
|
|
|
- <span v-if="careProcessList?.patientName"
|
|
|
|
|
- >姓名:<b>{{ careProcessList?.patientName }}</b></span
|
|
|
|
|
- >
|
|
|
|
|
- <span v-if="careProcessList?.diagnosis">疾病名称:{{ careProcessList?.diagnosis }}</span>
|
|
|
|
|
- <span v-if="careProcessList?.symptom">证型:{{ careProcessList?.symptom }}</span>
|
|
|
|
|
- <span v-if="careProcessList?.createBy">开具医生:{{ careProcessList?.createBy }}</span>
|
|
|
|
|
- <span v-if="careProcessList?.estimatedStartDate && careProcessList?.estimatedEndDate"
|
|
|
|
|
- >调养周期:{{ careProcessList?.estimatedStartDate }} ~ {{ careProcessList?.estimatedEndDate }}</span
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <span v-if="careProcessList?.patientName"
|
|
|
|
|
+ >姓名:<span>{{ careProcessList?.patientName }}</span></span
|
|
|
|
|
+ >
|
|
|
|
|
+ <span v-if="careProcessList?.diagnosis">疾病名称:{{ careProcessList?.diagnosis }}</span>
|
|
|
|
|
+ <span v-if="careProcessList?.symptom">证型:{{ careProcessList?.symptom }}</span>
|
|
|
|
|
+ <span v-if="careProcessList?.createBy">开具医生:{{ careProcessList?.createBy }}</span>
|
|
|
|
|
+ <span v-if="careProcessList?.estimatedStartDate && careProcessList?.estimatedEndDate"
|
|
|
|
|
+ >调养周期:{{ careProcessList?.estimatedStartDate }} ~ {{ careProcessList?.estimatedEndDate }}</span
|
|
|
|
|
+ >
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
<div v-if="isShowDelivery" class="delivery-info" style="margin-left: 75px">
|
|
<div v-if="isShowDelivery" class="delivery-info" style="margin-left: 75px">
|
|
|
<a-checkbox checked style="color: #52c41a; margin-right: 8px" />
|
|
<a-checkbox checked style="color: #52c41a; margin-right: 8px" />
|
|
|
<span style="margin-right: 15px">配送</span>
|
|
<span style="margin-right: 15px">配送</span>
|
|
|
- <span>地址:{{ careProcessList?.provinceName }}{{ careProcessList?.cityName }}{{ careProcessList?.areaName }}{{ careProcessList?.detailAddress }}</span>
|
|
|
|
|
- <span style="margin-left: 16px">电话:{{ careProcessList?.phone }}</span>
|
|
|
|
|
|
|
+ <span v-if="careProcessList?.provinceName || careProcessList?.cityName || careProcessList?.areaName || careProcessList?.detailAddress"
|
|
|
|
|
+ >地址:{{ careProcessList?.provinceName }}{{ careProcessList?.cityName }}{{ careProcessList?.areaName }}{{ careProcessList?.detailAddress }}</span
|
|
|
|
|
+ >
|
|
|
|
|
+ <span style="margin-left: 16px" v-if="careProcessList?.phone">电话:{{ careProcessList?.phone }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
<!-- 线上项目 -->
|
|
<!-- 线上项目 -->
|
|
|
<div v-for="item in careProcessList?.items" :key="item.id" class="project-card">
|
|
<div v-for="item in careProcessList?.items" :key="item.id" class="project-card">
|
|
|
<div class="project-section" v-if="item?.patientConditioningOfflines">
|
|
<div class="project-section" v-if="item?.patientConditioningOfflines">
|
|
|
<div class="project-title">
|
|
<div class="project-title">
|
|
|
<span style="font-size: 14px; font-weight: bold">◇ {{ item?.conditioningProgramDetail?.name }}</span>
|
|
<span style="font-size: 14px; font-weight: bold">◇ {{ item?.conditioningProgramDetail?.name }}</span>
|
|
|
- <span class="stat">数量:{{ item.totalMeasure }} {{ item?.conditioningProgramDetail?.cpFixedPricingRule?.pricingUnit || '次' }}</span>
|
|
|
|
|
- <span class="stat">还剩:{{ item?.remainCount }} {{ item?.conditioningProgramDetail?.cpFixedPricingRule?.pricingUnit || '次' }}</span>
|
|
|
|
|
- <span class="stat">已核销:{{ item?.finishCount }} {{ item?.conditioningProgramDetail?.cpFixedPricingRule?.pricingUnit || '次' }}</span>
|
|
|
|
|
|
|
+ <span class="stat">数量:{{ item.totalMeasure }}{{ item?.conditioningProgramDetail?.cpFixedPricingRule?.pricingUnit || '次' }}</span>
|
|
|
|
|
+ <span class="stat">还剩:{{ item?.remainCount }}{{ item?.conditioningProgramDetail?.cpFixedPricingRule?.pricingUnit || '次' }}</span>
|
|
|
|
|
+ <span class="stat">已核销:{{ item?.finishCount }}{{ item?.conditioningProgramDetail?.cpFixedPricingRule?.pricingUnit || '次' }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
<vxe-table :data="item?.patientConditioningOfflines" border>
|
|
<vxe-table :data="item?.patientConditioningOfflines" border>
|
|
|
<vxe-column type="seq" title="序号" width="80" />
|
|
<vxe-column type="seq" title="序号" width="80" />
|
|
@@ -250,10 +285,7 @@ const progressTextMap: Record<string, string> = {
|
|
|
<vxe-column field="acuPointNames" title="穴位" />
|
|
<vxe-column field="acuPointNames" title="穴位" />
|
|
|
</vxe-table>
|
|
</vxe-table>
|
|
|
<div class="mt-3">
|
|
<div class="mt-3">
|
|
|
- <div class="mb-1">
|
|
|
|
|
- 预定频率:每 {{ item.frequencyType }} 天 {{ item.frequencyMeasure }}
|
|
|
|
|
- {{ item?.conditioningProgramDetail?.cpFixedPricingRule?.pricingUnit || '次' }}
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ <div class="mb-1">预定频率:每{{ item.frequencyType }}天{{ item.frequencyMeasure }}{{ item?.conditioningProgramDetail?.cpFixedPricingRule?.pricingUnit || '次' }}</div>
|
|
|
<div v-if="item.remark">操作指南:{{ item.remark }}</div>
|
|
<div v-if="item.remark">操作指南:{{ item.remark }}</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -263,10 +295,7 @@ const progressTextMap: Record<string, string> = {
|
|
|
<span class="mr-10" style="font-size: 14px; font-weight: bold; color: black">◇ {{ item?.conditioningProgramDetail?.name }}</span>
|
|
<span class="mr-10" style="font-size: 14px; font-weight: bold; color: black">◇ {{ item?.conditioningProgramDetail?.name }}</span>
|
|
|
<span>数量:{{ item.totalMeasure }} {{ item?.conditioningProgramDetail?.cpFixedPricingRule?.pricingUnit || '次' }}</span>
|
|
<span>数量:{{ item.totalMeasure }} {{ item?.conditioningProgramDetail?.cpFixedPricingRule?.pricingUnit || '次' }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="mb-1">
|
|
|
|
|
- 预定频率:每 {{ item.frequencyType }} 天 {{ item.frequencyMeasure }}
|
|
|
|
|
- {{ item?.conditioningProgramDetail?.cpFixedPricingRule?.pricingUnit || '次' }}
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ <div class="mb-1">预定频率:每{{ item.frequencyType }}天{{ item.frequencyMeasure }}{{ item?.conditioningProgramDetail?.cpFixedPricingRule?.pricingUnit || '次' }}</div>
|
|
|
<div v-if="item.remark">操作指南:{{ item.remark }}</div>
|
|
<div v-if="item.remark">操作指南:{{ item.remark }}</div>
|
|
|
</div>
|
|
</div>
|
|
|
<!-- 健康评估 -->
|
|
<!-- 健康评估 -->
|
|
@@ -290,10 +319,7 @@ const progressTextMap: Record<string, string> = {
|
|
|
<div class="mb-1">
|
|
<div class="mb-1">
|
|
|
预定频率:
|
|
预定频率:
|
|
|
<span v-if="item?.frequencyType === '不限'">不限</span>
|
|
<span v-if="item?.frequencyType === '不限'">不限</span>
|
|
|
- <span v-else
|
|
|
|
|
- >每 {{ item?.frequencyType }}天 {{ item?.frequencyMeasure }}
|
|
|
|
|
- {{ item?.conditioningProgramDetail?.cpFixedPricingRule?.pricingUnit }}
|
|
|
|
|
- </span>
|
|
|
|
|
|
|
+ <span v-else>每{{ item?.frequencyType }}天{{ item?.frequencyMeasure }}{{ item?.conditioningProgramDetail?.cpFixedPricingRule?.pricingUnit }} </span>
|
|
|
</div>
|
|
</div>
|
|
|
<div v-if="item?.remark">操作指南:{{ item?.remark }}</div>
|
|
<div v-if="item?.remark">操作指南:{{ item?.remark }}</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -303,7 +329,7 @@ const progressTextMap: Record<string, string> = {
|
|
|
<div class="health-records-card">
|
|
<div class="health-records-card">
|
|
|
<a-tabs class="panel-wrapper" v-model:activeKey="activePanel" v-if="item?.healthAnalysisReports && item?.healthAnalysisReports.length > 0">
|
|
<a-tabs class="panel-wrapper" v-model:activeKey="activePanel" v-if="item?.healthAnalysisReports && item?.healthAnalysisReports.length > 0">
|
|
|
<a-tab-pane v-for="panel in panels" :key="panel.id" class="panel-pane">
|
|
<a-tab-pane v-for="panel in panels" :key="panel.id" class="panel-pane">
|
|
|
- <div>记录</div>
|
|
|
|
|
|
|
+ <div class="panel-title">记录</div>
|
|
|
<component :is="panel.component" :patient="patient" :healthAnalysisReports="item?.healthAnalysisReports" :type="type"></component>
|
|
<component :is="panel.component" :patient="patient" :healthAnalysisReports="item?.healthAnalysisReports" :type="type"></component>
|
|
|
</a-tab-pane>
|
|
</a-tab-pane>
|
|
|
</a-tabs>
|
|
</a-tabs>
|
|
@@ -311,13 +337,15 @@ const progressTextMap: Record<string, string> = {
|
|
|
</div>
|
|
</div>
|
|
|
<!-- 调养效果 -->
|
|
<!-- 调养效果 -->
|
|
|
<div style="margin: 20px 0 10px 0" v-if="careProcessList?.patientConditioningScores && careProcessList.patientConditioningScores.length > 0">
|
|
<div style="margin: 20px 0 10px 0" v-if="careProcessList?.patientConditioningScores && careProcessList.patientConditioningScores.length > 0">
|
|
|
- <h3>调养效果</h3>
|
|
|
|
|
|
|
+ <h3 style="color: black;">调养效果</h3>
|
|
|
<!-- todo 折线图 -->
|
|
<!-- todo 折线图 -->
|
|
|
- <v-chart :option="option" style="width: 350px; height: 200px" />
|
|
|
|
|
|
|
+ <div class="chart-wrapper">
|
|
|
|
|
+ <v-chart :option="option" style="width: 350px; height: 200px" />
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
<!-- 指标 -->
|
|
<!-- 指标 -->
|
|
|
<div v-if="careProcessList?.patientQuotaGroups && careProcessList?.patientQuotaGroups.length > 0">
|
|
<div v-if="careProcessList?.patientQuotaGroups && careProcessList?.patientQuotaGroups.length > 0">
|
|
|
- <label>生理指标</label>
|
|
|
|
|
|
|
+ <b>指标</b>
|
|
|
<a-button type="link" @click="openIndicatorRecordsPreview">更新记录</a-button>
|
|
<a-button type="link" @click="openIndicatorRecordsPreview">更新记录</a-button>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -326,6 +354,7 @@ const progressTextMap: Record<string, string> = {
|
|
|
<style scoped>
|
|
<style scoped>
|
|
|
.panel-pane {
|
|
.panel-pane {
|
|
|
height: 600px !important;
|
|
height: 600px !important;
|
|
|
|
|
+ margin-bottom: 28px;
|
|
|
}
|
|
}
|
|
|
.panel-wrapper {
|
|
.panel-wrapper {
|
|
|
:deep(.ant-tabs-content-holder) {
|
|
:deep(.ant-tabs-content-holder) {
|
|
@@ -355,7 +384,7 @@ const progressTextMap: Record<string, string> = {
|
|
|
background: #ffb300;
|
|
background: #ffb300;
|
|
|
color: #fff;
|
|
color: #fff;
|
|
|
border-radius: 4px;
|
|
border-radius: 4px;
|
|
|
- padding: 2px 10px;
|
|
|
|
|
|
|
+ padding: 4px 10px;
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
|
}
|
|
}
|
|
|
.delivery-info {
|
|
.delivery-info {
|
|
@@ -408,7 +437,7 @@ const progressTextMap: Record<string, string> = {
|
|
|
color: black !important;
|
|
color: black !important;
|
|
|
}
|
|
}
|
|
|
.health-records-card :deep(.vxe-table--header th) {
|
|
.health-records-card :deep(.vxe-table--header th) {
|
|
|
- background: #F8F8F9 !important;
|
|
|
|
|
|
|
+ background: #f8f8f9 !important;
|
|
|
color: unset !important;
|
|
color: unset !important;
|
|
|
}
|
|
}
|
|
|
.project-card :deep(.vxe-table--border .vxe-body--row > td),
|
|
.project-card :deep(.vxe-table--border .vxe-body--row > td),
|
|
@@ -419,4 +448,25 @@ const progressTextMap: Record<string, string> = {
|
|
|
.project-card :deep(.vxe-table--border) {
|
|
.project-card :deep(.vxe-table--border) {
|
|
|
border-color: #bfcbd9 !important;
|
|
border-color: #bfcbd9 !important;
|
|
|
}
|
|
}
|
|
|
|
|
+:deep(.ant-tabs-nav) {
|
|
|
|
|
+ position: unset;
|
|
|
|
|
+ display: none;
|
|
|
|
|
+}
|
|
|
|
|
+.panel-title {
|
|
|
|
|
+ margin-bottom: 10px;
|
|
|
|
|
+ font-size: 16px;
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ color: black;
|
|
|
|
|
+}
|
|
|
|
|
+.title-wrapper {
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ margin-bottom: 20px;
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ font-size: 17px;
|
|
|
|
|
+ color: black;
|
|
|
|
|
+}
|
|
|
|
|
+.chart-wrapper {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ border: 1px solid lightgray !important;
|
|
|
|
|
+}
|
|
|
</style>
|
|
</style>
|