Merge branch 'jie' into main

pull/1/head
lizijiee 1 year ago
commit c29cbf0875

@ -19,6 +19,7 @@
"@vueuse/core": "10.9.0", "@vueuse/core": "10.9.0",
"axios": "^1.4.0", "axios": "^1.4.0",
"date-fns": "^2.30.0", "date-fns": "^2.30.0",
"dayjs": "^1.11.10",
"esno": "^0.16.3", "esno": "^0.16.3",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"imagesloaded": "^5.0.0", "imagesloaded": "^5.0.0",

@ -1,5 +1,5 @@
import { IzCustomlevel, IzCustomname, IzCustomtype, IzfirmVue, IzProductVue, IzProjecttype, IzProjectVue, IztaskrromVue, IztaskstatusVue, IzVisitcity, IzvisitproVue, PictureDownloadVue, PictureTypeVue, PictureUploadVue, PlanVue, ReportUserVue, SimilarityVue, TimeVue } from '@/views/home/aside/comp/items'
import type { Component } from 'vue' import type { Component } from 'vue'
import { IzCustomlevel, IzCustomname, IzCustomtype, IzProductVue, IzProjectVue, IzProjecttype, IzShowVue, IzVisitcity, IzfirmVue, IztaskrromVue, IztaskstatusVue, IzvisitproVue, PictureDownloadVue, PictureTypeVue, PictureUploadVue, PlaceHolderVue, PlanVue, ReportUserVue, SimilarityVue, TimeVue } from '@/views/home/aside/comp/items'
export interface AsideEntity { export interface AsideEntity {
label: string label: string
@ -52,7 +52,7 @@ export const asideMap: Recordable<AsideEntity> = {
izyear: { izyear: {
label: '年份', label: '年份',
defaultValue: null, defaultValue: null,
isDefaultFilter: false, isDefaultFilter: true,
key: 'izyear', key: 'izyear',
component: TimeVue, component: TimeVue,
}, },
@ -72,28 +72,28 @@ export const asideMap: Recordable<AsideEntity> = {
inFilterList: false, inFilterList: false,
}, },
izcustomtype: { izcustomtype: {
label: '客户类型', label: '拜访客户类型',
defaultValue: null, defaultValue: null,
isDefaultFilter: false, isDefaultFilter: false,
key: 'izcustomtype', key: 'izcustomtype',
component: IzCustomtype, component: IzCustomtype,
}, },
izcustomlevel: { izcustomlevel: {
label: '客户级别', label: '拜访客户级别',
defaultValue: null, defaultValue: null,
isDefaultFilter: false, isDefaultFilter: false,
key: 'izcustomlevel', key: 'izcustomlevel',
component: IzCustomlevel, component: IzCustomlevel,
}, },
izcustomname: { izcustomname: {
label: '客户名称', label: '拜访客户名称',
defaultValue: null, defaultValue: null,
isDefaultFilter: false, isDefaultFilter: false,
key: 'izcustomname', key: 'izcustomname',
component: IzCustomname, component: IzCustomname,
}, },
izprojecttype: { izprojecttype: {
label: '项目类型', label: '拜访项目类型',
defaultValue: null, defaultValue: null,
isDefaultFilter: false, isDefaultFilter: false,
key: 'izprojecttype', key: 'izprojecttype',
@ -114,14 +114,14 @@ export const asideMap: Recordable<AsideEntity> = {
component: IztaskstatusVue, component: IztaskstatusVue,
}, },
izvisitpro: { izvisitpro: {
label: '拜访省份', label: '拜访省份/直辖市',
defaultValue: null, defaultValue: null,
isDefaultFilter: false, isDefaultFilter: false,
key: 'izvisitpro', key: 'izvisitpro',
component: IzvisitproVue, component: IzvisitproVue,
}, },
izvisitcity: { izvisitcity: {
label: '发布地区', label: '拜访城市',
defaultValue: null, defaultValue: null,
isDefaultFilter: false, isDefaultFilter: false,
key: 'izvisitcity', key: 'izvisitcity',
@ -141,38 +141,31 @@ export const asideMap: Recordable<AsideEntity> = {
key: 'izproductname', key: 'izproductname',
component: IzProductVue, component: IzProductVue,
}, },
izdesc: { // izdesc: {
label: '添加备注', // label: '添加备注',
defaultValue: null, // defaultValue: null,
isDefaultFilter: false, // isDefaultFilter: false,
key: 'izdesc', // key: 'izdesc',
component: PlaceHolderVue, // component: PlaceHolderVue,
inFilterList: false, // inFilterList: false,
render: false, // render: false,
}, // },
izsearchmanager: { // izsearchmanager: {
label: '自定义筛选', // label: '自定义筛选',
defaultValue: null, // defaultValue: null,
isDefaultFilter: false, // isDefaultFilter: false,
key: 'izsearchmanager', // key: 'izsearchmanager',
component: PlaceHolderVue, // component: PlaceHolderVue,
inFilterList: false, // inFilterList: false,
render: false, // render: false,
}, // },
izshow: { // izsearch: {
label: '分类', // label: '自定义过滤',
defaultValue: null, // defaultValue: null,
isDefaultFilter: false, // isDefaultFilter: false,
key: 'izshow', // key: 'izsearch',
component: IzShowVue, // component: PlaceHolderVue,
}, // inFilterList: false,
izsearch: { // render: false,
label: '自定义过滤', // },
defaultValue: null,
isDefaultFilter: false,
key: 'izsearch',
component: PlaceHolderVue,
inFilterList: false,
render: false,
},
} }

@ -101,8 +101,8 @@ const options = computed(() => {
<div class="header"> <div class="header">
<n-avatar :src="getImgUrl(useInfo.usericon)" round style="width:53px; height:53px" /> <n-avatar :src="getImgUrl(useInfo.usericon)" round style="width:53px; height:53px" />
<div style="margin-left: 12px"> <div style="margin-left: 12px">
<span style="display: block; font-size: 21px">{{ useInfo.username }}</span> <span style="display: block;" class="user-name">{{ useInfo.username }}</span>
<span style="display: block; font-size: 16px">{{ useInfo.departname }}</span> <span style="display: block;" class="depart-name">{{ useInfo.departname }}</span>
</div> </div>
</div> </div>
<div class="trigger"> <div class="trigger">
@ -120,7 +120,7 @@ const options = computed(() => {
<div class="trigger" @click="logOut"> <div class="trigger" @click="logOut">
退出登录 退出登录
</div> </div>
<div class="container" v-show="changeFlag" style="position: absolute;right:332px;width: 220px;padding:24px 0"> <div class="container sub-container" v-show="changeFlag" style="position: absolute;right:17vw;width: 11.5vw;padding:24px 0">
<div class="trigger" v-for="option in options" :key="option.key" @click="handleSelect(option)"> <div class="trigger" v-for="option in options" :key="option.key" @click="handleSelect(option)">
{{ option.label }} {{ option.label }}
</div> </div>
@ -130,6 +130,18 @@ const options = computed(() => {
</template> </template>
<style lang="less" scoped> <style lang="less" scoped>
@media screen and (min-width: 1920px) {
.container {
.header{
.user-name{
font-size: 21px;
}
.depart-name{
font-size: 16px;
}
}
}
}
.setting { .setting {
display: flex; display: flex;
align-items: center; align-items: center;
@ -142,7 +154,7 @@ const options = computed(() => {
border-radius: 10px; border-radius: 10px;
justify-content: center; justify-content: center;
background-color: #ffffff; background-color: #ffffff;
width: 320px; width: 16vw;
position: relative; position: relative;
.header { .header {

@ -27,7 +27,7 @@ const emit = defineEmits<{
const data = ref<FilterEntity[]>([]); const data = ref<FilterEntity[]>([]);
const unData = ref<FilterEntity[]>([]); const unData = ref<FilterEntity[]>([]);
let loading = false; const loading = ref(false);
const canloadMore = true; const canloadMore = true;
const el = ref<HTMLDivElement | null>(null); const el = ref<HTMLDivElement | null>(null);
const popover = ref<ComponentRef | null>(null); const popover = ref<ComponentRef | null>(null);
@ -36,6 +36,7 @@ const pagination = reactive({
pageSize: 300, pageSize: 300,
}); });
const keyword = ref(""); const keyword = ref("");
const currentlySelectedAdvanced = ref("高级筛选");
onMounted(() => { onMounted(() => {
// data.value = generateDefaultConfig() // data.value = generateDefaultConfig()
@ -73,12 +74,12 @@ useInfiniteScroll(
}, },
{ distance: 10, interval: 300, canLoadMore: () => false } { distance: 10, interval: 300, canLoadMore: () => false }
); );
const showClick = () => { const showClick =async () => {
inputHandler(""); getSearchedList('')
}; };
async function loadMore() { async function loadMore() {
if (loading || el.value == null) return; if (loading.value || el.value == null) return;
const more = await featchList(); const more = await featchList();
@ -88,7 +89,7 @@ async function loadMore() {
} }
async function featchList() { async function featchList() {
loading = true; loading.value = true;
try { try {
const searchParam: FilterSearchParam = { const searchParam: FilterSearchParam = {
search_searchname: { value: keyword.value, op: "like", type: "string" }, search_searchname: { value: keyword.value, op: "like", type: "string" },
@ -102,7 +103,7 @@ async function featchList() {
} catch (error) { } catch (error) {
return []; return [];
} finally { } finally {
loading = false; loading.value = false;
} }
} }
@ -123,7 +124,7 @@ function generateFilterEntityList(data) {
const reg = new RegExp(keyword.value, "gi"); const reg = new RegExp(keyword.value, "gi");
const hilightText = searchname.replace( const hilightText = searchname.replace(
reg, reg,
`<span style='color:#FF0000'>${keyword.value}</span>` `<span>${keyword.value}</span>`
); );
return { return {
@ -133,6 +134,7 @@ function generateFilterEntityList(data) {
isDefaultFilter: false, isDefaultFilter: false,
filterList: list, filterList: list,
reorder, reorder,
searchname
}; };
}); });
@ -141,10 +143,15 @@ function generateFilterEntityList(data) {
function selectHandler(item: FilterEntity) { function selectHandler(item: FilterEntity) {
(popover.value as any).setShow(false); (popover.value as any).setShow(false);
currentlySelectedAdvanced.value = item.searchname
emit("select", item.id); emit("select", item.id);
} }
const inputHandler = debounce((word) => { const inputHandler = debounce((word) => {
getSearchedList(word)
}, 300);
function getSearchedList(word) {
if (word) { if (word) {
pagination.pageSize = 300; pagination.pageSize = 300;
} else { } else {
@ -163,13 +170,13 @@ const inputHandler = debounce((word) => {
} }
}); });
data.value = dataArr.sort( data.value = dataArr.sort(
(a, b) => Number((a as any).reorder) - Number((b as any).reorder) (a, b) => Number(new Date(a.createtime)) - Number(new Date(b.createtime))
); );
unData.value = unDataArr.sort( unData.value = unDataArr.sort(
(a, b) => Number((a as any).reorder) - Number((b as any).reorder) (a, b) => Number((a as any).reorder) - Number((b as any).reorder)
); );
}); });
}, 300); }
function favoriteHandler(event: MouseEvent, item: any) { function favoriteHandler(event: MouseEvent, item: any) {
event.stopImmediatePropagation(); event.stopImmediatePropagation();
@ -226,7 +233,7 @@ const moveEnd = () => {
> >
<template #trigger> <template #trigger>
<div class="wrapper-left-dropdown" @click="showClick"> <div class="wrapper-left-dropdown" @click="showClick">
<span style="font-size: 20px;color: #333333;font-weight: Medium;">高级筛选</span> <span style="font-size: 20px;color: #333333;font-weight: Medium;">{{currentlySelectedAdvanced}}</span>
<SvgIcon :style="{ marginLeft: '5px' }" name="down" size="14" /> <SvgIcon :style="{ marginLeft: '5px' }" name="down" size="14" />
</div> </div>
</template> </template>
@ -234,7 +241,7 @@ const moveEnd = () => {
<div class="wrapper-left-popover"> <div class="wrapper-left-popover">
<n-input <n-input
:style="{ '--n-border': '0px' }" :style="{ '--n-border': '0px' }"
placeholder="请输入关键" placeholder="请输入关键"
@input="inputHandler" @input="inputHandler"
> >
<template #prefix> <template #prefix>
@ -257,20 +264,23 @@ const moveEnd = () => {
style="display: flex; align-items: center" style="display: flex; align-items: center"
@click="selectHandler(item)" @click="selectHandler(item)"
> >
<SvgIcon name="drag" size="18" color="#333333" style="margin-right:3px"/>
<SvgIcon <SvgIcon
v-if="item.favorite && !item.isDefaultFilter" v-if="item.favorite && !item.isDefaultFilter"
name="favorite-fill" name="favorite-fill"
color="#fd9b0a" color="#fd9b0a"
size="18" size="18"
style="margin-right:3px"
@click="unFavoriteHandler($event, item)" @click="unFavoriteHandler($event, item)"
/> />
<SvgIcon <SvgIcon
v-else-if="!item.favorite && !item.isDefaultFilter" v-else-if="!item.favorite && !item.isDefaultFilter"
name="favorite-unfill" name="favorite-unfill"
size="18" size="18"
style="margin-right:3px"
@click="favoriteHandler($event, item)" @click="favoriteHandler($event, item)"
/> />
<div v-html="item.name" /> <div v-html="item.name" style="color: #333333;"/>
</li> </li>
<!-- filter=".draggable-li[draggable='false']" --> <!-- filter=".draggable-li[draggable='false']" -->
<VueDraggable <VueDraggable
@ -288,20 +298,25 @@ const moveEnd = () => {
class="cursor-move draggable-li fix" class="cursor-move draggable-li fix"
:draggable="true" :draggable="true"
> >
<SvgIcon name="drag" size="18" style="margin-right:3px"/>
<SvgIcon <SvgIcon
v-if="item.favorite && !item.isDefaultFilter" v-if="item.favorite && !item.isDefaultFilter"
name="favorite-fill" name="favorite-fill"
color="#fd9b0a" color="#fd9b0a"
size="18" size="18"
fill="#666666"
style="cursor: pointer!important;margin-right:3px;"
@click="unFavoriteHandler($event, item)" @click="unFavoriteHandler($event, item)"
/> />
<SvgIcon <SvgIcon
v-else-if="!item.favorite && !item.isDefaultFilter" v-else-if="!item.favorite && !item.isDefaultFilter"
name="favorite-unfill" name="favorite-unfill"
size="18" size="18"
fill="#666666"
style="cursor: pointer!important;margin-right:3px;"
@click="favoriteHandler($event, item)" @click="favoriteHandler($event, item)"
/> />
<div v-html="item.name" /> <div v-html="item.name" style="color: #333333;"/>
</li> </li>
</VueDraggable> </VueDraggable>
</ul> </ul>
@ -356,17 +371,17 @@ const moveEnd = () => {
height: 200px; height: 200px;
overflow-x: hidden; overflow-x: hidden;
overflow-y: auto; overflow-y: auto;
scrollbar-width: none; /* firefox */ scrollbar-width: thin; /* firefox */
-ms-overflow-style: none; /* IE 10+ */ -ms-overflow-style: thin; /* IE 10+ */
&::-webkit-scrollbar { &::-webkit-scrollbar {
display: none; display: thin;
} }
li { li {
font-size: 14px; font-size: 14px;
line-height: 22px; line-height: 22px;
padding: 5px 12px; padding: 8px 12px;
&:hover { &:hover {
background-color: #f3f8ff; background-color: #f3f8ff;

@ -1,5 +1,6 @@
<script lang="ts" setup> <script lang="ts" setup>
import { ref } from 'vue' import dayjs from 'dayjs';
import { onMounted, ref } from 'vue';
const props = defineProps<{ const props = defineProps<{
value: [number, number] | null value: [number, number] | null
@ -15,6 +16,18 @@ const time = ref<[number, number] | null>(props.value)
function onChange(value: [number, number]) { function onChange(value: [number, number]) {
emit('update:value', value) emit('update:value', value)
} }
onMounted(() => {
//
const currentDate = dayjs();
//
const endDate = currentDate.toDate();
const startDate = currentDate.subtract(3, 'month').toDate();
//
time.value = [startDate.getTime(), endDate.getTime()];
setTimeout(() => {
onChange([startDate.getTime(), endDate.getTime()])
},300)
})
</script> </script>
<template> <template>
@ -22,7 +35,7 @@ function onChange(value: [number, number]) {
<n-collapse :default-expanded-names="['1']" arrow-placement="right"> <n-collapse :default-expanded-names="['1']" arrow-placement="right">
<n-collapse-item :title="label" name="1"> <n-collapse-item :title="label" name="1">
<n-space> <n-space>
<n-date-picker v-model:value="time" type="daterange" clearable @update:value="onChange" > <n-date-picker v-model:value="time" type="daterange" clearable @update:value="onChange">
<template #separator> <template #separator>
</template> </template>
@ -37,10 +50,12 @@ function onChange(value: [number, number]) {
.wrapper { .wrapper {
padding: 10px; padding: 10px;
} }
::v-deep(.n-collapse-item-arrow){
::v-deep(.n-collapse-item-arrow) {
color: #999999 !important; color: #999999 !important;
} }
::v-deep(.n-input__separator){
color: #999999 !important;; ::v-deep(.n-input__separator) {
} color: #999999 !important;
</style> ;
}</style>

@ -1,24 +1,24 @@
import PictureTypeVue from './PictureType.vue'
import PlanVue from './Plan.vue'
import ReportUserVue from './ReportUser.vue'
import PictureDownloadVue from './PictureDownload.vue'
import TimeVue from './Time.vue'
import RegionVue from './Region.vue'
import PictureUploadVue from './PictureUpload.vue'
import SimilarityVue from './Similarity.vue'
import PlaceHolderVue from './PlaceHolder.vue'
import IzShowVue from './IzShow.vue'
import IzProjectVue from './IzProject.vue'
import IztaskrromVue from './Iztaskrrom.vue'
import IztaskstatusVue from './Iztaskstatus.vue'
import IzvisitproVue from './Izvisitpro.vue'
import IzfirmVue from './Izfirm.vue'
import IzCustomlevel from './IzCustomlevel.vue' import IzCustomlevel from './IzCustomlevel.vue'
import IzCustomname from './IzCustomname.vue' import IzCustomname from './IzCustomname.vue'
import IzCustomtype from './IzCustomtype.vue' import IzCustomtype from './IzCustomtype.vue'
import IzfirmVue from './Izfirm.vue'
import IzProductVue from './IzProduct.vue' import IzProductVue from './IzProduct.vue'
import IzProjectVue from './IzProject.vue'
import IzProjecttype from './IzProjecttype.vue' import IzProjecttype from './IzProjecttype.vue'
import IzVisitcity from './IzVisitcity.vue'
import IzStatus from './IzStatus.vue' import IzStatus from './IzStatus.vue'
import IztaskrromVue from './Iztaskrrom.vue'
import IztaskstatusVue from './Iztaskstatus.vue'
import IzVisitcity from './IzVisitcity.vue'
import IzvisitproVue from './Izvisitpro.vue'
import PictureDownloadVue from './PictureDownload.vue'
import PictureTypeVue from './PictureType.vue'
import PictureUploadVue from './PictureUpload.vue'
import PlaceHolderVue from './PlaceHolder.vue'
import PlanVue from './Plan.vue'
import RegionVue from './Region.vue'
import ReportUserVue from './ReportUser.vue'
import SimilarityVue from './Similarity.vue'
import TimeVue from './Time.vue'
export { IzProjecttype, IzStatus, IzVisitcity, IzCustomlevel, IzCustomtype, IzCustomname, IzfirmVue, IzProductVue, IzvisitproVue, IztaskstatusVue, IztaskrromVue, IzProjectVue, PictureDownloadVue, PictureUploadVue, PlaceHolderVue, RegionVue, SimilarityVue, ReportUserVue, PlanVue, PictureTypeVue, TimeVue }
export { IzProjecttype, IzStatus, IzVisitcity, IzCustomlevel, IzCustomtype, IzCustomname, IzfirmVue, IzProductVue, IzvisitproVue, IztaskstatusVue, IztaskrromVue, IzProjectVue, IzShowVue, PictureDownloadVue, PictureUploadVue, PlaceHolderVue, RegionVue, SimilarityVue, ReportUserVue, PlanVue, PictureTypeVue, TimeVue }

@ -17,6 +17,7 @@ import { computed, nextTick, onMounted, onUnmounted, onUpdated, reactive, ref, u
import GeneratePackageModal from './modal/GeneratePackageModal.vue' 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 type { PictureSortParam } from "/#/api"
const deviceHeight = ref(600) const deviceHeight = ref(600)
let _masonry: null | Masonry = null let _masonry: null | Masonry = null
@ -35,7 +36,10 @@ const LoginSuccessModalRef = ref(null)
const loading = ref(false) const loading = ref(false)
const message = useMessage() const message = useMessage()
const totalCount = ref(0) const totalCount = ref(0)
const sortBy = ref<'asc' | 'desc'>('desc') const sortBy: PictureSortParam = {
orderbyname: "asc",
orderbyvalue: "pictureResult",
};
const imageRef = ref<ComponentElRef | null>() const imageRef = ref<ComponentElRef | null>()
let canloadMore = true let canloadMore = true
let filterId = null let filterId = null
@ -64,7 +68,7 @@ const layout = debounce(() => {
_masonry = new Masonry(masonryRef.value as any, { _masonry = new Masonry(masonryRef.value as any, {
itemSelector: '.grid-item', itemSelector: '.grid-item',
gutter: 18, gutter: 17,
columnWidth: 182, columnWidth: 182,
percentPosition: true, percentPosition: true,
stagger: 10, stagger: 10,
@ -128,7 +132,7 @@ async function featchList() {
const asideParams = unref(configStore.getAsideValue) const asideParams = unref(configStore.getAsideValue)
const params = filterId ? { userSearchId: filterId } : asideParams const params = filterId ? { userSearchId: filterId } : asideParams
const result = await getPictureList({ ...pagination, ...contentParams, ...params, ordertype: sortBy.value }) const result = await getPictureList({ ...pagination, ...contentParams, ...params, ...sortBy })
const { data, pageCount, total } = result const { data, pageCount, total } = result
totalCount.value = total totalCount.value = total
canloadMore = pageCount >= pagination.pageNo && pageCount > 0 canloadMore = pageCount >= pagination.pageNo && pageCount > 0
@ -261,8 +265,9 @@ function getAvatar(url: string): string {
return url ? getImgUrl(url) : avatar return url ? getImgUrl(url) : avatar
} }
function sortHandler() { function sortHandler(orderby: "pictureResult" | "fromuptime") {
sortBy.value = sortBy.value === 'asc' ? 'desc' : 'asc' sortBy.orderbyvalue = orderby;
sortBy.orderbyname = sortBy.orderbyname === "asc" ? "desc" : "asc";
refreshHandler() refreshHandler()
} }
async function downloadImage(item) { async function downloadImage(item) {
@ -338,10 +343,14 @@ function previewHandler(index: number,event: MouseEvent) {
<SvgIcon class="gap" name="arrow-botton" size="14" /> <SvgIcon class="gap" name="arrow-botton" size="14" />
</div> </div>
</n-popselect> </n-popselect>
<!-- <div style="margin-left: 15px;cursor: pointer;color:#323233" @click="sortHandler()"> <div style="margin-left: 15px;cursor: pointer;color:#323233" @click="sortHandler('pictureResult')">
<span>相似度排序</span> <span>相似度排序</span>
<SvgIcon style="margin-left: 8px;" name="sort" size="12" /> <SvgIcon style="margin-left: 8px;" name="sort" size="12" />
</div> --> </div>
<div style="margin-left: 15px;cursor: pointer;color:#323233" @click="sortHandler('fromuptime')">
<span>时间排序</span>
<SvgIcon style="margin-left: 8px;" name="sort" size="12" />
</div>
</div> </div>
<span style="font-size: 16px;color:#494949"> <span style="color:#7899fd;font-weight: 500;">{{ totalCount }}</span> </span> <span style="font-size: 16px;color:#494949"> <span style="color:#7899fd;font-weight: 500;">{{ totalCount }}</span> </span>
</div> </div>
@ -380,10 +389,10 @@ function previewHandler(index: number,event: MouseEvent) {
<n-avatar :src="getAvatar(item.uphead)" class="avatar" round /> <n-avatar :src="getAvatar(item.uphead)" class="avatar" round />
<span>{{ item.upname }}</span> <span>{{ item.upname }}</span>
</div> </div>
<div class="right"> <!-- <div class="right">
<span :style="{ marginRight: '5px' }">分类</span> <span :style="{ marginRight: '5px' }">分类</span>
<span>{{ item.ocrPictureclass?.classname }}</span> <span>{{ item.ocrPictureclass?.classname }}</span>
</div> </div> -->
</div> </div>
</div> </div>
</div> </div>

2
types/home.d.ts vendored

@ -8,6 +8,8 @@ export interface Filter {
export interface FilterEntity { export interface FilterEntity {
id: string id: string
name: string // 过滤名称 name: string // 过滤名称
createtime: string // 创建时间
searchname: string // 搜索名称
favorite: boolean// 是否收藏 favorite: boolean// 是否收藏
isDefaultFilter: boolean// 默认筛选 isDefaultFilter: boolean// 默认筛选
filterList: Filter[] // 过滤项列表 filterList: Filter[] // 过滤项列表

Loading…
Cancel
Save