feat: 解决冲突

pull/218/head
刘释隆 2 years ago
parent e0a4bc292a
commit b43e9beb2e

@ -1,48 +1,48 @@
<script lang="ts" setup>
import { defineEmits, reactive, ref } from "vue";
import { QuillEditor } from "@vueup/vue-quill";
import "@vueup/vue-quill/dist/vue-quill.snow.css";
import { debounce } from "lodash-es";
import { queryNote, saveNote } from "@/api/home/main";
import { defineEmits, reactive, ref } from 'vue'
import { QuillEditor } from '@vueup/vue-quill'
import '@vueup/vue-quill/dist/vue-quill.snow.css'
import { debounce } from 'lodash-es'
import { queryNote, saveNote } from '@/api/home/main'
const emit = defineEmits(["close"]);
const emit = defineEmits(['close'])
const quillEditor = ref();
const quillEditor = ref()
const cardStyle = {
"width": "500px",
"--n-padding-bottom": "17px",
"--n-padding-left": "24px",
};
'width': '500px',
'--n-padding-bottom': '17px',
'--n-padding-left': '24px',
}
const note = ref("<p>sss</p>");
const note = ref('<p>sss</p>')
const options = reactive({
modules: {
toolbar: [
["bold", "italic", "underline", "strike"], // toggled buttons
[{ align: "" }, { align: "center" }, { align: "right" }, { align: "justify" }],
['bold', 'italic', 'underline', 'strike'], // toggled buttons
[{ align: '' }, { align: 'center' }, { align: 'right' }, { align: 'justify' }],
],
},
theme: "snow",
placeholder: "",
});
theme: 'snow',
placeholder: '',
})
function initHandler() {
queryNote()
.then((res) => {
if (res.data)
note.value = res.data.notecontent;
note.value = res.data.notecontent
console.log("note:", note.value);
console.log('note:', note.value)
})
.catch(e => console.log(e));
.catch(e => console.log(e))
}
const saveHandler = debounce(() => {
const content = quillEditor.value.getHTML();
saveNote(content);
}, 800);
const content = quillEditor.value.getHTML()
saveNote(content)
}, 800)
</script>
<template>

@ -1,99 +1,99 @@
<script setup lang="ts">
import { nextTick, onMounted, onUnmounted, reactive, ref, toRefs } from "vue";
import { debounce } from "lodash-es";
import { useRoute, useRouter } from "vue-router";
import { deleteSearch, getSearchList, historySearch } from "@/api/search/search";
import { storage } from "@/utils/Storage";
import { nextTick, onMounted, onUnmounted, reactive, ref, toRefs } from 'vue'
import { debounce } from 'lodash-es'
import { useRoute, useRouter } from 'vue-router'
import { deleteSearch, getSearchList, historySearch } from '@/api/search/search'
import { storage } from '@/utils/Storage'
const emit = defineEmits(["close"]);
const emit = defineEmits(['close'])
const value = ref("");
const showList = ref(false);
const historyList: any = ref([]);
const handlerShowList = () => (showList.value = true);
const router = useRouter();
const route = useRoute();
const value = ref('')
const showList = ref(false)
const historyList: any = ref([])
const handlerShowList = () => (showList.value = true)
const router = useRouter()
const route = useRoute()
const state = reactive({
resultList: [],
}) as any;
}) as any
const { resultList } = toRefs(state);
const { resultList } = toRefs(state)
const inputHandler = debounce((keyword) => {
if (keyword)
handlerSearch(keyword);
}, 500);
handlerSearch(keyword)
}, 500)
//
async function handlerSearch(value) {
const res = await getSearchList({
search: value,
});
if (res.code === "OK") {
})
if (res.code === 'OK') {
state.resultList = [
{
title: "图检审批",
path: "worksheet",
title: '图检审批',
path: 'worksheet',
data: res.data.ai,
},
{
title: "任务审批管理",
path: "task",
title: '任务审批管理',
path: 'task',
data: res.data.preliminary,
},
{
title: "任务终审管理",
path: "final",
title: '任务终审管理',
path: 'final',
data: res.data.final,
},
];
]
}
}
function handlerHistory(name) {
value.value = name;
handlerSearch(name);
value.value = name
handlerSearch(name)
}
//
async function deleteHistory() {
const res = await deleteSearch({});
if (res.code === "OK")
historyList.value = [];
const res = await deleteSearch({})
if (res.code === 'OK')
historyList.value = []
}
//
async function getHistory() {
const res = await historySearch({});
if (res.code === "OK")
historyList.value = res.data;
const res = await historySearch({})
if (res.code === 'OK')
historyList.value = res.data
}
getHistory();
getHistory()
function goPath(item, id) {
const desiredObject = item.data.find((item) => {
return item.id === id;
});
storage.set("isSearch", true);
router.push({ name: item.path, query: { id, searchContent: desiredObject.name } });
emit("close");
return item.id === id
})
storage.set('isSearch', true)
router.push({ name: item.path, query: { id, searchContent: desiredObject.name } })
emit('close')
}
function highlightText(text, query) {
if (!query)
return text;
const regex = new RegExp(query, "gi");
return text
const regex = new RegExp(query, 'gi')
const highlightedText = text.replace(regex, (match) => {
return `<span style="color:#507AFD" class="highlight">${match}</span>`;
});
return `<span style="color:#507AFD" class="highlight">${match}</span>`
})
return highlightedText;
return highlightedText
}
onMounted(() => {
setTimeout(() => (value.value = ""));
handlerShowList();
handlerSearch("");
});
setTimeout(() => (value.value = ''))
handlerShowList()
handlerSearch('')
})
</script>
<template>

