图片调整

This commit is contained in:
liuyuan
2025-05-06 15:22:09 +08:00
parent ddbd8e74b6
commit 0bbcd61bde
15 changed files with 815 additions and 60 deletions

View File

@@ -54,23 +54,22 @@
<view class="footer_box">
<view class="footer_item">
<view class="footer_nav_item" @click="selected=1">
<image v-if="selected == 1" class="footer_item_image"
<view class="footer_nav_item">
<image class="footer_item_image"
src="/static/tab/home_active.png" mode="aspectFit"></image>
<image v-else class="footer_item_image" src="/static/tab/home.png" mode="aspectFit">
</image>
<text class="footer_item_text"
:class="[selected == 1 ? 'footer_item_text_active' : '']">首页</text>
<text class="footer_item_text footer_item_text_active">首页</text>
</view>
</view>
<view class="footer_item" @click="toTaihu()">
<view class="footer_nav_item">
<image class="footer_item_image" src="/static/tab/thgy.png" mode="aspectFit"></image>
<text class="footer_item_text">太湖公益</text>
</view>
</view>
<view class="footer_item" @click="toMine()">
<view class="footer_nav_item" @click="selected=4">
<image v-if="selected == 4" class="footer_item_image"
src="/static/tab/mine_active.png" mode="aspectFit"></image>
<image v-else class="footer_item_image" src="/static/tab/mine.png" mode="aspectFit">
</image>
<text class="footer_item_text"
:class="[selected == 4 ? 'footer_item_text_active' : '']">我的</text>
<view class="footer_nav_item">
<image class="footer_item_image" src="/static/tab/mine.png" mode="aspectFit"></image>
<text class="footer_item_text">我的</text>
</view>
</view>
</view>
@@ -81,7 +80,6 @@
export default {
data() {
return {
selected : 1,
cateList: [],
seckillLst: [], //秒杀列表
flashSaleList: [], //欢迎试听
@@ -184,6 +182,12 @@ export default {
url: `/pages/visitor/detail?navTitle=${item.title}&title=${item.title}&id=${item.id}`,
});
},
//太湖公益
toTaihu(){
uni.navigateTo({
url: '/pages/visitor/taihu'
})
},
//我的
toMine(){
uni.navigateTo({

View File

@@ -26,23 +26,22 @@
<view class="footer_box">
<view class="footer_item" @click="toHome()">
<view class="footer_nav_item" @click="selected=1">
<image v-if="selected == 1" class="footer_item_image"
src="/static/tab/home_active.png" mode="aspectFit"></image>
<image v-else class="footer_item_image" src="/static/tab/home.png" mode="aspectFit">
</image>
<text class="footer_item_text"
:class="[selected == 1 ? 'footer_item_text_active' : '']">首页</text>
<view class="footer_nav_item">
<image class="footer_item_image" src="/static/tab/home.png" mode="aspectFit"></image>
<text class="footer_item_text">首页</text>
</view>
</view>
<view class="footer_item" @click="toMine()">
<view class="footer_nav_item" @click="selected=4">
<image v-if="selected == 4" class="footer_item_image"
<view class="footer_item" @click="toTaihu()">
<view class="footer_nav_item" @click="selected=2">
<image class="footer_item_image" src="/static/tab/thgy.png" mode="aspectFit"></image>
<text class="footer_item_text">太湖公益</text>
</view>
</view>
<view class="footer_item">
<view class="footer_nav_item">
<image class="footer_item_image"
src="/static/tab/mine_active.png" mode="aspectFit"></image>
<image v-else class="footer_item_image" src="/static/tab/mine.png" mode="aspectFit">
</image>
<text class="footer_item_text"
:class="[selected == 4 ? 'footer_item_text_active' : '']">我的</text>
<text class="footer_item_text footer_item_text_active">我的</text>
</view>
</view>
</view>
@@ -53,7 +52,6 @@
export default {
data() {
return {
selected : 4,
pageList: [
{
name: "关于我们",
@@ -73,6 +71,12 @@ export default {
url: '/pages/visitor/index'
})
},
//太湖公益
toTaihu(){
uni.navigateTo({
url: '/pages/visitor/taihu'
})
},
//跳转设置
goSetting() {
uni.navigateTo({

538
pages/visitor/taihu.vue Normal file
View File

@@ -0,0 +1,538 @@
<template>
<view class="commonPageBox" style="">
<view class="header_box">
<view class="header_bg" :style="`margin-top:${statusBarHeight * 2}rpx`">
<text class="PM_font" style="color: #d93737;">太湖公益</text>
</view>
</view>
<view
class="main_content_box"
:style="`height:calc(100vh - ${(120 + statusBarHeight) * 2}rpx)`"
>
<view class="curriculum_box cate_box">
<view
:style="`background-image: url('${
currentCate == i ? v.activeImage : v.image
}');color:${currentCate == i ? '#fff' : '#7dc1f0'} !important;`"
class="curriculum_item_box icon_bg"
v-for="(v, i) in curriculumList"
@click="handleClickCurriculum(v, i)"
>
<view
class="curriculum_item_name"
style="margin-left: 100rpx"
:style="`;color:${currentCate == i ? '#fff' : v.color} !important;`"
>{{ v.name }}</view>
</view>
</view>
<view class="flash_sale_box" v-if="currentCate == 0">
<view class="flash_sale_content">
<scroll-view
scroll-y="true"
class="scroll-Y"
style="height: 100%;width: 100%;"
>
<view
class="scroll-view-item flash_sale_content_item"
v-for="(v, i) in goodsList"
@click="goGoodsDetail(v)"
>
<image class="book_image" :src="v.productImages" mode="aspectFit"></image>
<view class="book_content">
<view class="book_name">{{ v.productName }}</view>
<view class="bottom">
<view class="book_price">
<view class="book_price_current">
<text class="price_icon"></text>
<text class="price">{{ v.activityPrice > 0 ? v.activityPrice : v.price }}</text>
</view>
<view class="book_price_old" v-if="v.activityPrice > 0">原价{{ v.price }}</view>
</view>
<view class="sumSales">已售{{ v.sumSales }}</view>
</view>
</view>
</view>
</scroll-view>
</view>
</view>
<view class="flash_sale_box" v-if="currentCate == 1">
<view class="flash_sale_content">
<common-list
style="height: 100%;width: 100%;"
noDataIcon="data"
:isCondition="true"
:dataList="noticeList"
@hancleClick="gotoDetail"
label="title"
>
<template slot="labelSlot" slot-scope="slotProps">
<view class="related_courses_name hidden1">{{ slotProps.row.title }}</view>
</template>
</common-list>
</view>
</view>
</view>
<view class="footer_box" @click.stop="toHome()">
<view class="footer_item">
<view class="footer_nav_item">
<image class="footer_item_image" src="/static/tab/home.png" mode="aspectFit"></image>
<text class="footer_item_text">首页</text>
</view>
</view>
<view class="footer_item" @click.stop="toTaihu()">
<view class="footer_nav_item">
<image class="footer_item_image" src="/static/tab/thgy_active.png" mode="aspectFit"></image>
<text class="footer_item_text footer_item_text_active">太湖公益</text>
</view>
</view>
<view class="footer_item" @click.stop="toMine()">
<view class="footer_nav_item">
<image class="footer_item_image" src="/static/tab/mine.png" mode="aspectFit"></image>
<text class="footer_item_text">我的</text>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
currentCate: 0, //tab
goodsList: [],
noticeList: [],
curriculumList: [
{
name: "太湖商品",
url: "/pages/courseInformation/index/index",
color: "#d93737",
image: require("@/static/icon/taihuicon2.png"),
activeImage: require("@/static/icon/taihuicon2_active.png"),
},
{
name: "太湖之光",
url: "/pages/curriculum/index/index",
color: "#7dc1f0",
image: require("@/static/icon/taihuicon1.png"),
activeImage: require("@/static/icon/taihuicon1_active.png"),
}
],
}
},
onShow() {
this.getGoodsList();
},
methods: {
//获取数据
async getGoodsList() {
this.$http.request({
url: 'visitor/getTaihuWelfareProductList',
method: "POST",
data: {
limit: 10,
page: 1
},
header: {
"Content-Type": "application/json",
},
})
.then(async (res)=> {
if(res.page.records&&res.page.records.length>0){
this.goodsList = res.page.records;
}
});
},
//点击tab
async handleClickCurriculum(v, index) {
this.currentCate = index;
if (index == 0) {
this.goodsList = [];
await this.getGoodsList();
}
if (index == 1) {
this.noticeList = [];
await this.getArticle();
}
this.$forceUpdate();
},
//获取数据
async getArticle() {
this.$http
.request({
url: 'visitor/getTaihuWelfareArticleList',
method: "POST",
data: {
limit: 10,
page: 1
},
header: {
"Content-Type": "application/json",
},
})
.then(async (res) => {
if (res.code == 0 && res.page && res.page.records.length > 0) {
this.noticeList = this.noticeList.concat(res.page.records);
this.$forceUpdate();
}
})
.catch((e) => {
console.log(e);
});
},
//商品信息
goGoodsDetail(v) {
uni.navigateTo({
url: `/pages/visitor/goods?isMiaosha=0&id=${v.productId}`,
});
},
//文章详情
gotoDetail(data) {
uni.navigateTo({
url: `/pages/visitor/taihuDetail?id=${data.id}&type=taihu`,
});
},
//首页
toHome(){
uni.navigateTo({
url: '/pages/visitor/index'
})
},
//太湖公益
toTaihu(){
uni.navigateTo({
url: '/pages/visitor/taihu'
})
},
//我的
toMine(){
uni.navigateTo({
url: '/pages/visitor/mine'
})
}
}
}
</script>
<style lang="scss" scoped>
@import "@/static/mixin.scss";
.header_box {
width: 100%;
height: 260rpx;
display: flex;
justify-content: center;
overflow: hidden;
color: #fff;
font-size: 80rpx;
line-height: 260rpx;
}
.cate_box {
display: flex;
align-items: center;
justify-content: center;
padding: 0 !important;
padding-top: 40rpx;
.icon_bg {
width: 48%;
height: 80rpx;
line-height: 80rpx;
background-repeat: no-repeat;
background-size: 100% 100%;
color: #018f89;
font-size: 48rpx;
}
}
.main_content_box {
width: 100%;
margin-top: 0rpx;
background-color: rgba(255, 255, 255, 0.65);
padding: 27rpx;
// padding-top: 0rpx;
box-sizing: border-box;
// padding-top: 75rpx;
.curriculum_box {
width: 100%;
// height: 198rpx;
display: flex;
align-items: center;
justify-content: space-around;
padding: 0px 37rpx 17rpx;
box-sizing: border-box;
.curriculum_item_box {
height: 100%;
display: flex;
align-items: center;
.curriculum_item_img {
width: 39rpx;
height: 38rpx;
float: left;
}
.curriculum_item_name {
margin-top: -10rpx;
font-family: MicrosoftYaHei;
font-weight: bold;
font-size: 30rpx;
color: #001b73;
margin-left: 21rpx;
// line-height: 46rpx;
}
}
}
.flash_sale_box {
height: calc(100% - 100rpx);
// animation: example1 1s ease-out 0s backwards;
width: 100%;
margin-top: 33rpx;
margin-bottom: 10rpx;
.flash_sale_top {
width: 100%;
height: 61rpx;
background: #b7e0e2;
box-shadow: 0rpx 0rpx 6rpx 0rpx #e9dccc;
border-radius: 7rpx;
padding: 3rpx 18rpx 3rpx 10rpx;
box-sizing: border-box;
display: flex;
align-items: center;
margin-bottom: 21rpx;
.miaoShaIcon {
margin-right: 16rpx;
}
.miaoShaTitle {
margin-right: 25rpx;
font-family: PangMenZhengDaoBiaoTiTiMianFeiBan;
font-weight: normal;
font-size: 35rpx;
color: #018f89;
line-height: 46rpx;
}
.miaoShaContent {
width: calc(100% - 172rpx);
margin-top: 1rpx;
font-family: Microsoft YaHei;
font-weight: 600;
font-size: 21rpx;
color: #018f89;
// line-height: 45rpx;
}
}
}
.flash_sale_content {
width: 100%;
display: flex;
overflow: hidden;
height: 100%;
.flash_sale_content_item {
position: relative;
display: inline-block;
width: 48%;
background-color: #fff;
float: left;
border-radius: 10rpx;
margin-right: 4%;
overflow: hidden;
margin-bottom: 20rpx;
}
.active_price {
position: absolute;
top: 0rpx;
right: 0rpx;
width: 70rpx;
height: 72rpx;
background-repeat: no-repeat;
line-height: 50rpx;
background-size: 100% 100%;
background-image: url("@/static/icon/taihuactiveprice.png");
color: #fff;
font-size: 20rpx;
font-weight: bold;
text-align: center;
// margin-top: -10rpx;
// box-shadow: 0 0 30px 0 rgb(255, 255, 255);
}
.flash_sale_content_item:nth-child(2n) {
margin-right: 0;
}
.book_image {
width: 100%;
height: 192rpx;
// border-radius: 10rpx;
background-color: #e9e9e9;
}
.book_content {
padding: 20rpx 15rpx 10rpx;
}
.book_name {
font-family: MicrosoftYaHei;
font-weight: 600;
font-size: 24rpx;
line-height: 24rpx;
height: 50rpx;
color: #020001;
// text-align: center;
// margin-top: 18rpx;
letter-spacing: 1rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
.scroll-X {
width: 100%;
height: 100%;
white-space: nowrap;
}
.commonPageBox {
background-size: 100% 100%;
background-repeat: no-repeat;
background-image: url("@/static/icon/taihubg.png");
}
.noticeIcon {
width: 20rpx;
}
.u-notice-bar {
background-color: transparent !important;
}
.bottomBox {
width: 100%;
height: 200rpx;
display: flex;
align-items: center;
justify-content: space-between;
.item_img {
width: 48% !important;
height: 100%;
image {
width: 100%;
height: 100%;
}
}
}
.book_price {
display: flex;
align-items: center;
}
.book_price_current {
color: #ff5b36;
font-weight: bold;
.price_icon {
font-size: 22rpx;
}
}
.book_price_old {
color: #9c9a9b;
font-size: 20rpx;
margin-left: 10rpx;
// margin-top: -4rpx;
font-weight: normal;
text-decoration: line-through;
}
.sumSales {
color: #6c6c6c;
font-size: 20rpx;
font-weight: normal;
}
.bottom {
display: flex;
align-items: center;
justify-content: space-between;
}
/deep/.list_item {
background-color: #fff;
display: flex;
align-items: center !important;
border-bottom: none;
padding: 10rpx 0 !important;
padding-right: 10rpx !important;
margin-bottom: 10rpx;
border-radius: 10rpx;
padding-left: 20rpx !important;
font-size: 24rpx;
font-weight: bold;
color: #020001;
.rightArrow {
width: 28rpx;
height: 28rpx;
}
.titleItem {
}
}
/deep/.scroll-view-item:nth-child(2n-1) {
// background-color: #B7E0E2 !important;
background-color: #fff !important;
}
.footer_box {
height: 90rpx;
position: fixed;
bottom: 0;
left: 0;
width: 100%;
display: flex;
box-sizing: content-box;
background: #fff;
padding-top: 5rpx;
}
.footer_item {
position: relative;
flex: 1;
}
.footer_nav_item {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
}
.footer_item_text {
font-size: 12px;
color: #333;
margin-top: 4rpx;
}
.footer_item_text_active {
color: #7dc1f0 !important;
}
.footer_item_image {
width: 24px;
height: 24px;
}
</style>

View File

@@ -0,0 +1,169 @@
<template>
<view class="container_zg">
<z-nav-bar :title="prescriptDetail.title"></z-nav-bar>
<view class="contentBox" v-if="prescriptDetail.type == 0">
<view class="content">
<view class="item title-center">
{{ prescriptDetail.title }}
</view>
<rich-text
v-if="prescriptDetail.content"
class="item"
:nodes="formatRichText(prescriptDetail.content)"
></rich-text>
</view>
</view>
<view class="fullscreen-webview" v-else>
<web-view :src="prescriptDetail.url"> </web-view>
</view>
</view>
</template>
<script>
import $http from "@/config/requestConfig.js";
export default {
data() {
return {
options: {},
playData: {},
prescriptDetail: {
images: [],
},
id: null,
indicatorDots: true,
autoplay: true,
interval: 5000,
duration: 500,
};
},
onLoad(options) {
this.id = options.id;
this.options = options;
},
onShow() {
this.getDetail();
},
methods: {
formatRichText(html) {
//控制图片大小
let newContent = html.replace(/<img[^>]*>/gi, function (match, capture) {
match = match
.replace(/style="[^"]+"/gi, "")
.replace(/style='[^']+'/gi, "");
match = match
.replace(/width="[^"]+"/gi, "")
.replace(/width='[^']+'/gi, "");
match = match
.replace(/height="[^"]+"/gi, "")
.replace(/height='[^']+'/gi, "");
return match;
});
newContent = newContent.replace(
/style="[^"]+"/gi,
function (match, capture) {
match = match
.replace(/width:[^;]+;/gi, "max-width:100%;")
.replace(/width:[^;]+;/gi, "max-width:100%;");
return match;
}
);
newContent = newContent.replace(/<br[^>]*\/>/gi, "");
newContent = newContent.replace(
/\<img/gi,
'<img style="max-width:100%;height:auto;display:inline-block;margin:10rpx auto;"'
);
return newContent;
},
//详情
getDetail() {
$http
.request({
url: 'visitor/getTaihuWelfareArticleDetail',
method: "POST",
data: {id: this.options.id,},
header: {
"Content-Type": "application/json",
},
})
.then((res) => {
if (res.code == 0) {
this.prescriptDetail = res.result;
if (
this.prescriptDetail.content &&
this.prescriptDetail.contentType == 1
) {
this.prescriptDetail.content = res.result.content;
}
}
})
.catch((e) => {
console.log(e);
});
},
}
};
</script>
<style lang="scss" scoped>
.contentBox {
padding-bottom: 20rpx;
}
.contentBoxwebwiew {
height: 100%;
}
.fullscreen-webview {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
.mb-10 {
margin-bottom: 10px;
}
.content {
font-size: 28rpx;
}
.swiper-item {
image {
margin: 0 auto;
height: 250rpx;
}
}
.uni-margin-wrap {
margin-bottom: 20rpx;
padding-top: 20rpx;
background-color: #fff;
}
.container_zg {
padding: 20rpx;
background: #fff;
.item {
padding: 10rpx 20rpx;
padding-bottom: 20rpx;
line-height: 46rpx;
}
.title-center {
text-align: center;
font-size: 32rpx;
font-weight: 700 !important;
}
}
.flexbox {
display: flex;
}
/deep/ .uni-section-header__decoration.line {
background-color: #18bc37;
}
</style>