<template>
|
<div style="min-width: 800px">
|
<a-row>
|
<!-- 左侧文件树 -->
|
<a-col :span="6">
|
<a-tree
|
showLine
|
:treeData="treeData"
|
:expandedKeys="[expandedKeys[0]]"
|
:selectedKeys="selectedKeys"
|
:style="{ height: '500px', 'border-right': '2px solid #c1c1c1', 'overflow-y': 'auto' }"
|
@expand="onExpand"
|
@select="onSelect"
|
></a-tree>
|
</a-col>
|
|
<!--右侧缩略图-->
|
<a-col :span="18">
|
<a-row style="margin-top: 10px; padding-left: 2%">
|
<a-col :span="24" style="margin-bottom: 10px">
|
<a-button @click="prev" preIcon="ant-design:left-outlined" type="primary">上一页</a-button>
|
<a-button @click="next" preIcon="ant-design:right-outlined" style="margin-left: 8px" type="primary">下一页</a-button>
|
<span style="margin-left: 100px; font-weight: bolder">{{ navName }}</span>
|
</a-col>
|
<a-col :span="24">
|
<img :src="imgUrl" preview />
|
</a-col>
|
</a-row>
|
</a-col>
|
</a-row>
|
</div>
|
</template>
|
|
<script lang="ts" setup>
|
import { ref, unref, onMounted } from 'vue';
|
//mock数据
|
const mockdata = [
|
{
|
title: '第一页',
|
key: '0-0',
|
children: [
|
{
|
title: '1页',
|
key: '0-0-0',
|
imgUrl: 'https://static.jeecg.com/upload/test/1_1588149743473.jpg',
|
},
|
{
|
title: '2页',
|
key: '0-0-1',
|
imgUrl: 'https://static.jeecg.com/upload/test/u27356337152749454924fm27gp0_1588149731821.jpg',
|
},
|
],
|
},
|
{
|
title: '第二页',
|
key: '0-1',
|
children: [
|
{
|
title: '1页',
|
key: '0-1-0',
|
imgUrl: 'https://static.jeecg.com/upload/test/u24454681402491956848fm27gp0_1588149712663.jpg',
|
},
|
{
|
title: '2页',
|
key: '0-1-1',
|
imgUrl: 'https://static.jeecg.com/upload/test/u8891206113801177793fm27gp0_1588149704459.jpg',
|
},
|
],
|
},
|
{
|
title: '第三页',
|
key: '0-2',
|
children: [
|
{
|
title: '1页',
|
key: '0-2-0',
|
imgUrl: 'https://static.jeecg.com/upload/test/1374962_1587621329085.jpg',
|
},
|
],
|
},
|
];
|
/**
|
* 左侧树形数据
|
*/
|
const treeData = ref(mockdata);
|
//选中的key
|
const selectedKeys = ref([]);
|
//展开的key
|
const expandedKeys = ref([]);
|
const sort = ref(0);
|
//图片链接
|
const imgUrl = ref('');
|
//页码标题
|
const navName = ref('');
|
//图片集合
|
const imgList = ref([]);
|
|
onMounted(getImgList);
|
|
/**
|
* 加载图片集合
|
*/
|
function getImgList() {
|
var count = 0;
|
for (var i = 0; i < unref(treeData).length; i++) {
|
for (var j = 0; j < unref(treeData)[i].children.length; j++) {
|
imgList.value.push({
|
key: unref(treeData)[i].children[j].key,
|
pkey: unref(treeData)[i].key,
|
sort: count++,
|
imgUrl: unref(treeData)[i].children[j].imgUrl,
|
navName: unref(treeData)[i].title + '/' + unref(treeData)[i].children[j].title,
|
});
|
}
|
}
|
setValue(imgList.value[unref(sort)]);
|
}
|
/**
|
* 节点选中事件
|
*/
|
function onSelect(selectedKeys, info) {
|
for (var i = 0; i < unref(imgList).length; i++) {
|
if (unref(imgList)[i].key === selectedKeys[0]) {
|
sort.value = unref(imgList)[i].sort;
|
setValue(unref(imgList)[i]);
|
break;
|
}
|
}
|
}
|
/**
|
* 节点展开事件
|
*/
|
function onExpand(expandedKey) {
|
expandedKeys.value = [];
|
if (expandedKey !== null && expandedKey !== '') {
|
expandedKeys.value[0] = expandedKey[1];
|
}
|
}
|
/**
|
* 上一页
|
*/
|
function prev() {
|
if (unref(sort) === 0) {
|
sort.value = unref(imgList).length - 1;
|
} else {
|
sort.value = sort.value - 1;
|
}
|
setValue(unref(imgList)[unref(sort)]);
|
}
|
/**
|
* 下一页
|
*/
|
function next() {
|
if (unref(sort) === unref(imgList).length - 1) {
|
sort.value = 0;
|
} else {
|
sort.value = unref(sort) + 1;
|
}
|
setValue(unref(imgList)[unref(sort)]);
|
}
|
|
// 设置受控节点值
|
function setValue(value) {
|
selectedKeys.value = [];
|
imgUrl.value = value.imgUrl;
|
selectedKeys.value[0] = value.key;
|
expandedKeys.value[0] = value.pkey;
|
navName.value = value.navName;
|
}
|
</script>
|