|
|
|
@ -4,12 +4,16 @@
|
|
|
|
|
<div class="w-4/5 xl:w-5/6">
|
|
|
|
|
<BasicTable @register="registerTable" :searchInfo="searchInfo">
|
|
|
|
|
<template #toolbar>
|
|
|
|
|
<span v-for="f in floders" :key="f" class="floderTitle">
|
|
|
|
|
<span v-if="f != '全部文件'" style="margin-right: 10px"> / </span>
|
|
|
|
|
<span @click="getChildrenByProp(tableData, f)"> {{ f }}</span>
|
|
|
|
|
<span v-for="(f, index) in floders" :key="f.id" class="floderTitle">
|
|
|
|
|
<span v-if="f.name != '全部文件'" style="margin-right: 10px"> / </span>
|
|
|
|
|
<a-tooltip placement="top">
|
|
|
|
|
<template #title>
|
|
|
|
|
<span>{{ f.name }}</span>
|
|
|
|
|
</template>
|
|
|
|
|
<span class="flodersname" @click="getChildrenByProp(f, index)"> {{ f.name }}</span>
|
|
|
|
|
</a-tooltip>
|
|
|
|
|
</span>
|
|
|
|
|
<div class="floderOtherButton">
|
|
|
|
|
<!-- <PermissionBtn @btnEvent="onBtnClicked"></PermissionBtn> -->
|
|
|
|
|
<a-button :icon="h(BorderHorizontalOutlined)" @click="openComparisonModal">
|
|
|
|
|
变化检测
|
|
|
|
|
</a-button>
|
|
|
|
@ -28,45 +32,19 @@
|
|
|
|
|
<template #bodyCell="{ column, record }">
|
|
|
|
|
<div v-if="tableType == 'table'">
|
|
|
|
|
<template v-if="column.key === 'name'">
|
|
|
|
|
<FolderOpenOutlined v-if="record.type == 'folder'" style="font-size: 20px" />
|
|
|
|
|
<!-- <PlaySquareTwoTone v-if="record.type == 'video'" style="font-size: 20px" /> -->
|
|
|
|
|
<img v-if="record.type == 'img'" :src="record.url" :width="30" :height="20" />
|
|
|
|
|
<FolderOpenOutlined v-if="!record.objectKey" style="font-size: 20px" />
|
|
|
|
|
<FileOutlined
|
|
|
|
|
v-if="record.objectKey && !record.objectKey.includes('jpeg')"
|
|
|
|
|
style="font-size: 20px"
|
|
|
|
|
/>
|
|
|
|
|
<img
|
|
|
|
|
v-if="record.type == 'video'"
|
|
|
|
|
:src="record.gifZoomImage"
|
|
|
|
|
v-if="record.objectKey && record.objectKey.includes('jpeg')"
|
|
|
|
|
:src="getImgurl(record.objectKey)"
|
|
|
|
|
:width="30"
|
|
|
|
|
:height="20"
|
|
|
|
|
/>
|
|
|
|
|
<FileOutlined v-if="record.type.includes('model')" style="font-size: 20px" />
|
|
|
|
|
<div
|
|
|
|
|
v-if="record.type.includes('2D')"
|
|
|
|
|
style="
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 20px;
|
|
|
|
|
left: 11px;
|
|
|
|
|
font-size: 10px;
|
|
|
|
|
color: #ffffff;
|
|
|
|
|
background: #000000;
|
|
|
|
|
pointer-events: none;
|
|
|
|
|
"
|
|
|
|
|
>
|
|
|
|
|
2D
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
|
|
|
|
v-if="record.type.includes('3D')"
|
|
|
|
|
style="
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 20px;
|
|
|
|
|
left: 11px;
|
|
|
|
|
font-size: 10px;
|
|
|
|
|
color: #ffffff;
|
|
|
|
|
pointer-events: none;
|
|
|
|
|
background: #000000;
|
|
|
|
|
"
|
|
|
|
|
>
|
|
|
|
|
3D
|
|
|
|
|
</div>
|
|
|
|
|
<span
|
|
|
|
|
v-if="!record.objectKey || (record.objectKey && record.objectKey.includes('jpeg'))"
|
|
|
|
|
@click="lookRecord(record)"
|
|
|
|
|
@mouseover="record.isHovered = true"
|
|
|
|
|
@mouseout="record.isHovered = false"
|
|
|
|
@ -77,25 +55,51 @@
|
|
|
|
|
>
|
|
|
|
|
{{ record.name }}
|
|
|
|
|
</span>
|
|
|
|
|
<span
|
|
|
|
|
v-if="record.objectKey && !record.objectKey.includes('jpeg')"
|
|
|
|
|
:style="{
|
|
|
|
|
marginLeft: '5px',
|
|
|
|
|
}"
|
|
|
|
|
>
|
|
|
|
|
{{ record.name }}
|
|
|
|
|
</span>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-if="column.key === 'createtime'">
|
|
|
|
|
{{ record.createtime ? record.createtime : '-' }}
|
|
|
|
|
<template v-if="column.key === 'createTime'">
|
|
|
|
|
<span
|
|
|
|
|
style="width: 100%; display: flex; align-items: center; justify-content: center"
|
|
|
|
|
>
|
|
|
|
|
{{ record.createTime ? record.createTime : '-' }}
|
|
|
|
|
</span>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-if="column.key === 'size'">
|
|
|
|
|
{{ record.size ? record.size : '-' }}
|
|
|
|
|
<span
|
|
|
|
|
style="width: 100%; display: flex; align-items: center; justify-content: center"
|
|
|
|
|
>
|
|
|
|
|
{{ record.size ? record.size : '-' }}
|
|
|
|
|
</span>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-if="column.key === 'label'">
|
|
|
|
|
<div v-if="record.label && record.label.length > 0">
|
|
|
|
|
<a-tag color="success" v-for="la in record.label" :key="la">{{ la }}</a-tag>
|
|
|
|
|
<template v-if="column.key === 'fileTags'">
|
|
|
|
|
<div v-if="record.fileTags && record.fileTags.length > 0">
|
|
|
|
|
<a-tag color="success" v-for="la in record.fileTags" :key="la">{{ la }}</a-tag>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-if="column.key === 'action'">
|
|
|
|
|
<a-button type="text">
|
|
|
|
|
<EditOutlined @click="renameRecord(record)" />
|
|
|
|
|
</a-button>
|
|
|
|
|
<a-button type="text">
|
|
|
|
|
<BorderInnerOutlined @click="openPathModal(record)" />
|
|
|
|
|
</a-button>
|
|
|
|
|
<a-tooltip placement="top">
|
|
|
|
|
<template #title>
|
|
|
|
|
<span>重命名</span>
|
|
|
|
|
</template>
|
|
|
|
|
<a-button type="text">
|
|
|
|
|
<EditOutlined @click="renameRecord(record)" />
|
|
|
|
|
</a-button>
|
|
|
|
|
</a-tooltip>
|
|
|
|
|
<a-tooltip placement="top">
|
|
|
|
|
<template #title>
|
|
|
|
|
<span>查看地图图片历史路径</span>
|
|
|
|
|
</template>
|
|
|
|
|
<a-button type="text" v-if="record.objectKey">
|
|
|
|
|
<BorderInnerOutlined @click="openPathModal(record)" />
|
|
|
|
|
</a-button>
|
|
|
|
|
</a-tooltip>
|
|
|
|
|
</template>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
@ -118,53 +122,17 @@
|
|
|
|
|
<a-checkbox v-model:checked="record.checked" @change="changeStore($event, record)" />
|
|
|
|
|
</div>
|
|
|
|
|
<FolderOpenOutlined
|
|
|
|
|
v-if="record.type == 'folder'"
|
|
|
|
|
v-if="!record.objectKey"
|
|
|
|
|
style="font-size: 40px"
|
|
|
|
|
@click="lookRecord(record)"
|
|
|
|
|
/>
|
|
|
|
|
<img
|
|
|
|
|
v-if="record.type == 'img'"
|
|
|
|
|
:src="record.url"
|
|
|
|
|
v-if="record.objectKey"
|
|
|
|
|
:src="getImgurl(record.objectKey)"
|
|
|
|
|
:width="60"
|
|
|
|
|
:height="40"
|
|
|
|
|
@click="lookRecord(record)"
|
|
|
|
|
/>
|
|
|
|
|
<img v-if="record.type == 'video'" :src="record.gifZoomImage" :width="60" :height="40" />
|
|
|
|
|
<FileOutlined
|
|
|
|
|
v-if="record.type.includes('model')"
|
|
|
|
|
style="font-size: 40px"
|
|
|
|
|
@click="lookRecord(record)"
|
|
|
|
|
/>
|
|
|
|
|
<div
|
|
|
|
|
v-if="record.type.includes('2D')"
|
|
|
|
|
style="
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 52px;
|
|
|
|
|
left: 60px;
|
|
|
|
|
font-size: 20px;
|
|
|
|
|
color: #ffffff;
|
|
|
|
|
pointer-events: none;
|
|
|
|
|
background: #000000;
|
|
|
|
|
"
|
|
|
|
|
@click="lookRecord(record)"
|
|
|
|
|
>
|
|
|
|
|
2D
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
|
|
|
|
v-if="record.type.includes('3D')"
|
|
|
|
|
style="
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 52px;
|
|
|
|
|
left: 60px;
|
|
|
|
|
font-size: 20px;
|
|
|
|
|
color: #ffffff;
|
|
|
|
|
pointer-events: none;
|
|
|
|
|
background: #000000;
|
|
|
|
|
"
|
|
|
|
|
@click="lookRecord(record)"
|
|
|
|
|
>
|
|
|
|
|
3D
|
|
|
|
|
</div>
|
|
|
|
|
<span
|
|
|
|
|
:style="{
|
|
|
|
|
textDecoration: record.isHovered ? 'underline' : 'none',
|
|
|
|
@ -187,13 +155,13 @@
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 新建文件夹弹窗 -->
|
|
|
|
|
<AddFolderModal @register="addFolderModal" @success="handleSuccess" />
|
|
|
|
|
<AddFolderModal @register="addFolderModal" @handleSuccess="handleSuccess" />
|
|
|
|
|
<!-- 移动弹窗 -->
|
|
|
|
|
<MoveFileModal @register="moveFileModal" @success="handleSuccess" />
|
|
|
|
|
<MoveFileModal @register="moveFileModal" @handleSuccess="handleSuccess" />
|
|
|
|
|
<!-- 压缩弹窗 -->
|
|
|
|
|
<CompressFileModal @register="compressFileModal" @success="handleSuccess" />
|
|
|
|
|
<CompressFileModal @register="compressFileModal" @handleSuccess="handleSuccess" />
|
|
|
|
|
<!-- 重命名弹窗 -->
|
|
|
|
|
<RenameModal @register="renameModal" @success="handleSuccess" />
|
|
|
|
|
<RenameModal @register="renameModal" @handleSuccess="handleSuccess" />
|
|
|
|
|
<!-- 预览弹窗 -->
|
|
|
|
|
<a-modal
|
|
|
|
|
v-model:open="open"
|
|
|
|
@ -208,12 +176,12 @@
|
|
|
|
|
:maskClosable="false"
|
|
|
|
|
>
|
|
|
|
|
<Preview
|
|
|
|
|
v-if="nowPreviewRecord.type == 'img' || nowPreviewRecord.type == 'video'"
|
|
|
|
|
v-if="nowPreviewRecord.objectKey"
|
|
|
|
|
:nowPreviewRecord="nowPreviewRecord"
|
|
|
|
|
:previewRecordList="previewRecordList"
|
|
|
|
|
@chooseNowPreviewRecord="chooseNowPreviewRecord"
|
|
|
|
|
@closeModal="closeModal"
|
|
|
|
|
@reloadTable="reload"
|
|
|
|
|
@handleSuccess="handleSuccess"
|
|
|
|
|
/>
|
|
|
|
|
</a-modal>
|
|
|
|
|
<!-- 变化检测弹窗 -->
|
|
|
|
@ -244,14 +212,19 @@
|
|
|
|
|
:mask="false"
|
|
|
|
|
:maskClosable="false"
|
|
|
|
|
>
|
|
|
|
|
<Path :pathRecord="pathRecord" @closePathModal="closePathModal" />
|
|
|
|
|
<Path
|
|
|
|
|
:allImageDataList="allImageDataList"
|
|
|
|
|
:nowShowImageData="nowShowImageData"
|
|
|
|
|
:floderName="floderName"
|
|
|
|
|
@closePathModal="closePathModal"
|
|
|
|
|
@handleSuccessPath="handleSuccessPath"
|
|
|
|
|
/>
|
|
|
|
|
</a-modal>
|
|
|
|
|
</PageWrapper>
|
|
|
|
|
</template>
|
|
|
|
|
<script lang="ts" setup>
|
|
|
|
|
import { reactive, ref, watch, h } from 'vue';
|
|
|
|
|
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
|
|
|
|
import { getOrgList, deleteDept } from '@/api/demo/system';
|
|
|
|
|
import { PageWrapper } from '@/components/Page';
|
|
|
|
|
import { useModal } from '@/components/Modal';
|
|
|
|
|
import { useMessage } from '@/hooks/web/useMessage';
|
|
|
|
@ -271,6 +244,13 @@
|
|
|
|
|
FileOutlined,
|
|
|
|
|
BorderInnerOutlined,
|
|
|
|
|
} from '@ant-design/icons-vue';
|
|
|
|
|
import {
|
|
|
|
|
GetMediaFile,
|
|
|
|
|
UpdatePicStatus,
|
|
|
|
|
Deletepic,
|
|
|
|
|
UpdatePicName,
|
|
|
|
|
UpdatePicParentKey,
|
|
|
|
|
} from '@/api/demo/mediaLibrary';
|
|
|
|
|
import LeftTree from './LeftTree.vue';
|
|
|
|
|
import Preview from './preview/index.vue';
|
|
|
|
|
import Comparison from './comparison/index.vue';
|
|
|
|
@ -287,208 +267,8 @@
|
|
|
|
|
const { createConfirm, createMessage } = useMessage();
|
|
|
|
|
|
|
|
|
|
// 表格数据--------------------------------------------------------------------
|
|
|
|
|
const tableData = ref([
|
|
|
|
|
{
|
|
|
|
|
id: '2',
|
|
|
|
|
name: '图片',
|
|
|
|
|
createtime: '2025-03-24 18:13:17',
|
|
|
|
|
type: 'folder',
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
id: '1-2',
|
|
|
|
|
name: '南山风景照.jpg',
|
|
|
|
|
createtime: '2020-10-22 17:33:22',
|
|
|
|
|
type: 'img',
|
|
|
|
|
url: 'https://img2.baidu.com/it/u=257681495,312745373&fm=253&fmt=auto&app=138&f=JPEG?w=750&h=500',
|
|
|
|
|
imgtype: '原片',
|
|
|
|
|
taskname: '佛山大火救援项目',
|
|
|
|
|
airlineName: '火灾救援勘查航线',
|
|
|
|
|
width: 889,
|
|
|
|
|
height: 500,
|
|
|
|
|
size: '6.2M',
|
|
|
|
|
photographFeiji: '救援机1007',
|
|
|
|
|
photographNumber: 'GD610',
|
|
|
|
|
photographMan: 'zachzhou',
|
|
|
|
|
photographTime: '2020-10-22 00:00:00',
|
|
|
|
|
label: ['人', '车'],
|
|
|
|
|
lat: 35.362625,
|
|
|
|
|
lng: 118.033886,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: '1-3',
|
|
|
|
|
name: '风景图.jpg',
|
|
|
|
|
createtime: '2020-10-22 17:33:22',
|
|
|
|
|
type: 'img',
|
|
|
|
|
url: 'https://m.tuniucdn.com/fb2/t1/G5/M00/44/52/Cii-s1soezyIF2UxABn76u-yKl8AAIwBgB34jAAGfwC3020871',
|
|
|
|
|
imgtype: '原片2',
|
|
|
|
|
taskname: '佛山大火救援项目2',
|
|
|
|
|
airlineName: '火灾救援勘查航线2',
|
|
|
|
|
width: 2000,
|
|
|
|
|
height: 1334,
|
|
|
|
|
size: '1.63M',
|
|
|
|
|
photographFeiji: '救援机1008',
|
|
|
|
|
photographNumber: 'GD610',
|
|
|
|
|
photographMan: 'zachzhou',
|
|
|
|
|
photographTime: '2020-10-22 00:00:00',
|
|
|
|
|
label: ['人', '车'],
|
|
|
|
|
lat: 35.362825,
|
|
|
|
|
lng: 118.033886,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: '1-4',
|
|
|
|
|
name: '红外照片.jpg',
|
|
|
|
|
createtime: '2020-10-22 17:33:22',
|
|
|
|
|
type: 'img',
|
|
|
|
|
url: 'https://pic.rmb.bdstatic.com/bjh/gallery/8c885a0e3cf0647b60548535e2e9ca39.jpeg',
|
|
|
|
|
imgtype: '红外照片',
|
|
|
|
|
taskname: '佛山大火救援项目-红外照片',
|
|
|
|
|
airlineName: '火灾救援勘查航线',
|
|
|
|
|
width: 640,
|
|
|
|
|
height: 480,
|
|
|
|
|
size: '6.2M',
|
|
|
|
|
photographFeiji: '救援机1007',
|
|
|
|
|
photographNumber: 'GD610',
|
|
|
|
|
photographMan: 'zachzhou',
|
|
|
|
|
photographTime: '2020-10-22 00:00:00',
|
|
|
|
|
label: ['人', '车'],
|
|
|
|
|
lat: 35.362925,
|
|
|
|
|
lng: 118.033886,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: '1-5',
|
|
|
|
|
name: '广角照片.jpg',
|
|
|
|
|
createtime: '2020-10-22 17:33:22',
|
|
|
|
|
type: 'img',
|
|
|
|
|
url: 'https://img2.baidu.com/it/u=2490853491,3226002419&fm=253&fmt=auto&app=138&f=JPEG?w=749&h=500',
|
|
|
|
|
imgtype: '广角照片',
|
|
|
|
|
taskname: '佛山大火救援项目-广角照片',
|
|
|
|
|
airlineName: '火灾救援勘查航线',
|
|
|
|
|
width: 749,
|
|
|
|
|
height: 500,
|
|
|
|
|
size: '6.2M',
|
|
|
|
|
photographFeiji: '救援机1007',
|
|
|
|
|
photographNumber: 'GD610',
|
|
|
|
|
photographMan: 'zachzhou',
|
|
|
|
|
photographTime: '2020-10-22 00:00:00',
|
|
|
|
|
label: ['人', '车'],
|
|
|
|
|
lat: 35.362625,
|
|
|
|
|
lng: 118.033286,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: '1-6',
|
|
|
|
|
name: '变焦照片.jpg',
|
|
|
|
|
createtime: '2020-10-22 17:33:22',
|
|
|
|
|
type: 'img',
|
|
|
|
|
url: 'https://img2.baidu.com/it/u=3778652155,475195343&fm=253&fmt=auto&app=138&f=PNG?w=500&h=518',
|
|
|
|
|
imgtype: '变焦照片',
|
|
|
|
|
taskname: '佛山大火救援项目-变焦照片',
|
|
|
|
|
airlineName: '火灾救援勘查航线',
|
|
|
|
|
width: 500,
|
|
|
|
|
height: 518,
|
|
|
|
|
size: '6.2M',
|
|
|
|
|
photographFeiji: '救援机1007',
|
|
|
|
|
photographNumber: 'GD610',
|
|
|
|
|
photographMan: 'zachzhou',
|
|
|
|
|
photographTime: '2020-10-22 00:00:00',
|
|
|
|
|
label: ['人', '车'],
|
|
|
|
|
lat: 35.362725,
|
|
|
|
|
lng: 118.033086,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: '3',
|
|
|
|
|
name: '视频',
|
|
|
|
|
createtime: '2025-03-24 18:13:17',
|
|
|
|
|
type: 'folder',
|
|
|
|
|
children: [
|
|
|
|
|
// {
|
|
|
|
|
// id: '3-4',
|
|
|
|
|
// name: 'XZD153狼窝沟西南',
|
|
|
|
|
// createtime: '',
|
|
|
|
|
// type: 'video',
|
|
|
|
|
// url: '74b95e6575d741489b9a9061bb646467',
|
|
|
|
|
// manufacturer: '海康',
|
|
|
|
|
// },
|
|
|
|
|
{
|
|
|
|
|
id: '3-5',
|
|
|
|
|
name: '费县马庄镇陈家鱼后村南斜坡后村',
|
|
|
|
|
createtime: '',
|
|
|
|
|
type: 'video',
|
|
|
|
|
url: 'http://111.36.45.20:18000/flv/hls/H-dcb1ea7388588111.flv',
|
|
|
|
|
gifZoomImage: 'https://img.soogif.com/mrGHcO3xjFJnJ986TeL9oAr2BYfPIaM7.gif',
|
|
|
|
|
manufacturer: '腾讯',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: '3-8',
|
|
|
|
|
name: 'movie',
|
|
|
|
|
createtime: '',
|
|
|
|
|
type: 'video',
|
|
|
|
|
url: 'https://www.runoob.com/try/demo_source/mov_bbb.mp4',
|
|
|
|
|
gifZoomImage: 'https://img.soogif.com/mrGHcO3xjFJnJ986TeL9oAr2BYfPIaM7.gif',
|
|
|
|
|
manufacturer: '腾讯',
|
|
|
|
|
},
|
|
|
|
|
// {
|
|
|
|
|
// id: '3-6',
|
|
|
|
|
// name: '可落',
|
|
|
|
|
// createtime: '',
|
|
|
|
|
// type: 'video',
|
|
|
|
|
// url: '8H03AA1PAG8D9BF',
|
|
|
|
|
// manufacturer: '乐橙',
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// id: '3-7',
|
|
|
|
|
// name: '费县薛庄镇东张林村村南可见光',
|
|
|
|
|
// createtime: '',
|
|
|
|
|
// type: 'video',
|
|
|
|
|
// url: '37130100181328000392',
|
|
|
|
|
// manufacturer: '青犀',
|
|
|
|
|
// },
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
// {
|
|
|
|
|
// id: '4',
|
|
|
|
|
// name: '模型',
|
|
|
|
|
// createtime: '2025-03-24 18:13:17',
|
|
|
|
|
// type: 'folder',
|
|
|
|
|
// children: [
|
|
|
|
|
// {
|
|
|
|
|
// id: '4-1',
|
|
|
|
|
// name: '天空之城 二维模型',
|
|
|
|
|
// createtime: '2025-03-24 18:13:17',
|
|
|
|
|
// type: 'model2D',
|
|
|
|
|
// url: 'https://m.tuniucdn.com/fb2/t1/G5/M00/44/52/Cii-s1soezyIF2UxABn76u-yKl8AAIwBgB34jAAGfwC3020871',
|
|
|
|
|
// boundary: {
|
|
|
|
|
// end_lat: 22.57965964566081,
|
|
|
|
|
// end_lng: 113.93899440765381,
|
|
|
|
|
// max_level: 23,
|
|
|
|
|
// min_level: 12,
|
|
|
|
|
// start_lat: 22.578193485606185,
|
|
|
|
|
// start_lng: 113.93697738647461,
|
|
|
|
|
// },
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// id: '4-2',
|
|
|
|
|
// name: '天空之城 三维模型',
|
|
|
|
|
// createtime: '2025-03-24 18:13:17',
|
|
|
|
|
// type: 'model3D',
|
|
|
|
|
// url: 'https://m.tuniucdn.com/fb2/t1/G5/M00/44/52/Cii-s1soezyIF2UxABn76u-yKl8AAIwBgB34jAAGfwC3020871',
|
|
|
|
|
// boundary: {
|
|
|
|
|
// end_lat: 22.57965964566081,
|
|
|
|
|
// end_lng: 113.93899440765381,
|
|
|
|
|
// max_level: 23,
|
|
|
|
|
// min_level: 12,
|
|
|
|
|
// start_lat: 22.578193485606185,
|
|
|
|
|
// start_lng: 113.93697738647461,
|
|
|
|
|
// },
|
|
|
|
|
// },
|
|
|
|
|
// ],
|
|
|
|
|
// },
|
|
|
|
|
]);
|
|
|
|
|
// 展示数据
|
|
|
|
|
const showTableData = ref(cloneDeep(tableData.value));
|
|
|
|
|
// 目录
|
|
|
|
|
const floders = ref(['全部文件']);
|
|
|
|
|
const showTableData = ref();
|
|
|
|
|
// 表格还是文件夹
|
|
|
|
|
const tableType = ref('table');
|
|
|
|
|
const tableHeight: any = ref(0);
|
|
|
|
@ -533,55 +313,12 @@
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
// 表格
|
|
|
|
|
// let showTableDataIds = showTableData.value.map((item) => item.id);
|
|
|
|
|
let selectRowsIdArray = showTableData.value.filter((item) => item.checked);
|
|
|
|
|
// selectRowsIdArray.forEach((item) => {
|
|
|
|
|
// if (showTableDataIds.includes(item.id)) {
|
|
|
|
|
// let filterTemp = showTableData.value.filter((f) => f.id == item.id);
|
|
|
|
|
// console.log(filterTemp);
|
|
|
|
|
|
|
|
|
|
// // filterTemp.forEach((temp) => {
|
|
|
|
|
// // if (temp.children) {
|
|
|
|
|
// // temp.children.forEach((t) => {
|
|
|
|
|
// // selectRowsIdArray.push(t);
|
|
|
|
|
// // });
|
|
|
|
|
// // }
|
|
|
|
|
// // });
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
setSelectedRows(selectRowsIdArray);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// 目录跳跃
|
|
|
|
|
function getChildrenByProp(children, name) {
|
|
|
|
|
if (name == '全部文件') {
|
|
|
|
|
showTableData.value = cloneDeep(tableData.value);
|
|
|
|
|
floders.value = ['全部文件'];
|
|
|
|
|
clearSelectedRowKeys();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
for (const node of children) {
|
|
|
|
|
if (node.name === name) {
|
|
|
|
|
showTableData.value = cloneDeep(node.children);
|
|
|
|
|
const index = floders.value.indexOf(name);
|
|
|
|
|
floders.value = index === -1 ? [] : floders.value.slice(0, index + 1);
|
|
|
|
|
clearSelectedRowKeys();
|
|
|
|
|
return node.children || [];
|
|
|
|
|
}
|
|
|
|
|
if (node.children && node.children.length > 0) {
|
|
|
|
|
const result = getChildrenByProp(node.children, node.name);
|
|
|
|
|
if (result) {
|
|
|
|
|
const index = floders.value.indexOf(name);
|
|
|
|
|
floders.value = index === -1 ? [] : floders.value.slice(0, index + 1);
|
|
|
|
|
clearSelectedRowKeys();
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
// 单选框选择
|
|
|
|
|
const checkNameChecked = ref(false);
|
|
|
|
|
// 表格or文件夹切换
|
|
|
|
@ -610,64 +347,132 @@
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 表格
|
|
|
|
|
// 目录
|
|
|
|
|
const floders = ref([
|
|
|
|
|
{
|
|
|
|
|
id: '0',
|
|
|
|
|
name: '全部文件',
|
|
|
|
|
},
|
|
|
|
|
]);
|
|
|
|
|
const nowParentKey = ref('0');
|
|
|
|
|
const searchInfo = reactive<Recordable>({});
|
|
|
|
|
const searchParams = ref();
|
|
|
|
|
const [registerTable, { reload, getSelectRows, setSelectedRows, clearSelectedRowKeys }] =
|
|
|
|
|
useTable({
|
|
|
|
|
// api: getOrgList,
|
|
|
|
|
// title: '全部文件',
|
|
|
|
|
dataSource: showTableData,
|
|
|
|
|
rowKey: 'id',
|
|
|
|
|
columns,
|
|
|
|
|
formConfig: {
|
|
|
|
|
labelWidth: 120,
|
|
|
|
|
schemas: searchFormSchema,
|
|
|
|
|
},
|
|
|
|
|
rowSelection: {
|
|
|
|
|
type: 'checkbox',
|
|
|
|
|
},
|
|
|
|
|
isTreeTable: false,
|
|
|
|
|
striped: false,
|
|
|
|
|
bordered: false,
|
|
|
|
|
inset: false,
|
|
|
|
|
tableSetting: {
|
|
|
|
|
redo: false,
|
|
|
|
|
size: false,
|
|
|
|
|
setting: false,
|
|
|
|
|
},
|
|
|
|
|
useSearchForm: true,
|
|
|
|
|
showIndexColumn: false,
|
|
|
|
|
showTableSetting: true,
|
|
|
|
|
handleSearchInfoFn(info) {
|
|
|
|
|
console.log(info);
|
|
|
|
|
console.log(searchInfo.value);
|
|
|
|
|
searchParams.value = info;
|
|
|
|
|
return info;
|
|
|
|
|
},
|
|
|
|
|
beforeFetch: (data) => {
|
|
|
|
|
// 接口请求前 参数处理
|
|
|
|
|
var temp = {
|
|
|
|
|
startTime: dayjs(data.startTime).startOf('month').format('YYYY-MM-DD'),
|
|
|
|
|
endTime: dayjs(data.endTime).endOf('month').format('YYYY-MM-DD HH:mm:ss'),
|
|
|
|
|
const [
|
|
|
|
|
registerTable,
|
|
|
|
|
{ reload, getDataSource, getSelectRows, setSelectedRows, clearSelectedRowKeys },
|
|
|
|
|
] = useTable({
|
|
|
|
|
api: GetMediaFile,
|
|
|
|
|
rowKey: 'id',
|
|
|
|
|
columns,
|
|
|
|
|
formConfig: {
|
|
|
|
|
labelWidth: 120,
|
|
|
|
|
schemas: searchFormSchema,
|
|
|
|
|
},
|
|
|
|
|
rowSelection: {
|
|
|
|
|
type: 'checkbox',
|
|
|
|
|
},
|
|
|
|
|
isTreeTable: false,
|
|
|
|
|
striped: false,
|
|
|
|
|
bordered: false,
|
|
|
|
|
inset: false,
|
|
|
|
|
tableSetting: {
|
|
|
|
|
redo: false,
|
|
|
|
|
size: false,
|
|
|
|
|
setting: false,
|
|
|
|
|
},
|
|
|
|
|
useSearchForm: true,
|
|
|
|
|
showIndexColumn: false,
|
|
|
|
|
showTableSetting: true,
|
|
|
|
|
beforeFetch: (data) => {
|
|
|
|
|
// 接口请求前 参数处理
|
|
|
|
|
let temp = {
|
|
|
|
|
...data,
|
|
|
|
|
parentKey: nowParentKey.value,
|
|
|
|
|
};
|
|
|
|
|
return temp;
|
|
|
|
|
},
|
|
|
|
|
handleSearchInfoFn(info) {
|
|
|
|
|
if (info.startTime && info.endTime) {
|
|
|
|
|
info = {
|
|
|
|
|
...info,
|
|
|
|
|
startTime: dayjs(info.startTime).format('YYYY-MM-DD') + ' 00:00:00',
|
|
|
|
|
endTime: dayjs(info.endTime).format('YYYY-MM-DD') + ' 23:59:59',
|
|
|
|
|
};
|
|
|
|
|
return temp;
|
|
|
|
|
},
|
|
|
|
|
afterFetch: (res) => {
|
|
|
|
|
console.log(res);
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
searchParams.value = info;
|
|
|
|
|
return info;
|
|
|
|
|
},
|
|
|
|
|
afterFetch: (res) => {
|
|
|
|
|
res.forEach((arr) => {
|
|
|
|
|
if (arr.fileTags) {
|
|
|
|
|
arr.fileTags = JSON.parse(arr.fileTags);
|
|
|
|
|
} else {
|
|
|
|
|
arr.fileTags = [];
|
|
|
|
|
}
|
|
|
|
|
if (arr.graffitiJson) {
|
|
|
|
|
arr.graffitiJson = JSON.parse(arr.graffitiJson);
|
|
|
|
|
} else {
|
|
|
|
|
arr.graffitiJson = [];
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return res;
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 目录跳跃
|
|
|
|
|
function getChildrenByProp(f, index) {
|
|
|
|
|
nowParentKey.value = f.id;
|
|
|
|
|
floders.value = floders.value.splice(0, index + 1);
|
|
|
|
|
clearSelectedRowKeys();
|
|
|
|
|
reload();
|
|
|
|
|
showTableData.value = getDataSource();
|
|
|
|
|
}
|
|
|
|
|
// 图片获取路径
|
|
|
|
|
function getImgurl(url) {
|
|
|
|
|
return 'http://175.27.168.120:6014/api/v1/buckets/test/objects/download?prefix=' + url;
|
|
|
|
|
}
|
|
|
|
|
// 弹窗----------------------------------------------------------------------
|
|
|
|
|
// 左侧目录选择
|
|
|
|
|
function handleSelect(orgId = '') {
|
|
|
|
|
searchInfo.orgId = orgId;
|
|
|
|
|
reload();
|
|
|
|
|
}
|
|
|
|
|
// 刷新表格
|
|
|
|
|
const childRef = ref<any>();
|
|
|
|
|
function handleSuccess() {
|
|
|
|
|
function handleSuccess(record = null) {
|
|
|
|
|
clearSelectedRowKeys();
|
|
|
|
|
childRef.value.fetch();
|
|
|
|
|
reload();
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
if (record) {
|
|
|
|
|
// 删除后-刷新当前查看项
|
|
|
|
|
previewRecordList.value.forEach((item, index) => {
|
|
|
|
|
if (record.id == item.id) {
|
|
|
|
|
previewRecordList.value.splice(index, 1);
|
|
|
|
|
if (previewRecordList.value.length != 0) {
|
|
|
|
|
nowPreviewRecord.value = previewRecordList.value[index];
|
|
|
|
|
} else {
|
|
|
|
|
open.value = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
// 刷新当前查看项
|
|
|
|
|
GetMediaFile({
|
|
|
|
|
...searchParams.value,
|
|
|
|
|
parentKey: nowParentKey.value,
|
|
|
|
|
page: 1,
|
|
|
|
|
limit: 100,
|
|
|
|
|
}).then((res) => {
|
|
|
|
|
previewRecordList.value = uniqueByKey(res.items, null);
|
|
|
|
|
getDataSource().forEach((item) => {
|
|
|
|
|
if (item.id == nowPreviewRecord.value.id) {
|
|
|
|
|
nowPreviewRecord.value = item;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}, 500);
|
|
|
|
|
}
|
|
|
|
|
// 新建文件夹
|
|
|
|
|
const [addFolderModal, { openModal: openAddFolderModal }] = useModal();
|
|
|
|
@ -680,62 +485,29 @@
|
|
|
|
|
|
|
|
|
|
// 新建文件夹
|
|
|
|
|
function addFolder() {
|
|
|
|
|
let rows = getSelectRows();
|
|
|
|
|
let record: any = null;
|
|
|
|
|
if (rows.length == 1) {
|
|
|
|
|
if (rows[0].type == 'folder') {
|
|
|
|
|
record = rows[0];
|
|
|
|
|
} else {
|
|
|
|
|
record = findParentIdById(tableData.value, rows[0].id);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
openAddFolderModal(true, {
|
|
|
|
|
record,
|
|
|
|
|
});
|
|
|
|
|
// openAddFolderModal(true, {
|
|
|
|
|
// record,
|
|
|
|
|
// });
|
|
|
|
|
}
|
|
|
|
|
// 移动文件
|
|
|
|
|
function moveFolderOrFile() {
|
|
|
|
|
let rows = getSelectRows();
|
|
|
|
|
if (rows.length > 0) {
|
|
|
|
|
const record = rows;
|
|
|
|
|
const records = rows;
|
|
|
|
|
openMoveFileModal(true, {
|
|
|
|
|
tableData: tableData.value,
|
|
|
|
|
record,
|
|
|
|
|
records,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
return createMessage.warn('请选择一个或者多个文件/文件夹进行移动');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 删除
|
|
|
|
|
async function deleteFolderOrFile() {
|
|
|
|
|
let rows = getSelectRows();
|
|
|
|
|
if (rows.length == 0) {
|
|
|
|
|
return createMessage.warn('请选择一个或者多个文件/文件夹进行删除');
|
|
|
|
|
}
|
|
|
|
|
const query = rows.map((item) => item.id);
|
|
|
|
|
createConfirm({
|
|
|
|
|
iconType: 'info',
|
|
|
|
|
title: '删除',
|
|
|
|
|
content: '确定要删除当前部门吗',
|
|
|
|
|
onOk: async () => {
|
|
|
|
|
// const data = await deleteDept(query);
|
|
|
|
|
const data = null;
|
|
|
|
|
if (data) {
|
|
|
|
|
handleSuccess();
|
|
|
|
|
createMessage.success('删除成功');
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error('删除失败');
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
// 压缩
|
|
|
|
|
function compressFolderOrFile() {
|
|
|
|
|
let rows = getSelectRows();
|
|
|
|
|
if (rows.length > 0) {
|
|
|
|
|
const record = rows;
|
|
|
|
|
openCompressFileModal(true, {
|
|
|
|
|
tableData: tableData.value,
|
|
|
|
|
tableData: getDataSource(),
|
|
|
|
|
record,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
@ -748,46 +520,107 @@
|
|
|
|
|
record,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
// 获取父元素
|
|
|
|
|
function findParentIdById(tree, targetId) {
|
|
|
|
|
function recurse(nodes) {
|
|
|
|
|
for (let node of nodes) {
|
|
|
|
|
if (node.children) {
|
|
|
|
|
for (let child of node.children) {
|
|
|
|
|
if (child.id === targetId) {
|
|
|
|
|
return node;
|
|
|
|
|
}
|
|
|
|
|
const found = recurse([child]);
|
|
|
|
|
if (found) return found;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
// 删除
|
|
|
|
|
async function deleteFolderOrFile() {
|
|
|
|
|
let rows = getSelectRows();
|
|
|
|
|
if (rows.length == 0) {
|
|
|
|
|
return createMessage.warn('请选择一个或者多个文件/文件夹进行删除');
|
|
|
|
|
}
|
|
|
|
|
return recurse(tree);
|
|
|
|
|
createConfirm({
|
|
|
|
|
iconType: 'info',
|
|
|
|
|
title: '删除',
|
|
|
|
|
content: '确定要删除选择的文件/文件夹吗?',
|
|
|
|
|
onOk: async () => {
|
|
|
|
|
let ids = '';
|
|
|
|
|
rows.forEach((row) => {
|
|
|
|
|
if (!ids) {
|
|
|
|
|
ids = row.id;
|
|
|
|
|
} else {
|
|
|
|
|
ids = ids + ',' + row.id;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
Deletepic({
|
|
|
|
|
ids: ids,
|
|
|
|
|
}).then((res) => {
|
|
|
|
|
handleSuccess();
|
|
|
|
|
createMessage.success(res);
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 查看弹窗----------------------------------------------------------------------
|
|
|
|
|
// 查看弹窗----------------------------------------------------------------------------
|
|
|
|
|
const open = ref(false);
|
|
|
|
|
// 查看
|
|
|
|
|
// 目前查看项
|
|
|
|
|
// 目前展示图片
|
|
|
|
|
const nowPreviewRecord: any = ref();
|
|
|
|
|
// 目前查看项的同级列表
|
|
|
|
|
// 目前展示图片的列表
|
|
|
|
|
const previewRecordList: any = ref([]);
|
|
|
|
|
// 查看
|
|
|
|
|
function lookRecord(record) {
|
|
|
|
|
if (record.type == 'folder') {
|
|
|
|
|
showTableData.value = record.children;
|
|
|
|
|
floders.value.push(record.name);
|
|
|
|
|
// 查看-打开这个文件夹或者展示这个图片
|
|
|
|
|
async function lookRecord(record) {
|
|
|
|
|
if (!record.objectKey) {
|
|
|
|
|
nowParentKey.value = record.id;
|
|
|
|
|
floders.value.push({
|
|
|
|
|
id: nowParentKey.value,
|
|
|
|
|
name: record.name,
|
|
|
|
|
});
|
|
|
|
|
reload();
|
|
|
|
|
} else {
|
|
|
|
|
open.value = true;
|
|
|
|
|
nowPreviewRecord.value = record;
|
|
|
|
|
previewRecordList.value = findParentIdById(tableData.value, record.id)?.children;
|
|
|
|
|
if (!previewRecordList.value) {
|
|
|
|
|
previewRecordList.value = tableData.value;
|
|
|
|
|
}
|
|
|
|
|
GetMediaFile({
|
|
|
|
|
...searchParams.value,
|
|
|
|
|
parentKey: nowParentKey.value,
|
|
|
|
|
page: 1,
|
|
|
|
|
limit: 100,
|
|
|
|
|
}).then((res) => {
|
|
|
|
|
nowPreviewRecord.value = record;
|
|
|
|
|
previewRecordList.value = uniqueByKey(res.items, record);
|
|
|
|
|
open.value = true;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 去重
|
|
|
|
|
function uniqueByKey(arrlist, record) {
|
|
|
|
|
let resultList: any = [];
|
|
|
|
|
arrlist.forEach((arr) => {
|
|
|
|
|
if (
|
|
|
|
|
arr.objectKey &&
|
|
|
|
|
!resultList.some((item) => item.objectKey === arr.objectKey) &&
|
|
|
|
|
arr.objectKey.includes('jpeg')
|
|
|
|
|
) {
|
|
|
|
|
// 保持顺序
|
|
|
|
|
if (record) {
|
|
|
|
|
if (
|
|
|
|
|
(arr.objectKey == record.objectKey && record.id == arr.id) ||
|
|
|
|
|
arr.objectKey != record.objectKey
|
|
|
|
|
) {
|
|
|
|
|
if (!arr.fileTags) {
|
|
|
|
|
arr.fileTags = [];
|
|
|
|
|
} else {
|
|
|
|
|
arr.fileTags = JSON.parse(arr.fileTags);
|
|
|
|
|
}
|
|
|
|
|
if (!arr.graffitiJson) {
|
|
|
|
|
arr.graffitiJson = [];
|
|
|
|
|
} else {
|
|
|
|
|
arr.graffitiJson = JSON.parse(arr.graffitiJson);
|
|
|
|
|
}
|
|
|
|
|
resultList.push(arr);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (!arr.fileTags) {
|
|
|
|
|
arr.fileTags = [];
|
|
|
|
|
} else {
|
|
|
|
|
arr.fileTags = JSON.parse(arr.fileTags);
|
|
|
|
|
}
|
|
|
|
|
if (!arr.graffitiJson) {
|
|
|
|
|
arr.graffitiJson = [];
|
|
|
|
|
} else {
|
|
|
|
|
arr.graffitiJson = JSON.parse(arr.graffitiJson);
|
|
|
|
|
}
|
|
|
|
|
resultList.push(arr);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return resultList;
|
|
|
|
|
}
|
|
|
|
|
// 图片选择
|
|
|
|
|
function chooseNowPreviewRecord(value) {
|
|
|
|
|
nowPreviewRecord.value = value;
|
|
|
|
@ -812,17 +645,46 @@
|
|
|
|
|
// 路径地图弹窗----------------------------------------------------------------------
|
|
|
|
|
const pathOpen = ref(false);
|
|
|
|
|
// 打开变化检测弹窗
|
|
|
|
|
const pathRecord = ref({});
|
|
|
|
|
const floderName = ref('');
|
|
|
|
|
const nowShowImageData = ref({});
|
|
|
|
|
const allImageDataList: any = ref([]);
|
|
|
|
|
function openPathModal(record) {
|
|
|
|
|
console.log('pathRecord',record)
|
|
|
|
|
pathRecord.value = record;
|
|
|
|
|
pathOpen.value = true;
|
|
|
|
|
GetMediaFile({
|
|
|
|
|
parentKey: record.parentKey,
|
|
|
|
|
page: 1,
|
|
|
|
|
limit: 1000,
|
|
|
|
|
}).then((res) => {
|
|
|
|
|
allImageDataList.value = res.items.filter(
|
|
|
|
|
(item) => item.objectKey && item.objectKey.includes('.jpeg'),
|
|
|
|
|
);
|
|
|
|
|
allImageDataList.value.forEach((arr) => {
|
|
|
|
|
if (arr.fileTags) {
|
|
|
|
|
arr.fileTags = JSON.parse(arr.fileTags);
|
|
|
|
|
} else {
|
|
|
|
|
arr.fileTags = [];
|
|
|
|
|
}
|
|
|
|
|
if (arr.graffitiJson) {
|
|
|
|
|
arr.graffitiJson = JSON.parse(arr.graffitiJson);
|
|
|
|
|
} else {
|
|
|
|
|
arr.graffitiJson = [];
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
nowShowImageData.value = allImageDataList.value.filter((item) => item.id == record.id)[0];
|
|
|
|
|
floderName.value = floders.value[floders.value.length - 1].name;
|
|
|
|
|
pathOpen.value = true;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
// 关闭变化检测弹窗
|
|
|
|
|
function closePathModal() {
|
|
|
|
|
pathRecord.value = {};
|
|
|
|
|
nowShowImageData.value = {};
|
|
|
|
|
pathOpen.value = false;
|
|
|
|
|
}
|
|
|
|
|
// 刷新
|
|
|
|
|
function handleSuccessPath() {
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
openPathModal(nowShowImageData.value);
|
|
|
|
|
}, 500);
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
<style lang="less" scoped>
|
|
|
|
|
.floderTitle {
|
|
|
|
@ -845,6 +707,12 @@
|
|
|
|
|
gap: 10px;
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
}
|
|
|
|
|
.flodersname {
|
|
|
|
|
max-width: 120px;
|
|
|
|
|
white-space: nowrap; /* 禁止换行 */
|
|
|
|
|
overflow: hidden; /* 超出部分隐藏 */
|
|
|
|
|
text-overflow: ellipsis; /* 超出显示省略号 */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
::v-deep .floderTitle .ant-btn {
|
|
|
|
|
padding-left: 0px !important;
|
|
|
|
|