|
|
@ -27,6 +27,9 @@ import GeneratePackageModal from './modal/GeneratePackageModal.vue'
|
|
|
|
import LoginSuccessModal from './modal/LoginSuccessModal.vue'
|
|
|
|
import LoginSuccessModal from './modal/LoginSuccessModal.vue'
|
|
|
|
import PackageSettingsModal from './modal/PackageSettingsModal.vue'
|
|
|
|
import PackageSettingsModal from './modal/PackageSettingsModal.vue'
|
|
|
|
import QueryRepeatedTasksModal from './modal/QueryRepeatedTasksModal.vue'
|
|
|
|
import QueryRepeatedTasksModal from './modal/QueryRepeatedTasksModal.vue'
|
|
|
|
|
|
|
|
import type { PictureSortParam } from '/#/api'
|
|
|
|
|
|
|
|
import defaultAvatar from '@/assets/icons/avatar.svg'
|
|
|
|
|
|
|
|
import baseImg from '@/assets/images/baseImg.png'
|
|
|
|
import { getImgUrl } from '@/utils/urlUtils'
|
|
|
|
import { getImgUrl } from '@/utils/urlUtils'
|
|
|
|
import emitter from '@/utils/mitt'
|
|
|
|
import emitter from '@/utils/mitt'
|
|
|
|
import { hideDownload } from '@/utils/image'
|
|
|
|
import { hideDownload } from '@/utils/image'
|
|
|
@ -44,11 +47,12 @@ import {
|
|
|
|
queryPageListByCheckNo,
|
|
|
|
queryPageListByCheckNo,
|
|
|
|
removeCheckDuplicate,
|
|
|
|
removeCheckDuplicate,
|
|
|
|
} from '@/api/home/main'
|
|
|
|
} from '@/api/home/main'
|
|
|
|
import type { PictureSortParam } from '/#/api'
|
|
|
|
|
|
|
|
import defaultAvatar from '@/assets/icons/avatar.svg'
|
|
|
|
|
|
|
|
import baseImg from '@/assets/images/baseImg.png'
|
|
|
|
|
|
|
|
import bgLoading from '@/assets/images/bg-loading.png'
|
|
|
|
import bgLoading from '@/assets/images/bg-loading.png'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const listData = ref<any[]>([])
|
|
|
|
|
|
|
|
const timer = ref()
|
|
|
|
|
|
|
|
const showClose = ref(false)
|
|
|
|
const deviceHeight = ref(600)
|
|
|
|
const deviceHeight = ref(600)
|
|
|
|
let _masonry: null | Masonry = null
|
|
|
|
let _masonry: null | Masonry = null
|
|
|
|
let _imagesload: any
|
|
|
|
let _imagesload: any
|
|
|
@ -165,13 +169,11 @@ configStore.$subscribe(() => {
|
|
|
|
console.log('subscribe', 'configStore')
|
|
|
|
console.log('subscribe', 'configStore')
|
|
|
|
isAllowDownload.value = configStore.isAllowDownload
|
|
|
|
isAllowDownload.value = configStore.isAllowDownload
|
|
|
|
calNum.value = configStore.getTimeNum
|
|
|
|
calNum.value = configStore.getTimeNum
|
|
|
|
// console.log("calNum.value----------", calNum.value)
|
|
|
|
// console.log("calNum.value----------", calNum.value);
|
|
|
|
searchValue.value = configStore.getSearchValue
|
|
|
|
searchValue.value = configStore.getSearchValue
|
|
|
|
console.log(configStore.getSearchValue, 'getSearchValue')
|
|
|
|
console.log(configStore.getSearchValue, 'getSearchValue')
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
const listData = ref<any[]>([])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
watch(
|
|
|
|
watch(
|
|
|
|
() => searchValue.value,
|
|
|
|
() => searchValue.value,
|
|
|
|
async (newVal, oldVal) => {
|
|
|
|
async (newVal, oldVal) => {
|
|
|
@ -181,7 +183,7 @@ watch(
|
|
|
|
const more = await featchList()
|
|
|
|
const more = await featchList()
|
|
|
|
listData.value = more
|
|
|
|
listData.value = more
|
|
|
|
isInitSeaerch.value = false
|
|
|
|
isInitSeaerch.value = false
|
|
|
|
// configStore.setSearchValue("")
|
|
|
|
// configStore.setSearchValue("");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
isInitSeaerch.value = true
|
|
|
|
isInitSeaerch.value = true
|
|
|
@ -293,8 +295,6 @@ const gridHeight = computed(() => {
|
|
|
|
return height
|
|
|
|
return height
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
const timer = ref()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async function oneCheck() {
|
|
|
|
async function oneCheck() {
|
|
|
|
const asideVal = cloneDeep(configStore.getAsideValue)
|
|
|
|
const asideVal = cloneDeep(configStore.getAsideValue)
|
|
|
|
asideVal.upUserName = searchValue.value
|
|
|
|
asideVal.upUserName = searchValue.value
|
|
|
@ -580,7 +580,10 @@ function refresh(val?: any) {
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function cancel(val) {
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 取消查重任务
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
function cancel() {
|
|
|
|
if (checkTaskStatus.value === 1) {
|
|
|
|
if (checkTaskStatus.value === 1) {
|
|
|
|
removeCheckDuplicate(checkDuplicateNo.value).then((res) => {
|
|
|
|
removeCheckDuplicate(checkDuplicateNo.value).then((res) => {
|
|
|
|
if (res.code === 'OK') {
|
|
|
|
if (res.code === 'OK') {
|
|
|
@ -618,11 +621,6 @@ const dropdownOptions = ref([
|
|
|
|
},
|
|
|
|
},
|
|
|
|
])
|
|
|
|
])
|
|
|
|
|
|
|
|
|
|
|
|
function loadImgOver(item) {
|
|
|
|
|
|
|
|
console.log('loadImgOver', item)
|
|
|
|
|
|
|
|
setTimeout(() => (item.loadOver = true), 2000)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
defineExpose({
|
|
|
|
defineExpose({
|
|
|
|
showLoginSuccessModal,
|
|
|
|
showLoginSuccessModal,
|
|
|
|
})
|
|
|
|
})
|
|
|
@ -672,7 +670,7 @@ defineExpose({
|
|
|
|
<div class="dropdown">
|
|
|
|
<div class="dropdown">
|
|
|
|
<!-- <span>{{ viewLabel || '请选择' }}</span> -->
|
|
|
|
<!-- <span>{{ viewLabel || '请选择' }}</span> -->
|
|
|
|
<span>视图</span>
|
|
|
|
<span>视图</span>
|
|
|
|
<SvgIcon class="gap" name="arrow-botton" size="14" />
|
|
|
|
<SvgIcon class="gap" name="arrow-botton" size="16" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</n-popselect>
|
|
|
|
</n-popselect>
|
|
|
|
<div
|
|
|
|
<div
|
|
|
@ -680,19 +678,20 @@ defineExpose({
|
|
|
|
@click="sortHandler('fromuptime')"
|
|
|
|
@click="sortHandler('fromuptime')"
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<span>时间排序</span>
|
|
|
|
<span>时间排序</span>
|
|
|
|
<SvgIcon style="margin-left: 8px" name="sort" size="12" />
|
|
|
|
<SvgIcon style="margin-left: 8px" name="sort" size="16" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div
|
|
|
|
<div
|
|
|
|
style="margin-left: 15px; cursor: pointer; color: #323233"
|
|
|
|
style="margin-left: 15px; cursor: pointer; color: #323233"
|
|
|
|
@click="sortHandler('pictureResult')"
|
|
|
|
@click="sortHandler('pictureResult')"
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<span>相似度排序</span>
|
|
|
|
<span>相似度排序</span>
|
|
|
|
<SvgIcon style="margin-left: 8px" name="sort" size="12" />
|
|
|
|
<SvgIcon style="margin-left: 8px" name="sort" size="16" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<span style="font-size: 16px; color: #333">共
|
|
|
|
<span style="font-size: 16px; color: #333">共
|
|
|
|
<span style="color: #507afd; font-weight: 500">{{ totalCount }}</span> 项</span>
|
|
|
|
<span style="color: #507afd; font-weight: 500">{{ totalCount }}</span> 项</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<n-spin :show="loading">
|
|
|
|
<n-spin :show="loading">
|
|
|
|
<div ref="el" class="scroll" :style="listStyle">
|
|
|
|
<div ref="el" class="scroll" :style="listStyle">
|
|
|
|
<!-- <n-scrollbar :on-scroll="scrollHandler"> -->
|
|
|
|
<!-- <n-scrollbar :on-scroll="scrollHandler"> -->
|
|
|
@ -708,10 +707,16 @@ defineExpose({
|
|
|
|
class="wrapper-content-item-img" :class="{ 'wrapper-content-item-img-fit': viewMode !== 'masonry' }"
|
|
|
|
class="wrapper-content-item-img" :class="{ 'wrapper-content-item-img-fit': viewMode !== 'masonry' }"
|
|
|
|
:src="item.imgUrl"
|
|
|
|
:src="item.imgUrl"
|
|
|
|
> -->
|
|
|
|
> -->
|
|
|
|
|
|
|
|
|
|
|
|
<n-image
|
|
|
|
<n-image
|
|
|
|
ref="imageRef"
|
|
|
|
ref="imageRef"
|
|
|
|
class="img"
|
|
|
|
class="img"
|
|
|
|
:img-props="{ onClick: hideDownload }"
|
|
|
|
:img-props="{
|
|
|
|
|
|
|
|
onClick: ($event) => {
|
|
|
|
|
|
|
|
hideDownload($event);
|
|
|
|
|
|
|
|
showClose = true;
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}"
|
|
|
|
:class="{
|
|
|
|
:class="{
|
|
|
|
'img-fit': viewMode === 'horizontalVersion',
|
|
|
|
'img-fit': viewMode === 'horizontalVersion',
|
|
|
|
'img-full': viewMode === '3:4' || viewMode === 'verticalVersion',
|
|
|
|
'img-full': viewMode === '3:4' || viewMode === 'verticalVersion',
|
|
|
@ -765,7 +770,9 @@ defineExpose({
|
|
|
|
<template #trigger>
|
|
|
|
<template #trigger>
|
|
|
|
<span>{{ item.imgName }}</span>
|
|
|
|
<span>{{ item.imgName }}</span>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
{{ item.imgName }}
|
|
|
|
<span
|
|
|
|
|
|
|
|
style="font-size: 12px; margin-top: 4px; margin-bottom: 16px"
|
|
|
|
|
|
|
|
>{{ item.imgName }}</span>
|
|
|
|
</n-tooltip>
|
|
|
|
</n-tooltip>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div
|
|
|
|
<div
|
|
|
@ -812,6 +819,9 @@ defineExpose({
|
|
|
|
<LoginSuccessModal ref="LoginSuccessModalRef" />
|
|
|
|
<LoginSuccessModal ref="LoginSuccessModalRef" />
|
|
|
|
<FinishPackageModal :id="packageIdRef" ref="finishPackageModal" />
|
|
|
|
<FinishPackageModal :id="packageIdRef" ref="finishPackageModal" />
|
|
|
|
<CheckingTaskModal ref="checkingTaskModalRef" @refresh="refresh" @cancel="cancel" />
|
|
|
|
<CheckingTaskModal ref="checkingTaskModalRef" @refresh="refresh" @cancel="cancel" />
|
|
|
|
|
|
|
|
<!-- <div class="close_box" v-show="showClose" @click="showClose = false">
|
|
|
|
|
|
|
|
<SvgIcon size="24" name="close-none-border" />
|
|
|
|
|
|
|
|
</div> -->
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
@ -934,6 +944,7 @@ defineExpose({
|
|
|
|
overflow: hidden;
|
|
|
|
overflow: hidden;
|
|
|
|
position: relative;
|
|
|
|
position: relative;
|
|
|
|
transition: 0.5s;
|
|
|
|
transition: 0.5s;
|
|
|
|
|
|
|
|
margin: 0 6px 10px 6px;
|
|
|
|
|
|
|
|
|
|
|
|
.tag-status {
|
|
|
|
.tag-status {
|
|
|
|
width: 46px;
|
|
|
|
width: 46px;
|
|
|
@ -968,7 +979,9 @@ defineExpose({
|
|
|
|
border-radius: 7px;
|
|
|
|
border-radius: 7px;
|
|
|
|
|
|
|
|
|
|
|
|
.img-name {
|
|
|
|
.img-name {
|
|
|
|
width: 70%;
|
|
|
|
// width: 70%;
|
|
|
|
|
|
|
|
width: 15px;
|
|
|
|
|
|
|
|
height: 15px;
|
|
|
|
color: #fff;
|
|
|
|
color: #fff;
|
|
|
|
/* 设置文本溢出时的样式为省略号 */
|
|
|
|
/* 设置文本溢出时的样式为省略号 */
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
text-overflow: ellipsis;
|
|
|
@ -1082,4 +1095,10 @@ defineExpose({
|
|
|
|
text-align: center;
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.close_box {
|
|
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
|
|
right: 10%;
|
|
|
|
|
|
|
|
top: 20%;
|
|
|
|
|
|
|
|
z-index: 10000000000000000000;
|
|
|
|
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
</style>
|
|
|
|