<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>
