85 lines
2.1 KiB
Vue
85 lines
2.1 KiB
Vue
<template>
|
||
<view v-if="data" class="symptom-detail">
|
||
<view class="symptom-row">
|
||
<text class="label-text">患者:</text>
|
||
<text class="content-text">{{ data.patient }}</text>
|
||
</view>
|
||
<view class="symptom-row">
|
||
<text class="label-text">病情描述:</text>
|
||
<text class="content-text">{{ data.description }}</text>
|
||
</view>
|
||
<view v-if="data.diseases" class="symptom-row">
|
||
<text class="label-text">线下确诊疾病:</text>
|
||
<text class="content-text">{{ data.diseases }}</text>
|
||
</view>
|
||
<view v-if="data.images && data.images.length" class="symptom-row" @click="previewImage()">
|
||
<text class="label-text">附件:</text>
|
||
<text class="preview-btn">{{ data.images.length }}张 点击查看</text>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
<script setup>
|
||
import { computed } from 'vue';
|
||
const props = defineProps({
|
||
payload: {
|
||
type: Object,
|
||
default: () => ({})
|
||
}
|
||
});
|
||
|
||
const data = computed(() => {
|
||
try {
|
||
const extension = JSON.parse(props.payload.extension);
|
||
return {
|
||
patient: typeof extension.patient === 'string' ? extension.patient : '',
|
||
description: typeof extension.description === 'string' ? extension.description : '',
|
||
hasVisitedHospital: typeof extension.hasVisitedHospital === 'boolean' ? extension.hasVisitedHospital : false,
|
||
diseases: typeof extension.diseases === 'string' ? extension.diseases : '',
|
||
images: Array.isArray(extension.images) ? extension.images : [],
|
||
}
|
||
} catch (e) { }
|
||
return null
|
||
})
|
||
|
||
|
||
function previewImage() {
|
||
console.log('预览图片')
|
||
uni.previewImage({
|
||
urls: data.value.images
|
||
})
|
||
}
|
||
|
||
|
||
</script>
|
||
<style scpoed>
|
||
/* 病情描述样式 */
|
||
.symptom-detail {
|
||
min-width: 360rpx;
|
||
max-width: 600rpx;
|
||
}
|
||
|
||
.symptom-row {
|
||
padding: 4rpx 0;
|
||
line-height: 42rpx;
|
||
}
|
||
|
||
.label-text {
|
||
color: #999;
|
||
font-size: 28rpx;
|
||
}
|
||
|
||
.content-text {
|
||
color: #333;
|
||
font-size: 28rpx;
|
||
}
|
||
|
||
.preview-btn {
|
||
display: inline-block;
|
||
border: 1px solid;
|
||
color: #0074ff;
|
||
line-height: 36rpx;
|
||
font-size: 24rpx;
|
||
padding: 0 12rpx;
|
||
border-radius: 22rpx;
|
||
}
|
||
</style> |