119 lines
3.0 KiB
Vue
119 lines
3.0 KiB
Vue
<template>
|
||
<up-popup :show="visible" mode="right" closeable @close="handleClose" @open="handleOpen">
|
||
<uni-section titleFontSize="20px" type="line" title="设备期间核查信息"> </uni-section>
|
||
<scroll-view scroll-y="true" class="content">
|
||
<up-row class="flex-wrap">
|
||
<up-col :span="gridCol"
|
||
>核查对象:
|
||
<text class="value">{{ detailInfo.deviceName }}</text>
|
||
</up-col>
|
||
<up-col span="4"
|
||
>别名:
|
||
<text class="value">{{ detailInfo.alias }}</text>
|
||
</up-col>
|
||
<up-col span="4"
|
||
>核查日期:
|
||
<text class="value">{{ detailInfo.checkDate }}</text>
|
||
</up-col>
|
||
<up-col :span="gridCol"
|
||
>核查方法:
|
||
<text class="value">{{ detailInfo.checkAccording }}</text>
|
||
</up-col>
|
||
</up-row>
|
||
<up-row class="flex-wrap">
|
||
<up-col span="12"
|
||
>核查方法描述:
|
||
<text class="value">{{ detailInfo.checkAccordingRemark }}</text>
|
||
</up-col>
|
||
<up-col span="12"
|
||
>核查记录:
|
||
<up-parse style="background: #f3f4f6" :content="processedContent"></up-parse>
|
||
</up-col>
|
||
</up-row>
|
||
<up-row>
|
||
<up-col span="12"
|
||
>备注:
|
||
<text class="value">{{ detailInfo.checkRemark }}</text>
|
||
</up-col>
|
||
</up-row>
|
||
<wf-comment :commentWf="commentWf" />
|
||
</scroll-view>
|
||
</up-popup>
|
||
</template>
|
||
|
||
<script setup>
|
||
import { ref, reactive, onMounted, watch, computed } from 'vue'
|
||
import { getImgBaseUrl } from '@/defaultBaseUrl'
|
||
import { useGridCol } from '@/nx/hooks/useGridCol'
|
||
const { gridCol } = useGridCol([700], [6, 4])
|
||
const props = defineProps({
|
||
show: {
|
||
type: Boolean,
|
||
default: false
|
||
},
|
||
checkInfo: {
|
||
type: Object
|
||
}
|
||
})
|
||
const visible = ref(props.show)
|
||
// 监听外部传入的show属性变化
|
||
watch(
|
||
() => props.show,
|
||
newVal => {
|
||
visible.value = newVal
|
||
}
|
||
)
|
||
let detailInfo = ref({})
|
||
// / 处理富文本内容
|
||
const processedContent = computed(() => {
|
||
if (!detailInfo.value.checkContent) {
|
||
return ''
|
||
}
|
||
return detailInfo.value.checkContent.replace(
|
||
/<img([^>]+?)src="((?!http)[^"]*?)(file\/[^"]*)"/gi,
|
||
(match, attributes, prefix, filePath) => {
|
||
return `<img${attributes}src="${getImgBaseUrl()}/${filePath}"`
|
||
}
|
||
)
|
||
})
|
||
const emit = defineEmits(['close', 'open'])
|
||
function handleClose() {
|
||
emit('close')
|
||
}
|
||
let commentWf = ref([])
|
||
function handleOpen() {
|
||
detailInfo.value = props.checkInfo
|
||
if (props.checkInfo.commentJson) {
|
||
try {
|
||
commentWf.value = JSON.parse(props.checkInfo.commentJson)
|
||
} catch (error) {
|
||
uni.showToast({
|
||
title: '解析数据错误',
|
||
icon: 'none'
|
||
})
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.content {
|
||
font-size: 18px;
|
||
height: 85vh;
|
||
width: 80vw;
|
||
padding: 10px;
|
||
.u-row {
|
||
border-bottom: 1px solid #eee;
|
||
padding: 10px 0;
|
||
}
|
||
|
||
.value {
|
||
color: #666;
|
||
font-size: 16px;
|
||
}
|
||
}
|
||
:deep(.uicon-close) {
|
||
font-size: 22px !important;
|
||
}
|
||
</style>
|