内容更新

parent 9f07bda1
...@@ -5,22 +5,25 @@ VITE_APP_ENV = 'development' ...@@ -5,22 +5,25 @@ VITE_APP_ENV = 'development'
VITE_APP_BASE_URL = '/practice-jiaxiu-mobile/' VITE_APP_BASE_URL = '/practice-jiaxiu-mobile/'
# API地址 # API地址
VITE_APP_BASE_API = 'https://info.gyntv.com.cn/back/ty-visit/ty-visit' # VITE_APP_BASE_API = 'https://info.gyntv.com.cn/back/ty-visit/ty-visit'
VITE_APP_BASE_API = '/dev-api'
#组织标识 #组织标识
VITE_APP_VISITOR_CODE = 'practice-mediaCatalog' VITE_APP_VISITOR_CODE = 'practice-mediaCatalog'
#文件路径 #文件路径
VITE_APP_FILE_URL = '/download' # VITE_APP_FILE_URL = '/download'
VITE_APP_FILE_URL = 'https://jiaxiu.gyntv.com.cn//download'
#kkfile地址 #kkfile地址
VITE_APP_PREVIEW_URL = 'http://jiaxiu.gyntv.com.cn:8012/onlinePreview?url=' VITE_APP_PREVIEW_URL = 'https://jiaxiu.gyntv.com.cn:8012/onlinePreview?url='
#打包文件名称 #打包文件名称
VITE_APP_OUTDIR_FILENAME = 'practice-jiaxiu-mobile-html' VITE_APP_OUTDIR_FILENAME = 'practice-jiaxiu-mobile-html'
#systemCode #systemCode
VITE_APP_SYSTEM_CODE = 'ty-centre' # VITE_APP_SYSTEM_CODE = 'ty-centre'
VITE_APP_SYSTEM_CODE = 'jiaxiu-centre'
#爽贵阳appid #爽贵阳appid
VITE_APP_SGY_APPID = '685669b8b471aef47e2968a581ca03cd' VITE_APP_SGY_APPID = '685669b8b471aef47e2968a581ca03cd'
\ No newline at end of file
...@@ -11,10 +11,10 @@ VITE_APP_BASE_API = 'https://info.gyntv.com.cn/back/ty-visit/ty-visit' ...@@ -11,10 +11,10 @@ VITE_APP_BASE_API = 'https://info.gyntv.com.cn/back/ty-visit/ty-visit'
VITE_APP_VISITOR_CODE = 'practice-mediaCatalog' VITE_APP_VISITOR_CODE = 'practice-mediaCatalog'
#文件路径 #文件路径
VITE_APP_FILE_URL = 'https://info.gyntv.com.cn//download' VITE_APP_FILE_URL = 'https://jiaxiu.gyntv.com.cn//download'
#kkfile地址 #kkfile地址
VITE_APP_PREVIEW_URL = 'http://jiaxiu.gyntv.com.cn:8012/onlinePreview?url=' VITE_APP_PREVIEW_URL = 'https://jiaxiu.gyntv.com.cn:8012/onlinePreview?url='
#打包文件名称 #打包文件名称
VITE_APP_OUTDIR_FILENAME = 'practice-jiaxiu-mobile-html' VITE_APP_OUTDIR_FILENAME = 'practice-jiaxiu-mobile-html'
......
import request from '@/utils/request'
/**
* @description 分类类型列表查询
* @param {Any} page 分页对象
* @param {Any} data 图组对象
* @returns
*/
export const selectClassifyTypeList = (page,data) => {
return request({
url: `/app/appMediaSelect/getAppClassifyPageInfo/${page.pageNum}/${page.pageSize}`,
method: 'post',
data: data
})
}
/**
* @description 分类列表查询
* @param {Any} page 分页对象
* @param {Any} data 图组对象
* @returns
*/
export const selectClassifyList = (page,data) => {
return request({
url: `/app/appMediaSelect/selectAppMediaByTypeClassifyPage/${page.pageNum}/${page.pageSize}`,
method: 'post',
data: data
})
}
\ No newline at end of file
...@@ -101,6 +101,13 @@ ...@@ -101,6 +101,13 @@
"meta": { "meta": {
"requireAuth": true "requireAuth": true
} }
},
{
"path": "pages/classify/list",
"name": "classify-list",
"style": {
"navigationBarTitleText": "分类列表"
}
} }
], ],
"globalStyle": { "globalStyle": {
......
...@@ -6,43 +6,87 @@ ...@@ -6,43 +6,87 @@
<div class="search"> <div class="search">
<div class="s-box"> <div class="s-box">
<van-icon name="search" color="#303030" /> <van-icon name="search" color="#303030" />
<input class="placeholder" placeholder="请输入关键词" v-model="value" /> <input class="placeholder" placeholder="请输入关键词" v-model="queryParams.classifyType" @confirm="handleRefresh"/>
</div> </div>
<van-icon v-if="value" name="clear" color="#969696" /> <van-icon v-if="queryParams.classifyType" name="clear" color="#969696" @tap="clear" />
</div> </div>
</div> </div>
</van-sticky> </van-sticky>
<div class="content"> <div class="content">
<div class="list"> <van-pull-refresh v-model="refreshing" @refresh="handleRefresh">
<div class="item" v-for="(item, index) in 20" :key="index"> <van-list v-model:loading="loading" :finished="finished" finished-text="没有更多了" :offset="50"
<img src="/static/image/cover-1.png"> @load="getList" v-if="dataList.length">
<div class="blurbox"> <div class="list">
<div class="bg"></div> <div class="item" v-for="(item, index) in dataList" :key="index"
<div class="title">XXX专题</div> @click="router.push({ name: 'classify-list', params: { typeClassify: item.classifyType } })">
<img src="/static/image/defaultPic.png">
<div class="blurbox">
<div class="bg"></div>
<div class="title">{{ item.classifyType }}</div>
</div>
</div>
</div> </div>
</div> </van-list>
<div class="item"> </van-pull-refresh>
<img src="/static/image/cover-2.png">
<div class="blurbox">
<div class="bg"></div>
<div class="title">XXX专题</div>
</div>
</div>
<div class="item">
<img src="/static/image/cover-3.png">
<div class="blurbox">
<div class="bg"></div>
<div class="title">XXX专题</div>
</div>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
<script setup> <script setup>
const value = ref('') import { selectClassifyTypeList } from '@/api/classify';
const router = useRouter()
const refreshing = ref(false)
const loading = ref(false)
const finished = ref(true)
const fileDomain = import.meta.env.VITE_APP_FILE_URL
import { useInitScroll } from '@/hooks/useScroll'
useInitScroll()
onLoad(() => {
getList()
})
const page = reactive({
pageNum: 0,
pageSize: 12
})
const queryParams = reactive({
materialType: 3,
classifyType: '',
})
const dataList = ref([])
const getList = async () => {
page.pageNum++
loading.value = true
const res = await selectClassifyTypeList(page, queryParams)
setDataList(res)
}
const setDataList = (res) => {
if (refreshing.value) {
dataList.value = res.data.list
} else {
dataList.value.push(...res.data.list)
}
loading.value = false
finished.value = dataList.value.length >= res.data.total
refreshing.value = false
}
const handleRefresh = () => {
refreshing.value = true
page.pageNum = 0
getList()
}
const clear = () => {
queryParams.classifyType = ''
handleRefresh()
}
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
...@@ -96,7 +140,7 @@ const value = ref('') ...@@ -96,7 +140,7 @@ const value = ref('')
.list { .list {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-between; gap: 12rpx;
.item { .item {
break-inside: avoid; break-inside: avoid;
......
<template>
<van-sticky>
<div class="header">
<div class="tools">
<van-search v-model="queryParams.materialTitle" shape="round" placeholder="请输入搜索关键词"
@search="handleRefresh" @clear="handleRefresh" />
</div>
</div>
</van-sticky>
<div class="content">
<van-pull-refresh v-model="refreshing" @refresh="handleRefresh">
<van-list v-model:loading="loading" :finished="finished" finished-text="没有更多了" :offset="50" @load="getList"
v-if="dataList.length">
<div class="list">
<div class="item" v-for="(item, index) in dataList" :key="index"
@click="router.push({ name: 'home-content', params: { id: item.materialId } })">
<img :src="fileDomain + item.coverpicture">
<div class="desc">
<span class="title">
<van-text-ellipsis :content="item.materialTitle" />
</span>
<div class="tag">
<span v-for="(tagName, index) in item.tagName.split(',')" :key="index">{{ tagName
}}</span>
</div>
<div class="info">
<div class="user">
<img src="../../static/image/avatar.png">
<span>{{ item.author }}</span>
</div>
<div class="collect">
<van-icon name="star-o" color="#9F9F9F" v-if="index < 5" />
<van-icon name="star" color="#F1C13E" v-else />
<span>收藏</span>
</div>
</div>
</div>
</div>
</div>
</van-list>
<van-empty description="暂无数据" v-else />
</van-pull-refresh>
</div>
</template>
<script setup>
import { selectClassifyList } from '@/api/classify';
const router = useRouter()
const refreshing = ref(false)
const loading = ref(false)
const finished = ref(true)
const fileDomain = import.meta.env.VITE_APP_FILE_URL
onLoad((options) => {
console.log(options)
queryParams.typeClassify = options.typeClassify
getList()
})
const page = reactive({
pageNum: 0,
pageSize: 10
})
const queryParams = reactive({
materialTitle: '',
materialType: 3,
typeClassify: null,
})
const dataList = ref([])
const getList = async () => {
page.pageNum++
loading.value = true
const res = await selectClassifyList(page, queryParams)
setDataList(res)
}
const setDataList = (res) => {
if (refreshing.value) {
dataList.value = res.data.list
} else {
dataList.value.push(...res.data.list)
}
loading.value = false
finished.value = dataList.value.length >= res.data.total
refreshing.value = false
}
</script>
<style scoped lang="scss">
.header {
padding: 10px;
background-color: #ffffff;
box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.1);
.tools {
:deep(.van-search) {
flex: 1;
padding: 0;
}
}
}
.header-placeholder {
height: 117px;
}
.content {
background-color: #f3f3f3;
padding: 10px 10px 0 10px;
min-height: 100vh;
.list {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.item {
break-inside: avoid;
background-color: #ffffff;
border-radius: 5px;
margin-bottom: 10px;
width: 49%;
img {
width: 100%;
height: 150px;
object-fit: cover;
}
.desc {
padding: 5px 10px;
display: flex;
flex-direction: column;
gap: 5px;
.title {
font-size: 16px;
}
.tag {
display: flex;
flex-wrap: wrap;
gap: 3px;
span {
font-size: 14px;
padding: 0 5px;
background-color: #F3F8FF;
color: #4C70AC;
font-size: 12PX;
border-radius: 3px;
}
}
.info {
display: flex;
justify-content: space-between;
padding: 5px 0;
.user {
display: flex;
gap: 7px;
align-items: center;
img {
width: 23px;
height: 23px;
border-radius: 50%;
}
span {
color: #9F9F9F;
font-size: 12px;
}
}
}
.collect {
display: flex;
align-items: center;
gap: 3px;
span {
color: #9F9F9F;
font-size: 12px;
}
}
}
}
}
}
.active {
background-color: #0e7ce3 !important;
color: #ffffff !important;
}
</style>
\ No newline at end of file
...@@ -54,11 +54,7 @@ const fieldNames = { ...@@ -54,11 +54,7 @@ const fieldNames = {
}; };
const buildTree = (items) => { const buildTree = (items) => {
const tree = [{ const tree = []
id: '0',
organName: '无组织',
children: []
}]
const lookup = {} const lookup = {}
// 初始化lookup对象,方便后续快速查找 // 初始化lookup对象,方便后续快速查找
...@@ -80,6 +76,11 @@ const buildTree = (items) => { ...@@ -80,6 +76,11 @@ const buildTree = (items) => {
lookup[item.superiorId].children.push(lookup[item.id]); lookup[item.superiorId].children.push(lookup[item.id]);
} }
}); });
tree.push({
id: '0',
organName: '无组织',
children: []
})
return removeEmptyChildren(tree) return removeEmptyChildren(tree)
} }
......
...@@ -44,7 +44,7 @@ export default defineConfig(({ mode }) => { ...@@ -44,7 +44,7 @@ export default defineConfig(({ mode }) => {
host: '0.0.0.0', host: '0.0.0.0',
proxy: { proxy: {
'/dev-api': { '/dev-api': {
target: 'https://info.gyntv.com.cn/back/ty-visit/ty-visit', target: 'https://jiaxiu.gyntv.com.cn/back/jiaxiu-visit/jiaxiu-visit',
changeOrigin: true, changeOrigin: true,
rewrite: (path) => path.replace(/^\/dev-api/, ""), rewrite: (path) => path.replace(/^\/dev-api/, ""),
bypass: (req, res, options) => res.setHeader("x-req-proxyUr1", options.target + req.url.replace('/dev-api', '')) bypass: (req, res, options) => res.setHeader("x-req-proxyUr1", options.target + req.url.replace('/dev-api', ''))
...@@ -54,6 +54,11 @@ export default defineConfig(({ mode }) => { ...@@ -54,6 +54,11 @@ export default defineConfig(({ mode }) => {
changeOrigin: true, changeOrigin: true,
bypass: (req, res, options) => res.setHeader("x-req-proxyUr1", options.target + req.url) bypass: (req, res, options) => res.setHeader("x-req-proxyUr1", options.target + req.url)
}, },
'/back/jiaxiu-visit/jiaxiu-visit': {
target: 'https://jiaxiu.gyntv.com.cn',
changeOrigin: true,
bypass: (req, res, options) => res.setHeader("x-req-proxyUr1", options.target + req.url)
},
'/download': { '/download': {
target: VITE_APP_ENV === 'production' ? 'https://info.gyntv.com.cn/' : 'https://info.gyntv.com.cn/', target: VITE_APP_ENV === 'production' ? 'https://info.gyntv.com.cn/' : 'https://info.gyntv.com.cn/',
changeOrigin: true, changeOrigin: true,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment