| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550 |
- <template>
- <div class="scene abstract sceneImg">
- <el-dialog v-model="casePhotoItem.show" title="重命名" width="500">
- <el-form :model="casePhotoItem">
- <el-form-item :label-width="0">
- <el-input
- v-model="casePhotoItem.name"
- maxlength="15"
- show-word-limit
- autocomplete="off"
- />
- </el-form-item>
- </el-form>
- <template #footer>
- <div class="dialog-footer text-center">
- <el-button @click="casePhotoItem.show = false">取消</el-button>
- <el-button type="primary" @click="handleConfirm"> 确定 </el-button>
- </div>
- </template>
- </el-dialog>
- <!-- <el-button class="w-full" @click="handledrawCasePhotos">照片卷</el-button> -->
- <div class="demo-image__preview">
- <el-image-viewer
- hide-on-click-modal
- @close="
- () => {
- urlindex = -1;
- }
- "
- :initial-index="urlindex"
- show-progress
- v-if="urlindex != -1"
- :url-list="ImgsrcList"
- fit="cover"
- />
- </div>
- <div class="scene-list">
- <div class="list">
- <el-tabs
- v-model="active1"
- class="demo-tabs"
- ref="tabsRef"
- @tab-click="handleClick"
- >
- <!-- //new 0 现场图 1 照片卷 2 现场照片 3 勘验笔录 -->
- <el-tab-pane
- v-for="(item, index) in list"
- :key="item.filesTypeName"
- :label="showText ? item.filesTypeName : ''"
- :childrenList="item.childrenList"
- :class="`handleIsShow show${handleIsShow(item)}`"
- :name="item.filesTypeName"
- >
- <div class="leftCenter" v-if="active1 == '现场图'">
- <div v-for="(a, b) in item.childrenList" :key="b">
- <div
- class="listTitle"
- v-if="!show || (a.caseFilesList && a.caseFilesList.length)"
- >
- <span>{{ a.filesTypeName }}</span>
- <el-dropdown
- v-show="!show"
- @command="
- (command) => {
- handleCommand(command, a);
- }
- "
- >
- <span class="el-dropdown-link">
- <el-icon class="el-icon--right" title="新增"
- ><Plus
- /></el-icon>
- </span>
- <template #dropdown>
- <el-dropdown-menu>
- <el-dropdown-item command="绘图">新增</el-dropdown-item>
- <el-dropdown-item command="导入">导入</el-dropdown-item>
- </el-dropdown-menu>
- </template>
- </el-dropdown>
- </div>
- <div
- class="itemList"
- v-for="(items, indexs) in a.caseFilesList"
- @click="handlItem0(items)"
- :class="{
- active:
- childrenList.src == items.filesUrl &&
- childrenList.filesId == items.filesId,
- }"
- :key="indexs"
- >
- <div class="ItemTitle">
- <div
- class="text"
- :title="items.filesTypeName || items.filesTitle"
- >
- {{ items.filesTypeName || items.filesTitle }}
- </div>
- <div
- class="operation"
- v-if="
- !show &&
- childrenList.src == items.filesUrl &&
- childrenList.filesId == items.filesId
- "
- >
- <el-icon
- title="下载"
- v-if="items.filesUrl"
- @click="
- downloadByUrl({
- url: items.filesUrl,
- fileName: items.filesTitle,
- })
- "
- ><Download
- /></el-icon>
- <el-icon
- title="编辑"
- v-if="items.oldData != 1"
- @click="handleoverviewEdit(a.filesTypeName, items)"
- ><Edit
- /></el-icon>
- <el-icon
- @click="OverviewDel(items, a.filesTypeName)"
- title="删除"
- ><CircleClose
- /></el-icon>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="leftCenter" v-if="active1 == '现场照片'">
- <div
- v-for="(a, b) in item.childrenList"
- :key="b"
- v-show="show ? recursiveSearch(a.childrenList) : true"
- >
- <div class="listTitle">{{ a.filesTypeName }}</div>
- <div
- class="itemList"
- v-for="(items, indexs) in a.childrenList"
- @click="handleClick2(items)"
- :class="{ active: childrenList.value == items.filesTypeId }"
- :key="indexs"
- >
- <div class="ItemTitle">{{ items.filesTypeName }}</div>
- </div>
- </div>
- </div>
- <div class="leftCenter" v-if="active1 == '勘验笔录'">
- <div
- class="addButton flex"
- v-show="!show"
- style="margin-bottom: 10px"
- >
- <el-button
- class="newbut"
- :icon="Edit"
- @click="handleRecords(-1)"
- >填写</el-button
- >
- <el-upload
- class="upload-demo"
- style="display: inline-block"
- :show-file-list="false"
- :before-upload="upload"
- :http-request="uploadNewFile"
- :on-success="handleSuccess"
- :on-preview="previewFile"
- :accept="accept"
- :before-remove="removeFile"
- multiple
- >
- <el-button class="newbut" :icon="Upload">上传</el-button>
- </el-upload>
- </div>
- <div
- class="itemList"
- v-for="(items, indexs) in item.caseFilesList"
- @click="handlItem1(items)"
- :class="{ active: childrenList.value == items.filesId }"
- :key="indexs"
- >
- <div class="ItemTitle">
- <div class="text">
- {{ items.filesTypeName || items.filesTitle }}
- </div>
- <div
- class="operation"
- v-if="childrenList.value == items.filesId"
- >
- <el-icon
- title="下载"
- @click="
- downloadByUrl({
- url: items.filesUrl,
- fileName: items.filesTitle,
- })
- "
- ><Download
- /></el-icon>
- <el-icon
- title="编辑"
- v-if="!show && items.createType != 'upload'"
- @click="handleRecords(items.filesId)"
- ><Edit
- /></el-icon>
- <el-icon v-if="!show" @click="del(items)" title="删除"
- ><CircleClose
- /></el-icon>
- </div>
- </div>
- </div>
- </div>
- <div class="leftCenter" v-if="active1 == '照片卷'">
- <div
- class="addButton flex"
- v-show="!show"
- style="margin-bottom: 10px"
- >
- <el-button
- class="newbut"
- :icon="Edit"
- @click="handledrawCasePhotos([])"
- >制卷</el-button
- >
- <el-button
- class="newbut"
- @click="exportToPDF(true)"
- :disabled="!casePhotoList.length"
- :icon="Download"
- >下载</el-button
- >
- <!-- -->
- <el-button class="newbut" :icon="Edit" @click="openAIdrawCase"
- >AI制卷</el-button
- >
- </div>
- <div
- class="itemList"
- v-for="(items, indexs) in casePhotoList"
- @click="handlItem2(items)"
- :class="{ active: childrenList.value == items.id }"
- :key="indexs"
- >
- <div class="ItemTitle">
- <div class="text">
- {{ items.name }}
- </div>
- <div
- class="operation"
- v-if="!show && childrenList.value == items.id"
- >
- <el-icon title="下载" @click="exportToPDF(false, items)"
- ><Download
- /></el-icon>
- <i
- title="重命名"
- class="el-icon iconfont icon-rename"
- @click="handlemtk(items)"
- ></i>
- <el-icon
- title="编辑"
- v-if="!show && items.createType != 'upload'"
- @click="handledrawCasePhotos(items.id)"
- ><Edit
- /></el-icon>
- <el-icon v-if="!show" @click="del2(items)" title="删除"
- ><CircleClose
- /></el-icon>
- </div>
- </div>
- </div>
- </div>
- </el-tab-pane>
- </el-tabs>
- </div>
- </div>
- <!-- 现场照片 -->
- <div class="abstractCentenr" v-if="active1 == '现场照片'">
- <div class="centerTop" v-show="!show">
- <div class="import" @click="handleYr">
- <el-icon size="26" color="#26559B">
- <i
- style="font-size: 26px; color: #26559b"
- class="iconfont icon-import"
- ></i
- ></el-icon>
- <div class="name">导入</div>
- </div>
- <el-upload
- class="upload-demo upload"
- multiple
- :show-file-list="false"
- :before-upload="imgupload"
- :file-list="imgfileLists"
- :http-request="uploadNewFile"
- :on-success="handleSuccess"
- :on-preview="imgpreviewFile"
- :accept="imgaccept"
- drag
- action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
- >
- <el-icon class="el-icon--upload" style="margin-top: 20px" size="26">
- <i
- style="font-size: 26px; color: #26559b"
- class="iconfont icon-Upload"
- ></i
- ></el-icon>
- <div class="el-upload__text">
- 点击或拖拽文件上传<br />支持 jpg、png、jpeg ≤ 50MB
- </div>
- </el-upload>
- </div>
- <div class="centerBottom">
- <div class="imgList">
- <viewImg
- :key="childrenList.value"
- :list="childrenList.caseFilesList || []"
- @handleEdit="handleEdit"
- @refresh="getList"
- />
- </div>
- </div>
- </div>
- <!-- 现场图 -->
- <div class="abstractCentenr" v-if="active1 == '现场图'">
- <div class="imgSrcimport noView" v-if="!childrenList.src">暂无数据</div>
- <div class="imgSrccentenr" v-else>
- <img
- @click="handleView(childrenList.src)"
- :src="childrenList.src"
- class="noView viewImg"
- alt=""
- />
- </div>
- </div>
- <!-- 勘验笔录 -->
- <div class="abstractCentenr" v-if="active1 == '勘验笔录'">
- <div
- class="kybl"
- v-if="childrenList.item && childrenList.item.createType == 'online'"
- >
- <div class="title">现场勘验笔录</div>
- <div class="kyblid">勘验号:{{ data.inquestNum }}</div>
- <div>现场勘验单位:{{ data.deptName }}</div>
- <div>指派/报告单位:{{ data.reportDept }}</div>
- <div>时间:{{ data.inquestTime }}</div>
- <div>勘验事由:{{ data.inquestResource }}</div>
- <div>
- 现场勘验时间:
- <span v-if="data.times && data.times[0]"
- >{{ dayjs(data.times[0]).format("YYYY-MM-DD HH:mm:ss") }} ~
- {{ dayjs(data.times[1]).format("YYYY-MM-DD HH:mm:ss") }}</span
- >
- </div>
- <div>现场地点:{{ data.address }}</div>
- <div>现场保护情况:{{ data.protectionSituation }}</div>
- <div>
- 现场保护人:姓名 {{ data.protector.name }}单位
- {{ data.protector.unit }}职务 {{ data.protector.job }}
- </div>
- <div>
- 保护措施:
- <el-checkbox-group class="checkbox" v-model="data.protectionMeasures">
- <el-checkbox :value="0" label="专人看护现场,防止他人进入" />
- <el-checkbox :value="1" checked label="设立警戒带,划定禁行区域" />
- <el-checkbox :value="2" label="其他措施" />
- </el-checkbox-group>
- </div>
- <div>
- 现场情况:
- <el-checkbox-group class="checkbox" v-model="data.situation">
- <el-checkbox :value="0" label="原始现场" />
- <el-checkbox :value="1" checked label="变动现场" />
- </el-checkbox-group>
- </div>
- <div>
- 变动原因:
- <el-checkbox-group class="checkbox" v-model="data.changeReason">
- <el-checkbox :value="0" label="事主进入" />
- <el-checkbox :value="1" label="报案人进入" />
- <el-checkbox :value="2" label="其他" />
- </el-checkbox-group>
- <span style="margin-left: 20px" v-if="data.changeReasonOtherValue">{{
- data.changeReasonOtherValue
- }}</span>
- </div>
- <div>
- 天气:
- <el-checkbox-group class="checkbox" v-model="data.weatherInfo.type">
- <el-checkbox :value="0" label="阴" />
- <el-checkbox :value="1" label="晴" />
- <el-checkbox :value="2" label="雨" />
- <el-checkbox :value="3" label="雾" />
- </el-checkbox-group>
- <span>温度:{{ data.weatherInfo.temperature }}℃</span>
- <span>湿度:{{ data.weatherInfo.humidity }}%</span>
- <span>风向:{{ data.weatherInfo.windDirection }}</span>
- </div>
- <div>
- 现场勘验利用的光线:
- <el-checkbox-group class="checkbox" v-model="data.light">
- <el-checkbox :value="0" checked label="自然光" />
- <el-checkbox :value="1" checked label="灯光" />
- <el-checkbox :value="2" label="特种光" />
- </el-checkbox-group>
- </div>
- <div>
- 现场勘验指挥人:姓名{{ data.inquestCommander.name }}单位{{
- data.inquestCommander.unit
- }}职务{{ data.inquestCommander.job }}
- </div>
- <div>现场勘验情况:{{ data.inquestSituation }}</div>
- <div>
- 现场勘验制图 {{ data.imageNum }} 张;照相 {{
- data.photographNum
- }} 张;摄像 {{ data.photographyMinNum }} 分{{
- data.photographySecNum
- }}秒;录音{{ data.recordingMinNum }} 分{{ data.recordingSecNum }}秒;
- </div>
- <div>
- 现场勘验记录人员:
- <div class="list">
- <div
- v-for="(info, index) in data.recorderInfo"
- :key="index"
- v-show="info.name || info.unit || info.job"
- >
- {{ info.typeLabel }} 姓名: {{ info.name }} 单位:
- {{ info.unit }} 职务:
- {{ info.job }}
- </div>
- </div>
- </div>
- <div>
- 现场勘验人员:
- <div class="list">
- <div
- v-for="(info, index) of data.signatureInfo"
- :key="index"
- v-show="info.name || info.unit || info.job"
- >
- 姓名: {{ info.name || "_____" }} 单位: {{ info.unit }} 职务:
- {{ info.job }}
- </div>
- </div>
- </div>
- <div>
- 现场勘验见证人:
- <div class="list">
- <div
- v-for="(info, index) of data.witnessInfo"
- :key="index"
- v-show="info.sex || info.birthday || info.address"
- >
- 姓名: {{ info.name || "_____" }} 性别:
- {{ info.sex ? "女" : "男" }}出生日期:
- {{ info.birthday && dayjs(info.birthday).format("YYYY-MM-DD") }}
- 住址: {{ info.address }}
- </div>
- </div>
- </div>
- <div>备注:{{ data.remark }}</div>
- </div>
- <div class="imgSrccentenr" v-else-if="isImage(childrenList.src)">
- <img
- @click="handleView(childrenList.src)"
- :src="childrenList.src"
- class="noView viewImg"
- alt=""
- />
- </div>
- <div class="noView" v-else>
- <div
- class="noViewTitle"
- v-if="childrenList.item && childrenList.item.filesUrl"
- >
- <div class="zbzc">暂不支持预览</div>
- <div
- class="cursor-pointer down"
- @click="
- downloadByUrl({
- fileName: childrenList.item && childrenList.item.filesTitle,
- url: childrenList.item && childrenList.item.filesUrl,
- })
- "
- >
- 下载
- </div>
- </div>
- <div v-else class="noViewTitle">暂无数据</div>
- </div>
- </div>
- <div class="abstractCentenr" style="padding: 0" v-if="active1 == '照片卷'">
- <iframe id="iframe-outside" frameborder="0"></iframe>
- <showpages
- ref="showPagesRef"
- :photos="photos"
- v-if="childrenList.src"
- :pageCount="childrenList.item.pageCount || 0"
- :content="childrenList.src"
- />
- <div v-else class="noView">
- <div
- class="noViewTitle"
- v-if="childrenList.item && childrenList.item.filesUrl"
- >
- <div class="zbzc">暂不支持预览</div>
- </div>
- <div v-else class="noViewTitle">暂无数据</div>
- </div>
- </div>
- </div>
- </template>
- <script setup lang="ts">
- import viewImg from "@/components/viewImg/list.vue";
- import { computed, ref, reactive } from "vue";
- import { addCaseScenes, exportCasePhotos, tableModelScene } from "./quisk";
- import showpages from "./showpages.vue";
- import {
- updateByTreeFileLists,
- getByTreeFileLists,
- getCasePhotoRollList,
- caseExportImg,
- overviewAdd,
- TabulationAdd,
- } from "@/store/case";
- import { ElMessage, ElMessageBox, ElLoading } from "element-plus";
- import { delCaseFile } from "@/store/caseFile";
- import {
- uploadNewFile,
- addByMediaLiBrary,
- getSceneListHasAi,
- getCaseInquestInfoOld,
- casePhotoUpdate,
- casePhotodel,
- getAllPhotoList,
- getCaseInfoData,
- show,
- } from "@/store/case";
- import {
- downloadFile,
- downloadByUrl,
- isImage,
- recursiveSearch,
- } from "@/util/index.ts";
- import { caseOverviewDel } from "@/store/case";
- import dayjs from "dayjs";
- import { recorderInfoType, ChangeReasonType } from "./formData.ts";
- import {
- Upload,
- DocumentAdd,
- CircleCheck,
- Delete,
- Download,
- CircleClose,
- Edit,
- Plus,
- } from "@element-plus/icons-vue";
- import { RouteName, router } from "@/router";
- import { useUpload } from "@/hook/upload";
- import { addCaseFile, setTypeFile, addSceneImg1, addSceneImg2 } from "./quisk";
- const caseId = computed(() => router.currentRoute.value?.params?.caseId);
- const filesTypeId = ref(0);
- const ImgsrcList = ref([]);
- const active1 = ref("现场图");
- const active = ref(true);
- const urlindex = ref(-1);
- const selectNum = ref(null)
- const canvas = ref(null);
- const editor = ref(null);
- const tabsRef = ref(null);
- const showText = ref(show.value ? false : true);
- const settype = ref(false);
- const childrenList = ref({
- list: [],
- value: "",
- parentId: 0,
- src: "",
- filesId: 0,
- item: {},
- caseFilesList: [],
- });
- const casePhotoItem = ref({
- id: "",
- name: "",
- content: "",
- show: false,
- });
- const showPagesRef = ref(null);
- const data = reactive({
- title: "",
- inquestNum: "", //现场勘验号
- deptName: "", //单位名称
- sendDept: "", //发送单位
- issuanceCount: "", // 份数
- makeTime: "", //制作时间
- recorder: "", // 笔录人
- issuanceOpinion: "", //签发意见
- reportDept: "", //报告单位
- times: [], // startTime ,endTime
- address: "", // 勘验地址
- inquestTime: "", //勘验时间
- inquestResource:
- "x年x月x日x单位接到报警称;x年x月x日x地点发生一起什么案事件,需要勘验现场, 接通知后,技术员xx,xx前往现场考察", //勘验范围
- protector: {
- name: "",
- unit: "",
- job: "",
- }, // 现场保护人
- protectionSituation: "", // 现场保护情况
- situation: [], //现场情况
- changeReason: [],
- changeReasonOtherValue: "",
- protectionMeasures: [], //保护措施
- weatherInfo: {
- type: [],
- temperature: "",
- humidity: "",
- windDirection: "",
- }, //天气情况
- light: [], //光线
- painter: "",
- photographer: "",
- inquestCommander: {
- name: "",
- unit: "",
- job: "",
- }, //现场勘验指挥人
- inquestSituation:
- "案发现场以XXX小区为中心,东侧为XXX路,西侧是XXX街,北侧为XXX路,南侧是XXX路。", //现场勘验情况
- imageNum: 0, //现场勘验制图数量
- photographNum: 0, //照相数量
- photographyMinNum: 0, //摄影数量
- photographySecNum: 0, //摄影数量
- recordingMinNum: "",
- recordingSecNum: "",
- recorderInfo: JSON.parse(JSON.stringify(recorderInfoType)),
- signatureInfo: [], //现场勘验人员
- witnessInfo: [],
- remark: "",
- });
- const xczpfilesTypeId = ref(1);
- const photos = ref([]);
- const showModal = ref(false);
- const srcList = ref([]);
- const klblId = ref(0);
- const fileLists = ref([]);
- const imgfileLists = ref([]);
- const list = ref([]);
- const fileList = ref([]);
- const casePhotoList = ref([
- {
- id: 0,
- name: "现场照片",
- caseId: 336,
- content: "现场照片",
- },
- ]);
- const caseInfo = computed(() => getCaseInfoData());
- const activeNames = ref(["1"]);
- const { size, upload, removeFile, previewFile, file, accept } = useUpload({
- maxSize: 10 * 1024 * 1024,
- formats: [".doc", ".docx", ".pdf"],
- });
- const {
- size: imgSize,
- fileList: imgfileList,
- upload: imgupload,
- file: imgfile,
- previewFile: imgpreviewFile,
- accept: imgaccept,
- } = useUpload({
- maxSize: 50 * 1024 * 1024,
- formats: [".jpg", ".png", ".jpeg", ".bmp"], //".mp4", ".wav", ".mp3", ".shp"
- });
- const handleChange = (val: string[]) => {
- console.log(val);
- };
- const getImgList = async () => {
- let imgList = await getAllPhotoList(filesTypeId.value);
- photos.value =
- imgList.map((ele) => ({
- ...ele,
- url: ele.filesUrl,
- id: ele.filesId,
- name: ele.filesTitle,
- })) || [];
- };
- getList();
- function handleActive(params) {
- console.log("handleActive", params);
- }
- const initInfo = async (inquestFileId) => {
- const res = await getCaseInquestInfoOld(inquestFileId || fileId.value);
- for (var k in data) {
- if (res.data && res.data.hasOwnProperty(k)) {
- // console.log("Key is " + k);
- if (res.data[k]) {
- data[k] = res.data[k];
- } else {
- data[k] = "";
- }
- }
- }
- };
- function handleSuccess(item) {
- let uploadId = item?.data.id;
- addByMediaLiBrary({
- caseId: caseId.value,
- filesTypeId:
- active1.value == "勘验笔录" ? klblId.value : childrenList.value.value,
- uploadId,
- }).then((res) => {
- fileLists.value = [];
- imgfileLists.value = [];
- getList(true);
- });
- }
- function getList(refresh = false) {
- //new 0 现场图 1 照片卷 2 现场照片 3 勘验笔录
- //old 0 现场照片 1 现场图 2 勘验笔录
- getCasePhotoRollList(caseId.value).then((res) => {
- casePhotoList.value = res || [];
- let count = 0;
- casePhotoList.value = res.map((ele) => {
- let content = ele.content && JSON.parse(ele.content);
- let number = content.pages?.length;
- count = count + number;
- return {
- ...ele,
- pageCount: count - number,
- };
- });
- if (
- active1.value == "照片卷" &&
- casePhotoList.value &&
- casePhotoList.value.length
- ) {
- let item = res.find((ele) => ele.id == casePhotoItem.value.id) || res[0];
- handlItem2(item);
- }
- });
- updateByTreeFileLists(caseId.value).then((res) => {
- list.value =
- res.find((ele) => ele.filesTypeName == "三录材料")?.childrenList || [];
- klblId.value = list.value.find(
- (ele) => ele.filesTypeName == "勘验笔录"
- ).filesTypeId;
- let zpj = list.value.find((ele) => ele.filesTypeName == "现场照片");
- filesTypeId.value = zpj.filesTypeId;
- getImgList();
- if (show.value) {
- //展示也过滤现场照片空数据
- list.value[0].childrenList.map((ele) => {
- ele.childrenList =
- ele.childrenList?.filter((element) => element.caseFilesList) || [];
- return ele;
- });
- console.log("list", list.value);
- list.value[1].childrenList.map((ele) => {
- ele.caseFilesList =
- ele.caseFilesList?.filter((element) => element.filesUrl) || [];
- return ele;
- });
- }
- if (!refresh) {
- handleClick({
- paneName: active1.value,
- childrenListvalue: childrenList.value,
- });
- return;
- }
- let item = list.value.find((item) => item.filesTypeName == active1.value);
- let arr2 = [];
- if (active1.value == "现场照片" || active1.value == "现场图") {
- //现场图和勘验笔录
- item.childrenList.map((ele) => {
- if (ele.caseFilesList && ele.caseFilesList.length) {
- ele.caseFilesList.map((element) => {
- element.filesUrl && arr2.push(element);
- });
- } else {
- arr2.push(...ele.childrenList);
- }
- });
- }
- if (active1.value == "现场照片" && childrenList.value.parentId) {
- //现场照片
- item = item.childrenList.find(
- (ele) => ele.filesTypeId == childrenList.value.parentId
- );
- }
- if (active1.value == "现场图" && !childrenList.value.parentId) {
- item = item.childrenList[0];
- }
- console.log("activeItem", list.value, "arr2", arr2, item);
- srcList.value =
- active1.value == "现场照片" || active1.value == "现场图"
- ? arr2
- : item.childrenList;
- console.log("srcList", srcList.value, item, childrenList, active1.value);
- let activeIndex =
- srcList.value.findIndex(
- (item) => item.filesTypeId == childrenList.value.value
- ) || 0;
- if (!childrenList.value.value) {
- activeIndex = 0;
- }
- let activeItem = srcList.value[activeIndex];
- console.log(
- "activeItem",
- activeItem,
- activeIndex,
- "arr2",
- list.value,
- item
- );
- if (!activeItem) return;
- childrenList.value.value = activeItem.filesTypeId;
- childrenList.value.parentId = activeItem.parentId;
- childrenList.value.filesId = activeItem.filesId;
- childrenList.value.item = activeItem;
- childrenList.value.src =
- activeItem.filesUrl ||
- (activeItem.caseFilesList && activeItem.caseFilesList[0]?.filesUrl);
- childrenList.value.caseFilesList =
- active1.value == "勘验笔录" || active1.value == "现场照片"
- ? activeItem.caseFilesList
- : activeItem.childrenList;
- });
- }
- async function handleAdd() {
- await addCaseFile({ caseId: caseId.value, filesTypeName: ["三录材料"] });
- getList(true);
- }
- const handleClick = (a) => {
- let { paneName, childrenListvalue } = a;
- let newImgsrcList = [];
- casePhotoItem.value.id = "";
- let index = list.value.findIndex((item) => item.filesTypeName == paneName);
- let childrenLists = list.value[index].childrenList;
- if (childrenListvalue && show.value) {
- setTimeout(() => {
- let indexshow1 = recursiveSearch(list.value[0].childrenList);
- let indexshow2 = recursiveSearch(list.value[1].childrenList);
- let indexshow3 = recursiveSearch([list.value[3]]);
- let indexshow4 = casePhotoList.value.length;
- let tabsdom0 = document.getElementById("tab-现场图");
- let tabsdom1 = document.getElementById("tab-现场照片");
- let tabsdom2 = document.getElementById("tab-勘验笔录");
- let tabsdom3 = document.getElementById("tab-照片卷");
- if (!indexshow1 && tabsdom0) tabsdom0.style.display = "none";
- if (!indexshow2 && tabsdom1) tabsdom1.style.display = "none";
- if (!indexshow3 && tabsdom2) tabsdom2.style.display = "none";
- if (!indexshow4 && tabsdom3) tabsdom3.style.display = "none";
- if (indexshow1) {
- } else if (indexshow2) {
- active1.value = "现场照片";
- handleClick({ paneName: active1.value });
- } else if (indexshow4) {
- active1.value = "照片卷";
- handleClick({ paneName: active1.value });
- } else {
- active1.value = "勘验笔录";
- handleClick({ paneName: active1.value });
- }
- showText.value = true;
- }, 500);
- }
- if (paneName == "现场照片") {
- //现场照片
- let ArrList = [];
- childrenLists.map((ele) => {
- ArrList.push(...ele.childrenList);
- });
- let newindex = ArrList.findIndex(
- (items) => items.caseFilesList && items.caseFilesList.length
- );
- newindex = newindex == -1 ? 0 : newindex;
- let activeItem = ArrList[newindex] || {};
- console.log("handleClick", activeItem, childrenLists);
- if (!activeItem) return;
- childrenList.value.value = activeItem.filesTypeId;
- childrenList.value.parentId = activeItem.parentId;
- childrenList.value.filesId = activeItem.filesId;
- childrenList.value.src = activeItem.filesUrl;
- childrenList.value.caseFilesList = activeItem.caseFilesList || [];
- let newSrc = [];
- childrenLists &&
- childrenLists.map((ele) => {
- ele.caseFilesList && newSrc.push(...ele.caseFilesList);
- });
- newImgsrcList = newSrc.map((ele) => ele.filesUrl);
- } else if (paneName == "勘验笔录") {
- //笔录
- let activeItem =
- (list.value[index].caseFilesList && list.value[index].caseFilesList[0]) ||
- {};
- childrenList.value.value = activeItem.filesId;
- childrenList.value.parentId = activeItem.parentId;
- childrenList.value.src = activeItem.filesUrl;
- childrenList.value.item = activeItem;
- childrenList.value.caseFilesList = [];
- activeItem.createType == "online" && initInfo(activeItem.filesId);
- let newSrc =
- (list.value[index].caseFilesList &&
- list.value[index].caseFilesList.map((ele) => ele.filesUrl)) ||
- [];
- console.log("handleClick", newSrc, childrenLists.caseFilesList);
- newImgsrcList = newSrc.filter((ele) => isImage(ele));
- } else if (paneName == "照片卷") {
- childrenList.value.src = "";
- //照片卷
- let activeItem = casePhotoList.value[0] || {};
- console.log("handleClick", childrenLists, activeItem);
- childrenList.value.src = activeItem.content;
- childrenList.value.item = activeItem;
- childrenList.value.filesId = activeItem.id;
- childrenList.value.value = activeItem.id;
- } else {
- //现场图
- let ArrList = [];
- let index1 = 0,
- index2 = 0;
- index1 = childrenLists.findIndex((ele) => {
- index2 = ele.childrenList.findIndex(
- (element) => element.caseFilesList && element.caseFilesList.length
- );
- return index2 != -1;
- });
- console.log("handleClick", childrenLists, ArrList, index1, index2);
- let activeItem =
- list.value[index].childrenList[index1 == -1 ? 0 : index1]?.childrenList[
- index2 == -1 ? 0 : index2
- ] || {};
- childrenList.value.value = activeItem.filesTypeId;
- childrenList.value.parentId = activeItem.parentId;
- childrenList.value.caseFilesList = activeItem.caseFilesList || [];
- }
- getList(true);
- ImgsrcList.value = newImgsrcList.filter((ele) => isImage(ele));
- };
- function handlItem0(item) {
- childrenList.value.value = item.filesTypeId;
- childrenList.value.parentId = item.parentId;
- childrenList.value.src = item.filesUrl;
- childrenList.value.filesId = item.filesId;
- childrenList.value.caseFilesList = item.caseFilesList;
- console.log("handleClick", item, childrenList.value);
- }
- function handlItem1(item) {
- childrenList.value.value = item.filesId;
- childrenList.value.filesId = item.filesId;
- childrenList.value.item = item;
- childrenList.value.src = item.filesUrl;
- item.createType == "online" && initInfo(item.filesId);
- // childrenList.value.caseFilesList = item.caseFilesList || [];
- console.log("handleClick", item, childrenList.value);
- }
- const handlItem2 = (item) => {
- console.log("handlItem2", item, childrenList.value);
- childrenList.value.value = item.id;
- childrenList.value.filesId = item.id;
- childrenList.value.item = item;
- childrenList.value.src = item.content;
- };
- const handleClick2 = (item) => {
- console.log("handleClick2", item);
- childrenList.value.value = item.filesTypeId;
- childrenList.value.parentId = item.parentId;
- childrenList.value.caseFilesList =
- (item.caseFilesList &&
- item.caseFilesList.map((ele) => {
- return {
- ...ele,
- checked: false,
- };
- })) ||
- [];
- console.log("handleClick2", item);
- };
- const handleCommand = async (command, a) => {
- if (command == "绘图") {
- let addurl = a.filesTypeName == "方位图" ? TabulationAdd : overviewAdd;
- let resData = await addurl({
- type: a.filesTypeName == "方位图" ? 1 : 0,
- title: "",
- caseId: caseId.value,
- });
- // let params = {
- // caseId: caseId.value,
- // tabulationIds: a.filesTypeName == "方位图" ? [resData.id] : undefined,
- // overviewIds : a.filesTypeName != "方位图" ? [resData.id] : undefined,
- // };
- // await caseExportImg(params);
- getList(true);
- // window.open(a.filesTypeName != "方位图"?`/draw/#/overview?caseId=${caseId.value}&overviewId=${resData.id}`:`/draw/#/tabulation?caseId=${caseId.value}&tabulationId=${resData.id}`);
- } else {
- let addFun = a.filesTypeName == "方位图" ? addSceneImg1 : addSceneImg2;
- let ids = await addFun({
- type: a.filesTypeName == "方位图" ? 1 : 0,
- title: a.filesTypeName,
- // dictId: filesTypeId,
- });
- let params = {
- caseId: caseId.value,
- overviewIds: a.filesTypeName != "方位图" ? ids : undefined,
- tabulationIds: a.filesTypeName == "方位图" ? ids : undefined,
- };
- if (ids && ids.length) {
- await caseExportImg(params);
- getList(true);
- }
- }
- };
- const del = async (file) => {
- console.log(file, "file");
- ElMessageBox.confirm("确定删除?", "提示", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning",
- }).then(async () => {
- await delCaseFile({ caseId: caseId.value, filesId: file.filesId });
- ElMessage({
- type: "success",
- message: "删除成功",
- });
- childrenList.value.src = "";
- childrenList.value.value = "";
- getList(true);
- });
- };
- const del2 = async (file) => {
- console.log(file, "file");
- ElMessageBox.confirm("确定删除?", "提示", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning",
- }).then(async () => {
- await casePhotodel({ caseId: caseId.value, id: file.id });
- ElMessage({
- type: "success",
- message: "删除成功",
- });
- childrenList.value.src = "";
- childrenList.value.value = "";
- getList(true);
- });
- };
- const OverviewDel = async (file, filesTypeName) => {
- console.log(file, "file");
- ElMessageBox.confirm("确定删除?", "提示", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning",
- }).then(async () => {
- await delCaseFile({ caseId: caseId.value, filesId: file.filesId });
- // await caseOverviewDel({ tabulationId: file.tabulationId ,overviewId:file.overviewId, type: filesTypeName });
- ElMessage({
- type: "success",
- message: "删除成功",
- });
- childrenList.value.value = "";
- childrenList.value.src = "";
- getList(true);
- });
- };
- async function handleItem(type, item) {
- console.log("handleItem", type, item);
- if (type == "edit") {
- await setTypeFile({
- ...item,
- caseId: caseId.value,
- fileOptions: list.value,
- });
- }
- getList(true);
- }
- function handleoverviewEdit(type, item) {
- console.log("handleoverviewEdit", type, item);
- let url = `/draw/#/tabulation?caseId=${caseId.value}&tabulationId=${item.tabulationId}`;
- if ("平面图" == type) {
- url = `/draw/#/overview?caseId=${caseId.value}&overviewId=${item.overviewId}&title=${item.filesTitle}`;
- // gotoDraw(item.filesTypeId != pmtId.value? BoardType.scene : BoardType.map, item.filesId)
- }
- window.open(url);
- // getList();
- }
- function handleRecords(fileId) {
- router.push({
- name: RouteName.records,
- params: { caseId: caseId.value, fileId: fileId || -1 },
- });
- }
- async function handleYr() {
- let uploadIds = await addCaseScenes({
- caseId: caseId.value,
- fileTypes: [0],
- formats: [".jpg", ".png", ".jpeg", ".bmp"],
- filesTypeId: childrenList.value.value,
- });
- if (uploadIds == false || (uploadIds && uploadIds.length == 0)) {
- return;
- }
- await addByMediaLiBrary({
- caseId: caseId.value,
- uploadIds,
- filesTypeId: childrenList.value.value,
- });
- getList(true);
- }
- const handleEdit = async (lists) => {
- console.log(
- "handleEdit",
- list.value,
- lists,
- lists.map((ele) => ele.filesId)
- );
- let item = list.value.find((ele) => ele.filesTypeName == active1.value);
- await setTypeFile({
- caseId: caseId.value,
- // filesId: lists.map(ele => ele.filesId),
- filesTypeId: childrenList.value.value,
- fileOptions: item.childrenList,
- filesIds: lists.map((ele) => ele.filesId),
- });
- getList(true);
- };
- async function handledrawCasePhotos(val) {
- const id = Array.isArray(val) ? val.toString() : val;
- router.push({
- name: RouteName.drawCasePhotos,
- params: { caseId: caseId.value! },
- query: {
- id: id,
- filesTypeId: filesTypeId.value,
- },
- });
- console.log("handleAdd");
- }
- async function frameLoad(sdk) {
- // 这里可以获取到mesh方法
- const player = sdk.core.get("Player");
- sdk.Scene.on("loaded", () => {
- // if (isTest) {
- player.model.panos.list.forEach((pano) => pano.addLabel2());
- // } else {
- // sdk.core.get("SceneRenderer").suspend();
- // }
- });
- console.log("--------frameLoad!---------");
- const list = await sdk.Camera.routeSnapGenerate();
- console.log("返回数据", list);
- const iframe = document.getElementById("iframe-outside");
- iframe?.classList.remove('show');
- // sdk.Scene.whenLoaded(()=>{
- // console.log("返回数据",sdk.Camera.getPose())
- // })
- }
- async function openAIdrawCase() {
- const { num } = await tableModelScene({ numList: [] });
- selectNum.value = num;
- handleAIdrawCasePhotos(num);
- console.log("返回数据", num);
- }
- function handleAIdrawCasePhotos(num) {
- const iframe = document.getElementById("iframe-outside");
- console.log(iframe, "iframe");
- if (iframe && iframe.classList.contains("show") == false) {
- iframe.classList.add("show");
- iframe.onload = () => {
- console.log(iframe.contentWindow, "contentWindow");
- frameLoad(iframe.contentWindow.__sdk);
- };
- iframe.src = "./model.html?m=" + num;
- }
- }
- const handleView = (src) => {
- if (src && !ImgsrcList.value.includes(src)) {
- ImgsrcList.value.push(src);
- }
- urlindex.value = ImgsrcList.value.findIndex((ele) => ele == src);
- };
- const handleIsShow = (item) => {
- if (!show.value) return true;
- return !recursiveSearch(item && item.childrenList);
- };
- const handlemtk = (item) => {
- casePhotoItem.value = {
- show: true,
- ...item,
- };
- // ElMessageBox.prompt("", "重命名", {
- // confirmButtonText: "确定",
- // customClass: "promptClass",
- // cancelButtonText: "取消",
- // showClose: true,
- // inputValue: item.name,
- // inputValidator: (value) => {
- // if (!value) {
- // return false;
- // }
- // return true;
- // },
- // inputErrorMessage: "请输入名称",
- // })
- // .then(async ({ value }) => {
- // ElMessage({
- // type: "success",
- // message: `修改成功`,
- // });
- // })
- // .catch(() => {
- // });
- };
- const handleConfirm = async () => {
- let value = casePhotoItem.value.name;
- if (!value || value.trim() == "") {
- return ElMessage.error("请输入修改名称");
- }
- await casePhotoUpdate({
- ...casePhotoItem.value,
- name: value,
- });
- ElMessage({
- type: "success",
- message: `修改成功`,
- });
- casePhotoItem.value.show = false;
- await getList(true);
- };
- const exportToPDF = async (isAll, item) => {
- if (isAll === true) {
- await handleOpen(true);
- }
- await exportCasePhotos({
- showPagesRef: showPagesRef.value,
- title: (isAll ? caseInfo.value.caseTitle : item.name) + "照片卷",
- });
- console.log("exportToPDF完毕");
- if (isAll) {
- await handleOpen(false);
- }
- };
- const handleOpen = (val) => {
- // 关闭时重置到照片卷标签页
- if (!val) {
- setTimeout(() => {
- handleClick({ paneName: "照片卷" });
- }, 500);
- } else {
- console.log("handleOpen");
- // 初始化汇总数据结构
- let Alllist = {
- pages: [],
- indexingLineList: [],
- };
- // 遍历所有照片数据,合并页面和标引线
- casePhotoList.value.map((ele) => {
- let content = ele.content && JSON.parse(ele.content);
- let { pages, indexingLineList } = content;
- // 计算横向偏移量,每张图片宽度600+间距4
- let xAdd = (600 + 4) * Alllist.pages.length;
- // 根据偏移量调整标引线坐标
- if (xAdd) {
- indexingLineList = indexingLineList.map((element) => {
- let points = element.points.map((item) => ({
- ...item,
- x: item.x + xAdd,
- }));
- return { ...element, points };
- });
- }
- // 合并当前照片的页面和标引线到汇总数据
- Alllist.pages.push(...pages);
- Alllist.indexingLineList.push(...indexingLineList);
- console.log("handleOpen", content);
- });
- // 将汇总数据赋值给子组件
- childrenList.value.src = Alllist;
- childrenList.value.value = -1;
- childrenList.value.item.pageCount = 0;
- console.log("handleOpen", Alllist);
- }
- };
- </script>
- <style scoped lang="scss">
- .scene {
- height: 100%;
- display: flex;
- .scene-list {
- width: var(--leftwidth);
- height: 100%;
- overflow-x: scroll;
- .list {
- .addButton {
- padding: 20px 34px 0 34px;
- margin-left: 0px;
- }
- .listTitle {
- padding: 29px 48px 13px 48px;
- font-weight: bold;
- font-size: 16px;
- color: rgba(0, 0, 0, 0.85);
- line-height: 22px;
- display: flex;
- justify-content: space-between;
- align-items: center;
- .el-icon {
- cursor: pointer;
- }
- }
- .itemList {
- &:hover {
- background: rgba(69, 144, 255, 0.1);
- }
- .ItemTitle {
- padding: 25px 48px;
- font-weight: 400;
- font-size: 14px;
- color: rgba(0, 0, 0, 0.85);
- line-height: 22px;
- .text {
- overflow: hidden;
- text-overflow: ellipsis;
- display: -webkit-box;
- -webkit-line-clamp: 2;
- /*! autoprefixer: off */
- -webkit-box-orient: vertical;
- word-break: break-all;
- }
- }
- .operation {
- text-align: right;
- margin-top: 16px;
- .el-icon {
- cursor: pointer;
- margin-left: 32px;
- }
- }
- }
- .active {
- background: rgba(69, 144, 255, 0.1);
- }
- }
- }
- .abstractCentenr {
- background: #f5f5f5;
- height: 100%;
- width: calc(100% - var(--leftwidth));
- padding: 32px;
- position: relative;
- .noView {
- position: absolute;
- left: 50%;
- top: 50%;
- transform: translate(-50%, -50%);
- text-align: center;
- .down {
- margin-top: 20px;
- line-height: 32px;
- box-shadow: 0px 2px 0px 0px rgba(0, 0, 0, 0.04);
- border-radius: 2px;
- border: 1px solid #26559b;
- font-size: 14px;
- color: #26559b;
- }
- }
- .viewImg {
- max-width: 95%;
- max-height: 95%;
- object-fit: contain;
- }
- .import {
- margin-right: 20px;
- padding-top: 40px;
- height: 100%;
- width: 148px;
- text-align: center;
- background: #fafafa;
- cursor: pointer;
- }
- .centerTop {
- height: 148px;
- display: flex;
- justify-content: space-between;
- margin-bottom: 32px;
- .upload {
- height: 100%;
- width: calc(100% - 170px);
- }
- }
- .centerBottom {
- .selcet {
- // float: right;
- // text-align: right;
- display: flex;
- justify-content: space-between;
- }
- }
- .kybl {
- padding: 60px;
- background: #ffffff;
- font-weight: 400;
- font-size: 14px;
- color: #000000;
- margin: 24px auto;
- line-height: 28px;
- text-align: left;
- max-width: 1024px;
- word-break: break-all;
- .checkbox {
- display: inline-block;
- }
- .title {
- font-weight: 600;
- font-size: 18px;
- color: rgba(0, 0, 0, 0.85);
- line-height: 24px;
- text-align: center;
- }
- .kyblid {
- text-align: right;
- margin: 16px 0;
- }
- }
- .imgSrcimport {
- display: flex;
- height: 148px;
- }
- .imgSrccentenr {
- max-width: 100%;
- height: auto;
- }
- }
- .title0 {
- font-family: Microsoft YaHei, Microsoft YaHei;
- font-weight: bold;
- font-size: 16px;
- color: rgba(0, 0, 0, 0.85);
- line-height: 22px;
- }
- .demo-tabs {
- margin: 12px 0;
- }
- }
- </style>
- <style lang="scss">
- .sceneImg {
- .el-tabs__header {
- padding: 17px 0 13px 24px;
- .el-tabs__active-bar {
- display: none;
- }
- .el-tabs__item {
- font-weight: 400;
- font-size: 16px;
- color: rgba(0, 0, 0, 0.45);
- &:hover {
- // font-weight: bold;
- font-size: 16px;
- color: #26559b;
- line-height: 22px;
- }
- }
- .is-active {
- // font-weight: bold;
- font-size: 16px;
- color: #26559b;
- line-height: 22px;
- }
- }
- .el-icon:focus-visible {
- outline: none !important;
- }
- .el-dropdown {
- width: auto;
- .el-dropdown-link {
- outline: none !important;
- }
- &:focus-visible {
- }
- }
- .el-checkbox {
- height: 28px;
- // pointer-events: none;
- }
- .kybl {
- .el-checkbox {
- height: 28px;
- pointer-events: none;
- }
- }
- .el-checkbox__label {
- color: rgba(0, 0, 0, 0.85) !important;
- }
- .el-tabs__nav-next,
- .el-tabs__nav-prev {
- top: -9px;
- }
- }
- #iframe-hiddens,
- #iframe-outside {
- display: none;
- position: absolute;
- z-index: -999;
- width: 600px;
- height: 500px;
- pointer-events: none;
- }
- #iframe-hiddens.show {
- display: block;
- visibility: hidden;
- right: 0;
- bottom: 0;
- }
- #iframe-hiddens.visible {
- pointer-events: all;
- display: block;
- visibility: visible;
- z-index: 999;
- }
- #iframe-outside.show {
- display: block;
- left: -9999px;
- }
- #iframe-outside.visible {
- pointer-events: all;
- display: block;
- left: auto;
- right: 0;
- bottom: 0;
- z-index: 999;
- }
- </style>
|