@ -199,7 +199,7 @@ function editSelection(id = '') {
}
function deleteSelection(id = '') {
if (selectionIds.value.length === 0) {
if (id) {
deleteCondition({ ids: id }).then(() => {
query(pagination.page, pagination.pageSize)
})

@ -1,14 +1,14 @@
<script lang="ts" setup>
import { useInfiniteScroll } from "@vueuse/core";
import { debounce } from "lodash-es";
import { onMounted, reactive, ref, watch } from "vue";
import type { FilterSearchParam } from "/#/api";
import type { Filter, FilterEntity } from "/#/home";
import { VueDraggable } from "vue-draggable-plus";
import { asideMap } from "@/config/aside";
import { favorite, getConditionList, sort, unfavorite } from "@/api/home/filter";
import { useInfiniteScroll } from '@vueuse/core'
import { debounce } from 'lodash-es'
import { onMounted, reactive, ref, watch } from 'vue'
import type { FilterSearchParam } from '/#/api'
import type { Filter, FilterEntity } from '/#/home'
import { VueDraggable } from 'vue-draggable-plus'
import { asideMap } from '@/config/aside'
import { favorite, getConditionList, sort, unfavorite } from '@/api/home/filter'
defineOptions({ name: "AdvanceFilter" });
defineOptions({ name: 'AdvanceFilter' })
const props = defineProps({
type: {
@ -16,42 +16,42 @@ const props = defineProps({
default: 0,
required: true,
},
});
})
const emit = defineEmits<{
(e: "show-filter"): void
(e: "show-custom"): void
(e: "update:search"): void
(e: "select", id: string)
}>();
(e: 'show-filter'): void
(e: 'show-custom'): void
(e: 'update:search'): void
(e: 'select', id: string)
}>()
const ruleForm = reactive({
keyword: "",
});
const ruleformRef = ref();
const data = ref<FilterEntity[]>([]);
const unData = ref<FilterEntity[]>([]);
const loading = ref(false);
const canloadMore = true;
const el = ref<HTMLDivElement | null>(null);
const popover = ref<ComponentRef | null>(null);
keyword: '',
})
const ruleformRef = ref()
const data = ref<FilterEntity[]>([])
const unData = ref<FilterEntity[]>([])
const loading = ref(false)
const canloadMore = true
const el = ref<HTMLDivElement | null>(null)
const popover = ref<ComponentRef | null>(null)
const pagination = reactive({
pageNo: 1,
pageSize: 300,
});
const keyword = ref("");
const currentlySelectedAdvanced = ref("高级筛选");
})
const keyword = ref('')
const currentlySelectedAdvanced = ref('高级筛选')
onMounted(() => {
// data.value = generateDefaultConfig()
});
})
//
function generateDefaultConfig(): FilterEntity[] {
return Object.keys(asideMap).reduce((acc, key) => {
const { label, defaultValue, isDefaultFilter } = asideMap[key];
const { label, defaultValue, isDefaultFilter } = asideMap[key]
if (isDefaultFilter === true) {
const config = {
id: "",
id: '',
name: label,
favorite: false,
isDefaultFilter,
@ -61,73 +61,73 @@ function generateDefaultConfig(): FilterEntity[] {
value: defaultValue,
},
],
};
return [...acc, config];
}
return [...acc, config]
}
else {
return acc;
return acc
}
}, []);
}, [])
}
useInfiniteScroll(
el as any,
() => {
loadMore();
loadMore()
},
{ distance: 10, interval: 300, canLoadMore: () => false },
);
)
async function showClick() {
getSearchedList("");
getSearchedList('')
}
async function loadMore() {
if (loading.value || el.value == null)
return;
return
const more = await featchList();
const more = await featchList()
if (more.length === 0)
return;
return
data.value.push(...more);
data.value.push(...more)
}
async function featchList() {
loading.value = true;
loading.value = true
try {
const searchParam: FilterSearchParam = {
search_searchname: { value: ruleForm.keyword, op: "like", type: "string" },
};
const result = await getConditionList(pagination, searchParam, props.type);
const { data } = result;
search_searchname: { value: ruleForm.keyword, op: 'like', type: 'string' },
}
const result = await getConditionList(pagination, searchParam, props.type)
const { data } = result
// pagination.pageNo += 1
// canloadMore = pageCount >= pagination.pageNo
const entityList = generateFilterEntityList(data);
return entityList;
const entityList = generateFilterEntityList(data)
return entityList
}
catch (error) {
return [];
return []
}
finally {
loading.value = false;
loading.value = false
}
}
//
function generateFilterEntityList(data) {
const filterEntityList = data.map((item) => {
const { searchname, iztop, ocrUsersearchchildList, id, reorder } = item;
const { searchname, iztop, ocrUsersearchchildList, id, reorder } = item
const list = ocrUsersearchchildList.map((item) => {
const { searchfield, searchvalue } = item;
const { searchfield, searchvalue } = item
return {
key: searchfield,
value: searchvalue,
};
});
}
})
const reg = new RegExp(ruleForm.keyword, "gi");
const hilightText = searchname.replace(reg, `<span>${ruleForm.keyword}</span>`);
const reg = new RegExp(ruleForm.keyword, 'gi')
const hilightText = searchname.replace(reg, `<span>${ruleForm.keyword}</span>`)
return {
id,
@ -137,128 +137,128 @@ function generateFilterEntityList(data) {
filterList: list,
reorder,
searchname,
};
});
}
})
return filterEntityList;
return filterEntityList
}
function selectHandler(item: FilterEntity) {
(popover.value as any).setShow(false);
currentlySelectedAdvanced.value = item.searchname;
emit("select", item.id);
(popover.value as any).setShow(false)
currentlySelectedAdvanced.value = item.searchname
emit('select', item.id)
}
const inputHandler = debounce((word) => {
ruleForm.keyword = word;
ruleformRef.value.validate();
ruleForm.keyword = word
ruleformRef.value.validate()
if (word.length < 2 && word)
return;
return
getSearchedList(word);
}, 300);
getSearchedList(word)
}, 300)
function getSearchedList(word, isScroll = false) {
if (word)
pagination.pageSize = 300;
pagination.pageSize = 300
if (!word)
pagination.pageSize = 10;
pagination.pageSize = 10
if (isScroll)
pagination.pageSize = 300;
pagination.pageSize = 300
ruleForm.keyword = word;
ruleForm.keyword = word
featchList().then((list) => {
const dataArr: FilterEntity[] = [];
const unDataArr: FilterEntity[] = [];
const dataArr: FilterEntity[] = []
const unDataArr: FilterEntity[] = []
list.forEach((item) => {
if (item.favorite && !item.isDefaultFilter)
dataArr.push(item);
dataArr.push(item)
if (!item.favorite && !item.isDefaultFilter)
unDataArr.push(item);
});
unDataArr.push(item)
})
data.value = dataArr.sort(
(a, b) => Number(new Date(a.createtime)) - Number(new Date(b.createtime)),
);
)
unData.value = unDataArr.sort(
(a, b) => Number((a as any).reorder) - Number((b as any).reorder),
);
});
)
})
}
function favoriteHandler(event: MouseEvent, item: any) {
event.stopImmediatePropagation();
event.stopPropagation();
event.stopImmediatePropagation()
event.stopPropagation()
const { isDefaultFilter, id } = item;
const { isDefaultFilter, id } = item
if (!isDefaultFilter) {
item.favorite = true;
favorite(id);
item.favorite = true
favorite(id)
data.value.forEach((v, index) => {
if (v.id == id)
sort(v.id, 0);
else sort(v.id, index + 1);
});
sort(v.id, 0)
else sort(v.id, index + 1)
})
inputHandler(ruleForm.keyword);
inputHandler(ruleForm.keyword)
}
}
const rules = {
keyword: [
{
trigger: ["blur", "input", "change"],
level: "error",
trigger: ['blur', 'input', 'change'],
level: 'error',
validator(_rule, value) {
if (value.length >= 2)
return true;
else return new Error("搜索关键字最少为两个");
return true
else return new Error('搜索关键字最少为两个')
},
},
],
};
}
function unFavoriteHandler(event: MouseEvent, item) {
event.stopImmediatePropagation();
event.stopPropagation();
event.stopImmediatePropagation()
event.stopPropagation()
const { isDefaultFilter, id } = item;
const { isDefaultFilter, id } = item
if (!isDefaultFilter) {
item.favorite = false;
unfavorite(id);
inputHandler(ruleForm.keyword);
item.favorite = false
unfavorite(id)
inputHandler(ruleForm.keyword)
}
}
function handleScroll(event) {
let timer;
let timer
if (timer) {
clearTimeout(timer);
clearTimeout(timer)
}
else {
timer = setTimeout(() => {
getSearchedList("", true);
}, 2000);
getSearchedList('', true)
}, 2000)
}
}
function moveEnd() {
unData.value.forEach((v, index) => {
sort(v.id, index);
});
sort(v.id, index)
})
}
function setCurrentlySelectedAdvanced(value: string) {
currentlySelectedAdvanced.value = value;
currentlySelectedAdvanced.value = value
}
defineExpose({
setCurrentlySelectedAdvanced,
});
})
</script>
<template>

