|
@@ -234,7 +234,10 @@
|
|
|
</div>
|
|
|
|
|
|
<div class="textarea">
|
|
|
- <span>现场勘验情况 :</span>
|
|
|
+ <div>
|
|
|
+ <span>现场勘验情况 :</span>
|
|
|
+ <span @click="()=>{aiImgShow=true}" style="color:#000;cursor: pointer;float: right;font-weight: bold;">AI</span>
|
|
|
+ </div>
|
|
|
<el-input
|
|
|
type="textarea"
|
|
|
:rows="6"
|
|
@@ -469,6 +472,45 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
+
|
|
|
+ <el-dialog
|
|
|
+ v-model="aiImgShow"
|
|
|
+ title="AI识别平面图"
|
|
|
+ width="1000"
|
|
|
+ align-center
|
|
|
+ @close="recorderInfoDialogSelect = null"
|
|
|
+ >
|
|
|
+ <div class="flex space-x-4 items-center content-center justify-center text-center">
|
|
|
+ <div class="flex-1" style="width: 80%;">
|
|
|
+ <el-select
|
|
|
+ v-model="recorderInfoDialogSelect"
|
|
|
+ placeholder="请选择现场勘验记录人员"
|
|
|
+ size="large"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in recorderInfoType"
|
|
|
+ :key="item.type"
|
|
|
+ :label="item.typeLabel"
|
|
|
+ :value="item.type"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ <div class="viewImg mt-4 text-center" style="height: 300px; line-height: 300px; background: #d8d8d8;">
|
|
|
+ <img class="w-full h-full object-cover" v-if="aiImgData.src" :src="aiImgData.src" alt="" />
|
|
|
+ <span v-else>预览选中的平面图</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="flex-1">
|
|
|
+ <span v-if="aiImgData.loading">识别中</span>
|
|
|
+ <span v-else>{{ aiImgData.result || '识别结果'}}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <template #footer>
|
|
|
+ <div class="dialog-footer text-center">
|
|
|
+ <el-button type="primary" @click="handleAI"> 识别 </el-button>
|
|
|
+ <el-button v-if="aiImgData.result" @click="handleAI"> 复制 </el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script setup>
|
|
@@ -483,7 +525,7 @@ import {
|
|
|
} from "@/store/case";
|
|
|
import { ElMessage, ElMessageBox } from "element-plus";
|
|
|
import saveAs from "@/util/file-serve";
|
|
|
-import { CirclePlus, CircleClose } from "@element-plus/icons-vue";
|
|
|
+import { CirclePlus, CircleClose, MagicStick } from "@element-plus/icons-vue";
|
|
|
import { recorderInfoType, ChangeReasonType } from "./formData.ts";
|
|
|
import { confirm } from "@/helper/message";
|
|
|
const props = defineProps({ caseId: Number, title: String });
|
|
@@ -491,6 +533,13 @@ console.log("router.currentRoute", router.currentRoute.value?.params);
|
|
|
const fileId = computed(() => router.currentRoute.value?.params?.fileId);
|
|
|
const caseId = computed(() => router.currentRoute.value?.params?.caseId);
|
|
|
const isDisableExport = ref(false);
|
|
|
+const aiImgShow = ref(false)
|
|
|
+const aiImgData = ref({
|
|
|
+ src: '',
|
|
|
+ result: '',
|
|
|
+ loading: false
|
|
|
+})
|
|
|
+
|
|
|
const data = reactive({
|
|
|
title: "",
|
|
|
inquestNum: "", //现场勘验号
|
|
@@ -564,6 +613,9 @@ const initInfo = async (inquestFileId) => {
|
|
|
initSignatureAndWitInfo();
|
|
|
}, 500);
|
|
|
};
|
|
|
+const handleAI = () => {
|
|
|
+
|
|
|
+};
|
|
|
const initSignatureAndWitInfo = () => {
|
|
|
(data.recorderInfo.length === 0 || !data.recorderInfo) &&
|
|
|
(data.recorderInfo = [...recorderInfoType, recorderInfoType[4]]);
|