Merge branch 'dev' into test

This commit is contained in:
lifizer
2024-09-04 17:45:21 +08:00
22 changed files with 1315 additions and 199 deletions
+1
View File
@@ -25,4 +25,5 @@ export default {
@import "./assets/css/base.less";
@import "./assets/css/reset.less";
@import "./assets/css/style.less";
@import "./assets/css/v12-style.less";
</style>
+15
View File
@@ -79,3 +79,18 @@ export function getCountyFamousIndustryProjectFile(param) {
export function getCountyFamousInvestmentFile(param) {
return request.get('/countyFamous/investmentFile', param, { login: true })
}
// 获取千县名品县城村屋列表
export function getCountyFamousVillage(param) {
return request.get('/countyFamous/village', param, { login: true })
}
// 获取千县名品县城村屋详情
export function getCountyFamousVillageDetail(id) {
return request.get('/countyFamous/village/' + id, {}, { login: true })
}
// 获取千县名品县城村屋资讯
export function getCountyFamousVillageNews(param) {
return request.get('/countyFamous/village/news', param, { login: true })
}
+143
View File
@@ -0,0 +1,143 @@
/*================变量==================*/
@primary-color: #C52733;
@dark-color: #333333;
@white-color: #fff;
@colors: #C52733, #333333, #fff, #666, #F0F0F0;
@classnames: primary, dark, white, secondary-dark, grey;
/*=====================================*/
each(@colors, {
@color: extract(@colors, @index);
@classname: extract(@classnames, @index);
.v12-@{classname} {
background-color: @color !important;
background: @color !important;
}
.v12-@{classname}-text{
color: @color !important;
}
.v12-@{classname}-border{
border: 1px solid @color !important;
}
});
/*===================字体大小======================*/
.generateFontSize(@i) when (@i <= 80) {
.v12-font-@{i} {
font-size: @i * 1rpx !important;
}
.generateFontSize(@i + 2);
}
.generateFontSize(0);
.v12-font-bold{
font-weight: bold !important;
}
.generateFontWeight(@n, @i: 100) when (@i <= @n) {
.v12-font-weight-@{i} {
font-weight: @i !important;
}
.generateFontWeight(@n, (@i + 100))
}
.generateFontWeight(900);
/*==================内外边距====================*/
.generateMarginAndPadding(@n, @i:0) when (@i<= @n) {
@baseNum: @i * 8rpx;
.v12-mt-@{i} {
margin-top: @baseNum;
}
.v12-ml-@{i} {
margin-left: @baseNum;
}
.v12-mr-@{i} {
margin-right: @baseNum;
}
.v12-mb-@{i} {
margin-bottom: @baseNum;
}
.v12-ma-@{i} {
margin: @baseNum;
}
.v12-mx-@{i} {
margin: 0 @baseNum;
}
.v12-my-@{i} {
margin: @baseNum 0;
}
.v12-pt-@{i} {
padding-top: @baseNum;
}
.v12-pl-@{i} {
padding-left: @baseNum;
}
.v12-pr-@{i} {
padding-right: @baseNum;
}
.v12-pb-@{i} {
padding-bottom: @baseNum;
}
.v12-pa-@{i} {
padding: @baseNum;
}
.v12-px-@{i} {
padding: 0 @baseNum
}
.v12-py-@{i} {
padding: @baseNum 0
}
.generateMarginAndPadding(@n, (@i + 1))
}
.generateMarginAndPadding(40);
/*==================圆角====================*/
.generateRadius(@n, @i: 0) when (@i <= @n) {
@baseRadius: @i * 1rpx;
.v12-radius-@{i} {
border-radius: @baseRadius
}
.generateRadius(@n, (@i + 1))
}
.generateRadius(100);
/*=========================================*/
/*====================flex 函数表达式=====================*/
.v12-d-flex{
display: flex !important;
}
.v12-flex-column {
flex-direction: column;
}
.v12-align-center{
display: flex;
align-items: center;
}
.v12-align-start{
display: flex;
align-items: start;
}
.v12-align-end{
display: flex;
align-items: end;
}
.v12-justify-center{
display: flex;
justify-content: center;
}
.v12-justify-between{
display: flex;
justify-content: space-between;
}
.v12-d-grid-columns-2 {
display: grid;
grid-template-columns: 1fr 1fr;
}
+4 -4
View File
@@ -1,6 +1,7 @@
<template>
<view class="components-checkbox-icon jc-center ai-center" :class="{'isSelected':isSelected}" @click="change">
<image class="icon-hook" :src="webUrl + '/20240109175325131970.png'" mode="scaleToFill" v-if="isSelected"/>
<!-- <image class="icon-hook" :src="webUrl + '/20240109175325131970.png'" mode="scaleToFill" v-if="isSelected"/> -->
<u-icon name="checkmark-circle-fill" color="#C52733" v-if="isSelected"></u-icon>
</view>
</template>
@@ -43,7 +44,7 @@ export default {
width: 32rpx;
height: 32rpx;
box-sizing: border-box;
border: 2rpx solid #D5D7D8;
border: 2px solid #D5D7D8;
border-radius: 50%;
}
@@ -53,7 +54,6 @@ export default {
}
.isSelected {
border: 3px solid #FD5749;
background: #FD5749;
border: 3px solid #C52733;
}
</style>
+8
View File
@@ -597,6 +597,13 @@
"navigationStyle": "custom"
}
},
{
"path": "views/famousQianxianVillageShop",
"style": {
"navigationBarTitleText": "千县名品",
"navigationStyle": "custom"
}
},
{
"path": "views/famousQianxianInvestment",
"style": {
@@ -829,6 +836,7 @@
},
"tabBar": {
"color": "#8B8F99",
"custom": true,
"selectedColor": "#FF564A",
"borderStyle": "black",
"backgroundColor": "#ffffff",
+73 -31
View File
@@ -41,26 +41,27 @@
class="store-cover"
mode="scaleToFill"
/>
<view class="mer-name">{{ item['merName'] }}</view>
<view class="mer-name v12-font-24 v12-font-bold">{{ item['merName'] }}</view>
</view>
<view
class="flex ai-center hotle-btn"
class="flex ai-center hotle-btn v12-primary-text"
@click="navToStore(item['hotelId'])"
>
进店逛逛
<image
进店逛逛>
<!-- <image
:src="$VUE_APP_RESOURCES_URL + '/20240109234706982937.png'"
style="width: 24rpx;height: 24rpx"
mode="scaleToFill"
/>
/> -->
</view>
</view>
<view class="good-box">
<view
v-for="(good, gIndex) in item['carts']"
:key="gIndex"
class="good flex ai-center"
class="good flex v12-align-start"
>
<view class="v12-align-center">
<CheckboxIcon
:default-state="good['state']"
:mark="[index, gIndex]"
@@ -70,7 +71,7 @@
<image
v-if="good['productInfo']['attrInfo']['image']"
:src="good['productInfo']['attrInfo']['image']"
class="good-cover flex-0"
class="good-cover flex-0 v12-radius-16"
mode="scaleToFill"
@click="navToGood(good)"
/>
@@ -81,9 +82,10 @@
class="good-cover flex-0"
@click="navToGood(good)"
/>
</view>
<view style="width: 100%">
<view
class="one-t"
class="one-t v12-font-28"
@click="navToGood(good)"
>{{ good['productInfo']['storeName'] }}</view>
<view
@@ -92,16 +94,24 @@
>
规格:{{ good['productInfo']['attrInfo']['sku'] }}
</view>
<!-- <view class="v12-mt-1 v12-align-center">
<view class="v12-primary-text v12-primary-border v12-radius-8 v12-font-24 v12-px-1">
<text>券</text>
</view>
<view class="v12-primary-text v12-primary-border v12-radius-8 v12-font-24 v12-px-1">
<text>满100-30</text>
</view>
</view> -->
<view
class="flex jc-between ai-center"
style="width: 100%;margin-top: 26rpx;"
style="width: 100%;margin-top: 4rpx;"
>
<view
style="color:#E92727;font-size: 32rpx;"
class="v12-font-bold v12-primary-text"
@click="navToGood(good)"
>
<text class="bold" style="font-size: 24rpx">¥</text>
{{ good['truePrice'] }}
<text class="bold v12-font-22">¥</text>
<text class="v12-font-36">{{ good['truePrice'] }}</text>
</view>
<u-number-box
:value="good.cartNum"
@@ -113,15 +123,15 @@
@change="e => changeNumHandle(index, gIndex, good, e)"
>
<template v-slot:minus>
<view class="num-btn flex jc-center ai-center">
<view class="v12-minus-btn v12-font-bold flex jc-center ai-center">
<u-icon name="minus" size="12" color="#FFFFFF"/>
</view>
</template>
<template v-slot:input>
<view class="num-input tc">{{ good['cartNum'] }}</view>
<view class="num-input tc v12-num-input">{{ good['cartNum'] }}</view>
</template>
<template v-slot:plus>
<view class="num-btn flex jc-center ai-center">
<view class="v12-plus-btn v12-font-bold flex jc-center ai-center v12-primary">
<u-icon name="plus" size="12" color="#FFFFFF"/>
</view>
</template>
@@ -139,13 +149,15 @@
:mark="[-1]"
@change="onChange"
/>
<text style="color:#666666;font-size: 32rpx">全选({{ selectCount }})</text>
<text class="v12-dark-text v12-font-32 v12-font-bold">全选({{ selectCount }})</text>
</view>
<view class="flex ai-center">
<view style="margin-right: 20rpx;color:#666666;font-size: 32rpx">合计:
<text class="bold" style="color:#E92727">¥{{ total }}</text>
<view >
<text class="v12-font-24 v12-dark-text v12-font-weight-550"> 合计:</text>
<text class="v12-font-22 v12-primary-text v12-font-bold">¥</text>
<text class="v12-font-26 v12-primary-text v12-font-bold">{{ total }}</text>
</view>
<view class="btn-submit bold flex jc-center ai-center" @click="submit">结算</view>
<view class="btn-submit v12-mx-3 bold flex jc-center ai-center v12-radius-80 v12-primary" @click="submit">结算</view>
</view>
</view>
<view
@@ -550,6 +562,36 @@ export default {
</script>
<style scoped lang="less">
.v12-minus-btn{
border-radius: 28rpx 0rpx 0rpx 28rpx;
border: 1px solid #E6E6E6;
background-color: rgba(208,208,208,0.39);
height: 40rpx;
width: 40rpx;
padding: 0 20rpx;
font-weight: bold;
}
.v12-plus-btn{
border-radius: 0rpx 28rpx 28rpx 0rpx;
border: 1px solid #C52733;
background-color: #C52733;
height: 40rpx;
width: 40rpx;
padding: 0 20rpx;
font-weight: bold;
}
.v12-num-input{
height: 40rpx;
// width: 40rpx;
border: 1px solid #E6E6E6;
line-height: 40rpx;
font-weight: bold;
font-size: 28rpx;
color: #333;
display: flex;
align-items: center;
justify-content: center;
}
view {
box-sizing: border-box;
}
@@ -593,10 +635,10 @@ view {
margin-top: 24rpx;
.good-cover {
width: 160rpx;
height: 160rpx;
width: 140rpx;
height: 140rpx;
margin-right: 16rpx;
border-radius: 8rpx;
border-radius: 16rpx;
}
.one-t {
@@ -609,20 +651,20 @@ view {
.sku {
display: inline-flex;
margin-top: 12rpx;
margin: 4rpx;
padding: 10rpx 20rpx;
border-radius: 22rpx;
background: #FDF1F3;
color: #999999;
font-size: 28rpx;
border-radius: 60rpx;
background: rgba(240,240,240,0.6);
color: #666666;
font-size: 24rpx;
}
.num-btn {
width: 40rpx;
height: 40rpx;
background: rgba(236, 236, 238, 1);
border: 2px solid rgba(236, 236, 238, 1);
border-radius: 50%;
// border: 2px solid rgba(236, 236, 238, 1);
border-radius: 40rpx;
}
.num-input {
@@ -644,8 +686,8 @@ view {
.btn-submit {
width: 196rpx;
height: 100rpx;
background: #FD5749;
height: 64rpx;
background: #C52733;
color: #FFFFFF;
font-size: 32rpx;
}
+1 -1
View File
@@ -260,7 +260,7 @@ export default {
.body {
padding: 20rpx 32rpx;
background: #F9F9F9;
background: #f5f5f5;
}
.city-box {
+5 -3
View File
@@ -207,7 +207,7 @@
</view>
<!-- v9 老用户弹窗 -->
<u-popup
:show="isOldUser && oldUserPopup.image"
:show="isOldUser && oldUserPopup.image && lotteryCanDraw"
mode="center"
bgColor="transparent"
>
@@ -294,11 +294,12 @@ export default {
// 节日专题
contentFestival: {},
pageKeyId: Object.freeze('appIndex'),
scrollTop: 0
scrollTop: 0,
lotteryCanDraw: false
}
},
onLoad() {
uni.hideTabBar()
// uni.hideTabBar()
const _this = this
_this.init()
uni.getSystemInfo({
@@ -371,6 +372,7 @@ export default {
_this.$set(_this, 'contentFestival', data.contentFestivalV2)
_this.bastLeftList = []
_this.bastRightList = []
_this.lotteryCanDraw = data.lotteryCanDraw
for (let i = 0; i < data.bastList.length; i++) {
if (i % 2 === 0) {
// 店铺排名
+13 -1
View File
@@ -376,6 +376,7 @@
</view>
</view>
</view>
<ProductWindow
v-on:changeFun="changeFun"
:attr="attr"
@@ -663,8 +664,18 @@ export default {
},
methods: {
goRoom() {
const params = {
goodsId: this.productId,
goodsName: this.attr.productSelect.store_name,
skuStr: this.attrValue,
price: this.attr.productSelect.price,
seckillId: this.activityId,
cover: this.attr.productSelect.image,
goodsData: '',
seckillData: ''
}
uni.navigateTo({
url: `/pkg_common/views/room?id=${this.storeInfo.merId}&name=${this.storeInfo.merName}`
url: `/pkg_common/views/room?id=${this.storeInfo.merId}&name=${this.storeInfo.merName}&params=${JSON.stringify(params)}`
})
},
goodsDetail: function (item) {
@@ -1095,6 +1106,7 @@ export default {
if (typeof opt !== "object") opt = {};
let action = opt.action || "";
let value = opt.value === undefined ? "" : opt.value;
this.cart_num = 1
this[action] && this[action](value);
},
+16 -3
View File
@@ -203,13 +203,18 @@
</view>
</view>
<!-- 我的服务结束 -->
<view v-if="bannerBgUrl" class="banner-wrap">
<image
<view v-if="userCenterCarouselShow === 1 && userCenterCarousel.length > 0" class="banner-wrap">
<!-- <image
:src="bannerBgUrl"
mode="widthFix"
class="bg"
@click="bannerClickHandle"
/>
/> -->
<u-swiper
:list="userCenterCarousel"
keyName="image"
@click="handleSwiper"
></u-swiper>
</view>
</view>
</view>
@@ -264,6 +269,8 @@ export default {
mixins: [pageListenMixins],
data() {
return {
userCenterCarousel: [],
userCenterCarouselShow: 0,
statusBarHeight: uni.getSystemInfoSync().statusBarHeight,
webUrl: this.$VUE_APP_RESOURCES_URL,
isWeixin: false,
@@ -372,6 +379,10 @@ export default {
},
methods: {
...mapMutations(['updateAuthorizationPage']),
handleSwiper(e) {
const url = this.userCenterCarousel[e].url
this.linkTo(url)
},
goRoomLogs() {
uni.navigateTo({
url: '/pkg_common/views/roomLogs'
@@ -447,6 +458,8 @@ export default {
getUserCenterBanner().then(res => {
const { success, data } = res
if (success) {
this.userCenterCarousel = data.userCenterCarousel || []
this.userCenterCarouselShow = data.userCenterCarouselShow
if (data.userCenterBanner) {
this.bannerBgUrl = data.userCenterBanner
this.userCenterBannerUrl = data.userCenterBannerUrl || ''
+8 -1
View File
@@ -229,7 +229,8 @@ export default {
'qrcode': '',
'tips': '',
'type': ''
}
},
loading: false
}
},
onShow() {
@@ -330,6 +331,9 @@ export default {
})
},
submit() {
if(this.loading) {
return
}
if (!this.innApplyInfo.logo) {
this.$dialog.error('请上传店铺LOGO')
return
@@ -372,6 +376,7 @@ export default {
if (param.coverType === 2) {
param.cover = param.coverVideo
}
this.loading = true
uni.showLoading()
postHotelInfoEdit(param).then((res) => {
uni.hideLoading()
@@ -380,11 +385,13 @@ export default {
content: '修改成功!',
showCancel: false,
success: () => {
this.loading = false
uni.navigateBack()
}
})
}).catch((err) => {
uni.hideLoading()
this.loading = false
uni.showToast({
title: err.msg + '',
icon: 'none',
+40 -11
View File
@@ -13,6 +13,7 @@
<view class="msg" v-if="item.msg_type===1">
<image class="img" :src="item.msg_content" @click="preview(item.msg_content)"></image>
</view>
</view>
</view>
@@ -23,13 +24,31 @@
<view class="msg" v-if="item.msg_type===1">
<image class="img" :src="item.msg_content" @click="preview(item.msg_content)"></image>
</view>
<view class="msg v12-d-flex" style="box-sizing: content-box" v-if="item.msg_type===2">
<view class="goods-logo">
<image class="img v12-radius-8" :src="params.cover"></image>
</view>
<view class="conent v12-ml-3 v12-justify-between v12-flex-column">
<view class="">
<view class="goodsName one-t v12-font-26">
{{ params.goodsName }}
</view>
<view class="goodsSku v12-secondary-dark-text v12-font-22 v12-font-weight-400 one-t">
{{ params.skuStr }}
</view>
</view>
<view class="price v12-primary-text v12-font-24">
{{ params.price }}
</view>
</view>
</view>
</view>
<image class="cover" :src="item.header || webUrl+'/20221114155314348118.png'"/>
</view>
</view>
</view>
<view class="footer flex jc-between ai-end">
<view class="footer flex jc-between ai-end v12-align-center">
<image :src="webUrl+'/20221014095236624035.png'" @click="getUploadToken"></image>
<view class="input-box">
<textarea
@@ -43,7 +62,7 @@
@confirm="userSend"
/>
</view>
<button @click="userSend">发送</button>
<button @click="userSend" class="v12-primary">发送</button>
</view>
</view>
</template>
@@ -67,12 +86,14 @@ export default {
roomId: null, //房间ID
content: "", //消息内容
list: [], //消息列表
list: [], //消息列表,
params: {}
}
},
onLoad(options) {
this.storeId = options.id;
this.merName = options.name;
this.params = options.params && JSON.parse(options.params) || {}
if (this.merName!="undefined" && this.merName!="null") {
uni.setNavigationBarTitle({
title: this.merName
@@ -165,6 +186,11 @@ export default {
console.log('WebSocket连接已打开!', res);
this.socketOpen = true;
this.createRoom();
if(Object.values(this.params).length > 0) {
this.content = JSON.stringify(this.params)
// this.list.push(this.params)
this.userSend(2)
}
});
uni.onSocketError(err => {
@@ -185,7 +211,7 @@ export default {
this.content = event.detail.value;
},
userSend() {
userSend(msg_type) {
if (this.content.length === 0) return;
let param = {
@@ -195,7 +221,7 @@ export default {
username: this.userInfo.nickname,
header: this.userInfo.avatar,
room_id: this.roomId,
msg_type: 0,
msg_type: msg_type === 2 ? msg_type : 0,
content: this.content,
token: this.token
}
@@ -204,6 +230,7 @@ export default {
},
createRoom() {
let param = {
type: "join",
user_type: 0,
@@ -265,6 +292,9 @@ export default {
</script>
<style scoped lang="less">
.goodsName,.goodsSku{
max-width: 400rpx;
}
.common-room {
min-height: 100vh;
background: #F5F5F5;
@@ -314,8 +344,8 @@ export default {
word-wrap: break-word;
.img {
max-width: 214rpx;
max-height: 214rpx;
max-width: 140rpx;
max-height: 140rpx;
vertical-align: middle;
}
}
@@ -334,9 +364,9 @@ export default {
bottom: 0;
width: 100vw;
padding: 30rpx 32rpx 28rpx;
border-radius: 24rpx 24rpx 0 0;
border-radius: 40rpx 40rpx 0rpx 0rpx;
background: #FFFFFF;
height: 160rpx;
image {
width: 64rpx;
height: 64rpx;
@@ -359,9 +389,8 @@ export default {
button {
width: 120rpx;
height: 64rpx;
margin: 0;
border-radius: 32rpx;
border-radius: 100rpx;
background: #FD574B;
font-size: 28rpx;
color: #FFFFFF;
+24 -5
View File
@@ -8,9 +8,9 @@
placeholder="请输入关键词县名~"
placeholder-style="color:#949494"
class="inp"
@confirm="getListReq"
@confirm="handlerSearch"
>
<view class="btn" @click="getListReq">
<view class="btn" @click="handlerSearch">
搜索
<image
:src="webUrl + '/home/icon-search4.png'"
@@ -47,6 +47,7 @@
</view>
<view
class="toggle-wrap"
v-if="list.length > 6"
@click="toggleStatusHandle"
>
<view v-if="!toggleStatus">
@@ -75,7 +76,9 @@
>
<view class="name">
<view class="txt">
<text class="txt-inner">
{{ item.provinceName }}
</text>
</view>
</view>
<view v-if="item.intro" class="desc">
@@ -153,6 +156,7 @@
</view>
</view>
<image
v-if="!searchEvent"
:src="webUrl + '/home/no-data-bg.png'"
mode="widthFix"
class="loadend"
@@ -160,7 +164,7 @@
</view>
<image
v-if="list.length === 0"
:src="webUrl + '/20231023131208675588.png'"
:src="webUrl + '/orderIcon/nodata.png'"
class="img-nodata"
mode="scaleToFill"
/>
@@ -198,7 +202,8 @@ export default {
toggleStatus: false,
isLoad: false,
list: [],
pageKeyId: Object.freeze('countyFamousIndex')
pageKeyId: Object.freeze('countyFamousIndex'),
searchEvent: false
}
},
computed: mapGetters(['userInfo', 'isLogin']),
@@ -226,6 +231,14 @@ export default {
this.init()
},
methods: {
handlerSearch() {
if(this.keyword) {
this.searchEvent = true
} else {
this.searchEvent = false
}
this.getListReq()
},
init() {
// 分享数据
famousShareImage().then(res => {
@@ -296,7 +309,7 @@ export default {
.county-index {
position: relative;
min-height: 100vh;
background-color: #fff;
background-color: #f0f0f0;
.search-wrap {
padding: 20rpx 50rpx;
background-color: #fff;
@@ -409,12 +422,18 @@ export default {
position: absolute;
bottom: 0;
left: 0;
z-index: 1;
width: 100%;
height: 6rpx;
border-radius: 6rpx;
content: " ";
background: linear-gradient(90deg, #C52733 0%, rgba(202,56,67,0.92) 51%, rgba(255,255,255,0) 100%);
}
.txt-inner {
position: relative;
z-index: 2;
font-weight: bold;
}
}
}
.desc {
+6 -5
View File
@@ -1,7 +1,7 @@
<template>
<view class="county-index">
<view class="county-index v12-grey">
<view v-if="isLoad">
<view class="top-img" @click="gotoQianxianShop">
<view class="top-img v12-white" @click="gotoQianxianShop">
<image
:src="countyFamous.cover"
class="img"
@@ -10,7 +10,7 @@
<view class="info-wrap">
<view class="name">
{{ countyFamous.countyName }}
<view v-if="countyFamous.content" class="content">
<view v-if="countyFamous.content" class="content one-t">
{{ countyFamous.content }}
</view>
</view>
@@ -140,11 +140,12 @@ export default {
.county-index {
position: relative;
min-height: 100vh;
background-color: #fff;
background-color: #f0f0f0;
.top-img {
position: relative;
z-index: 5;
padding: 21rpx;
background-color: #fff;
.img {
display: block;
width: 100%;
@@ -163,6 +164,7 @@ export default {
margin: 0 0 0 8rpx;
font-size: 24rpx;
color: #aaa;
flex: 1;
}
}
.intro {
@@ -175,7 +177,6 @@ export default {
}
}
.list-wrap {
background-color: #F0F0F0;
.loadend {
width: 100%;
}
+52 -12
View File
@@ -1,8 +1,19 @@
<template>
<view class="list-page">
<view class="v12-mb-3">
<u-search
placeholder="请输入关键词查询"
v-model="keyword"
shape="round"
:show-action="false"
height="72rpx"
@search="handleSearch"
bg-color="#fff">
</u-search>
</view>
<view v-if="isLoad" class="file-list">
<view
v-for="(file, fileIndex) in list"
v-for="(file, fileIndex) in currentList"
:key="fileIndex"
class="file-item"
@click="fileItemClick(file)"
@@ -15,18 +26,17 @@
class="icon"
/>
</view>
<image
:src="webUrl + '/home/no-data-bg.png'"
mode="widthFix"
class="loadend"
/>
<view v-if="currentList.length === 0" class="no-data-txt">
暂无数据~
</view>
</view>
<goo-skeleton v-else />
</view>
</template>
<script>
import {
getCountyFamousInvestmentFile
getCountyFamousInvestmentFile,
getCountyFamousIndustryProjectFile
} from '@/api/qianxian'
import { pageListenMixins } from '@/mixins/pageListenMixins'
export default {
@@ -37,24 +47,48 @@ export default {
webUrl: this.$VUE_APP_RESOURCES_URL,
isLoad: false,
pageKeyId: '',
list: []
list: [],
keyword: '',
currentList: []
}
},
onLoad(options) {
const id = options.id
this.getListReq(id)
const type = options.type || 'investment'
const title = options.title || ''
if (title) {
uni.setNavigationBarTitle({ title })
}
this.getListReq(id, type)
},
methods: {
getListReq(id) {
getCountyFamousInvestmentFile({
handleSearch() {
this.currentList = this.list.filter(item => item.title.indexOf(this.keyword) > -1)
},
getListReq(id, type) {
let reqFn = null
let params = {}
if (type === 'investment') {
reqFn = getCountyFamousInvestmentFile
params = {
countyFamousDataId: id,
page: 1,
limit: 9999
}).then(res => {
}
} else {
reqFn = getCountyFamousIndustryProjectFile
params = {
industryProjectId: id,
page: 1,
limit: 9999
}
}
reqFn(params).then(res => {
const { success, data } = res
if (success) {
this.isLoad = true
this.list = data.records || []
this.currentList = [...this.list]
}
})
},
@@ -109,5 +143,11 @@ export default {
.loadend {
width: 100%;
}
.no-data-txt {
text-align: center;
line-height: 200rpx;
color: #999;
font-size: 36rpx;
}
}
</style>
+193 -16
View File
@@ -44,8 +44,8 @@
class="city-section flex jc-end ai-center"
>
<image
:src="webUrl + '/20210807215539157727.png'"
style="width: 22rpx;height: 22rpx;margin-right: 8rpx;"
:src="webUrl + '/page/qianxian/icon-09.png'"
style="width: 28rpx;height: 28rpx;margin-right: 8rpx;"
/>
<text class="one-t" style="font-size: 24rpx;color: #fff;">{{ inn.cityName }}</text>
</view>
@@ -57,7 +57,7 @@
<image :src="webUrl + '/20230609145651814148.png'" v-else/>
</view>
<view class="a3 flex jc-between ai-end" style="width: 100%">
<view class="inn-owner" style="flex-grow: 1;">{{ inn.name }}</view>
<view class="inn-owner v12-font-36 v12-dark-text one-t v12-font-bold" style="flex-grow: 1;width: 80rpx">{{ inn.name }}</view>
<view class="flex ai-center zan-favorite-wrap">
<view class="zan-box flex flex-0 ai-end" @click="zanInn">
<template v-if="isLike">
@@ -240,7 +240,7 @@
<view class="title">
图片
</view>
<view class="pic-list">
<view class="pic-list v12-d-grid-columns-2">
<view
v-for="(item, index) in inn.countyImages"
:key="index"
@@ -360,6 +360,7 @@
<image
:src="item.image"
class="img"
@click="gotoInvestment(item.title, 'project', item.id)"
/>
</view>
</view>
@@ -388,7 +389,7 @@
{{ tab.name }}
</view>
</view>
<view class="file-wrap">
<view class="file-wrap" :class="[{'v12-align-center': investmentFileList.length === 0}, {'v12-justify-center': investmentFileList.length === 0}]">
<view v-if="investmentFileList.length > 0" class="file-list">
<view class="list-cont">
<view
@@ -412,11 +413,77 @@
</view>
</view>
<view v-if="investmentFileList.length > 0" class="more-btn-wrap">
<view class="more-btn" @click="gotoInvestment">
<view class="more-btn" @click="gotoInvestment('', 'investment')">
更多政策
</view>
</view>
</view>
<view v-if="industryTabIndex === 2">
<view class="card-wrap">
<image
:src="webUrl + '/page/qianxian/card-bg3.png'"
class="bg bg3"
/>
<view class="card-cont">
<view class="tab-wrap">
<view
v-for="(tab, tabIndex) in industryTab"
:key="tabIndex"
:class="industryTabIndex === tabIndex ? 'active' : ''"
class="item"
@click="industryTabItemClick(tabIndex)"
>
<image
:src="webUrl + tab.icon"
class="icon"
/>
{{ tab.name }}
</view>
</view>
<view class="village-wrap">
<view v-if="villageList.length > 0" class="village-list">
<view
v-for="(village, villageIndex) in villageList"
:key="villageIndex"
class="village-item v12-white"
@click="villageItemClick(village)"
>
<view class="img-wrap">
<image
:src="village.cover + (village.coverType === 2 ? '?vframe/jpg/offset/1' : '')"
class="img"
/>
<view class="location">
<image
:src="webUrl + '/page/qianxian/icon-08.png'"
class="icon"
/>
<view class="addr one-t">
{{ village.address }}
</view>
</view>
</view>
<view class="info">
<view class="intro more-t">
{{ village.intro }}
</view>
<view class="name-wrap">
<image
:src="village.logo"
class="logo"
/>
<view class="name one-t">
{{ village.name }}
</view>
</view>
</view>
</view>
</view>
<view v-else class="no-data">暂无村屋出租</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
@@ -458,7 +525,8 @@ import {
postCountyFamousNewsView,
getCountyFamousIndustry,
getCountyFamousIndustryProject,
getCountyFamousInvestmentFile
getCountyFamousInvestmentFile,
getCountyFamousVillage
} from '@/api/qianxian'
import {formatDateTime} from '@/utils'
import {getUrlParam} from '@/utils/common.js'
@@ -518,9 +586,12 @@ export default {
industryProjectList: [],
// 招商政策文件列表
investmentFileList: [],
// 村屋列表
villageList: [],
industryTab: [
{ name: '产业项目', icon: '/page/qianxian/icon-04.png' },
{ name: '招商政策', icon: '/page/qianxian/icon-03.png' }
{ name: '招商政策', icon: '/page/qianxian/icon-03.png' },
{ name: '村屋出租', icon: '/page/qianxian/icon-07.png' }
],
industryTabIndex: 0
}
@@ -581,6 +652,16 @@ export default {
this.investmentFileList = data.records || []
}
})
getCountyFamousVillage({
countyFamousDataId: this.id,
page: 1,
limit: 9999
}).then(res => {
const { success, data } = res
if (success) {
this.villageList = data.records || []
}
})
},
getShopDetailReq() {
const _this = this
@@ -625,7 +706,7 @@ export default {
}).then(res => {
const { data } = res
_this.loading = false
_this.infoArray.push.apply(_this.infoArray, data.records.map((info) => {
_this.infoArray.push.apply(_this.infoArray, _this.toTop(data.records).map((info) => {
var pt = info.createTime.replace(/-/g, "/")
info.year = formatDateTime(pt, 'yyyy')
info.monthDay = formatDateTime(pt, 'MM/dd')
@@ -633,12 +714,18 @@ export default {
info.showMore = false
return info
}))
// console.log(this.toTop(_this.infoArray));
}).finally(() => {
_this.loading = false
_this.isLoadInfoListSuccess = true
uni.stopPullDownRefresh()
})
},
toTop(arr) {
return arr.sort((a, b) => {
return b.isTop - a.isTop
})
},
// 攻略
getGuideReq() {
const _this = this
@@ -863,8 +950,11 @@ export default {
}
})
},
gotoInvestment() {
uni.navigateTo({ url: `/pkg_product/views/famousQianxianInvestment?id=${this.id}` })
gotoInvestment(title = '', type = 'investment', id = '') {
uni.navigateTo({ url: `/pkg_product/views/famousQianxianInvestment?id=${id || this.id}&title=${title}&type=${type}` })
},
villageItemClick(item) {
uni.navigateTo({ url: `/pkg_product/views/famousQianxianVillageShop?id=${item.id}` })
}
}
}
@@ -1275,12 +1365,12 @@ export default {
}
}
.pic-list {
display: flex;
flex-wrap: wrap;
// display: flex;
// flex-wrap: wrap;
width: 100%;
padding: 30rpx 0 0 0;
.item {
width: calc(50% - 10rpx);
// width: calc(50% - 10rpx);
margin: 0 20rpx 20rpx 0;
.img {
display: block;
@@ -1330,12 +1420,15 @@ export default {
z-index: 2;
display: block;
width: 750rpx;
height: 530rpx;
height: 518rpx;
}
.bg3 {
height: 1159rpx;
}
.card-cont {
position: absolute;
z-index: 5;
top: 30rpx;
top: 20rpx;
left: 30rpx;
right: 30rpx;
.tab-wrap {
@@ -1417,6 +1510,90 @@ export default {
}
}
}
.village-wrap {
height: 980rpx;
padding: 16rpx 0 0 0;
overflow-y: auto;
}
.village-list {
display: flex;
flex-wrap: wrap;
width: 660rpx;
margin: 0 auto;
.village-item {
width: 320rpx;
height: 480rpx;
margin: 0 20rpx 20rpx 0;
border-radius: 16rpx;
background-color: #f0f0f0;
&:nth-child(2n) {
margin-right: 0;
}
.img-wrap {
position: relative;
.img {
display: block;
width: 320rpx;
height: 320rpx;
border-radius: 16rpx;
}
.location {
position: absolute;
bottom: 0;
left: 0;
right: 0;
z-index: 5;
display: flex;
align-items: center;
height: 60rpx;
padding: 0 20rpx;
border-radius: 0 0 16rpx 16rpx;
font-size: 28rpx;
line-height: 36rpx;
color: #fff;
background: linear-gradient(180deg, rgba(0,0,0,0) 0%, #000000 100%);
.icon {
display: block;
width: 28rpx;
height: 28rpx;
margin: 0 8rpx 0 0;
}
.addr {
width: calc(100% - 40rpx);
}
}
}
.info {
padding: 6rpx 8rpx 16rpx 8rpx;
.intro {
height: 80rpx;
line-height: 40rpx;
font-size: 30rpx;
font-weight: bold;
color: #333;
margin-top: 8rpx;
}
.name-wrap {
display: flex;
align-items: center;
.logo {
display: block;
width: 48rpx;
height: 48rpx;
margin: 0 8rpx 0 0;
border-radius: 50%;
}
.name {
width: calc(100% - 60rpx);
padding: 10rpx 0 0 0;
font-size: 28rpx;
line-height: 48rpx;
color: #999;
}
}
}
}
}
}
}
.project-wrap {
+13 -73
View File
@@ -8,13 +8,17 @@
transparent="auto"
color='#ffffff'
/>
<view v-if="isLoad">
<view v-if="isLoad" class="v12-font-0">
<view
v-for="(groupItem, groupIndex) in groupList"
:key="groupIndex"
class="page-wrap"
>
<image
:src="templateProperties.page1Image"
:src="groupItem.topImage"
class="top-img"
mode="widthFix"
/>
<view class="page-wrap">
<view class="page-2">
<swiper
class="swiper"
@@ -23,52 +27,7 @@
:interval="5000"
>
<swiper-item
v-for="(swiperItem, swiperIndex) in templateProperties.page2Images"
:key="swiperIndex"
>
<image
:src="swiperItem"
mode="scaleToFill"
class="swiper-img"
/>
</swiper-item>
</swiper>
</view>
</view>
<!-- 第三页 -->
<view class="page-wrap">
<view class="page-5">
<image
v-for="(item, index) in templateProperties.page3Links"
:key="index"
:src="item.image"
class="shop-img"
mode="widthFix"
@click="linkToShop(item)"
/>
</view>
</view>
<!-- 第四页 -->
<view class="page-wrap">
<view class="page-4">
<image
:src="templateProperties.page4Image"
class="section-bg"
mode="widthFix"
/>
</view>
</view>
<!-- 第五页 -->
<view class="page-wrap">
<view class="page-2">
<swiper
class="swiper"
circular
autoplay
:interval="5000"
>
<swiper-item
v-for="(swiperItem, swiperIndex) in templateProperties.page5Images"
v-for="(swiperItem, swiperIndex) in groupItem.images"
:key="swiperIndex"
>
<image
@@ -81,7 +40,7 @@
</view>
<view class="page-5">
<image
v-for="(item, index) in templateProperties.page5Links"
v-for="(item, index) in groupItem.links"
:key="index"
:src="item.image"
class="shop-img"
@@ -106,14 +65,7 @@ export default {
return {
isLoad: false,
pageKeyId: '',
templateProperties: {
page1Image: '',
page2Images: [],
page3Links: [],
page4Image: '',
page5Images: '',
page5Links: []
}
groupList: []
}
},
onLoad(options) {
@@ -128,7 +80,7 @@ export default {
const { success, data } = res
if (success) {
this.isLoad = true
this.templateProperties = data || {}
this.groupList = data.group || []
}
})
},
@@ -150,32 +102,20 @@ export default {
}
.page-wrap {
position: relative;
.page-2 {
width: 100%;
height: 450rpx;
font-size: 0;
.swiper {
width: 100%;
height: 100%;
height: 450rpx;
.swiper-img {
display: block;
width: 100%;
height: 100%;
}
}
}
.page-4 {
.section-bg {
display: block;
width: 100%;
height: auto;
}
}
.page-5 {
.shop-img {
display: block;
width: 100%;
height: 300rpx;
}
}
}
</style>
@@ -0,0 +1,653 @@
<template>
<view class="container">
<hx-navbar
:fixed="true"
:background-color="[[13,197,197],[13,197,197]]"
:pageScroll.sync="scrollData"
statusBarFontColor="#ffffff"
barPlaceholder="hidden"
transparent="auto"
color='#ffffff'
/>
<view v-if="isLoad">
<view class="cover-box">
<image
v-if="inn.coverType === 1"
:src="inn.cover"
class="full-img"
mode="widthFix"
/>
<view
v-if="inn.coverType === 2"
:style="{
'width': videoStyle.width,
'height': videoStyle.height
}"
class="video-box"
>
<video
:src="inn.cover"
:autoplay="true"
:controls="true"
:loop="false"
object-fit="contain"
play-btn-position="center"
class="video"
/>
</view>
</view>
<view class="innInfoWrap">
<view class="bg-color">
<view class="box-mask flex jc-between ai-end">
<view
v-if="inn.cityName"
class="city-section flex jc-end ai-center"
>
<image
:src="webUrl + '/page/qianxian/icon-09.png'"
style="width: 28rpx;height: 28rpx;margin-right: 8rpx;"
/>
<text class="one-t" style="font-size: 24rpx;color: #fff;">{{ inn.cityName }}</text>
</view>
</view>
</view>
<view class="body-cont flex ai-end">
<view class="inn-logo flex-0">
<image :src="inn.logo" v-if="inn.logo"></image>
<image :src="webUrl + '/20230609145651814148.png'" v-else/>
</view>
<view class="a3 flex" style="width: 100%">
<view class="inn-owner one-t">{{ inn.name }}</view>
<view class="inn-owner-desc">
{{ inn.contact }}/联系人
</view>
</view>
</view>
</view>
<view class="inn-signature-wrap">
<view class="triangle"></view>
<view class="inn-signature">
{{ inn.intro }}
</view>
</view>
<view v-if="inn.name" class="map-wrapper">
<view class="map-cont">
<map
:longitude="inn.longitude"
:latitude="inn.latitude"
style="width: 750rpx;height: 300rpx;"
/>
</view>
<view class="bg"></view>
<view class="map-info">
<view class="map-info-hd">
<image :src="webUrl + '/page/qianxian/icon-location.png'" class="icon" />
</view>
<view class="map-info-bd more-t">
{{ inn.address }}
</view>
<view class="map-info-ft flex">
<view class="item" @click="showLocation">
<image :src="webUrl + '/page/qianxian/icon-addr.png'" class="img" />
<view>导航</view>
</view>
<view class="item" @click="call">
<image :src="webUrl + '/page/qianxian/icon-phone.png'" class="img" />
<view>客服</view>
</view>
</view>
</view>
</view>
<view class="top-tab acea-row row-middle row-center">
<view
v-for="(item, index) in tabList"
:key="index"
class="tab"
@click="changeTab(item.value)"
>
<view
:class="activeIndex === index ? 'active' : ''"
class="tab-item"
>
{{ item.text }}
</view>
</view>
</view>
<view>
<!-- 村屋详情 -->
<view
v-if="activeIndex === 0"
class="info-section"
>
<view v-if="inn.images" class="pic-wrap">
<view
v-for="(item, index) in inn.images"
:key="index"
class="pic-item"
@click="showPic(index)"
>
<image :src="item" class="img" />
</view>
</view>
<view v-else class="tab-no-data">暂无图片~</view>
</view>
<!-- 村屋介绍 -->
<view
v-if="activeIndex === 1"
class="info-section"
>
<view class="content-html-wrap">
<rich-text :nodes="inn.content" />
</view>
</view>
<!-- 村屋资讯 -->
<view
v-if="activeIndex === 2"
class="info-section"
>
<view v-if="isLoadInfoListSuccess">
<view v-if="infoArray.length > 0" class="info-wrapper">
<view class="info-list">
<view
v-for="(item, index) in infoArray"
:key="index"
class="info-item"
>
<view
:class="item.isTop === 1 ? 'info-item-top' : ''"
:style="{
'background-image': item.isTop ? ('url(' + webUrl + '/page/hotel/info-top-bg.png)') : 'none'
}"
class="info-item-header"
>
<view class="name">
{{ item.title }}
</view>
<view class="intro">
{{ item.content }}
</view>
</view>
<view class="info-item-body">
<view v-if="item.type === 2" class="video">
<video
:src="item.video"
:poster="item.video + '?vframe/jpg/offset/1'"
controls
play-btn-position="center"
class="video-item"
/>
</view>
<view v-else>
<img-box
:imgList="item.images"
:num="item.images.length"
:img-radius="10"
style="width: 100%;"
/>
</view>
</view>
</view>
</view>
</view>
<view v-else class="tab-no-data">暂无资讯~</view>
</view>
<goo-skeleton v-else />
</view>
</view>
</view>
<goo-skeleton v-else />
</view>
</template>
<script>
import {
getCountyFamousVillageDetail,
getCountyFamousVillageNews
} from '@/api/qianxian'
import imgBox from '@/components/imageTypeSet/imagebox.vue'
import { pageListenMixins } from '@/mixins/pageListenMixins'
export default {
components: {
imgBox
},
mixins: [pageListenMixins],
data() {
return {
webUrl: this.$VUE_APP_RESOURCES_URL,
isLoad: false,
activeIndex: 0,
loading: false,
scrollData: {},
inn: {
cityName: '',
pics: [],
desc: '',
latitude: '',
longitude: ''
},
id: null,
videoStyle: {
width: '750rpx',
height: '500rpx'
},
tabList: [
{ text: '村屋详情', value: 0, isShow: true },
{ text: '村屋介绍', value: 1, isShow: true },
{ text: '村屋资讯', value: 2, isShow: true }
],
// 资讯
infoArray: [],
isLoadInfoListSuccess: false,
pageKeyId: ''
}
},
onPageScroll(e) {
this.scrollData = e
},
onLoad(options) {
const id = options.id || ''
this.id = id
this.getShopDetailReq()
this.getInfoReq()
},
methods: {
getShopDetailReq() {
const _this = this
getCountyFamousVillageDetail(_this.id).then((res) => {
const { success, data } = res
if (success) {
_this.inn = data
_this.inn.latitude = _this.inn.latitude > 0 ? _this.inn.latitude : 24.993587
_this.inn.longitude = _this.inn.longitude > 0 ? _this.inn.longitude : 102.779656
// coverType: 1-图片,2-视频
if (data.coverType === 2) {
uni.getSystemInfo({
success: info => {
const screenWidth = info.windowWidth
_this.videoStyle.width = screenWidth + 'px'
_this.videoStyle.height = screenWidth * 500 / 750 + 'px'
}
})
}
_this.isLoad = true
}
}).finally(() => {
uni.stopPullDownRefresh()
})
},
// 资讯
getInfoReq() {
const _this = this
if (_this.loading) {
return
}
_this.isLoadInfoListSuccess = false
_this.loading = true
_this.infoArray = []
getCountyFamousVillageNews({
page: 1,
limit: 9999,
countyFamousVillageId: _this.id
}).then(res => {
const { data } = res
_this.loading = false
_this.infoArray.push.apply(_this.infoArray, data.records)
}).finally(() => {
_this.loading = false
_this.isLoadInfoListSuccess = true
uni.stopPullDownRefresh()
})
},
changeTab(index) {
this.activeIndex = index
this.loading = false
// 刷新数据
switch (this.activeIndex) {
case 2:
this.getInfoReq()
break
default:
break
}
},
// 定位
showLocation() {
if (!this.inn.latitude || !this.inn.longitude) {
this.$dialog.error('暂无位置信息')
} else {
uni.openLocation({
latitude: this.inn.latitude,
longitude: this.inn.longitude
})
}
},
async doneFavorite() {
if (this.isFavorite) {
const res = await postCountyFamousShopRemoveFavorite({ countyFamousDataId: this.id })
if (res.success) {
this.isFavorite = false
this.favoriteCount = res.data.favoriteCount
}
} else {
const res = await postCountyFamousShopAddFavorite({ countyFamousDataId: this.id })
if (res.success) {
this.isFavorite = true
this.favoriteCount = res.data.favoriteCount
}
}
},
call() {
if (this.inn.tel) {
uni.makePhoneCall({
phoneNumber: this.inn.tel
})
} else {
this.$dialog.error('电话为空')
}
},
showPic(index) {
uni.previewImage({
current: index,
urls: this.inn.images
})
}
}
}
</script>
<style scoped lang="less">
@import "@/assets/css/store.less";
.my-inn-page {
padding: 0 0 100rpx 0;
background-color: #f6f6f6;
}
.cover-box {
position: relative;
.full-img {
width: 750rpx;
}
.video {
display: block;
width: 100%;
height: 100%;
}
}
.guarantee {
margin-right: 16rpx;
padding: 8rpx 16rpx;
border-radius: 8rpx;
background: #0DC5C5;
color: #fff;
font-size: 22rpx;
line-height: 1;
}
.store-img {
width: 686rpx;
margin-bottom: 20rpx;
vertical-align: middle;
}
.container {
position: relative;
background: #FFFFFF;
}
.innInfoWrap {
position: relative;
margin-top: -76rpx;
padding: 20rpx 36rpx;
line-height: 1;
z-index: 1;
.bg-color {
position: absolute;
top: -5px;
left: 0;
right: 0;
z-index: 1;
height: 50%;
background: linear-gradient(-180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%);
.box-mask {
position: absolute;
bottom: 0;
right: 0;
left: 166rpx;
box-sizing: border-box;
padding: 0 32rpx 12rpx 0;
.city-section {
width: 100%;
}
}
}
.body-cont {
position: relative;
z-index: 2;
}
}
.inn-logo {
flex-shrink: 0;
width: 56*2rpx;
height: 56*2rpx;
margin-right: 18rpx;
}
.inn-logo image {
width: 100%;
height: 100%;
border-radius: 50%;
}
.inn-name {
width: 280rpx;
font-size: 32rpx;
color: #FFFFFF;
line-height: 48rpx;
}
.inn-owner {
width: calc(100% - 240rpx);
font-size: 36rpx;
font-weight: bold;
color: #333;
line-height: 40rpx;
}
.inn-owner-desc {
margin: 0 0 0 20rpx;
color: #999;
font-size: 24rpx;
line-height: 40rpx;
}
.inn-tag-wrap {
margin-top: 10rpx;
}
.inn-signature-wrap {
position: relative;
z-index: 5;
padding: 0 32rpx;
margin: 20rpx 0 0 0;
.triangle {
position: absolute;
top: -20rpx;
left: 72rpx;
width: 0;
height: 0;
border-left: 20rpx solid transparent;
border-right: 20rpx solid transparent;
border-bottom: 24rpx solid rgba(243,243,246,0.39);
}
.inn-signature {
position: relative;
padding: 20rpx;
border-radius: 8rpx;
font-size: 24rpx;
color: #080F1A;
background: rgba(243,243,246,0.39);
box-shadow: 0px 6px 12px rgba(0,0,0,0.12);
}
.share-btn {
position: absolute;
right: 0;
bottom: -68rpx;
.img {
width: 212rpx;
height: 60rpx;
}
}
}
.map-wrapper {
position: relative;
z-index: 2;
height: 200rpx;
margin: 40rpx 0 0 0;
overflow: hidden;
.map-cont {
position: absolute;
top: 0;
left: 0;
z-index: 2;
width: 100%;
opacity: 0.3;
transform: translateY(-50rpx);
}
.bg {
position: absolute;
top: 0;
left: 0;
right: 0;
z-index: 3;
height: 60rpx;
background: linear-gradient(180deg, #FFFFFF 0%, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%);
}
.map-info {
position: relative;
z-index: 5;
display: flex;
align-items: center;
padding: 40rpx 10rpx 40rpx 32rpx;
color: #333;
font-size: 14px;
.map-info-hd {
.icon {
display: block;
width: 34rpx;
height: 42rpx;
}
}
.map-info-bd {
flex: 1;
padding: 0 60rpx 0 20rpx;
line-height: 60rpx;
}
.map-info-ft {
.item + .item {
margin: 0 0 0 6rpx;
}
.item {
text-align: center;
font-weight: 500;
.img {
display: block;
width: 64rpx;
height: 64rpx;
margin: 0 0 16rpx 16rpx;
}
}
}
}
}
.top-tab {
padding: 40rpx 0 20rpx 0;
.tab {
margin: 0 20rpx;
.tab-item {
height: 52rpx;
padding: 0 30rpx;
border-radius: 26rpx 0 0 26rpx;
font-size: 32rpx;
line-height: 52rpx;
font-weight: bold;
&.active {
color: #fff;
background: linear-gradient(90deg, #C52733 0%, rgba(211,92,101,0.91) 54%, rgba(255,255,255,0.62) 100%);
}
}
}
}
.info-section {
position: relative;
background-color: #f6f6f6;
}
.info-section {
padding: 22rpx;
}
.info-section {
.info-item + .info-item {
margin: 22rpx 0 0 0;
}
.info-item {
border-radius: 10rpx;
background-color: #fff;
.info-item-header {
position: relative;
padding: 20rpx 20rpx 0 20rpx;
&.info-item-top {
padding-top: 60rpx;
background-size: 100% 80rpx;
background-repeat: no-repeat;
background-image: url();
}
.name {
font-size: 16px;
color: #333;
font-weight: bold;
}
.intro {
margin: 10rpx 0 0 0;
color: #666;
font-size: 14px;
}
}
.info-item-body {
padding: 0 20rpx 20rpx 20rpx;
.video {
padding: 20rpx 0 0 0;
.video-item {
width: 100%;
height: 400rpx;
border-radius: 10rpx;
}
}
}
}
}
.pic-wrap {
display: flex;
flex-wrap: wrap;
width: 700rpx;
margin: 0 auto;
.pic-item {
width: 340rpx;
height: 340rpx;
margin: 0 20rpx 20rpx 0;
&:nth-child(2n) {
margin-right: 0;
}
.img {
display: block;
width: 340rpx;
height: 340rpx;
border-radius: 16rpx;
}
}
}
.content-html-wrap {
padding: 20rpx;
border-radius: 16rpx;
background-color: #fff;
}
.tab-no-data {
text-align: center;
font-size: 32rpx;
color: #999;
line-height: 200rpx;
}
</style>
+14
View File
@@ -328,6 +328,9 @@ export default {
case 2:
countList = this.videoList
break
case 3:
countList = this.countyFamousList
break
}
countList.forEach(item => {
@@ -393,6 +396,7 @@ export default {
break
case 3:
this.countyFamousList[mark]['state'] = state
console.log(this.countyFamousList);
this.isAll = this.selectCount === this.countyFamousList.length
break
}
@@ -452,6 +456,7 @@ export default {
const res = await removeFavorite(ids)
if (res.success) {
_this.isAll = false
_this.page = 1
_this.fetchData()
_this.removeAfter()
}
@@ -459,6 +464,11 @@ export default {
}
})
},
computedIsManage(arr) {
if(this.isManage && arr.length === 0) {
this.isManage = false
}
},
removeAfter() {
switch (this.tabsIndex) {
case 0:
@@ -486,6 +496,7 @@ export default {
item.state = false
_this.productList.push(item)
})
_this.computedIsManage(_this.productList)
_this.page++
}
},
@@ -501,6 +512,7 @@ export default {
item.state = false
_this.storeList.push(item)
})
_this.computedIsManage(_this.storeList)
_this.page++
}
},
@@ -515,6 +527,7 @@ export default {
item.state = false
_this.videoList.push(item)
})
_this.computedIsManage(_this.videoList)
_this.page++
}
},
@@ -529,6 +542,7 @@ export default {
item.state = false
_this.countyFamousList.push(item)
})
_this.computedIsManage(_this.countyFamousList)
_this.page++
}
},
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 934 B