From f5052fa7d4e73c0df5a02a6ad8987f35df42b8f8 Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期四, 07 十一月 2024 17:23:50 +0800 Subject: [PATCH] 1. 完成场景报告模块 2. 日报管理模块添加时间范围选择以及word报告生成 --- src/views/fysp/data-product/components/CompProblemTable.vue | 160 +++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 137 insertions(+), 23 deletions(-) diff --git a/src/views/fysp/data-product/components/CompProblemTable.vue b/src/views/fysp/data-product/components/CompProblemTable.vue index 0d3d6df..0d6d3d8 100644 --- a/src/views/fysp/data-product/components/CompProblemTable.vue +++ b/src/views/fysp/data-product/components/CompProblemTable.vue @@ -2,56 +2,102 @@ <table> <tbody> <tr> - <td>{{ title }}</td> + <td colspan="2">{{ title }}</td> </tr> <tr> - <td> + <td style="position: relative"> <el-image class="image" :src="seletcedProblemPic" - :preview-src-list="[seletcedProblemPic]" + :preview-src-list="seletcedProblemPic ? [seletcedProblemPic] : []" :initial-index="0" fit="cover" lazy - /> + > + <template #error v-if="!seletcedProblemPic"> + <div class="image-slot"> + <el-text>闂鍥剧墖鏈笂浼�</el-text> + </div> + </template> + </el-image> + <el-button + class="pop-button" + size="small" + @click="proDialog = true" + >{{ btnName }}</el-button + > </td> - <td> + <td style="position: relative"> <el-image class="image" - :src="seletcedChangePic" - :preview-src-list="[seletcedChangePic]" + :src="seletcedChangePic ? seletcedChangePic : unchangeImg" + :preview-src-list="seletcedChangePic ? [seletcedChangePic] : []" :initial-index="0" fit="cover" lazy /> + <el-button + class="pop-button" + size="small" + @click="changeDialog = true" + >{{ btnName }}</el-button + > </td> </tr> <tr> <td> - <el-row justify="space-between" align="middle"> - <div>浣嶇疆锛歿{ problem.location }}</div> - <div>鎻忚堪锛歿{ problem.problemname }}</div> - <el-button size="small" @click="$emit('change')">{{ - btnName - }}</el-button> - </el-row> + <div>浣嶇疆锛歿{ problem.location }}</div> + <div> + 鎻忚堪锛� + <el-input + size="small" + v-model="problemDes" + placeholder="闂鎻忚堪" + style="width: 150px" + /> + </div> </td> <td> - <el-row justify="space-between" align="middle"> - <div>浣嶇疆锛歿{ problem.location }}</div> - <div>鎻忚堪锛歿{ problem.problemname }}</div> - <el-button size="small" @click="$emit('change')">{{ - btnName - }}</el-button> - </el-row> + <div>浣嶇疆锛歿{ problem.location }}</div> + <div> + 鎻忚堪锛� + <el-input + size="small" + v-model="changeDes" + placeholder="鏁存敼鎻忚堪" + style="width: 150px" + /> + </div> </td> </tr> </tbody> </table> + <CompProblemPicSelect + v-if="pics.length > 0" + title="闂鍥剧墖" + v-model:dialog-visible="proDialog" + mode="problem" + :pics="pics[0].path" + :defaultFile="[{ url: seletcedProblemPic }]" + @submit="handleProPicSelect" + ></CompProblemPicSelect> + <CompProblemPicSelect + v-if="pics.length > 1" + title="鏁存敼鍥剧墖" + v-model:dialog-visible="changeDialog" + mode="change" + :pics="pics[1].path" + :defaultFile="[{ url: seletcedChangePic }]" + @submit="handleChangePicSelect" + ></CompProblemPicSelect> </template> <script setup> -import { ref, watch } from 'vue'; -import ProCheckProxy from '@/views/check/ProCheckProxy'; +import { ref, watch, computed } from 'vue'; +import dayjs from 'dayjs'; +import ProCheckProxy from '@/views/fysp/check/ProCheckProxy'; +import unchangeImg from '@/assets/image/unchange.png'; + +import CompProblemPicSelect from './CompProblemPicSelect.vue'; const props = defineProps({ problem: { @@ -59,14 +105,27 @@ default: () => { return {}; } + }, + btnName: { + type: String, + default: '淇敼' } }); const emit = defineEmits(['change']); const pics = ref([]); +const proDialog = ref(false); const seletcedProblemPic = ref(); +const changeDialog = ref(false); const seletcedChangePic = ref(); +const problemDes = ref(''); +const changeDes = ref('鏈暣鏀�'); + +const title = computed(() => { + const time = dayjs(props.problem.time).format('M鏈�'); + return `${time}鐜板満闂鍙婃暣鏀瑰浘鐗嘸; +}); function getPics() { pics.value = ProCheckProxy.proPics(props.problem); @@ -78,15 +137,55 @@ } } +function handleProPicSelect(imgList) { + if (imgList && imgList.length > 0) { + seletcedProblemPic.value = imgList[0].url; + onChange(); + } +} + +function handleChangePicSelect(imgList) { + if (imgList && imgList.length > 0) { + seletcedChangePic.value = imgList[0].url; + onChange(); + } +} + +function onChange() { + const value = { + proPic: seletcedProblemPic.value, + changePic: seletcedChangePic.value ? seletcedChangePic.value : unchangeImg, + location: props.problem.location, + problemDes, + changeDes + }; + emit('change', value); +} + watch( () => props.problem, (nV, oV) => { if (nV != oV) { getPics(); + problemDes.value = nV.problemname; + changeDes.value = nV.ischanged ? '宸叉暣鏀�' : '鏈暣鏀�'; + + onChange(); } }, { immediate: true } ); + +watch(problemDes, (nV, oV) => { + if (nV != oV) { + onChange(); + } +}); +watch(changeDes, (nV, oV) => { + if (nV != oV) { + onChange(); + } +}); </script> <style scoped> .image { @@ -113,4 +212,19 @@ border-style: solid; border-color: #666666; */ } + +.pop-button { + position: absolute; + bottom: 0; + right: 0; +} + +.image-slot { + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; + background: var(--el-fill-color-light); +} </style> -- Gitblit v1.9.3