Browse Source

首页轮播图修复

dev-v1.0.2
wangmingyong 4 months ago
parent
commit
2e02b6171d
  1. 2
      zdxt-web-client/zdxt-efcode-enterprise-app/src/api/enterprise/index.js
  2. 7
      zdxt-web-client/zdxt-efcode-enterprise-app/src/components/enterprise/footerNav.vue
  3. 7
      zdxt-web-client/zdxt-efcode-enterprise-app/src/router/enterprise-app/ent-main-router.js
  4. 169
      zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/home/bannerDetail.vue
  5. 10
      zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/home/enterpriseHomeV2.vue

2
zdxt-web-client/zdxt-efcode-enterprise-app/src/api/enterprise/index.js

@ -51,6 +51,8 @@ export const getLawNoticeList = (params, success, error) => _get(enterpriseAppBa
//首页轮播图列表 //首页轮播图列表
export const getCarouselBannerList = (params, success, error) => _get(enterpriseAppBaseUrl +"/enterprise/carouselBanner/list",params,success,error) export const getCarouselBannerList = (params, success, error) => _get(enterpriseAppBaseUrl +"/enterprise/carouselBanner/list",params,success,error)
//首页轮播图详情
export const getCarouselBannerDetail = (params, success, error) => _get("/web/supervision/carouselBanner/details",params,success,error)
//系统通知公告列表 //系统通知公告列表
export const getSystemNoticeList = (params, success, error) => _get(enterpriseAppBaseUrl +"/enterprise/noticeInfo/list",params,success,error) export const getSystemNoticeList = (params, success, error) => _get(enterpriseAppBaseUrl +"/enterprise/noticeInfo/list",params,success,error)

7
zdxt-web-client/zdxt-efcode-enterprise-app/src/components/enterprise/footerNav.vue

@ -4,7 +4,10 @@
<van-tabbar-item name="Home" replace icon="wap-home" to="/enterprise/enterpriseHome">{{ <van-tabbar-item name="Home" replace icon="wap-home" to="/enterprise/enterpriseHome">{{
$t("common.lang_home") $t("common.lang_home")
}}</van-tabbar-item> }}</van-tabbar-item>
<van-tabbar-item name="Classify" replace icon="bell" to="/enterprise/lawQuery"> <!-- <van-tabbar-item name="Classify" replace icon="bell" to="/enterprise/lawQuery">
法律查询
</van-tabbar-item> -->
<van-tabbar-item name="Classify" replace icon="notes-o" to="">
法律查询 法律查询
</van-tabbar-item> </van-tabbar-item>
<van-tabbar-item name="Classify" replace to="/enterprise/nos"> <van-tabbar-item name="Classify" replace to="/enterprise/nos">
@ -15,7 +18,7 @@
<img src="@/assets/images/nos/off_site_bottom_icon.png" class="nos-icon nos-icon-active" alt="" /> <img src="@/assets/images/nos/off_site_bottom_icon.png" class="nos-icon nos-icon-active" alt="" />
</template> </template>
</van-tabbar-item> </van-tabbar-item>
<van-tabbar-item name="Message" replace icon="todo-list" to="/enterprise/messageCenter" :badge="useCommon.unreadMessageCount > 0 ? useCommon.unreadMessageCount : undefined"> <van-tabbar-item name="Classify" replace icon="todo-list" to="/enterprise/messageCenter" :badge="useCommon.unreadMessageCount > 0 ? useCommon.unreadMessageCount : undefined">
消息 消息
</van-tabbar-item> </van-tabbar-item>
<van-tabbar-item name="My" replace icon="manager-o" to="/enterprise/myPage"> <van-tabbar-item name="My" replace icon="manager-o" to="/enterprise/myPage">

7
zdxt-web-client/zdxt-efcode-enterprise-app/src/router/enterprise-app/ent-main-router.js

@ -40,6 +40,13 @@ const routes = [
title: "首页", title: "首页",
}, },
}, },
// 企业端轮播图详情
{
path: "/enterprise/bannerDetail",
name: "enterpriseBannerDetail",
meta: { title: "详情" },
component: () => import("@/views/enterprise/home/bannerDetail.vue"),
},
// 执法监督码 // 执法监督码
{ {
path: "/enterprise/qrCode", path: "/enterprise/qrCode",

169
zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/home/bannerDetail.vue

@ -0,0 +1,169 @@
<template>
<div class="banner-detail-page">
<div class="detail-content">
<h1 class="detail-title">{{ detail.title }}</h1>
<div class="detail-meta">
<span class="detail-source">{{ detail.source }}</span>
<span class="detail-time">{{ detail.time }}</span>
</div>
<div class="detail-images" v-if="detail.imageUrl">
<img
:src="baseUrl + detail.imageUrl"
alt=""
@click="previewImage"
/>
</div>
<div class="detail-body" v-if="detail.content" v-html="detail.content">
</div>
</div>
</div>
</template>
<script setup name="bannerDetail">
import { ref, onMounted } from 'vue';
import { useRouter, useRoute } from 'vue-router';
import { showToast, showImagePreview } from 'vant';
import 'vant/es/toast/style';
import 'vant/es/image-preview/style';
import { baseUrl } from '@/config/env';
import { getCarouselBannerDetail } from '@/api/enterprise';
const router = useRouter();
const route = useRoute();
const detail = ref({
id: '',
title: '',
source: '',
time: '',
imageUrl: '',
content: '',
});
const loading = ref(false);
const fetchDetail = () => {
const id = route.query.id;
if (!id) {
showToast('缺少详情ID');
router.back();
return;
}
loading.value = true;
getCarouselBannerDetail(
{ id,target_platform:'1' },
(res) => {
loading.value = false;
if (res.code === 200 && res.data) {
detail.value = {
id: res.data.id || '',
title: res.data.title || '',
source: res.data.source || '',
time: res.data.time || '',
imageUrl: res.data.imageUrl || '',
content: res.data.content || '',
};
} else {
showToast(res.message || '获取详情失败');
}
},
(err) => {
loading.value = false;
showToast(err.message || '获取详情失败');
}
);
};
onMounted(() => {
fetchDetail();
});
const onClickLeft = () => {
router.back();
};
const previewImage = () => {
showImagePreview({
images: [baseUrl + detail.value.imageUrl],
startPosition: 0,
});
};
</script>
<style lang="less" scoped>
.banner-detail-page {
display: flex;
flex-direction: column;
height: 100%;
background-color: #fff;
.detail-content {
flex: 1;
overflow-y: auto;
padding: 0.4rem 0.4rem 0.6rem;
}
}
:deep(.van-nav-bar) {
background-color: #fff;
}
:deep(.van-nav-bar__title) {
font-size: 0.45rem;
font-weight: 600;
color: #333;
}
:deep(.van-nav-bar__text) {
font-size: 0.35rem;
color: #333;
}
:deep(.van-nav-bar .van-icon) {
color: #333;
}
.detail-title {
font-size: 0.55rem;
font-weight: bold;
color: #1a1a1a;
line-height: 1.5;
margin-bottom: 0.25rem;
}
.detail-meta {
display: flex;
align-items: center;
margin-bottom: 0.4rem;
.detail-source {
font-size: 0.3rem;
color: #2d94fa;
margin-right: 0.3rem;
}
.detail-time {
font-size: 0.3rem;
color: #999;
}
}
.detail-images {
margin-bottom: 0.4rem;
img {
width: 100%;
border-radius: 0.2rem;
}
}
.detail-body {
font-size: 0.37rem;
color: #333;
line-height: 1.8;
}
</style>

10
zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/home/enterpriseHomeV2.vue

@ -79,17 +79,21 @@ const isLoading = ref(true);
// ========== 轮播图数据 ========== // ========== 轮播图数据 ==========
const bannerList = ref([]); const bannerList = ref([]);
const onBannerClick = (item) => { const onBannerClick = (item) => {
if (item.link) { if (item.id) {
router.push(item.link); router.push({
path: '/enterprise/bannerDetail',
query: { id: item.id },
});
} }
}; };
// 调用轮播图接口并填充 bannerList、兼容多种字段名 // 调用轮播图接口并填充 bannerList、兼容多种字段名
const fetchBannerList = () => { const fetchBannerList = () => {
getCarouselBannerList(null, (res) => { getCarouselBannerList({ target_platform:'1' }, (res) => {
const rows = res?.rows || res?.data?.rows || res?.data || []; const rows = res?.rows || res?.data?.rows || res?.data || [];
if (!Array.isArray(rows)) return; if (!Array.isArray(rows)) return;
bannerList.value = rows.map(item => ({ bannerList.value = rows.map(item => ({
id: item.id || '',
title: item.title || '', title: item.title || '',
image: (import.meta.env.VITE_FILE_URL || '') + (item.imageUrl || ''), image: (import.meta.env.VITE_FILE_URL || '') + (item.imageUrl || ''),
link: item.linkUrl || '', link: item.linkUrl || '',

Loading…
Cancel
Save