代码提交

This commit is contained in:
jiangzhe 2024-06-20 17:08:05 +08:00
parent b8d7d0b6c7
commit eed984f0fd
13 changed files with 468 additions and 266 deletions

View File

@ -0,0 +1,16 @@
import httpInstance from '@/utils/http'
export const getResourceCatalogList = (params = {}) => {
return httpInstance({
url: '/portal/resource/catalog/pageList',
params
})
}
export const getResourceList = (params = {}) => {
return httpInstance({
url: '/portal/resource/list',
params
})
}

View File

@ -1,48 +1,47 @@
import httpInstance from '@/utils/http'
// 获取banner
export function getBannerAPI (params = {}) {
// 默认为1 商品为2
const { distributionSite = '1' } = params
// 查询门户Banner列表
export function getBannerAPI(params = {}) {
return httpInstance({
url: '/home/banner',
params: {
distributionSite
}
url: '/portal/banner/list',
params
})
}
/**
* @description: 获取新鲜好物
* @param {*}
* @return {*}
* 查询学校动态列表
*/
export const findNewAPI = () => {
export const getTrendAPI = (params = {}) => {
return httpInstance({
url: '/home/new'
url: '/portal/trend/list',
params
})
}
/**
* @description: 获取人气推荐
* @param {*}
* @return {*}
*查询学校名师列表
*/
export const getHotAPI = () => {
export const getShowAPI = (params = {}) => {
return httpInstance({
url: '/home/hot'
url: '/portal/show/list',
params
})
}
/**
* @description: 获取所有商品模块
* @param {*}
* @return {*}
*查询目录-同步教材
*/
export const getGoodsAPI = () => {
export const getTextbookAPI = () => {
return httpInstance({
url: '/home/goods'
url: '/portal/textbook/catalog/tree'
})
}
}
// 查询目录-专题资源
export const getResourceAPI = (params = {}) => {
return httpInstance({
url: '/portal/resource/catalog/pageList',
params
})
}

24
src/apis/textbook.js Normal file
View File

@ -0,0 +1,24 @@
import httpInstance from '@/utils/http'
/**
*查询目录-同步教材
*/
export const getTextbookAPI = () => {
return httpInstance({
url: '/portal/textbook/catalog/list'
})
}
export const getTextbookTreeAPI = (params = {}) => {
return httpInstance({
url: '/portal/textbook/catalog/tree',
params
})
}
export const getTextbookList = (params = {}) => {
return httpInstance({
url: '/portal/textbook/list',
params
})
}

View File

@ -45,7 +45,7 @@ const router = createRouter({
component: () => import('@/views/CatalogResource/index.vue')
},
{
path: 'subSubject',
path: 'subSubject/:id',
component: () => import('@/views/SubCatalogResource/index.vue')
},
{

View File

@ -3,8 +3,8 @@ import axios from 'axios'
import { ElMessage } from 'element-plus'
import { useUserStore } from '@/stores/userStore'
const httpInstance = axios.create({
baseURL: 'http://pcapi-xiaotuxian-front-devtest.itheima.net',
timeout: 5000
baseURL: '/api',
timeout: 50000
})
// 拦截器

44
src/utils/utils.js Normal file
View File

@ -0,0 +1,44 @@
// 日期格式化
export function parseTime(time, pattern) {
if (arguments.length === 0 || !time) {
return null;
}
const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}';
let date;
if (typeof time === 'object') {
date = time;
} else {
if (typeof time === 'string' && /^[0-9]+$/.test(time)) {
time = parseInt(time);
} else if (typeof time === 'string') {
time = time
.replace(new RegExp(/-/gm), '/')
.replace('T', ' ')
.replace(new RegExp(/\.[\d]{3}/gm), '');
}
if (typeof time === 'number' && time.toString().length === 10) {
time = time * 1000;
}
date = new Date(time);
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
};
return format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key];
// Note: getDay() returns 0 on Sunday
if (key === 'a') {
return ['日', '一', '二', '三', '四', '五', '六'][value];
}
if (result.length > 0 && value < 10) {
value = '0' + value;
}
return value || 0;
});
}

View File

@ -9,9 +9,6 @@
<div class="subject-banner">
<el-carousel height="500px" arrow="always">
<!-- <el-carousel-item v-for="item in bannerList" :key="item.id">
<img :src="item.imgUrl" alt="">
</el-carousel-item> -->
<el-carousel-item v-for="item in 4">
<img src="@/assets/images/subject-banner.png" alt="">
</el-carousel-item>
@ -23,14 +20,14 @@
专题资源
</div>
<div class="more">
19个专题
{{ total }}个专题
</div>
<div class="subject-content">
<div class="subject-card" v-for="item in 12">
<RouterLink to="subSubject">
<div class="subject-card" v-for="item in resourceList">
<RouterLink :to="`subSubject/${item.catalogId}`">
<el-card>
<img src="@/assets/images/subject.png" />
<img :src="item.coverUrl" />
</el-card>
<div class="subject-top">1790个资源</div>
</RouterLink>
@ -42,7 +39,25 @@
</template>
<script setup>
import { ref } from 'vue'
import { ref, onMounted } from 'vue'
import { getResourceCatalogList } from '@/apis/catalogResource'
const queryParams = ref({
pageNum: 1,
pageSize: 12
})
const resourceList = ref([])
const total = ref(0)
const getResourceListData = async () => {
const res = await getResourceCatalogList(queryParams.value)
resourceList.value = res.rows
total.value = res.total
}
onMounted(() => {
getResourceListData()
})
</script>
<style lang="scss" scoped>

View File

@ -2,15 +2,17 @@
import { getBannerAPI } from '@/apis/home'
import { onMounted, ref } from 'vue'
// const bannerList = ref([])
const bannerList = ref([])
// const getBanner = async () => {
// const res = await getBannerAPI()
// console.log(res)
// bannerList.value = res.result
// }
const getBanner = async () => {
const res = await getBannerAPI({
pageNum: 1,
pageSize: 10,
})
bannerList.value = res.rows
}
// onMounted(() => getBanner())
onMounted(() => getBanner())
</script>
@ -18,11 +20,8 @@ import { onMounted, ref } from 'vue'
<template>
<div class="home-banner">
<el-carousel height="500px" arrow="always">
<!-- <el-carousel-item v-for="item in bannerList" :key="item.id">
<img :src="item.imgUrl" alt="">
</el-carousel-item> -->
<el-carousel-item v-for="item in 4">
<img src="@/assets/images/carousel-item.png" alt="">
<el-carousel-item v-for="item in bannerList" :key="item.bannerId">
<img :src="item.coverUrl" :alt="item.title">
</el-carousel-item>
</el-carousel>
</div>

View File

@ -18,25 +18,9 @@
</template>
<ul class="card-left-list">
<li>
<span>当AI融入课堂会带来怎样的体验?</span>
<span>2024-04-12</span>
</li>
<li>
<span>跟胡老师一起读:现代文篇②</span>
<span>2024-04-12</span>
</li>
<li>
<span>周末实验室-不伤鱼的三维立体方便测量盆</span>
<span>2024-04-12</span>
</li>
<li>
<span>构建智慧课堂 促生深度学习|赋能小学高效课堂教学...</span>
<span>2024-04-12</span>
</li>
<li>
<span>在线学习平台应用研讨会顺利举行</span>
<span>2024-04-12</span>
<li v-for="item in trendList">
<span>{{ item.title }}</span>
<span>{{ parseTime(item.createTime, '{y}-{m}-{d}') }}</span>
</li>
</ul>
</el-card>
@ -54,28 +38,15 @@
</template>
<div class="card-right-content">
<el-radio-group v-model="grade" class="grade-radio">
<el-radio-button label="小学" value="small" />
<el-radio-button label="初中" value="middle" />
<el-radio-group v-model="grade" class="grade-radio" @change="firstChange">
<el-radio-button v-for="item in firstType" :label="item.label" :value="item.id" :key="item.id" />
</el-radio-group>
<el-tabs type="border-card">
<el-tab-pane label="一年级" class="class-book">
<el-tag type="info">语文</el-tag>
<el-tag type="info">数学</el-tag>
<el-tag type="info">英语</el-tag>
<el-tag type="info">音乐</el-tag>
<el-tag type="info">美术</el-tag>
<el-tag type="info">特殊教育</el-tag>
<el-tag type="info">科学</el-tag>
<el-tag type="info">道德与法治</el-tag>
<el-tag type="info">体育与健康</el-tag>
<el-tag type="info">小学劳动与技术</el-tag>
<el-tabs v-model="activeName" type="border-card" @tab-click="secondChange">
<el-tab-pane v-for="item in secondType" :label="item.label" :name="item.id" :key="item.id"
class="class-book">
<el-tag v-for="item in threeType" :key="item.id" type="info" @click="gotoInfo(item.id)">{{ item.label
}}</el-tag>
</el-tab-pane>
<el-tab-pane label="二年级">二年级</el-tab-pane>
<el-tab-pane label="三年级">三年级</el-tab-pane>
<el-tab-pane label="四年级">四年级</el-tab-pane>
<el-tab-pane label="五年级">五年级</el-tab-pane>
<el-tab-pane label="六年级">六年级</el-tab-pane>
</el-tabs>
</div>
</el-card>
@ -93,11 +64,10 @@
</div>
</template>
<div class="subject-content">
<el-card v-for="item in 8">
<el-card v-for="item in resourceList">
<img :src="item.coverUrl" alt="">
<template #footer>
<div class="subject-title">金版学案2016-2017学年高中语文人教版(必修3必修4)检测+课件</div>
<div class="subject-title">{{ item.catalogName }}</div>
<div class="subject-date">2024-04-12</div>
</template>
</el-card>
@ -116,12 +86,12 @@
</template>
<ul class="card-teacher-list">
<li class="item" v-for="item in 4">
<li class="item" v-for="item in showList">
<el-card>
<img src="@/assets/images/teacher.png" alt="">
<p class="teacher-name">程晨</p>
<p class="teacher-class">一年级1 | 语文</p>
<p class="teacher-desc">教师介绍教师介绍教师介绍教师介绍教师介绍教师介绍</p>
<img :src="item.avatarUrl" alt="">
<p class="teacher-name">{{ item.teacherName }}</p>
<p class="teacher-class">{{ item.gradeName }}</p>
<p class="teacher-desc" v-html="item.content"></p>
</el-card>
</li>
</ul>
@ -131,10 +101,82 @@
</template>
<script setup>
import { ref } from 'vue'
import { ref, onMounted } from 'vue'
import HomeBanner from './components/HomeBanner.vue'
import { getTrendAPI, getTextbookAPI, getShowAPI, getResourceAPI } from '@/apis/home'
import { parseTime } from '@/utils/utils'
const grade = ref('small')
const trendList = ref([])
const getTrendData = async () => {
const res = await getTrendAPI({
pageNum: 1,
pageSize: 5
})
trendList.value = res.rows
}
const grade = ref()
const activeName = ref()
const textbookList = ref([])
const firstType = ref([])
const secondType = ref([])
const threeType = ref([])
const getTextbookData = async () => {
const res = await getTextbookAPI()
textbookList.value = res.data
const firstList = res.data[0].children
firstType.value = firstList
grade.value = firstType.value[0].id
const secondList = firstList[0].children
secondType.value = secondList
activeName.value = secondType.value[0].id
const threeList = secondList[0].children
threeType.value = threeList
}
const firstChange = (val) => {
const firstList = textbookList.value[0].children
secondType.value = firstList.filter(item => item.id == val)[0].children
activeName.value = secondType.value[0].id
}
const secondChange = (tab) => {
const id = tab.props.name
threeType.value = secondType.value.filter(item => item.id == id)[0].children
}
const resourceList = ref([])
const getResourceData = async () => {
const res = await getResourceAPI({
type: 2,
pageNum: 1,
pageSize: 8
})
resourceList.value = res.rows
}
const showList = ref([])
const getShowData = async () => {
const res = await getShowAPI({
pageNum: 1,
pageSize: 4
})
showList.value = res.rows
}
onMounted(() => {
getTrendData()
getTextbookData()
getResourceData()
getShowData()
})
const gotoInfo = (id) => {
console.log('getInfo', id);
}
</script>
<style lang="scss" scoped>

View File

@ -14,69 +14,53 @@
<div>校园资讯常看常新</div>
</div>
<el-input v-model="keyWords" style="width: 240px;" size="large" placeholder="请输入关键字" :suffix-icon="Search" />
<el-input v-model="queryParams.title" style="width: 240px;" size="large" placeholder="请输入关键字"
:suffix-icon="Search" />
</div>
</template>
<el-table :data="tableData" class="table" stripe :show-header="false">
<el-table-column prop="title" label="title" />
<el-table-column prop="date" label="date" width="150" />
<el-table-column prop="createTime" label="date" width="200" />
</el-table>
<template #footer>
<el-pagination class="footer" background layout="prev, pager, next, sizes,jumper" :total="1000" />
<el-pagination class="footer" background layout="prev, pager, next, sizes,jumper" :total="total"
@current-change="handleCurrentChange" @size-change="handleSizeChange" />
</template>
</el-card>
</div>
</template>
<script setup>
import { ref } from 'vue'
import { ref, onMounted } from 'vue'
import { Search } from '@element-plus/icons-vue'
import { getTrendAPI } from '@/apis/home'
const keyWords = ref('')
const tableData = [
{
title: '当AI融入课堂会带来怎样的体验?',
date: '2024-04-12',
},
{
title: '当AI融入课堂会带来怎样的体验?',
date: '2024-04-12',
},
{
title: '当AI融入课堂会带来怎样的体验?',
date: '2024-04-12',
},
{
title: '当AI融入课堂会带来怎样的体验?',
date: '2024-04-12',
},
{
title: '当AI融入课堂会带来怎样的体验?',
date: '2024-04-12',
},
{
title: '当AI融入课堂会带来怎样的体验?',
date: '2024-04-12',
},
{
title: '当AI融入课堂会带来怎样的体验?',
date: '2024-04-12',
},
{
title: '当AI融入课堂会带来怎样的体验?',
date: '2024-04-12',
},
{
title: '当AI融入课堂会带来怎样的体验?',
date: '2024-04-12',
},
{
title: '当AI融入课堂会带来怎样的体验?',
date: '2024-04-12',
}
]
const queryParams = ref({
title: '',
pageNum: 1,
pageSize: 10
})
const tableData = ref([])
const total = ref(0)
const getTrendData = async () => {
const res = await getTrendAPI(queryParams.value)
tableData.value = res.rows
total.value = res.total
}
onMounted(() => {
getTrendData()
})
const handleCurrentChange = (val) => {
queryParams.pageNum = val
}
const handleSizeChange = (val) => {
queryParams.pageSize = val
}
</script>
<style lang="scss" scoped>

View File

@ -47,17 +47,17 @@
</div>
<div class="book-grid">
<el-card v-for="item in 6">
<el-card v-for="item in resourceList">
<div class="book-content">
<img class="file-type" src="@/assets/images/word.png" alt="">
<img src="@/assets/images/book.png" alt="">
</div>
<template #footer>
<div class="book-title">汉字文化云课堂</div>
<div class="book-title">{{ item.fileName }}</div>
<div class="book-des">
<div class="book-teacher">
<span>王老师</span>&nbsp;|&nbsp;<span>一年级2</span>
<span>{{ item.createBy }}</span>&nbsp;|&nbsp;<span>{{ item.createDept }}</span>
</div>
<div class="book-view">
<span>
@ -71,7 +71,7 @@
</template>
</el-card>
</div>
<el-pagination class="book-page" background layout="prev, pager, next, sizes,jumper" :total="1000" />
<el-pagination class="book-page" background layout="prev, pager, next, sizes,jumper" :total="total" />
</el-card>
</el-col>
</el-row>
@ -79,8 +79,19 @@
</template>
<script setup>
import { ref } from 'vue'
import { ref, onMounted } from 'vue'
import { useRoute } from 'vue-router'
import { View, Search } from '@element-plus/icons-vue'
import { getResourceList } from '@/apis/catalogResource'
const route = useRoute()
const id = route.params
const queryParams = ref({
title: '',
pageNum: 1,
pageSize: 6
})
const tableData = [
{
@ -111,28 +122,19 @@ const tableData = [
},
]
const tableSortData = [
{
date: '2016-05-03',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-02',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-04',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-01',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
]
const tableSortData = []
const resourceList = ref([])
const total = ref(0)
const getResourceListData = async () => {
const res = await getResourceList(queryParams.value)
resourceList.value = res.rows
total.value = res.total
}
onMounted(() => {
getResourceListData()
})
</script>
<style lang="scss" scoped>

View File

@ -9,74 +9,62 @@
<el-card class="card-filter">
<el-form label-width="auto">
<el-form-item label="学段">
<el-checkbox-group>
<el-checkbox-button>小学</el-checkbox-button>
<el-checkbox-button>初中</el-checkbox-button>
</el-checkbox-group>
<el-form-item v-if="textbook2List && textbook2List.length" label="学段">
<el-radio-group v-model="radio2" @change="handle2Change">
<el-radio-button v-for="item in textbook2List" :label="item.catalogName" :value="item.catalogId"
:key="item.catalogId" />
</el-radio-group>
</el-form-item>
<el-form-item label="年级">
<el-checkbox-group>
<el-checkbox-button>一年级</el-checkbox-button>
<el-checkbox-button>二年级</el-checkbox-button>
<el-checkbox-button>三年级</el-checkbox-button>
<el-checkbox-button>四年级</el-checkbox-button>
<el-checkbox-button>五年级</el-checkbox-button>
<el-checkbox-button>六年级</el-checkbox-button>
</el-checkbox-group>
<el-form-item v-if="textbook3List && textbook3List.length" label="年级">
<el-radio-group v-model="radio3" @change="handle3Change">
<el-radio-button v-for="item in textbook3List" :label="item.catalogName" :value="item.catalogId"
:key="item.catalogId" />
</el-radio-group>
</el-form-item>
<el-form-item label="学科">
<el-checkbox-group>
<el-checkbox-button>语文</el-checkbox-button>
<el-checkbox-button>数学</el-checkbox-button>
<el-checkbox-button>英语</el-checkbox-button>
<el-checkbox-button>音乐</el-checkbox-button>
<el-checkbox-button>美术</el-checkbox-button>
<el-checkbox-button>特殊教育</el-checkbox-button>
<el-checkbox-button>科学</el-checkbox-button>
<el-checkbox-button>道德与法治</el-checkbox-button>
<el-checkbox-button>体育与健康</el-checkbox-button>
<el-checkbox-button>小学与劳动与技术</el-checkbox-button>
</el-checkbox-group>
<el-form-item v-if="textbook4List && textbook4List.length" label="学科">
<el-radio-group v-model="radio4" @change="handle4Change">
<el-radio-button v-for="item in textbook4List" :label="item.catalogName" :value="item.catalogId"
:key="item.catalogId" />
</el-radio-group>
</el-form-item>
<el-form-item label="版本">
<el-checkbox-group>
<el-checkbox-button>人教版</el-checkbox-button>
<el-checkbox-button>苏教版</el-checkbox-button>
</el-checkbox-group>
<el-form-item v-if="textbook5List && textbook5List.length" label="版本">
<el-radio-group v-model="radio5" @change="handle5Change">
<el-radio-button v-for="item in textbook5List" :label="item.catalogName" :value="item.catalogId"
:key="item.catalogId" />
</el-radio-group>
</el-form-item>
<el-form-item label="教材">
<el-checkbox-group>
<el-checkbox-button>语文人教部编版一上年上册</el-checkbox-button>
<el-checkbox-button>语文人教部编版一上年下册</el-checkbox-button>
</el-checkbox-group>
<el-form-item v-if="textbook6List && textbook6List.length" label="教材">
<el-radio-group v-model="radio6" @change="handle6Change">
<el-radio-button v-for="item in textbook6List" :label="item.catalogName" :value="item.catalogId"
:key="item.catalogId" />
</el-radio-group>
</el-form-item>
<el-form-item label="类型">
<el-checkbox-group>
<el-checkbox-button>全部</el-checkbox-button>
<el-checkbox-button>课件</el-checkbox-button>
<el-checkbox-button>精品课堂</el-checkbox-button>
<el-checkbox-button>作业</el-checkbox-button>
<el-checkbox-button>试卷</el-checkbox-button>
</el-checkbox-group>
<el-radio-group>
<el-radio-button>全部</el-radio-button>
<el-radio-button>课件</el-radio-button>
<el-radio-button>精品课堂</el-radio-button>
<el-radio-button>作业</el-radio-button>
<el-radio-button>试卷</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="格式">
<el-checkbox-group>
<el-checkbox-button>全部</el-checkbox-button>
<el-checkbox-button>PPT</el-checkbox-button>
<el-checkbox-button>WORD</el-checkbox-button>
<el-checkbox-button>PDF</el-checkbox-button>
<el-checkbox-button>图片</el-checkbox-button>
<el-checkbox-button>音频</el-checkbox-button>
<el-checkbox-button>视频</el-checkbox-button>
<el-checkbox-button>其它</el-checkbox-button>
</el-checkbox-group>
<el-radio-group>
<el-radio-button>全部</el-radio-button>
<el-radio-button>PPT</el-radio-button>
<el-radio-button>WORD</el-radio-button>
<el-radio-button>PDF</el-radio-button>
<el-radio-button>图片</el-radio-button>
<el-radio-button>音频</el-radio-button>
<el-radio-button>视频</el-radio-button>
<el-radio-button>其它</el-radio-button>
</el-radio-group>
</el-form-item>
</el-form>
</el-card>
@ -90,8 +78,9 @@
</div>
</template>
<el-table :data="tableData" row-key="id" border default-expand-all :show-header="false">
<el-table-column prop="name" label="Name" />
<el-table @row-click="handleRowClick" :data="textbook7List" row-key="id" border default-expand-all
:show-header="false">
<el-table-column prop="label" label="label" />
</el-table>
</el-card>
</el-col>
@ -104,29 +93,31 @@
</div>
<div class="book-grid">
<el-card v-for="item in 6" :key="item">
<el-card v-for="item in tableData" :key="item">
<div class="book-content">
<img class="file-type" src="@/assets/images/word.png" alt="" />
<img src="@/assets/images/book.png" alt="" />
</div>
<template #footer>
<div class="book-title">汉字文化云课堂</div>
<div class="book-title">{{ item.fileName }}</div>
<div class="book-des">
<div class="book-teacher"><span>蒋老师</span>&nbsp;|&nbsp;<span>一年级2</span></div>
<div class="book-teacher"><span>{{ item.createBy }}</span>&nbsp;|&nbsp;<span>{{ item.createDept
}}</span></div>
<div class="book-view">
<span>
<el-icon>
<View />
</el-icon>
</span>
<span>204</span>
<span>{{ item.downloadNum }}</span>
</div>
</div>
</template>
</el-card>
</div>
<el-pagination class="book-page" background layout="prev, pager, next, sizes,jumper" :total="1000" />
<el-pagination class="book-page" background layout="prev, pager, next, sizes,jumper" :total="total"
@current-change="handleCurrentChange" @size-change="handleSizeChange" />
</el-card>
</el-col>
</el-row>
@ -134,39 +125,85 @@
</template>
<script setup>
import { ref, watchEffect } from 'vue';
import { View } from '@element-plus/icons-vue';
import { ref, onMounted, watchEffect, watch } from 'vue';
import { View } from '@element-plus/icons-vue'
import { getTextbookAPI, getTextbookTreeAPI, getTextbookList } from '@/apis/textbook'
import JzSort from '@/components/JzSort/index.vue'
import JzSort from '@/components/JzSort/index.vue';
const queryParams = ref({
catalogId: undefined,
pageNum: 1,
pageSize: 6
})
const tableData = ref([])
const total = ref(0)
const tableData = [
{
id: 1,
name: '全部'
},
{
id: 2,
name: '我上学了'
},
{
id: 3,
name: '识字',
children: [
{
id: 31,
name: '1 天地人'
},
{
id: 32,
name: '2金木水火土'
}
]
},
{
id: 4,
name: '汉语拼音'
}
];
const radio2 = ref()
const radio3 = ref()
const radio4 = ref()
const radio5 = ref()
const radio6 = ref()
// 1234567
const textbookList = ref([])
const textbook2List = ref([])
const textbook3List = ref([])
const textbook4List = ref([])
const textbook5List = ref([])
const textbook6List = ref([])
const textbook7List = ref([])
const getTextbookData = async () => {
const res = await getTextbookAPI()
textbookList.value = res.data
textbook2List.value = filterListByType(2)
}
const handle2Change = (val) => {
textbook3List.value = filterListByParentId(val)
textbook4List.value = []
textbook5List.value = []
textbook6List.value = []
textbook7List.value = []
console.log(val);
queryParams.value.catalogId = val
}
const handle3Change = (val) => {
textbook4List.value = filterListByParentId(val)
textbook5List.value = []
textbook6List.value = []
textbook7List.value = []
queryParams.value.catalogId = val
}
const handle4Change = (val) => {
textbook5List.value = filterListByParentId(val)
textbook6List.value = []
textbook7List.value = []
queryParams.value.catalogId = val
}
const handle5Change = (val) => {
textbook6List.value = filterListByParentId(val)
textbook7List.value = []
queryParams.value.catalogId = val
}
const handle6Change = async (val) => {
const res = await getTextbookTreeAPI({ parentId: val })
textbook7List.value = res.data
queryParams.value.catalogId = val
}
const filterListByType = (type) => {
return textbookList.value.filter(item => item.type == type)
}
const filterListByParentId = (parentId) => {
return textbookList.value.filter(item => item.parentId == parentId)
}
//
const sortData = [
@ -180,7 +217,35 @@ const sortResult = ref({}); // 排序结果
watchEffect(() => {
console.log('===排序 改变了===', sortResult.value);
// TODO:
});
})
const getTextbookListData = async () => {
const res = await getTextbookList(queryParams.value)
tableData.value = res.rows
total.value = res.total
}
const handleCurrentChange = (val) => {
queryParams.pageNum = val
}
const handleSizeChange = (val) => {
queryParams.pageSize = val
}
const handleRowClick = (val) => {
queryParams.value.catalogId = val.id
}
watch(() => queryParams.value.catalogId, (oldVal, newVal) => {
getTextbookListData()
})
onMounted(() => {
getTextbookData()
getTextbookListData()
})
</script>
<style lang="scss" scoped>
@ -224,6 +289,10 @@ watchEffect(() => {
.book-content {
position: relative;
img {
width: 250px;
}
.file-type {
position: absolute;
top: 0;
@ -252,4 +321,3 @@ watchEffect(() => {
}
}
</style>

View File

@ -39,5 +39,14 @@ export default defineConfig({
`,
}
}
},
server: {
proxy: {
'/api': {
target: 'http://localhost:8090/',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '')
}
}
}
})