@ -40,8 +40,8 @@ const $message = window.$message
const show = ref(false)
const cardStyle = {
"width": '808px',
"height": '840px',
'width': '808px',
'height': '840px',
'--n-padding-bottom': '10px',
'--n-padding-left': '10px',
}
@ -202,11 +202,10 @@ function handleCheck(rowKeys: DataTableRowKey[]) {
}
function select(key: number, id: string) {
switch (key) {
case 1:
if (key == 1) {
editSelection(id)
break
case 2:
}
else {
const modalInst = modal.create({
title: '确认提示',
content: '确认删除该条过滤条件吗?',
@ -216,10 +215,24 @@ function select(key: number, id: string) {
onPositiveClick: () => deleteSelection(id),
onNegativeClick: () => modalInst.destroy(),
})
break
default:
break
}
// switch (key) {
// case 1:
// break;
// case 2:
// const modalInst = modal.create({
// title: "",
// content: "?",
// positiveText: "",
// negativeText: "",
// preset: "dialog",
// onPositiveClick: () => deleteSelection(id),
// onNegativeClick: () => modalInst.destroy(),
// });
// break;
// default:
// break;
// }
}
function editSelection(id) {
@ -238,7 +251,7 @@ function editSelection(id) {
}
function deleteSelection(id = '') {
if (selectionIds.value.length === 0) {
if (id) {
deleteCondition({ ids: id }).then(() => {
query(pagination.page, pagination.pageSize)
})

@ -1,14 +1,15 @@
<script lang="ts" setup>
import { EllipsisHorizontal, EyeOutline as EyeOutlineIcon } from "@vicons/ionicons5";
import { Download as DownloadIcon, Upload as UploadIcon } from "@vicons/tabler";
import { Icon } from "@vicons/utils";
import { useInfiniteScroll } from "@vueuse/core";
import dayjs from "dayjs";
import imagesloaded from "imagesloaded";
import { cloneDeep, debounce } from "lodash-es";
import Masonry from "masonry-layout";
import { NIcon, useMessage } from "naive-ui";
import type { Component } from "vue";
/** eslint-disable */
import { EllipsisHorizontal, EyeOutline as EyeOutlineIcon } from '@vicons/ionicons5'
import { Download as DownloadIcon, Upload as UploadIcon } from '@vicons/tabler'
import { Icon } from '@vicons/utils'
import { useInfiniteScroll } from '@vueuse/core'
import dayjs from 'dayjs'
import imagesloaded from 'imagesloaded'
import { cloneDeep, debounce } from 'lodash-es'
import Masonry from 'masonry-layout'
import { NIcon, useMessage } from 'naive-ui'
import type { Component } from 'vue'
import {
computed,
h,
@ -20,25 +21,25 @@ import {
ref,
unref,
watch,
} from "vue";
import axios from "axios";
import CheckingTaskModal from "./modal/CheckingTaskModal.vue";
import FinishPackageModal from "./modal/FinishPackageModal.vue";
import GeneratePackageModal from "./modal/GeneratePackageModal.vue";
import LoginSuccessModal from "./modal/LoginSuccessModal.vue";
import PackageSettingsModal from "./modal/PackageSettingsModal.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 emitter from "@/utils/mitt";
import { hideDownload } from "@/utils/image";
import { getViewportOffset } from "@/utils/domUtils";
import { useConfig } from "@/store/modules/asideConfig";
import { useWindowSizeFn } from "@/hooks/event/useWindowSizeFn";
import { timeOptions, viewOptions } from "@/config/home";
import avatar from "@/assets/images/avatar.jpg";
} from 'vue'
import axios from 'axios'
import CheckingTaskModal from './modal/CheckingTaskModal.vue'
import FinishPackageModal from './modal/FinishPackageModal.vue'
import GeneratePackageModal from './modal/GeneratePackageModal.vue'
import LoginSuccessModal from './modal/LoginSuccessModal.vue'
import PackageSettingsModal from './modal/PackageSettingsModal.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 emitter from '@/utils/mitt'
import { hideDownload } from '@/utils/image'
import { getViewportOffset } from '@/utils/domUtils'
import { useConfig } from '@/store/modules/asideConfig'
import { useWindowSizeFn } from '@/hooks/event/useWindowSizeFn'
import { timeOptions, viewOptions } from '@/config/home'
import avatar from '@/assets/images/avatar.jpg'
import {
createPackage,
getCheckDuplicateStatus,
@ -47,178 +48,178 @@ import {
oneClickCheckTaskPackage,
queryPageListByCheckNo,
removeCheckDuplicate,
} from "@/api/home/main";
const listData = ref<any[]>([]);
const timer = ref();
const showClose = ref(false);
const deviceHeight = ref(600);
let _masonry: null | Masonry = null;
let _imagesload: any;
const masonryRef = ref<ComponentRef>(null);
const el = ref<HTMLDivElement | null>(null);
const viewMode = ref("masonry");
} from '@/api/home/main'
const listData = ref<any[]>([])
const timer = ref()
const showClose = ref(false)
const deviceHeight = ref(600)
let _masonry: null | Masonry = null
let _imagesload: any
const masonryRef = ref<ComponentRef>(null)
const el = ref<HTMLDivElement | null>(null)
const viewMode = ref('masonry')
const pagination = reactive({
pageNo: 0,
pageSize: 30,
});
const configStore = useConfig();
const packageModalRef = ref(null);
const generateModalRef = ref(null);
const queryRepeatedTasksModalRef = ref(null);
const LoginSuccessModalRef = ref(null);
const checkingTaskModalRef = ref(null);
const finishPackageModal = ref(null);
const loading = ref(false);
const message = useMessage();
const totalCount = ref(0);
})
const configStore = useConfig()
const packageModalRef = ref(null)
const generateModalRef = ref(null)
const queryRepeatedTasksModalRef = ref(null)
const LoginSuccessModalRef = ref(null)
const checkingTaskModalRef = ref(null)
const finishPackageModal = ref(null)
const loading = ref(false)
const message = useMessage()
const totalCount = ref(0)
const sortBy: PictureSortParam = {
orderbyname: "desc",
orderbyvalue: "pictureResult",
};
const imageRef = ref<ComponentElRef | null>();
const checkDuplicateNo = ref("");
const checkTaskStatus = ref(null); // 1. 2. 3.
const isRefresh = ref(true); //
orderbyname: 'desc',
orderbyvalue: 'pictureResult',
}
const imageRef = ref<ComponentElRef | null>()
const checkDuplicateNo = ref('')
const checkTaskStatus = ref(null) // 1. 2. 3.
const isRefresh = ref(true) //
let canloadMore = true;
let filterId = null;
let canloadMore = true
let filterId = null
async function computeListHeight() {
const headEl = document.querySelector(".wrapper-content")!;
const { bottomIncludeBody } = getViewportOffset(headEl);
const height = bottomIncludeBody;
deviceHeight.value = height - 40 - 16 - 24;
const headEl = document.querySelector('.wrapper-content')!
const { bottomIncludeBody } = getViewportOffset(headEl)
const height = bottomIncludeBody
deviceHeight.value = height - 40 - 16 - 24
}
useWindowSizeFn(computeListHeight);
useWindowSizeFn(computeListHeight)
const listStyle = computed(() => {
return {
height: `${deviceHeight.value}px`,
};
});
}
})
const layout = debounce(() => {
if (masonryRef.value == null || el.value == null)
return;
return
if (_masonry !== null)
(_masonry as any).addItems();
(_masonry as any).addItems()
_masonry = new Masonry(masonryRef.value as any, {
itemSelector: ".grid-item",
itemSelector: '.grid-item',
gutter: 17,
columnWidth: 182,
percentPosition: true,
stagger: 10,
});
})
_imagesload = imagesloaded(".grid-item");
_imagesload = imagesloaded('.grid-item')
_imagesload.on("done", (instance) => {
(_masonry as any).layout();
_imagesload.on('done', (instance) => {
(_masonry as any).layout()
if (!el.value)
return;
loading.value = false;
});
return
loading.value = false
})
_imagesload.on("fail", (instance) => {
message.error("图片错误");
loading.value = false;
});
}, 300);
_imagesload.on('fail', (instance) => {
message.error('图片错误')
loading.value = false
})
}, 300)
useInfiniteScroll(
el as any,
() => {
loadMore();
loadMore()
},
{ distance: 10, canLoadMore: () => canloadMore },
);
)
onUpdated(() => {
layout();
});
layout()
})
const timeRange = ref("");
const timeRange = ref('')
const timeLabel = computed(() => {
const item = timeOptions.find((option) => {
return option.value === timeRange.value;
});
return option.value === timeRange.value
})
return item?.label;
});
return item?.label
})
const viewLabel = computed(() => {
const item = viewOptions.find((option) => {
return option.value === viewMode.value;
});
return option.value === viewMode.value
})
return item?.label;
});
return item?.label
})
const isAllowDownload = ref(true);
const calNum = ref(0);
const searchValue = ref("");
const isInitSeaerch = ref(false); //
const isAllowDownload = ref(true)
const calNum = ref(0)
const searchValue = ref('')
const isInitSeaerch = ref(false) //
configStore.$subscribe(() => {
console.log("subscribe", "configStore");
isAllowDownload.value = configStore.isAllowDownload;
calNum.value = configStore.getTimeNum;
console.log('subscribe', 'configStore')
isAllowDownload.value = configStore.isAllowDownload
calNum.value = configStore.getTimeNum
// console.log("calNum.value----------", calNum.value);
searchValue.value = configStore.getSearchValue;
console.log(configStore.getSearchValue, "getSearchValue");
});
searchValue.value = configStore.getSearchValue
console.log(configStore.getSearchValue, 'getSearchValue')
})
watch(
() => searchValue.value,
async (newVal, oldVal) => {
if (newVal) {
isInitSeaerch.value = true;
pagination.pageNo = 0;
const more = await featchList();
listData.value = more;
isInitSeaerch.value = false;
isInitSeaerch.value = true
pagination.pageNo = 0
const more = await featchList()
listData.value = more
isInitSeaerch.value = false
// configStore.setSearchValue("");
}
else {
isInitSeaerch.value = true;
pagination.pageNo = 0;
const more = await featchList();
listData.value = more;
isInitSeaerch.value = false;
isInitSeaerch.value = true
pagination.pageNo = 0
const more = await featchList()
listData.value = more
isInitSeaerch.value = false
}
},
);
)
async function featchList(userSearchId?: string) {
loading.value = true;
loading.value = true
try {
const contentParams = {
search_month: timeRange.value,
search_history: 0,
userSearchId,
};
}
pagination.pageNo += 1;
const searchValue = configStore.getSearchValue; // rao
const asideParams = unref(configStore.getAsideValue);
const params = filterId ? { userSearchId: filterId } : cloneDeep(asideParams);
pagination.pageNo += 1
const searchValue = configStore.getSearchValue // rao
const asideParams = unref(configStore.getAsideValue)
const params = filterId ? { userSearchId: filterId } : cloneDeep(asideParams)
let result = {
pageCount: 0,
data: [],
total: 0,
};
const sortObj: any = {}; // rao start
if (sortBy.orderbyvalue == "pictureResult")
sortObj.ordertype = sortBy.orderbyname;
else if (sortBy.orderbyvalue == "fromuptime")
sortObj.orderByTime = sortBy.orderbyname;
}
const sortObj: any = {} // rao start
if (sortBy.orderbyvalue == 'pictureResult')
sortObj.ordertype = sortBy.orderbyname
else if (sortBy.orderbyvalue == 'fromuptime')
sortObj.orderByTime = sortBy.orderbyname
if (params.izsimilarity && typeof params.izsimilarity != "string")
params.izsimilarity = params.izsimilarity.join("-");
if (params.izsimilarity && typeof params.izsimilarity != 'string')
params.izsimilarity = params.izsimilarity.join('-')
// rao end
@ -230,7 +231,7 @@ async function featchList(userSearchId?: string) {
...sortObj,
checkDuplicateNo: checkDuplicateNo.value,
upUserName: searchValue,
});
})
}
else {
result = await getPictureList({
@ -239,11 +240,11 @@ async function featchList(userSearchId?: string) {
...params,
...sortObj,
upUserName: searchValue,
});
})
}
const { data, pageCount, total } = result;
totalCount.value = total;
canloadMore = pageCount >= pagination.pageNo && pageCount > 0;
const { data, pageCount, total } = result
totalCount.value = total
canloadMore = pageCount >= pagination.pageNo && pageCount > 0
const list = data.map((item) => {
return {
@ -255,172 +256,168 @@ async function featchList(userSearchId?: string) {
similar: item.similarityscore || -1,
imgName: item.imgname,
loadOver: false,
};
});
}
})
return list;
return list
}
catch (error) {
canloadMore = false;
return [];
canloadMore = false
return []
}
}
async function loadMore() {
if (loading.value || el.value == null)
return;
return
const more = await featchList();
const more = await featchList()
// if(isInitSeaerch.value) {
// listData.value = [];
// isInitSeaerch.value = false;
// }
listData.value.push(...more);
listData.value.push(...more)
}
const gridHeight = computed(() => {
let height = "";
if (viewMode.value === "masonry")
height = "";
else if (viewMode.value === "horizontalVersion")
height = "145px";
else if (viewMode.value === "verticalVersion")
height = "300px";
else if (viewMode.value === "3:4")
height = "240px";
return height;
});
let height = ''
if (viewMode.value === 'masonry')
height = ''
else if (viewMode.value === 'horizontalVersion')
height = '145px'
else if (viewMode.value === 'verticalVersion')
height = '300px'
else if (viewMode.value === '3:4')
height = '240px'
return height
})
async function oneCheck() {
const asideVal = cloneDeep(configStore.getAsideValue);
asideVal.upUserName = searchValue.value;
console.log("searchValue", asideVal, searchValue.value);
const asideVal = cloneDeep(configStore.getAsideValue)
asideVal.upUserName = searchValue.value
console.log('searchValue', asideVal, searchValue.value)
if (asideVal.izyear && asideVal.izyear.length == 2) {
asideVal.izyear
= `${dayjs(asideVal.izyear[0]).format("YYYY/MM/DD")
}-${
dayjs(asideVal.izyear[1]).format("YYYY/MM/DD")}`;
asideVal.izyear = `${dayjs(asideVal.izyear[0]).format('YYYY/MM/DD')}-${dayjs(
asideVal.izyear[1],
).format('YYYY/MM/DD')}`
}
if (asideVal.izsimilarity && typeof asideVal.izsimilarity != "string")
asideVal.izsimilarity = asideVal.izsimilarity.join("-");
if (asideVal.izsimilarity && typeof asideVal.izsimilarity != 'string')
asideVal.izsimilarity = asideVal.izsimilarity.join('-')
const tasksLoadingModal = queryRepeatedTasksModalRef.value as any;
const tasksLoadingModal = queryRepeatedTasksModalRef.value as any
console.log("calNum.value111111111111111", calNum.value, checkTaskStatus.value);
console.log('calNum.value111111111111111', calNum.value, checkTaskStatus.value)
if (calNum.value == 0 && isRefresh.value) {
if (timer.value)
clearInterval(timer.value);
clearInterval(timer.value)
timer.value = setInterval(() => {
console.log("calNum.value2222222222222", calNum.value, checkTaskStatus.value);
console.log('calNum.value2222222222222', calNum.value, checkTaskStatus.value)
if (checkDuplicateNo.value) {
getCheckDuplicateStatus(checkDuplicateNo.value).then((res) => {
if (res.code === "OK") {
checkTaskStatus.value = res.data.status;
if (res.code === 'OK') {
checkTaskStatus.value = res.data.status
if (calNum.value < 90)
calNum.value = calNum.value + 10;
calNum.value = calNum.value + 10
configStore.setTimeNum(calNum.value);
configStore.setTimeNum(calNum.value)
if (checkTaskStatus.value === 2 || checkTaskStatus.value === 3) {
if (checkTaskStatus.value === 2)
message.success("任务执行完毕,正在刷新数据...");
else
message.error("查询异常");
message.success('任务执行完毕,正在刷新数据...')
else message.error('查询异常')
tasksLoadingModal.closeOnlyModal();
configStore.setTimeNum(100);
tasksLoadingModal.closeOnlyModal()
configStore.setTimeNum(100)
if (timer.value)
clearInterval(timer.value);
clearInterval(timer.value)
setTimeout(() => {
configStore.setTimeNum(0);
}, 1000);
reset();
loadMore();
configStore.setTimeNum(0)
}, 1000)
reset()
loadMore()
}
}
else {
if (timer.value)
clearInterval(timer.value);
clearInterval(timer.value)
}
});
})
}
}, 1000);
}, 1000)
}
// ,,..
if (checkDuplicateNo.value && checkTaskStatus.value && checkTaskStatus.value === 1) {
// rao
tasksLoadingModal.showModal();
return;
tasksLoadingModal.showModal()
return
}
//
oneClickCheckTaskPackage(asideVal).then((res) => {
if (res.code === "OK") {
checkDuplicateNo.value = res.data.checkDuplicateNo;
checkTaskStatus.value = res.data.status;
tasksLoadingModal.showModal(); // rao
if (res.code === 'OK') {
checkDuplicateNo.value = res.data.checkDuplicateNo
checkTaskStatus.value = res.data.status
tasksLoadingModal.showModal() // rao
}
else {
message.error(res.message || "查重失败");
message.error(res.message || '查重失败')
}
});
})
}
/**
* 显示添加任务包
*/
async function showAddPackage() {
const modal = packageModalRef.value as any;
modal.showModal();
const modal = packageModalRef.value as any
modal.showModal()
}
// ,
async function tasksLoadingCloseCallback() {
const checkingTaskModal = checkingTaskModalRef.value as any;
checkingTaskModal.showModal();
const checkingTaskModal = checkingTaskModalRef.value as any
checkingTaskModal.showModal()
if (isRefresh.value)
refresh(true);
refresh(true)
}
async function showLoginSuccessModal() {
const modal = LoginSuccessModalRef.value as any;
modal.showModal();
const modal = LoginSuccessModalRef.value as any
modal.showModal()
}
// id
const packageIdRef = ref("");
const packageIdRef = ref('')
async function commitHandler(settingParam) {
const params = {
name: settingParam.packagename,
checkDuplicateNo: checkDuplicateNo.value,
};
const modal = generateModalRef.value as any;
const finishModal = finishPackageModal.value as any;
modal.showModal();
}
const modal = generateModalRef.value as any
const finishModal = finishPackageModal.value as any
modal.showModal()
createPackage(params).then((res) => {
if (res.code === "OK") {
message.success(res.message);
packageIdRef.value = res.data.id;
modal.closeModal();
finishModal.showModal();
if (res.code === 'OK') {
message.success(res.message)
packageIdRef.value = res.data.id
modal.closeModal()
finishModal.showModal()
//
checkDuplicateNo.value = "";
checkTaskStatus.value = null;
checkDuplicateNo.value = ''
checkTaskStatus.value = null
}
});
const asideVal = configStore.getAsideValue;
const finalParam = { ...asideVal };
finalParam.buessinessno = settingParam.packagename;
finalParam.search_history = settingParam.comparehistory ? 1 : 0;
})
const asideVal = configStore.getAsideValue
const finalParam = { ...asideVal }
finalParam.buessinessno = settingParam.packagename
finalParam.search_history = settingParam.comparehistory ? 1 : 0
}
onMounted(() => {
emitter.on("filter", refreshHandler);
emitter.on('filter', refreshHandler)
// emitter.on("filter", (searchId)=>{
// console.log("emitter on filter" + searchId)
// reset();
@ -428,119 +425,118 @@ onMounted(() => {
// });
//
getLastCheckNo().then((res) => {
if (res.code === "OK")
checkDuplicateNo.value = res.data;
});
if (res.code === 'OK')
checkDuplicateNo.value = res.data
})
nextTick(() => {
computeListHeight();
computeListHeight()
//
// showLoginSuccessModal()
});
});
})
})
onUnmounted(() => {
emitter.off("filter", refreshHandler);
});
emitter.off('filter', refreshHandler)
})
watch(timeRange, () => {
refreshHandler();
});
refreshHandler()
})
watch(
() => configStore.asideValue,
(newVal, oldVal) => {
refreshHandler();
refreshHandler()
},
{ deep: true },
);
)
function reset() {
pagination.pageNo = 0;
pagination.pageSize = 30;
listData.value.length = 0;
loading.value = false;
canloadMore = true;
filterId = null;
layout();
pagination.pageNo = 0
pagination.pageSize = 30
listData.value.length = 0
loading.value = false
canloadMore = true
filterId = null
layout()
}
async function refreshHandler(filtersearchId?: any) {
reset();
reset()
if (filtersearchId)
filterId = filtersearchId;
filterId = filtersearchId
nextTick(() => {
setTimeout(() => {
useInfiniteScroll(
el as any,
() => {
loadMore();
loadMore()
},
{ distance: 10, canLoadMore: () => canloadMore },
);
}, 300);
});
)
}, 300)
})
}
function getAvatar(url: string): string {
return url ? getImgUrl(url) : avatar;
return url ? getImgUrl(url) : avatar
}
function sortHandler(orderby: "pictureResult" | "fromuptime") {
sortBy.orderbyvalue = orderby;
sortBy.orderbyname = sortBy.orderbyname === "asc" ? "desc" : "asc";
function sortHandler(orderby: 'pictureResult' | 'fromuptime') {
sortBy.orderbyvalue = orderby
sortBy.orderbyname = sortBy.orderbyname === 'asc' ? 'desc' : 'asc'
refreshHandler();
refreshHandler()
}
async function downloadImage(item) {
if (!item.imgUrl) {
message.error("请输入有效的图片链接地址");
return;
message.error('请输入有效的图片链接地址')
return
}
try {
// 使 fetch GET
const response = await fetch(item.imgUrl, {
method: "GET",
mode: "cors", //
cache: "default",
});
method: 'GET',
mode: 'cors', //
cache: 'default',
})
//
if (!response.ok)
throw new Error(`HTTP error! Status: ${response.status}`);
throw new Error(`HTTP error! Status: ${response.status}`)
// Blob
const blob = await response.blob();
const blob = await response.blob()
// a
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.download = item.imgName; //
link.style.display = "none"; //
const link = document.createElement('a')
link.href = URL.createObjectURL(blob)
link.download = item.imgName //
link.style.display = 'none' //
// DOM
document.body.appendChild(link);
document.body.appendChild(link)
//
link.click();
link.click()
//
URL.revokeObjectURL(link.href);
document.body.removeChild(link);
URL.revokeObjectURL(link.href)
document.body.removeChild(link)
}
catch (error) {
console.error("下载图片时发生错误:", error);
console.error('下载图片时发生错误:', error)
}
}
function previewHandler(index: number, event: MouseEvent) {
event.stopImmediatePropagation();
event.stopPropagation();
event.stopImmediatePropagation()
event.stopPropagation()
if (imageRef.value?.[index] && (imageRef.value[index] as any).src)
// (imageRef.value?.[index] as any).mergedOnClick();
(imageRef.value?.[index] as any).click();
(imageRef.value?.[index] as any).click()
}
/**
@ -548,11 +544,11 @@ function previewHandler(index: number, event: MouseEvent) {
*/
function refresh(val?: any) {
// delete asideVal.izsimilarity
const checkingTaskModal = checkingTaskModalRef.value as any;
const checkingTaskModal = checkingTaskModalRef.value as any
if (checkDuplicateNo.value) {
getCheckDuplicateStatus(checkDuplicateNo.value).then((res) => {
if (res.code === "OK") {
checkTaskStatus.value = res.data.status; // 1. 2.
if (res.code === 'OK') {
checkTaskStatus.value = res.data.status // 1. 2.
// if (isRefresh.value === false) {
// const modal = packageModalRef.value as any
// modal.showModal()
@ -563,27 +559,24 @@ function refresh(val?: any) {
(checkTaskStatus.value === 2 || checkTaskStatus.value === 3)
&& isRefresh.value
) {
configStore.setTimeNum(100);
checkingTaskModal.closeModal();
isRefresh.value = false;
configStore.setTimeNum(100)
checkingTaskModal.closeModal()
isRefresh.value = false
if (checkTaskStatus.value === 2)
message.success("任务执行完毕,正在刷新数据...");
else
message.error("查询异常");
message.success('任务执行完毕,正在刷新数据...')
else message.error('查询异常')
if (timer.value)
clearInterval(timer.value);
clearInterval(timer.value)
reset();
loadMore();
configStore.setTimeNum(0);
reset()
loadMore()
configStore.setTimeNum(0)
}
else if (checkTaskStatus.value === 1) {
}
}
});
})
}
}
/**
@ -592,12 +585,12 @@ function refresh(val?: any) {
function cancel() {
if (checkTaskStatus.value === 1) {
removeCheckDuplicate(checkDuplicateNo.value).then((res) => {
if (res.code === "OK") {
checkDuplicateNo.value = "";
checkTaskStatus.value = null;
message.success("查重任务取消成功");
if (res.code === 'OK') {
checkDuplicateNo.value = ''
checkTaskStatus.value = null
message.success('查重任务取消成功')
}
});
})
}
}
@ -605,36 +598,31 @@ function renderIcon(icon: Component) {
return () => {
return h(NIcon, null, {
default: () => h(icon),
});
};
})
}
}
const dropdownOptions = ref([
{
label: "导入任务数据",
key: "profile",
label: '导入任务数据',
key: 'profile',
icon: renderIcon(UploadIcon),
},
{
label: "导出任务数据",
key: "editProfile",
label: '导出任务数据',
key: 'editProfile',
icon: renderIcon(DownloadIcon),
},
{
label: "查看导入记录",
key: "logout",
label: '查看导入记录',
key: 'logout',
icon: renderIcon(EyeOutlineIcon),
},
]);
function loadImgOver(item) {
console.log("loadImgOver", item);
setTimeout(() => (item.loadOver = true), 2000);
}
])
defineExpose({
showLoginSuccessModal,
});
})
</script>
<template>

Loading…
Cancel
Save