parent
832c9d9262
commit
dd2253cc85
|
|
@ -15,7 +15,7 @@
|
|||
<div class="left-content">
|
||||
<div class="flex-row align-c gap-10 mb-10">
|
||||
<el-input v-model="search_filter" placeholder="请输入分类名称">
|
||||
<template #suffix>
|
||||
<template #prefix>
|
||||
<icon name="search" size="18"></icon>
|
||||
</template>
|
||||
</el-input>
|
||||
|
|
@ -132,7 +132,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="mt-10 flex-row jc-e">
|
||||
<el-pagination :current-page="page" :page-size="21" :pager-count="5" layout="prev, pager, next" :total="data_total" @current-change="current_page_change" />
|
||||
<el-pagination :current-page="page" :page-size="30" :pager-count="5" layout="prev, pager, next" :total="data_total" @current-change="current_page_change" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -307,7 +307,7 @@ const all_tree = {
|
|||
const type_data_list = ref<Tree[]>([]);
|
||||
// 查询分类列表
|
||||
const get_tree = () => {
|
||||
if (!upload_store.is_upload_api) {
|
||||
if (!upload_store.is_upload_api && upload_store.category.length === 0) {
|
||||
upload_store.set_is_upload_api(true);
|
||||
UploadAPI.getTree()
|
||||
.then((res) => {
|
||||
|
|
@ -407,8 +407,11 @@ const search_name = ref('');
|
|||
const upload_list = ref<uploadList[]>([]);
|
||||
// 附件列表
|
||||
const get_attachment_list = (type?: string) => {
|
||||
if (type) {
|
||||
page.value = 1;
|
||||
}
|
||||
const new_data = {
|
||||
page: type ? 1 : page.value,
|
||||
page: page.value,
|
||||
type: upload_type.value == 'img' ? 'image' : upload_type.value == 'video' ? 'video' : upload_type.value == 'file' ? 'file' : '',
|
||||
keywords: search_name.value,
|
||||
category_id: category_id.value,
|
||||
|
|
|
|||
|
|
@ -101,38 +101,43 @@
|
|||
<div class="table-cell-operate">操作</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-scrollbar height="224px">
|
||||
<div class="table-body">
|
||||
<div v-for="(item, index) in scan_file_list" :key="index" class="table-row">
|
||||
<div class="table-cell">
|
||||
<template v-if="type == 'video'">
|
||||
<div class="preview-img radius-sm">
|
||||
<icon name="video" size="12" color="9"></icon>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="type == 'file'">
|
||||
<div class="preview-img radius-sm">
|
||||
<div class="bg-f5 img flex-row jc-c align-c radius h w">
|
||||
<icon :name="ext_file_name_list_map.filter((ext) => ext.type == item.ext).length > 0 && ext_file_name_list_map.filter((ext) => ext.type == item.ext)[0].type == item.ext ? ext_file_name_list_map.filter((ext) => ext.type == item.ext)[0].icon : 'file'" size="12" color="9"></icon>
|
||||
<div v-if="scan_file_list.length > 0">
|
||||
<el-scrollbar height="224px">
|
||||
<div class="table-body">
|
||||
<div v-for="(item, index) in scan_file_list" :key="index" class="table-row">
|
||||
<div class="table-cell">
|
||||
<template v-if="type == 'video'">
|
||||
<div class="preview-img radius-sm">
|
||||
<icon name="video" size="12" color="9"></icon>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-image :src="item.url" class="preview-img radius-sm" fit="contain">
|
||||
<template #error>
|
||||
</template>
|
||||
<template v-else-if="type == 'file'">
|
||||
<div class="preview-img radius-sm">
|
||||
<div class="bg-f5 img flex-row jc-c align-c radius h w">
|
||||
<icon name="error-img" size="12"></icon>
|
||||
<icon :name="ext_file_name_list_map.filter((ext) => ext.type == item.ext).length > 0 && ext_file_name_list_map.filter((ext) => ext.type == item.ext)[0].type == item.ext ? ext_file_name_list_map.filter((ext) => ext.type == item.ext)[0].icon : 'file'" size="12" color="9"></icon>
|
||||
</div>
|
||||
</template>
|
||||
</el-image>
|
||||
</template>
|
||||
<div class="desc">{{ item.title }}</div>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-image :src="item.url" class="preview-img radius-sm" fit="contain">
|
||||
<template #error>
|
||||
<div class="bg-f5 img flex-row jc-c align-c radius h w">
|
||||
<icon name="error-img" size="12"></icon>
|
||||
</div>
|
||||
</template>
|
||||
</el-image>
|
||||
</template>
|
||||
<div class="desc">{{ item.title }}</div>
|
||||
</div>
|
||||
<div class="table-cell">{{ annex_size_to_unit(item.size) }}</div>
|
||||
<div class="table-cell-operate" @click="del_already_upload(item.id, index)">删除</div>
|
||||
</div>
|
||||
<div class="table-cell">{{ annex_size_to_unit(item.size) }}</div>
|
||||
<div class="table-cell-operate" @click="del_already_upload(item.id, index)">删除</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
<div v-else>
|
||||
<no-data height="280"></no-data>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="form.type == 'web'">
|
||||
|
|
@ -577,6 +582,7 @@ const close_dialog = () => {
|
|||
if (timer.value !== null) {
|
||||
clearTimeout(timer.value);
|
||||
}
|
||||
is_mask.value = true;
|
||||
timer.value = null; // 清除引用,防止内存泄漏
|
||||
};
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -13,12 +13,17 @@
|
|||
<div class="content">
|
||||
<el-scrollbar height="480px">
|
||||
<div class="flex-col gap-30">
|
||||
<div v-for="item in new_base_data" :key="item.type">
|
||||
<div class="fw mb-15">{{ item.name }}</div>
|
||||
<div class="flex-row flex-wrap gap-15">
|
||||
<div v-for="(child, index) in item.data" :key="index" class="item" :class="menu_active == item.page ? 'active' : ''" @click="menu_link_event(child)">{{ child.name }}</div>
|
||||
<template v-if="new_base_data.length > 0">
|
||||
<div v-for="item in new_base_data" :key="item.type">
|
||||
<div class="fw mb-15">{{ item.name }}</div>
|
||||
<div class="flex-row flex-wrap gap-15">
|
||||
<div v-for="(child, index) in item.data" :key="index" class="item" :class="menu_active == item.page ? 'active' : ''" @click="menu_link_event(child)">{{ child.name }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<no-data height="480"></no-data>
|
||||
</template>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
|
|
@ -37,7 +42,7 @@ const props = defineProps({
|
|||
watch(
|
||||
() => props.reset,
|
||||
() => {
|
||||
menu_active.value = '';
|
||||
init();
|
||||
}
|
||||
);
|
||||
const modelValue = defineModel({ type: Object, default: {} });
|
||||
|
|
@ -45,6 +50,11 @@ const search_value = ref('');
|
|||
const base_data = ref<pageLinkList[]>([]);
|
||||
const new_base_data = ref<pageLinkList[]>([]);
|
||||
onMounted(() => {
|
||||
init();
|
||||
});
|
||||
const init = () => {
|
||||
menu_active.value = '';
|
||||
search_value.value = '';
|
||||
// 过滤url_value_store.url_value.page_link_list中的type为shop的data的数据,只保留data数组
|
||||
base_data.value = url_value_store.url_value.page_link_list.filter((item: any) => {
|
||||
if (item.type == 'shop') {
|
||||
|
|
@ -52,34 +62,36 @@ onMounted(() => {
|
|||
}
|
||||
});
|
||||
new_base_data.value = base_data.value[0].data;
|
||||
});
|
||||
};
|
||||
|
||||
const handle_search = () => {
|
||||
// 根据关键词过滤new_base_data数据,如果==父级 显示父级和父级下的所有子级数据,如果==子级则显示该子级数据和父级
|
||||
let bool = false;
|
||||
// 根据关键词过滤new_base_data数据,如果==父级 显示父级和父级下的所有子级数据,
|
||||
if (search_value.value) {
|
||||
new_base_data.value = new_base_data.value.filter((item: any) => {
|
||||
if (item.name == search_value.value) {
|
||||
bool = true;
|
||||
console.log(1);
|
||||
return item;
|
||||
}
|
||||
});
|
||||
if (!true) {
|
||||
new_base_data.value = new_base_data.value.filter((item: any) => {
|
||||
item.filter((child: any) => {
|
||||
if (child.name == search_value.value) {
|
||||
bool = true;
|
||||
return child;
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
new_base_data.value = filterData(search_value.value, base_data.value[0].data);
|
||||
} else {
|
||||
new_base_data.value = base_data.value[0].data;
|
||||
}
|
||||
console.log(new_base_data.value);
|
||||
};
|
||||
const filterData = (input: string, data: pageLinkList[]) => {
|
||||
let result = [];
|
||||
// 遍历数组
|
||||
for (let item of data) {
|
||||
// 检查当前项的name是否匹配
|
||||
if (item.name.includes(input)) {
|
||||
result.push(item);
|
||||
} else {
|
||||
// 否则,检查当前项的data属性中的子项
|
||||
let subResult = item.data.filter((subItem) => subItem.name.includes(input));
|
||||
// 如果找到匹配的子项,将当前项(父级)添加到结果中
|
||||
if (subResult.length > 0) {
|
||||
result.push({ ...item, data: subResult });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
const menu_active = ref('');
|
||||
const emit = defineEmits(['update:link']);
|
||||
const menu_link_event = (item: any) => {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import { get_cookie } from './index';
|
|||
// 创建 axios 实例
|
||||
const index = window.location.href.lastIndexOf('?s=');
|
||||
const pro_url = window.location.href.substring(0, index);
|
||||
console.log(import.meta.env.VITE_APP_BASE_API);
|
||||
const service = axios.create({
|
||||
baseURL: import.meta.env.VITE_APP_BASE_API == '/dev-api' ? import.meta.env.VITE_APP_BASE_API : pro_url + '?s=',
|
||||
timeout: 50000,
|
||||
|
|
|
|||
Loading…
Reference in New Issue