Compare commits

..

11 Commits

Author SHA1 Message Date
7a868c671c 个人中心的authenInfo?.status 2025-08-15 09:06:30 +08:00
e405700578 签到页面的去发布,去消费的绑定路径更换,
商城的购物车底部距离提高
首页轮播图跳转判断更换相应的路径
2025-08-14 18:27:36 +08:00
7ad5a25cdf 1、个人中心的未认证的绑定事件
2、身份认证页面的照片截取为aspectFill
2025-08-14 17:36:33 +08:00
af6a57f378 保存 2025-08-14 16:20:24 +08:00
a278bf103d 1、发布页面的表单名更换:详细地址换为学校名,联系人换成经理,联系电话换成经理电话,详细信息更换提示内容
2、修改页面同上
2025-08-14 10:22:45 +08:00
e999d3738d 首页下拉刷新和加载更多的设置,地区搜索是置page为1 2025-08-14 09:26:32 +08:00
1e87dd5950 签到页面的获取积分任务的规则更改:发布一条信息100积分,消费1元1积分,分享500积分,签到20积分 2025-08-13 18:29:22 +08:00
be19313044 1、首页:发布档口信息的按钮功能实现,并调整搜索框的样式大小
2、首页:定位下移至餐厅推荐旁,并把展示文字由全国更换为地区筛选(包括省市的组件中的文字修改。)
3、首页:平台推荐改为餐厅推荐
4、餐厅推荐的加载更多
5、首页金刚区的三个入口的底图更换,文字更换,展示位置调整将买酱料放到左侧
2025-08-13 18:21:48 +08:00
6f158c739d 1、招租详情:新增重要提示,和重要提示中的法律声明跳转页面展示 2025-08-13 15:41:43 +08:00
b5b7d667b6 1、开始招租详情的重要提示 2025-08-13 14:56:24 +08:00
53d6123af9 1、隐藏商品的评论和保障
2、更换导航栏的发布为买酱料,首页为找档口
3、分享打印判断
4、增加法律声明页面的配置
2025-08-13 14:55:45 +08:00
20 changed files with 916 additions and 671 deletions

View File

@ -21,13 +21,13 @@
} }
}, },
{ {
"path": "pages/index/fabu", "path": "pages/index/category",
"style": { "style": {
"navigationBarTitleText": "发布信息" "navigationBarTitleText": "商品分类"
}, },
"meta": { "meta": {
"sync": true, "sync": true,
"title": "发布信息", "title": "商品分类",
"group": "商城" "group": "商城"
} }
}, },
@ -42,17 +42,6 @@
"group": "商城" "group": "商城"
} }
}, },
{
"path": "pages/index/category",
"style": {
"navigationBarTitleText": "商品分类"
},
"meta": {
"sync": true,
"title": "商品分类",
"group": "商城"
}
},
{ {
"path": "pages/index/cart", "path": "pages/index/cart",
"style": { "style": {
@ -117,6 +106,28 @@
"group": "食堂招租" "group": "食堂招租"
} }
}, },
{
"path": "lawNotice",
"style": {
"navigationBarTitleText": "法律声明"
},
"meta": {
"sync": true,
"title": "法律声明",
"group": "商品"
}
},
{
"path": "fabu",
"style": {
"navigationBarTitleText": "发布信息"
},
"meta": {
"sync": true,
"title": "发布信息",
"group": "商城"
}
},
{ {
"path": "rentEdit", "path": "rentEdit",
"style": { "style": {
@ -854,7 +865,7 @@
"pagePath": "pages/index/index" "pagePath": "pages/index/index"
}, },
{ {
"pagePath": "pages/index/fabu" "pagePath": "pages/index/category"
}, },
{ {
"pagePath": "pages/index/user" "pagePath": "pages/index/user"

View File

@ -1,6 +1,9 @@
<!-- 页面 --> <!-- 页面 -->
<template> <template>
<s-layout title="积分商城"> <s-layout title="积分商城">
<scroll-view @scrolltolower="onScrolltolower" :refresher-enabled="true" :refresher-triggered="homrS"
@refresherrefresh="onS" scroll-y="true" class="flex align-items "
style="height: 100vh;box-sizing: border-box;">
<view class="container"> <view class="container">
<!-- 顶部信息 --> <!-- 顶部信息 -->
<view class="conTop"> <view class="conTop">
@ -14,33 +17,42 @@
</view> </view>
</view> </view>
</view> </view>
<!-- tabs页签 --> <!-- tabs页签
<view class="tabs-box"> <view class="tabs-box">
<su-tabs :list="tabMaps" @change="onChange" :scrollable="false" :current="currentTab"></su-tabs> <su-tabs :list="tabMaps" @change="onChange" :scrollable="false" :current="currentTab"></su-tabs>
</view> </view>-->
<!-- 可兑换券列表 --> <!-- 可兑换券列表 -->
<scroll-view @scrolltolower="onScrolltolower" :refresher-enabled="true" :refresher-triggered="homrS"
@refresherrefresh="onS" scroll-y="true" class="flex align-items"
style="height: 1250rpx;box-sizing: border-box;">
<!-- 满减券 --> <!-- 满减券 -->
<view class="exChangeBox" v-if="currentTab == 0"> <view class="exChangeBox">
<view class="scoreBox" style="display: flex;justify-content: center;align-items: center;width: 100%;margin: 40rpx 30rpx;">
<view style="width: 60rpx;height: 8rpx;background-color: #fcc74e;"></view>
<view style="color: #333333;font-size: 42rpx;font-weight: bold;line-height: 28rpx;margin: 0 30rpx;font-family: PingFang SC;;">积分兑换</view>
<view style="width: 60rpx;height: 8rpx;background-color: #fcc74e;"></view>
</view>
<view class="couponsList"> <view class="couponsList">
<view class="list-item" v-for="(item, index) in couponList" :key="index" @click="openCouponPro(item)"> <view class="list-item" v-for="(item, index) in couponList" :key="index" @click="openCouponPro(item)">
<image style="width: 330rpx;height: 200rpx;" src="https://jiangxiaoxian.0rui.cn/fullCoupon.png"> <view >
</image> <image v-if="item.status == 1" style="width: 330rpx;height: 200rpx;" src="https://jiangxiaoxian.0rui.cn/fullCoupon.png">
<view class="item-text"> </image>
<view class="fs30 c3" style="margin: 0 auto;text-align: center;">{{item.name}}</view> <image v-else style="width: 330rpx;height: 200rpx;"
<view class="exchangeBtn"> src="https://jiangxiaoxian.0rui.cn/scoreNumCoupon.png"></image>
{{item.score}}积分兑换 <view class="item-text">
<view class="fs30 c3" style="margin: 0 auto;text-align: center;">{{item.name}}</view>
<view class="exchangeBtn">
{{item.score}}积分兑换
</view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<!-- 次数券 --> <!-- 次数券
<view class="exChangeBox" v-if="currentTab == 1"> <view class="exChangeBox">
<view class="couponsList"> <view class="couponsList">
<view class="list-item" v-for="(item, index) in couponList" :key="index" @click="openCouponPro(item)"> <view class="list-item" v-for="(item, index) in couponList" :key="index" @click="openCouponPro(item)">
<image style="width: 330rpx;height: 200rpx;" <image style="width: 330rpx;height: 200rpx;"
@ -54,9 +66,9 @@
</view> </view>
</view> </view>
</view> </view>-->
</scroll-view>
@ -84,6 +96,8 @@
</su-popup> </su-popup>
</view> </view>
</scroll-view>
</s-layout> </s-layout>
</template> </template>
@ -146,10 +160,10 @@
const couponCount = ref(0) const couponCount = ref(0)
const homrS = ref(false) const homrS = ref(false)
async function getCouponList() { async function getCouponList() {
// status: listQuery.value.status,
const res = await sheep.$api.app.scoreShop.fullList({ const res = await sheep.$api.app.scoreShop.fullList({
page: listQuery.value.page, page: listQuery.value.page,
limit: listQuery.value.limit, limit: listQuery.value.limit,
status: listQuery.value.status,
order: 'normal' order: 'normal'
}); });
if (res.code === 1) { if (res.code === 1) {

View File

@ -80,7 +80,7 @@
</image> </image>
<view class="signTask-text"> <view class="signTask-text">
<view class="textFir">发布1条信息</view> <view class="textFir">发布1条信息</view>
<view class="textSec">+10积分</view> <view class="textSec">+100积分</view>
</view> </view>
</view> </view>
@ -98,7 +98,7 @@
</image> </image>
<view class="signTask-text"> <view class="signTask-text">
<view class="textFir">每日签到</view> <view class="textFir">每日签到</view>
<view class="textSec">+10积分</view> <view class="textSec">+20积分</view>
</view> </view>
</view> </view>
@ -120,12 +120,12 @@
mode=""> mode="">
</image> </image>
<view class="signTask-text"> <view class="signTask-text">
<view class="textFir">每消费100</view> <view class="textFir">每消费1</view>
<view class="textSec">+10积分</view> <view class="textSec">+1积分</view>
</view> </view>
</view> </view>
<view class="signBtn" @click="toPage('/pages/index/category')"> <view class="signBtn" @click="toTabb('/pages/index/category')">
去消费 去消费
</view> </view>
</view> </view>
@ -139,7 +139,7 @@
</image> </image>
<view class="signTask-text"> <view class="signTask-text">
<view class="textFir">分享1个好友注册平台</view> <view class="textFir">分享1个好友注册平台</view>
<view class="textSec">+10积分</view> <view class="textSec">+500积分</view>
</view> </view>
</view> </view>
@ -218,7 +218,7 @@
</view> </view>
<view class="contactBtn"> <view class="contactBtn">
<view class="tactBtnBox" style="color: #999999;" @click="showFB = false">取消</view> <view class="tactBtnBox" style="color: #999999;" @click="showFB = false">取消</view>
<view class="tactBtnBox2" style="color: #323232;" @click="toTabb('/pages/index/fabu')">去发布</view> <view class="tactBtnBox2" style="color: #323232;" @click="toFaBu">去发布</view>
</view> </view>
</view> </view>
</su-popup> </su-popup>
@ -410,7 +410,15 @@
}) })
} }
const showFB = ref(false) const showFB = ref(false);
function toFaBu() {
uni.navigateTo({
url: '/pages/canteenRent/fabu',
})
setTimeout(() => {
showFB.value = false;
},1000)
}
function openFB() { function openFB() {
showFB.value = true; showFB.value = true;
} }
@ -418,7 +426,6 @@
showFB.value = false; showFB.value = false;
} }
// //
function showShare() { function showShare() {
// 使URL // 使URL

View File

@ -1,5 +1,5 @@
<template> <template>
<!-- <view> 发布 </view> tabbar="/pages/index/fabu"--> <!-- <view> 发布 </view>-->
<s-layout title="发布信息" :bgStyle="{ color: '#f7f7f7' }"> <s-layout title="发布信息" :bgStyle="{ color: '#f7f7f7' }">
<view class="container"> <view class="container">
<!-- :style="{height: isIphone ? `calc(71vh - ${systemInfo.safeAreaInsets.bottom}px)` : '78vh',}" --> <!-- :style="{height: isIphone ? `calc(71vh - ${systemInfo.safeAreaInsets.bottom}px)` : '78vh',}" -->
@ -33,12 +33,12 @@
<view class="row " style=""> <view class="row " style="">
<view class="label flex align-items" style="width: auto;"> <view class="label flex align-items" style="width: auto;">
详细地址 学校名
</view> </view>
<view style="margin-top: 20rpx;height: 80rpx;"> <view style="margin-top: 20rpx;height: 80rpx;">
<textarea v-model="form.address_detail" style="height: 80rpx;width: 100%;" <textarea v-model="form.address_detail" style="height: 80rpx;width: 100%;"
maxlength="400" placeholder-style="font-size:28rpx;color:#9c9c9c;line-height:36rpx" maxlength="400" placeholder-style="font-size:28rpx;color:#9c9c9c;line-height:36rpx"
placeholder="请输入详细地址"></textarea> placeholder="请输入学校全名"></textarea>
</view> </view>
</view> </view>
@ -46,10 +46,10 @@
<view class="row flex align-items" style="padding: 0 30rpx;"> <view class="row flex align-items" style="padding: 0 30rpx;">
<view class="label flex align-items" style="width: auto;"> <view class="label flex align-items" style="width: auto;">
联系人 经理
</view> </view>
<view class="row-right" style="width: 80%;"> <view class="row-right" style="width: 80%;">
<input type="text" placeholder="请输入联系人" class="input" v-model="form.contacts" <input type="text" placeholder="请输入经理名字" class="input" v-model="form.contacts"
style="width: 80%;text-align: right;" /> style="width: 80%;text-align: right;" />
</view> </view>
</view> </view>
@ -57,10 +57,10 @@
<view class="row flex align-items" style="padding: 0 30rpx;"> <view class="row flex align-items" style="padding: 0 30rpx;">
<view class="label flex align-items" style="width: auto;"> <view class="label flex align-items" style="width: auto;">
联系电话 经理电话
</view> </view>
<view class="row-right" style="width: 80%;"> <view class="row-right" style="width: 80%;">
<input type="number" placeholder="请输入联系电话" class="input" v-model="form.contact_number" <input type="number" placeholder="请输入经理电话" class="input" v-model="form.contact_number"
style="width: 80%;text-align: right;" /> style="width: 80%;text-align: right;" />
</view> </view>
</view> </view>
@ -72,14 +72,14 @@
style="margin-top: 20rpx;padding: 30rpx"> style="margin-top: 20rpx;padding: 30rpx">
<view class="row align-items" style=""> <view class="row align-items" style="">
<view class="label flex align-items" style="width: auto;"> <view class="label flex align-items" style="width: auto;">
详细信息 餐厅信息
</view> </view>
<view style="margin-top: 20rpx;height: 120rpx;margin-bottom: 30rpx;"> <view style="margin-top: 20rpx;height: 120rpx;margin-bottom: 30rpx;">
<textarea v-model="form.content" style="height: 120rpx;width: 100%;" maxlength="400" <textarea v-model="form.content" style="height: 120rpx;width: 100%;" maxlength="400"
placeholder-style="font-size:28rpx;color:#9c9c9c;line-height:36rpx" placeholder-style="font-size:28rpx;color:#9c9c9c;line-height:36rpx;white-space: pre-line;"
placeholder="请输入你的招标详细信息"></textarea> placeholder="餐厅发布信息:\n楼层:**,\n押金:**,\n房租:**,\n扣点:**,\n水电燃气费:**,\n公摊:**,"
></textarea>
</view> </view>
<!-- 图片 --> <!-- 图片 -->
<s-uploader ref="uploaderRef" v-model:url="state.formData.images" fileMediatype="image" <s-uploader ref="uploaderRef" v-model:url="state.formData.images" fileMediatype="image"
limit="9" mode="grid" :imageStyles="{ width: '220rpx', height: '220rpx'}"></s-uploader> limit="9" mode="grid" :imageStyles="{ width: '220rpx', height: '220rpx'}"></s-uploader>
@ -132,12 +132,12 @@
</view> </view>
</view> </view>
</view> </view>
<!-- <view class="width:100%;height:200rpx"></view> --> <!-- <view class="width:100%;height:200rpx"></view> -->
<view style="height: 200rpx;width: 100%;color: #f7f7f7;"></view> <view style="height: 200rpx;width: 100%;color: #f7f7f7;"></view>
</view> </view>
</scroll-view> </scroll-view>
@ -437,7 +437,7 @@
} else { } else {
setTimeout(() => { setTimeout(() => {
sheep.$helper.toast('请先登录'); sheep.$helper.toast('请先登录');
}, 500); }, 500);
setTimeout(() => { setTimeout(() => {
uni.switchTab({ uni.switchTab({
@ -634,7 +634,7 @@
return return
} }
if (form.value.address_detail == '') { if (form.value.address_detail == '') {
sheep.$helper.toast('请输入详细地址'); sheep.$helper.toast('请输入学校全名');
// uni.showToast({ // uni.showToast({
// title: '', // title: '',
// icon: 'none', // icon: 'none',
@ -709,6 +709,7 @@
icon: 'success' icon: 'success'
}) })
agreeAdd.value = false; agreeAdd.value = false;
agreeShow.value = false;
selectTagslist.value = [] selectTagslist.value = []
tagSelectedNum.value = 0; tagSelectedNum.value = 0;
form.value = { form.value = {
@ -741,18 +742,18 @@
uni.navigateTo({ uni.navigateTo({
url: '/pages/user/myRelease/list' url: '/pages/user/myRelease/list'
}) })
},1000) }, 1000)
// uni.switchTab({ // uni.switchTab({
// url: '/pages/index/user' // url: '/pages/index/user'
// }) // })
}else { } else {
sheep.$helper.toast(res.msg); sheep.$helper.toast(res.msg);
// uni.showToast({ // uni.showToast({
// title: res.msg, // title: res.msg,
// icon: 'error' // icon: 'error'
// }) // })
} }
} }
</script> </script>

View File

@ -0,0 +1,55 @@
<template>
<s-layout title="法律声明">
<view style="padding: 30rpx;">
<rich-text style="text-align: justify;" :nodes="legal_notice_agreement"></rich-text>
</view>
</s-layout>
</template>
<script setup>
import {
ref,
reactive
} from 'vue'
import {
onLoad,
onShow,
} from '@dcloudio/uni-app';
import sheep from '@/sheep';
import rent from '../../sheep/api/rent';
const rentId = ref('');
const legal_notice_agreement = ref('');
onLoad((options) => {
console.log('options', options.id);
if (options.id) {
rentId.value = options.id;
getDetail();
}
})
function getDetail() {
sheep.$api.rent.rentInfo(rentId.value).then((res) => {
console.log('获取招租详情', res);
if (res.code == 1) {
legal_notice_agreement.value = res.data.detail.legal_notice_agreement;
console.log(' legal_notice_agreement', legal_notice_agreement.value);
} else {
sheep.$helper.toast(res.msg);
// uni.showToast({
// title: res.msg,
// icon: 'none'
// })
}
}).catch((error) => {
console.log('error: ', error);
// 'error: ',
// error;
})
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -80,6 +80,23 @@
</view> </view>
</view> </view>
<!-- 重要提示 -->
<view class="lawBox">
<view class="importTitle">
<image src="https://jiangxiaoxian.0rui.cn/lawImage.png" style="width: 50rpx;height: 50rpx;border-radius: 116rpx;" mode=""></image>
<view style="font-weight: bold;font-size: 36rpx;line-height: 38rpx;color: #3d3d3d;margin-left: 20rpx;">重要提醒</view>
</view>
<view class="importText">
<view class="textLaw">
1.请再次阅读团餐宝典
<view class="lawPage" @click="toPage(`/pages/canteenRent/lawNotice?id=` + detailRent.id )">法律声明</view>
</view>
<view class="textNotice">2.练习时请说明是在团餐宝典看到的</view>
<view class="textNotice">3.不要轻信先付款再带你去看餐厅档口信息以免上当受骗</view>
<view class="textNotice">4.本文系作者授权发表如需转载请联系团餐宝典平台</view>
</view>
</view>
<view style="width: 100%;height: 248rpx;"></view> <view style="width: 100%;height: 248rpx;"></view>
<!-- 底部按钮 --> <!-- 底部按钮 -->
@ -564,6 +581,48 @@
} }
.lawBox {
width: 100%;
margin-top: 20rpx;
background-color: #ffffff;
padding: 20rpx 30rpx;
.importTitle {
width: 100%;
display: flex;
justify-content: flex-start;
align-items: center;
}
.importText {
margin-top: 23rpx;
width: 690rpx;
.textLaw {
display: flex;
align-items: center;
justify-content: flex-start;
font-size: 28rpx;
font-weight: 400;
color: #3d3d3d;
line-height: 42rpx;
.lawPage {
color: #ff6200;
}
}
.textNotice {
font-size: 28rpx;
font-weight: 400;
color: #3d3d3d;
line-height: 42rpx;
margin-top: 10rpx;
}
}
}
.footer-box { .footer-box {
width: 100%; width: 100%;
height: 100rpx auto; height: 100rpx auto;

View File

@ -31,12 +31,12 @@
<view class="row " style=""> <view class="row " style="">
<view class="label flex align-items" style="width: auto;"> <view class="label flex align-items" style="width: auto;">
详细地址 学校名
</view> </view>
<view style="margin-top: 20rpx;height: 80rpx;"> <view style="margin-top: 20rpx;height: 80rpx;">
<textarea v-model="form.address_detail" style="height: 80rpx;width: 100%;" <textarea v-model="form.address_detail" style="height: 80rpx;width: 100%;"
maxlength="400" placeholder-style="font-size:28rpx;color:#9c9c9c;line-height:36rpx" maxlength="400" placeholder-style="font-size:28rpx;color:#9c9c9c;line-height:36rpx"
placeholder="请输入详细地址"></textarea> placeholder="请输入学校全名"></textarea>
</view> </view>
</view> </view>
@ -44,10 +44,10 @@
<view class="row flex align-items" style="padding: 0 30rpx;"> <view class="row flex align-items" style="padding: 0 30rpx;">
<view class="label flex align-items" style="width: auto;"> <view class="label flex align-items" style="width: auto;">
联系人 经理
</view> </view>
<view class="row-right" style="width: 80%;"> <view class="row-right" style="width: 80%;">
<input type="text" placeholder="请输入联系人" class="input" v-model="form.contacts" <input type="text" placeholder="请输入经理名字" class="input" v-model="form.contacts"
style="width: 80%;text-align: right;" /> style="width: 80%;text-align: right;" />
</view> </view>
</view> </view>
@ -55,10 +55,10 @@
<view class="row flex align-items" style="padding: 0 30rpx;"> <view class="row flex align-items" style="padding: 0 30rpx;">
<view class="label flex align-items" style="width: auto;"> <view class="label flex align-items" style="width: auto;">
联系电话 经理电话
</view> </view>
<view class="row-right" style="width: 80%;"> <view class="row-right" style="width: 80%;">
<input type="number" placeholder="请输入联系电话" class="input" v-model="form.contact_number" <input type="number" placeholder="请输入经理电话" class="input" v-model="form.contact_number"
style="width: 80%;text-align: right;" /> style="width: 80%;text-align: right;" />
</view> </view>
</view> </view>
@ -70,12 +70,12 @@
style="margin-top: 20rpx;padding: 30rpx;"> style="margin-top: 20rpx;padding: 30rpx;">
<view class="row align-items" style=""> <view class="row align-items" style="">
<view class="label flex align-items" style="width: auto;"> <view class="label flex align-items" style="width: auto;">
详细信息 餐厅信息
</view> </view>
<view style="margin-top: 20rpx;height: 120rpx;margin-bottom: 30rpx;"> <view style="margin-top: 20rpx;height: 120rpx;margin-bottom: 30rpx;">
<textarea v-model="form.content" style="height: 120rpx;width: 100%;" maxlength="400" <textarea v-model="form.content" style="height: 120rpx;width: 100%;" maxlength="400"
placeholder-style="font-size:28rpx;color:#9c9c9c;line-height:36rpx" placeholder-style="font-size:28rpx;color:#9c9c9c;line-height:36rpx"
placeholder="请输入你的招标详细信息"></textarea> placeholder="餐厅发布信息:\n楼层:**,\n押金:**,\n房租:**,\n扣点:**,\n水电燃气费:**,\n公摊:**,"></textarea>
</view> </view>
<!-- 图片 :value="state.formData.images" @success="handleUploadSuccess" @del-file="handleDelFile" <!-- 图片 :value="state.formData.images" @success="handleUploadSuccess" @del-file="handleDelFile"
@ -616,7 +616,7 @@
return return
} }
if (form.value.address_detail == '') { if (form.value.address_detail == '') {
sheep.$helper.toast('请输入详细地址'); sheep.$helper.toast('请输入学校全名');
// uni.showToast({ // uni.showToast({
// title: '', // title: '',
// icon: 'none', // icon: 'none',
@ -624,7 +624,7 @@
return return
} }
if (form.value.contacts == '') { if (form.value.contacts == '') {
sheep.$helper.toast('请输入联系人'); sheep.$helper.toast('请输入经理名字');
// uni.showToast({ // uni.showToast({
// title: '', // title: '',
// icon: 'none', // icon: 'none',
@ -632,7 +632,7 @@
return return
} }
if (form.value.contact_number == '') { if (form.value.contact_number == '') {
sheep.$helper.toast('请输入联系人电话'); sheep.$helper.toast('请输入经理电话');
// uni.showToast({ // uni.showToast({
// title: '', // title: '',
// icon: 'none', // icon: 'none',

View File

@ -17,7 +17,7 @@
<view class="locTop-left-left" @click="state.showRegion = true"> <view class="locTop-left-left" @click="state.showRegion = true">
<view @click="state.showRegion = true" <view @click="state.showRegion = true"
style="font-size: 28rpx;font-weight: 400;line-height: 32rpx;color: #999999;max-width: 140rpx;"> style="font-size: 28rpx;font-weight: 400;line-height: 32rpx;color: #999999;max-width: 140rpx;">
{{state.model.city_name ? state.model.city_name:'全' }} {{state.model.city_name ? state.model.city_name:'全部地区' }}
</view> </view>
<image @click="state.showRegion = true" <image @click="state.showRegion = true"
style="width: 27rpx;height: 27rpx;margin-left: 10rpx;" style="width: 27rpx;height: 27rpx;margin-left: 10rpx;"

View File

@ -182,7 +182,7 @@
/* 使用券 */ /* 使用券 */
function toUseFull(item) { function toUseFull(item) {
console.log('使用满减券', item); console.log('使用满减券', item);
uni.navigateTo({ uni.switchTab({
url: '/pages/index/category' url: '/pages/index/category'
}) })
} }

View File

@ -62,11 +62,11 @@
value: 'goods', value: 'goods',
to: 'detail-swiper-selector', to: 'detail-swiper-selector',
}, },
{ // {
label: '评价', // label: '',
value: 'comment', // value: 'comment',
to: 'detail-comment-selector', // to: 'detail-comment-selector',
}, // },
{ {
label: '详情', label: '详情',
value: 'detail', value: 'detail',
@ -150,30 +150,34 @@
.icon-box { .icon-box {
box-shadow: 0px 0px 4rpx rgba(51, 51, 51, 0.08), 0px 4rpx 6rpx 2rpx rgba(102, 102, 102, 0.12); box-shadow: 0px 0px 4rpx rgba(51, 51, 51, 0.08), 0px 4rpx 6rpx 2rpx rgba(102, 102, 102, 0.12);
border-radius: 30rpx; border-radius: 30rpx;
width: 134rpx; width: 150rpx;
height: 56rpx; height: 64rpx;
// width: 134rpx;
// height: 56rpx;
margin-left: 8rpx; margin-left: 8rpx;
border: 1px solid rgba(#fff, 0.4); border: 1px solid rgba(#fff, 0.4);
.line { .line {
width: 2rpx; width: 3rpx;
height: 24rpx; height: 30rpx;
background: #e5e5e7; // height: 24rpx;
// background: #e5e5e7;
background-color: #000;
} }
.sicon-back { .sicon-back {
font-size: 32rpx; font-size: 36rpx;
color: #000; color: #000;
} }
.sicon-home { .sicon-home {
font-size: 32rpx; font-size: 36rpx;
color: #000; color: #000;
} }
.sicon-more { .sicon-more {
font-size: 32rpx; font-size: 36rpx;
color: #000; color: #000;
} }
.icon-button { .icon-button {
width: 67rpx; width: 67rpx;
height: 56rpx; height: 56rpx;s
&-left:hover { &-left:hover {
background: rgba(0, 0, 0, 0.16); background: rgba(0, 0, 0, 0.16);
border-radius: 30rpx 0px 0px 30rpx; border-radius: 30rpx 0px 0px 30rpx;

View File

@ -1,417 +1,390 @@
<template> <template>
<view> <view>
<s-layout :onShareAppMessage="shareInfo" navbar="goods"> <s-layout :onShareAppMessage="shareInfo" navbar="goods">
<!-- 标题栏 --> <!-- 标题栏 -->
<detailNavbar /> <detailNavbar />
<!-- 骨架屏 --> <!-- 骨架屏 -->
<detailSkeleton v-if="state.skeletonLoading" /> <detailSkeleton v-if="state.skeletonLoading" />
<!-- 下架/售罄提醒 --> <!-- 下架/售罄提醒 -->
<s-empty <s-empty v-else-if="state.goodsInfo === null" text="商品不存在或已下架" icon="/static/soldout-empty.png" showAction
v-else-if="state.goodsInfo === null" actionText="再逛逛" actionUrl="/pages/goods/list" />
text="商品不存在或已下架" <block v-else>
icon="/static/soldout-empty.png" <view class="detail-swiper-selector">
showAction <!-- 商品轮播图 -->
actionText="再逛逛" <su-swiper class="ss-m-b-14" isPreview :list="state.goodsSwiper" dotStyle="tag" imageMode="widthFix"
actionUrl="/pages/goods/list" dotCur="bg-mask-40" :seizeHeight="750" />
/>
<block v-else>
<view class="detail-swiper-selector">
<!-- 商品轮播图 -->
<su-swiper
class="ss-m-b-14"
isPreview
:list="state.goodsSwiper"
dotStyle="tag"
imageMode="widthFix"
dotCur="bg-mask-40"
:seizeHeight="750"
/>
<!-- 价格+标题 --> <!-- 价格+标题 -->
<view class="title-card detail-card ss-p-y-40 ss-p-x-20"> <view class="title-card detail-card ss-p-y-40 ss-p-x-20">
<view class="ss-flex ss-row-between ss-col-center ss-m-b-26"> <view class="ss-flex ss-row-between ss-col-center ss-m-b-26">
<view class="price-box ss-flex ss-col-bottom"> <view class="price-box ss-flex ss-col-bottom">
<view class="price-text ss-m-r-16"> <view class="price-text ss-m-r-16">
{{ state.selectedSkuPrice.price || formatPrice(state.goodsInfo.price) }} {{ state.selectedSkuPrice.price || formatPrice(state.goodsInfo.price) }}
</view> </view>
<view class="origin-price-text" v-if="state.goodsInfo.original_price > 0"> <view class="origin-price-text" v-if="state.goodsInfo.original_price > 0">
{{ state.selectedSkuPrice.original_price || state.goodsInfo.original_price }} {{ state.selectedSkuPrice.original_price || state.goodsInfo.original_price }}
</view> </view>
</view> </view>
<view class="sales-text"> <view class="sales-text">
{{ formatSales(state.goodsInfo.sales_show_type, state.goodsInfo.sales) }} {{ formatSales(state.goodsInfo.sales_show_type, state.goodsInfo.sales) }}
</view> </view>
</view> </view>
<view class="discounts-box ss-flex ss-row-between ss-m-b-28"> <view class="discounts-box ss-flex ss-row-between ss-m-b-28">
<div class="tag-content"> <div class="tag-content">
<view class="tag-box ss-flex"> <view class="tag-box ss-flex">
<view <view class="tag ss-m-r-10" v-for="promos in state.goodsInfo.promos"
class="tag ss-m-r-10" :key="promos.id" @tap="onActivity">
v-for="promos in state.goodsInfo.promos" {{ promos.title }}
:key="promos.id" </view>
@tap="onActivity" </view>
> </div>
{{ promos.title }}
</view>
</view>
</div>
<view <view class="get-coupon-box ss-flex ss-col-center ss-m-l-20" @tap="state.showModel = true"
class="get-coupon-box ss-flex ss-col-center ss-m-l-20" v-if="state.couponInfo.length">
@tap="state.showModel = true" <view class="discounts-title ss-m-r-8">领券</view>
v-if="state.couponInfo.length" <text class="cicon-forward"></text>
> </view>
<view class="discounts-title ss-m-r-8">领券</view> </view>
<text class="cicon-forward"></text> <view class="title-text ss-line-2 ss-m-b-6">{{ state.goodsInfo.title }}</view>
</view> <view class="subtitle-text ss-line-1">{{ state.goodsInfo.subtitle }}</view>
</view> </view>
<view class="title-text ss-line-2 ss-m-b-6">{{ state.goodsInfo.title }}</view>
<view class="subtitle-text ss-line-1">{{ state.goodsInfo.subtitle }}</view>
</view>
<!-- 功能卡片 --> <!-- 功能卡片 -->
<view class="detail-cell-card detail-card ss-flex-col"> <view class="detail-cell-card detail-card ss-flex-col">
<detail-cell-sku <detail-cell-sku v-model="state.selectedSkuPrice.goods_sku_text" :skus="state.goodsInfo.skus"
v-model="state.selectedSkuPrice.goods_sku_text" @tap="state.showSelectSku = true" />
:skus="state.goodsInfo.skus" <!-- <detail-cell-service v-if="state.goodsInfo.service" v-model="state.goodsInfo.service" /> -->
@tap="state.showSelectSku = true" <detail-cell-params v-if="state.goodsInfo.params" v-model="state.goodsInfo.params" />
/> </view>
<detail-cell-service v-if="state.goodsInfo.service" v-model="state.goodsInfo.service" />
<detail-cell-params v-if="state.goodsInfo.params" v-model="state.goodsInfo.params" />
</view>
<!-- 规格与数量弹框 --> <!-- 规格与数量弹框 -->
<s-select-sku <s-select-sku :goodsInfo="state.goodsInfo" :show="state.showSelectSku" @addCart="onAddCart"
:goodsInfo="state.goodsInfo" @buy="onBuy" @change="onSkuChange" @close="state.showSelectSku = false" />
:show="state.showSelectSku" </view>
@addCart="onAddCart"
@buy="onBuy"
@change="onSkuChange"
@close="state.showSelectSku = false"
/>
</view>
<!-- 评价 --> <!-- 评价 -->
<detail-comment-card class="detail-comment-selector" :goodsId="state.goodsId" /> <!-- <detail-comment-card class="detail-comment-selector" :goodsId="state.goodsId" /> -->
<!-- 详情 --> <!-- 详情 -->
<detail-content-card class="detail-content-selector" :content="state.goodsInfo.content" /> <detail-content-card class="detail-content-selector" :content="state.goodsInfo.content" />
<view style="width: 100%;height: 100rpx;"></view>
<!-- 活动跳转 -->
<detail-activity-tip v-if="state.goodsInfo.activities" :data="state.goodsInfo"></detail-activity-tip>
<!-- 活动跳转 --> <!-- 详情tabbar -->
<detail-activity-tip <detail-tabbar v-model="state.goodsInfo">
v-if="state.goodsInfo.activities" <!-- TODO: 缺货中 已售罄 判断 设计-->
:data="state.goodsInfo" <view class="buy-box ss-flex ss-col-center ss-p-r-20" v-if="state.goodsInfo.stock > 0">
></detail-activity-tip> <button class="ss-reset-button add-btn ui-Shadow-Main" @tap="state.showSelectSku = true">
加入购物车
<!-- 详情tabbar --> </button>
<detail-tabbar v-model="state.goodsInfo"> <button class="ss-reset-button buy-btn ui-Shadow-Main" @tap="state.showSelectSku = true">
<!-- TODO: 缺货中 已售罄 判断 设计--> 立即购买
<view class="buy-box ss-flex ss-col-center ss-p-r-20" v-if="state.goodsInfo.stock > 0"> </button>
<button </view>
class="ss-reset-button add-btn ui-Shadow-Main" <view class="buy-box ss-flex ss-col-center ss-p-r-20" v-else>
@tap="state.showSelectSku = true" <button class="ss-reset-button disabled-btn" disabled> 已售罄 </button>
> </view>
加入购物车 </detail-tabbar>
</button> <s-coupon-get v-model="state.couponInfo" :show="state.showModel" @close="state.showModel = false"
<button @get="onGet" />
class="ss-reset-button buy-btn ui-Shadow-Main" <s-activity-pop v-model="state.activityInfo" :show="state.showActivityModel"
@tap="state.showSelectSku = true" @close="state.showActivityModel = false" />
> </block>
立即购买 </s-layout>
</button> </view>
</view>
<view class="buy-box ss-flex ss-col-center ss-p-r-20" v-else>
<button class="ss-reset-button disabled-btn" disabled> 已售罄 </button>
</view>
</detail-tabbar>
<s-coupon-get
v-model="state.couponInfo"
:show="state.showModel"
@close="state.showModel = false"
@get="onGet"
/>
<s-activity-pop
v-model="state.activityInfo"
:show="state.showActivityModel"
@close="state.showActivityModel = false"
/>
</block>
</s-layout>
</view>
</template> </template>
<script setup> <script setup>
import { reactive, computed } from 'vue'; import {
import { onLoad, onPageScroll } from '@dcloudio/uni-app'; reactive,
import sheep from '@/sheep'; computed
import { formatSales, formatGoodsSwiper, formatPrice } from '@/sheep/hooks/useGoods'; } from 'vue';
import detailNavbar from './components/detail/detail-navbar.vue'; import {
import detailCellSku from './components/detail/detail-cell-sku.vue'; onLoad,
import detailCellService from './components/detail/detail-cell-service.vue'; onPageScroll
import detailCellParams from './components/detail/detail-cell-params.vue'; } from '@dcloudio/uni-app';
import detailTabbar from './components/detail/detail-tabbar.vue'; import sheep from '@/sheep';
import detailSkeleton from './components/detail/detail-skeleton.vue'; import {
import detailCommentCard from './components/detail/detail-comment-card.vue'; formatSales,
import detailContentCard from './components/detail/detail-content-card.vue'; formatGoodsSwiper,
import detailActivityTip from './components/detail/detail-activity-tip.vue'; formatPrice
import { isEmpty } from 'lodash'; } from '@/sheep/hooks/useGoods';
import detailNavbar from './components/detail/detail-navbar.vue';
import detailCellSku from './components/detail/detail-cell-sku.vue';
import detailCellService from './components/detail/detail-cell-service.vue';
import detailCellParams from './components/detail/detail-cell-params.vue';
import detailTabbar from './components/detail/detail-tabbar.vue';
import detailSkeleton from './components/detail/detail-skeleton.vue';
import detailCommentCard from './components/detail/detail-comment-card.vue';
import detailContentCard from './components/detail/detail-content-card.vue';
import detailActivityTip from './components/detail/detail-activity-tip.vue';
import {
isEmpty
} from 'lodash';
// import detailActivityTip from './components/detail/detail-activity-tip.vue'; // import detailActivityTip from './components/detail/detail-activity-tip.vue';
// import detailTab from './components/detail/detail-tab.vue'; // import detailTab from './components/detail/detail-tab.vue';
// import detailCoupon from './components/detail/detail-coupon.vue'; // import detailCoupon from './components/detail/detail-coupon.vue';
onPageScroll(() => {}); onPageScroll(() => {});
const state = reactive({ const state = reactive({
goodsId: 0, goodsId: 0,
skeletonLoading: true, skeletonLoading: true,
goodsInfo: {}, goodsInfo: {},
showSelectSku: false, showSelectSku: false,
goodsSwiper: [], goodsSwiper: [],
selectedSkuPrice: {}, selectedSkuPrice: {},
showModel: false, showModel: false,
total: 0, total: 0,
couponInfo: [], couponInfo: [],
showActivityModel: false, showActivityModel: false,
activityInfo: [], activityInfo: [],
}); });
// //
function onSkuChange(e) { function onSkuChange(e) {
state.selectedSkuPrice = e; state.selectedSkuPrice = e;
} }
// //
function onAddCart(e) { function onAddCart(e) {
sheep.$store('cart').add(e); sheep.$store('cart').add(e);
} }
// //
function onBuy(e) { function onBuy(e) {
sheep.$router.go('/pages/order/confirm', { sheep.$router.go('/pages/order/confirm', {
data: JSON.stringify({ data: JSON.stringify({
order_type: 'goods', order_type: 'goods',
goods_list: [ goods_list: [{
{ goods_id: e.goods_id,
goods_id: e.goods_id, goods_num: e.goods_num,
goods_num: e.goods_num, goods_sku_price_id: e.id,
goods_sku_price_id: e.id, }, ],
}, }),
], });
}), }
}); //
} function onActivity() {
// state.activityInfo = state.goodsInfo.promos;
function onActivity() { state.showActivityModel = true;
state.activityInfo = state.goodsInfo.promos; }
state.showActivityModel = true;
}
// //
async function onGet(id) { async function onGet(id) {
const { code, msg } = await sheep.$api.coupon.get(id); const {
if (code === 1) { code,
uni.showToast({ msg
title: msg, } = await sheep.$api.coupon.get(id);
}); if (code === 1) {
setTimeout(() => { uni.showToast({
getCoupon(); title: msg,
}, 1000); });
} setTimeout(() => {
} getCoupon();
}, 1000);
}
}
const shareInfo = computed(() => { const shareInfo = computed(() => {
if (isEmpty(state.goodsInfo)) return {}; if (isEmpty(state.goodsInfo)) return {};
return sheep.$platform.share.getShareInfo( return sheep.$platform.share.getShareInfo({
{ title: state.goodsInfo.title,
title: state.goodsInfo.title, image: sheep.$url.cdn(state.goodsInfo.image),
image: sheep.$url.cdn(state.goodsInfo.image), desc: state.goodsInfo.subtitle,
desc: state.goodsInfo.subtitle, params: {
params: { page: '2',
page: '2', query: state.goodsInfo.id,
query: state.goodsInfo.id, },
}, }, {
}, type: 'goods', //
{ title: state.goodsInfo.title, //
type: 'goods', // image: sheep.$url.cdn(state.goodsInfo.image), //
title: state.goodsInfo.title, // price: state.goodsInfo.price[0], //
image: sheep.$url.cdn(state.goodsInfo.image), // original_price: state.goodsInfo.original_price, //
price: state.goodsInfo.price[0], // }, );
original_price: state.goodsInfo.original_price, // });
},
);
});
onLoad(async (options) => { onLoad(async (options) => {
// //
if (!options.id) { if (!options.id) {
state.goodsInfo = null; state.goodsInfo = null;
return; return;
} }
state.goodsId = options.id; state.goodsId = options.id;
// //
sheep.$api.goods.detail(state.goodsId).then((res) => { sheep.$api.goods.detail(state.goodsId).then((res) => {
state.skeletonLoading = false; state.skeletonLoading = false;
if (res.code === 1) { if (res.code === 1) {
state.goodsInfo = res.data; state.goodsInfo = res.data;
state.goodsSwiper = formatGoodsSwiper(state.goodsInfo.images); state.goodsSwiper = formatGoodsSwiper(state.goodsInfo.images);
} else { } else {
// //
state.goodsInfo = null; state.goodsInfo = null;
} }
}); });
const { code, data } = await sheep.$api.coupon.listByGoods(state.goodsId); const {
if (code === 1) { code,
state.couponInfo = data; data
} } = await sheep.$api.coupon.listByGoods(state.goodsId);
}); if (code === 1) {
state.couponInfo = data;
}
});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-card {
background-color: #ffff;
margin: 14rpx 20rpx;
border-radius: 10rpx;
overflow: hidden;
}
// .detail-card {
.title-card { background-color: #ffff;
.price-box { margin: 14rpx 20rpx;
.price-text { border-radius: 10rpx;
font-size: 42rpx; overflow: hidden;
font-weight: 500; }
color: #ff3000;
line-height: 30rpx;
font-family: OPPOSANS;
&::before { //
content: '¥'; .title-card {
font-size: 30rpx; .price-box {
} .price-text {
} font-size: 42rpx;
font-weight: 500;
color: #ff3000;
line-height: 30rpx;
font-family: OPPOSANS;
.origin-price-text { &::before {
font-size: 26rpx; content: '¥';
font-weight: 400; font-size: 30rpx;
text-decoration: line-through; }
color: $gray-c; }
font-family: OPPOSANS;
&::before { .origin-price-text {
content: '¥'; font-size: 26rpx;
} font-weight: 400;
} text-decoration: line-through;
} color: $gray-c;
font-family: OPPOSANS;
.sales-text { &::before {
font-size: 26rpx; content: '¥';
font-weight: 500; }
color: $gray-c; }
} }
.discounts-box { .sales-text {
.tag-content { font-size: 26rpx;
flex: 1; font-weight: 500;
min-width: 0; color: $gray-c;
white-space: nowrap; }
}
.tag-box { .discounts-box {
overflow: hidden; .tag-content {
text-overflow: ellipsis; flex: 1;
} min-width: 0;
white-space: nowrap;
}
.tag { .tag-box {
flex-shrink: 0; overflow: hidden;
padding: 4rpx 10rpx; text-overflow: ellipsis;
font-size: 24rpx; }
font-weight: 500;
border-radius: 4rpx;
color: var(--ui-BG-Main);
background: var(--ui-BG-Main-tag);
}
.discounts-title { .tag {
font-size: 24rpx; flex-shrink: 0;
font-weight: 500; padding: 4rpx 10rpx;
color: var(--ui-BG-Main); font-size: 24rpx;
line-height: normal; font-weight: 500;
} border-radius: 4rpx;
color: var(--ui-BG-Main);
background: var(--ui-BG-Main-tag);
}
.cicon-forward { .discounts-title {
color: var(--ui-BG-Main); font-size: 24rpx;
font-size: 24rpx; font-weight: 500;
line-height: normal; color: var(--ui-BG-Main);
margin-top: 4rpx; line-height: normal;
} }
}
.title-text { .cicon-forward {
font-size: 30rpx; color: var(--ui-BG-Main);
font-weight: bold; font-size: 24rpx;
line-height: 42rpx; line-height: normal;
} margin-top: 4rpx;
}
}
.subtitle-text { .title-text {
font-size: 26rpx; font-size: 30rpx;
font-weight: 400; font-weight: bold;
color: $dark-9; line-height: 42rpx;
line-height: 42rpx; }
}
}
// .subtitle-text {
.buy-box { font-size: 26rpx;
.add-btn { font-weight: 400;
width: 214rpx; color: $dark-9;
height: 72rpx; line-height: 42rpx;
font-weight: 500; }
font-size: 28rpx; }
border-radius: 40rpx 0 0 40rpx;
background-color: var(--ui-BG-Main-light);
color: var(--ui-BG-Main);
}
.buy-btn { //
width: 214rpx; .buy-box {
height: 72rpx; .add-btn {
font-weight: 500; // width: 214rpx;
font-size: 28rpx; width: 312rpx;
height: 72rpx;
font-weight: 500;
font-size: 28rpx;
border-radius: 40rpx 0 0 40rpx;
background-color: var(--ui-BG-Main-light);
color: var(--ui-BG-Main);
}
border-radius: 0 40rpx 40rpx 0; .buy-btn {
background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient)); // width: 214rpx;
color: $white; width: 312rpx;
} height: 72rpx;
font-weight: 500;
font-size: 28rpx;
.disabled-btn { border-radius: 0 40rpx 40rpx 0;
width: 428rpx; background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
height: 72rpx; color: $white;
font-weight: 500; }
font-size: 28rpx;
border-radius: 0 40rpx 40rpx 0; .disabled-btn {
background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient)); width: 428rpx;
color: $white; height: 72rpx;
} font-weight: 500;
} font-size: 28rpx;
.model-box { border-radius: 0 40rpx 40rpx 0;
height: 60vh; background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
color: $white;
}
}
.model-content { .model-box {
height: 56vh; height: 60vh;
}
.title { .model-content {
font-size: 36rpx; height: 56vh;
font-weight: bold; }
color: #333333;
}
.subtitle { .title {
font-size: 26rpx; font-size: 36rpx;
font-weight: 500; font-weight: bold;
color: #333333; color: #333333;
} }
}
</style> .subtitle {
font-size: 26rpx;
font-weight: 500;
color: #333333;
}
}
</style>

View File

@ -1,6 +1,6 @@
<template> <template>
<!-- tabbar="/pages/index/category" --> <!-- tabbar="/pages/index/category" -->
<s-layout title="分类" :bgStyle="{ color: '#fff' }"> <s-layout title="分类" tabbar="/pages/index/category" :bgStyle="{ color: '#fff' }">
<view class="s-category"> <view class="s-category">
<view class="three-level-wrap ss-flex ss-col-top"> <view class="three-level-wrap ss-flex ss-col-top">
<view class="side-menu-wrap" :style="[{ top: Number(statusBarHeight + 88) + 'rpx' }]"> <view class="side-menu-wrap" :style="[{ top: Number(statusBarHeight + 88) + 'rpx' }]">
@ -271,7 +271,7 @@
.car-show { .car-show {
height: 80rpx; height: 80rpx;
position: fixed; position: fixed;
bottom: 150rpx; bottom: 200rpx;
right: 0; right: 0;
.car-image { .car-image {

View File

@ -2,65 +2,62 @@
<view v-if="template"> <view v-if="template">
<s-layout title="首页" navbar="custom" tabbar="/pages/index/index" :bgStyle="template.style?.background" <s-layout title="首页" navbar="custom" tabbar="/pages/index/index" :bgStyle="template.style?.background"
:navbarStyle="template.style?.navbar" onShareAppMessage :showFloatButton="true" bgColor="#fcc74e"> :navbarStyle="template.style?.navbar" onShareAppMessage :showFloatButton="true" bgColor="#fcc74e">
<view class="container"> <scroll-view @scrolltolower="onScrolltolower" :refresher-enabled="true" :refresher-triggered="homrS"
<!-- 顶部 --> @refresherrefresh="onS" scroll-y="true" class="scrollBox align-items"
<view class="top"> style="height: 84vh;box-sizing: border-box;">
<!-- 顶部-地址&搜索 --> <view class="container">
<view class="locTop"> <!-- 顶部 -->
<view class="locTop-left" @click="state.showRegion = true"> <view class="top">
<image style="width: 34rpx;height: 34rpx;" <!-- 顶部-地址&搜索 -->
src="https://jiangxiaoxian.0rui.cn/locationTop.png" mode=""></image> <view class="locTop">
<view <view class="locTop-left" @click="toPage('/packageA/search/index')">
style="margin-left: 10rpx;font-size: 30rpx;font-weight: 800;line-height: 45rpx; <uni-section style="border-radius: 192rpx;padding: 0;width: 430rpx;height: 70rpx;"
white-space: nowrap;overflow: hidden;text-overflow: ellipsis;width: 230rpx;"> type="line">
{{state.model.city_name ? proCity:'全国' }} <uni-search-bar style="border-radius: 192rpx;" radius="23" placeholder="搜索您需要的信息"
bgColor="#ffffff" clearButton="none" cancelButton="none" :readonly="true" />
</uni-section>
</view>
<view class="locTop-right" @click="toPage('/pages/canteenRent/fabu')">
发布档口信息
</view> </view>
</view> </view>
<view class="locTop-right" @click="toPage('/packageA/search/index')">
<uni-section style="border-radius: 192rpx;padding: 0;" type="line">
<uni-search-bar style="border-radius: 192rpx;" radius="23" placeholder="搜索您需要的信息"
bgColor="#ffffff" clearButton="none" cancelButton="none"
:readonly="true" />
</uni-section>
<!-- @confirm="search"-->
</view>
</view>
<!-- 顶部-三个内容跳转 --> <!-- 顶部-三个内容跳转 -->
<view class="navTop"> <view class="navTop">
<view class="navTop-left" @click="toPage('/pages/canteenRent/rentList')"> <view class="navTop-left" @click="toTabb('/pages/index/category')">
<view class="title" style="">食堂招租</view> <!-- <view class="title" style="">食堂招租</view>
<view class="intro" style="color: #f42b2b;margin-top: 20rpx;">味揽商机 食载未来</view> <view class="intro" style="color: #f42b2b;margin-top: 20rpx;">味揽商机 食载未来</view> -->
</view>
<view class="navTop-right">
<view class="navRight1" @click="toPage('/pages/school/schoolIndex')">
<view class="title" style="">平台学院</view>
<view class="intro" style="color: #05b0b0;margin-top: 20rpx;">学知赋能成长</view>
</view> </view>
<view class="navRight2" @click="toPage('/pages/index/category')"> <view class="navTop-right">
<view class="title" style="">原料商城</view> <view class="navRight1" @click="toPage('/pages/canteenRent/rentList')">
<view class="intro" style="color: #f58f3d;margin-top: 20rpx;">优材好料直供</view> <!-- <view class="title" style="">平台学院</view>
<view class="intro" style="color: #05b0b0;margin-top: 20rpx;">学知赋能成长</view> -->
</view>
<view class="navRight2" @click="toPage('/pages/school/schoolIndex')">
<!-- <view class="title" style="">原料商城</view>
<view class="intro" style="color: #f58f3d;margin-top: 20rpx;">优材好料直供</view> -->
</view>
</view> </view>
</view> </view>
</view>
</view> </view>
<!-- 轮播图 --> <!-- 轮播图 -->
<view class="swiper-box"> <view class="swiper-box">
<view class="swiper_s"> <view class="swiper_s">
<swiper class="swiper_s" :circular="true" :autoplay="true" indicator-active-color="#0DAE11" <swiper class="swiper_s" :circular="true" :autoplay="true" indicator-active-color="#0DAE11"
indicator-color="#ffffff" :indicator-dots="false" :current="swiperCurrent" indicator-color="#ffffff" :indicator-dots="false" :current="swiperCurrent"
@animationfinish="swiperChange"> @animationfinish="swiperChange">
<!-- v-for="(item, index) in swiperList" :key="index" @click="openSwiper(item)"--> <!-- v-for="(item, index) in swiperList" :key="index" @click="openSwiper(item)"-->
<swiper-item style="margin: 0 auto;" v-for="(item, index) in bannerList" :key="index" @click="swiperJump(item)"> <swiper-item style="margin: 0 auto;" v-for="(item, index) in bannerList" :key="index"
<view style="position: relative;width: 100%;height: 100%;"> @click="swiperJump(item)">
<!--<view class="fnon_tit"></view> <view style="position: relative;width: 100%;height: 100%;">
<!--<view class="fnon_tit"></view>
<view class="text">{{ item.title ? item.title : '' }}</view> <view class="text">{{ item.title ? item.title : '' }}</view>
@click="click(item.url)" 跳转活动链接 --> @click="click(item.url)" 跳转活动链接 -->
<image class="swiper-image" :src="item.image" mode="scaleToFill" /> <image class="swiper-image" :src="item.image" mode="scaleToFill" />
</view> </view>
</swiper-item> </swiper-item>
<!-- <swiper-item style="margin: 0 auto;"> <!-- <swiper-item style="margin: 0 auto;">
<view style="position: relative;width: 100%;height: 100%"> <view style="position: relative;width: 100%;height: 100%">
<!--<view class="fnon_tit"></view> <!--<view class="fnon_tit"></view>
<view class="text">{{ item.title ? item.title : '' }}</view> <view class="text">{{ item.title ? item.title : '' }}</view>
@ -68,66 +65,84 @@
<image class="swiper-image" src="/static/cart-empty.png" mode="scaleToFill" /> <image class="swiper-image" src="/static/cart-empty.png" mode="scaleToFill" />
</view> </view>
</swiper-item> --> </swiper-item> -->
</swiper> </swiper>
</view>
</view>
<!-- 推荐列表 -->
<view class="recommend-box">
<!-- 推荐标题 -->
<view class="recom-titleBox">
<view style="font-size: 38rpx;line-height: 38rpx;font-weight: 800;color: #333333;">平台推荐</view>
<view class="title-more" @click="toPage('/pages/canteenRent/rentList')">
<view style="font-size: 26rpx;line-height: 26rpx;font-weight: 400;color: #999999;">查看更多
</view>
<image style="width: 28rpx;height: 28rpx;margin-left: 20rpx;"
src="https://jiangxiaoxian.0rui.cn/nextMore.png" mode=""></image>
</view> </view>
</view> </view>
<view class="rrecommList" v-for="(item,index) in rentList" :key="index" @click="toPage(`/pages/canteenRent/rentDetail?id=` + item.id)"> <!-- 推荐列表 -->
<view class="reListItem"> <view class="recommend-box">
<!-- 左侧图片 --> <!-- 推荐标题 -->
<view class="listItem-images"> <view class="recom-titleBox">
<image v-if="item.recommend == 1" <view style="width: 60%;display: flex;justify-content: flex-start;align-items: center;">
style="width: 77rpx;height: 36rpx;z-index: 100;position: relative;top: 34rpx;left: 0rpx;" <view style="font-size: 38rpx;line-height: 38rpx;font-weight: 800;color: #333333;">餐厅推荐
src="https://jiangxiaoxian.0rui.cn/hot.png"></image> </view>
<image class="iamges-mainImg" :src="item.images[0]" mode="aspectFill"></image> <view class="cityBox" @click="state.showRegion = true">
<view style="margin-right: 10rpx;font-size: 30rpx;font-weight: 800;line-height: 45rpx;
white-space: nowrap;overflow: hidden;text-overflow: ellipsis;color: #999999;">
{{ state.model.city_name ? state.model.city_name : '地区筛选'}}
</view>
<image style="width: 25rpx;height: 13rpx;"
src="https://jiangxiaoxian.0rui.cn/rentTriangle.png" mode=""></image>
</view>
</view> </view>
<!-- 右侧内容 -->
<view class="listItem-contents"> <view class="title-more" @click="toPage('/pages/canteenRent/rentList')">
<view class="title2" style="margin-bottom: 20rpx;">{{item.platform_title}}</view> <view style="font-size: 26rpx;line-height: 26rpx;font-weight: 400;color: #999999;">查看更多
<scroll-view class="score-box"> </view>
<view class="fs11 flex cate"> <image style="width: 28rpx;height: 28rpx;margin-left: 20rpx;"
<view class="cate-e" v-for="(e,i) in item.cate" :key="i"> src="https://jiangxiaoxian.0rui.cn/nextMore.png" mode=""></image>
<view v-show="e" class="status-tag " style="margin-right: 20rpx;">{{e}} </view>
</view>
<!-- 列表 -->
<view class="rrecommList" v-for="(item,index) in rentList" :key="index"
@click="toPage(`/pages/canteenRent/rentDetail?id=` + item.id)">
<view class="reListItem">
<!-- 左侧图片 -->
<view class="listItem-images">
<image v-if="item.recommend == 1"
style="width: 77rpx;height: 36rpx;z-index: 100;position: relative;top: 34rpx;left: 0rpx;"
src="https://jiangxiaoxian.0rui.cn/hot.png"></image>
<image class="iamges-mainImg" :src="item.images[0]" mode="aspectFill"></image>
</view>
<!-- 右侧内容 -->
<view class="listItem-contents">
<view class="title2" style="margin-bottom: 20rpx;">{{item.platform_title}}</view>
<scroll-view class="score-box">
<view class="fs11 flex cate">
<view class="cate-e" v-for="(e,i) in item.cate" :key="i">
<view v-show="e" class="status-tag " style="margin-right: 20rpx;">{{e}}
</view>
</view>
<!-- <text v-show="item.cate[1]"
class="status-tag" style="margin-right: 20rpx;">{{item.cate[1]}}</text>
<text v-show="item.cate[2]"
class="status-tag">{{item.cate[2]}}</text> -->
</view>
</scroll-view>
<view class="cons-third">
<view style="display: flex;">
<image style="width: 24rpx;height: 24rpx;"
src="https://jiangxiaoxian.0rui.cn/locationList.png"></image>
<view class="title3" style="margin-left: 10rpx;">{{item.address_city_text}}
</view> </view>
</view> </view>
<view class="title3">{{item.release_time_text}}</view>
<!-- <text v-show="item.cate[1]" <view style="display: flex;">
class="status-tag" style="margin-right: 20rpx;">{{item.cate[1]}}</text> <image style="width: 24rpx;height: 24rpx;"
<text v-show="item.cate[2]" src="https://jiangxiaoxian.0rui.cn/eye.png"></image>
class="status-tag">{{item.cate[2]}}</text> --> <view class="title3" style="margin-left: 10rpx;">{{item.views}}</view>
</view>
</scroll-view>
<view class="cons-third">
<view style="display: flex;">
<image style="width: 24rpx;height: 24rpx;"
src="https://jiangxiaoxian.0rui.cn/locationList.png"></image>
<view class="title3" style="margin-left: 10rpx;">{{item.address_city_text}}
</view> </view>
</view> </view>
<view class="title3">{{item.release_time_text}}</view>
<view style="display: flex;">
<image style="width: 24rpx;height: 24rpx;"
src="https://jiangxiaoxian.0rui.cn/eye.png"></image>
<view class="title3" style="margin-left: 10rpx;">{{item.views}}</view>
</view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view>
</view> <view class="viewCan" style="width: 100%;height: 300rpx;"></view>
</view>
</scroll-view>
<!-- 省市区弹窗 --> <!-- 省市区弹窗 -->
@ -159,37 +174,37 @@
region region
} from '@/sheep/validate/form'; } from '@/sheep/validate/form';
function getAreaCity() { function getAreaCity() {
// if (_.isEmpty(uni.getStorageSync('areaCity'))) { // if (_.isEmpty(uni.getStorageSync('areaCity'))) {
sheep.$api.rent.getCity().then((res) => { sheep.$api.rent.getCity().then((res) => {
if (res.code === 1) { if (res.code === 1) {
uni.setStorageSync('areaCity', res.data); uni.setStorageSync('areaCity', res.data);
} }
}); });
// } // }
}; };
function getTag() { function getTag() {
// if (_.isEmpty(uni.getStorageSync('areaCity'))) { // if (_.isEmpty(uni.getStorageSync('areaCity'))) {
sheep.$api.rent.tagsList().then((res) => { sheep.$api.rent.tagsList().then((res) => {
if (res.code === 1) { if (res.code === 1) {
uni.setStorageSync('tagList', res.data.list); uni.setStorageSync('tagList', res.data.list);
} }
}); });
// } // }
}; };
function getType() { function getType() {
// if (_.isEmpty(uni.getStorageSync('areaCity'))) { // if (_.isEmpty(uni.getStorageSync('areaCity'))) {
sheep.$api.rent.listType().then((res) => { sheep.$api.rent.listType().then((res) => {
if (res.code === 1) { if (res.code === 1) {
uni.setStorageSync('typeList', res.data); uni.setStorageSync('typeList', res.data);
} }
}); });
// } // }
}; };
const template = computed(() => sheep.$store('app').template?.home); const template = computed(() => sheep.$store('app').template?.home);
const isLogin = computed(() => sheep.$store('user').isLogin); const isLogin = computed(() => sheep.$store('user').isLogin);
@ -211,18 +226,18 @@
region, region,
}, },
}); });
const getAreaData = () => { const getAreaData = () => {
if (_.isEmpty(uni.getStorageSync('areaData'))) { if (_.isEmpty(uni.getStorageSync('areaData'))) {
sheep.$api.data.area().then((res) => { sheep.$api.data.area().then((res) => {
if (res.code === 1) { if (res.code === 1) {
uni.setStorageSync('areaData', res.data); uni.setStorageSync('areaData', res.data);
} }
}); });
} }
}; };
const proCity = ref('') const proCity = ref('')
@ -233,10 +248,10 @@
...state.model, ...state.model,
...e, ...e,
}; };
if(state.model.province_name == state.model.city_name) { if (state.model.province_name == state.model.city_name) {
proCity.value = state.model.province_name proCity.value = state.model.province_name
}else { } else {
// proCity.value = state.model.province_name + " " + state.model.city_name // proCity.value = state.model.province_name + " " + state.model.city_name
proCity.value = state.model.province_name + state.model.city_name proCity.value = state.model.province_name + state.model.city_name
} }
@ -245,7 +260,9 @@
console.log('onRegionConfirm33', state.model, proCity.value); console.log('onRegionConfirm33', state.model, proCity.value);
listQuery.value.province = state.model.province_id listQuery.value.province = state.model.province_id
listQuery.value.city = state.model.city_id listQuery.value.city = state.model.city_id;
listQuery.value.page = 1;
rentList.value = [];
getList() getList()
state.showRegion = false; state.showRegion = false;
}; };
@ -298,24 +315,24 @@
sheep.$router.go(decodeURIComponent(options.page)); sheep.$router.go(decodeURIComponent(options.page));
} }
}); });
// //
function swiperJump(item) { function swiperJump(item) {
console.log('轮播图跳转事件:',item.url); console.log('轮播图跳转事件:', item.url);
const tabBarPages = [ const tabBarPages = [
'/pages/index/index', '/pages/index/index',
'/pages/index/fabu', '/pages/index/category',
'/pages/index/user' '/pages/index/user'
]; ];
console.log('tabbarsList',tabBarPages); console.log('tabbarsList', tabBarPages);
if(item.type == "in") { if (item.type == "in") {
console.log('跳进内页'); console.log('跳进内页');
if(tabBarPages.includes(item.url)) { if (tabBarPages.includes(item.url)) {
console.log('导航页'); console.log('导航页');
uni.switchTab({ uni.switchTab({
url: item.url, url: item.url,
}) })
}else { } else {
uni.navigateTo({ uni.navigateTo({
url: item.url, url: item.url,
}) })
@ -329,19 +346,24 @@
setTimeout(function() { setTimeout(function() {
uni.stopPullDownRefresh(); uni.stopPullDownRefresh();
}, 800); }, 800);
rentList.value = [];
state.model.city_name = '';
state.model.province_name = '';
state.currentCityIndex = [0, 0];
getList();
}); });
onPageScroll(() => {}); onPageScroll(() => {});
const bannerList = ref([]) const bannerList = ref([])
async function getBanner() { async function getBanner() {
const res = await sheep.$api.home.homeBanner({}); const res = await sheep.$api.home.homeBanner({});
console.log('banner',res); console.log('banner', res);
if(res.code == 1) { if (res.code == 1) {
bannerList.value = res.data.list bannerList.value = res.data.list
console.log('bannerList',bannerList.value); console.log('bannerList', bannerList.value);
} }
} }
@ -367,13 +389,21 @@
} }
} }
const rentList = ref([]) const toTabb = (e) => {
uni.switchTab({
url: e,
})
}
const rentList = ref([]);
const rentCount = ref(0);
const homrS = ref(false)
// //
async function getList() { async function getList() {
const res = await sheep.$api.rent.rentlist({ const res = await sheep.$api.rent.rentlist({
keywords: listQuery.value.keywords, keywords: listQuery.value.keywords,
page: listQuery.value.page, page: listQuery.value.page,
limit: 25, limit: 10,
cate_ids: listQuery.value.cate_ids, cate_ids: listQuery.value.cate_ids,
order: 'normal', order: 'normal',
status: 1, status: 1,
@ -385,7 +415,10 @@
console.log('getList', res); console.log('getList', res);
if (res.data && res.data.list) { if (res.data && res.data.list) {
rentList.value = res.data.list; // rentList.value = res.data.list;
// rentCount.value = res.data.count
rentList.value = [...rentList.value, ...res.data.list];
rentCount.value = res.data.count;
// Safely process each item // Safely process each item
rentList.value = rentList.value.map(item => { rentList.value = rentList.value.map(item => {
@ -412,7 +445,43 @@
// } // }
console.log('getList', rentList.value); console.log('getList', rentList.value);
} }
//
function onScrolltolower() {
if (rentList.value.length < rentCount.value) {
listQuery.value.page += 1;
getList();
}
}
//
function onS() {
homrS.value = true
listQuery.value.keywords = '';
listQuery.value.cate_ids = '';
listQuery.value.province = '';
state.model.city_name = '';
listQuery.value.city = '';
state.currentCityIndex = [0, 0];
uni.showLoading({
title: '加载中...'
});
resetLists();
setTimeout(() => {
homrS.value = false;
uni.hideLoading();
uni.stopPullDownRefresh();
}, 2000)
}
//
function resetLists() {
// listQuery.value.keywords = ''
console.log('listQuery.value.keywords', listQuery.value.keywords);
listQuery.value.page = 1;
rentList.value = [];
getList();
}
// tabBar // tabBar
uni.hideTabBar({ uni.hideTabBar({
fail: () => {}, fail: () => {},
@ -470,8 +539,22 @@
line-height: 22rpx; line-height: 22rpx;
} }
.scrollBox {
padding-bottom: constant(safe-area-inset-bottom);
/* iOS 11.0 - 11.1 */
padding-bottom: env(safe-area-inset-bottom);
/* iOS 11.2+ */
}
/* 对于没有安全区域的设备,设置默认值 */
@supports not (padding-bottom: env(safe-area-inset-bottom)) {
.scrollBox {
padding-bottom: 0;
}
}
.container { .container {
min-height: 90vh; height: 100%;
width: 100%; width: 100%;
background-color: #f7f7f7; background-color: #f7f7f7;
// display: grid; // display: grid;
@ -482,7 +565,7 @@
height: 520rpx; height: 520rpx;
background-image: url('https://jiangxiaoxian.0rui.cn/topBack.png'); background-image: url('https://jiangxiaoxian.0rui.cn/topBack.png');
background-size: 100%; background-size: 100%;
padding: 30rpx 30rpx 30rpx 30rpx; padding: 30rpx;
display: grid; display: grid;
.locTop { .locTop {
@ -493,7 +576,8 @@
// align-items: center; // align-items: center;
.locTop-left { .locTop-left {
width: 250rpx; width: 430rpx;
height: 70rpx;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: flex-start; justify-content: flex-start;
@ -501,9 +585,18 @@
} }
.locTop-right { .locTop-right {
width: 410rpx; width: 203rpx;
height: 70rpx; height: 70rpx;
background-color: #ff5900;
color: #ffffff;
font-size: 28rpx;
font-weight: bold;
line-height: 42rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 104rpx;
padding: 0rpx 10rpx;
} }
} }
@ -514,38 +607,38 @@
// align-items: center; // align-items: center;
.navTop-left { .navTop-left {
width: 270rpx; width: 330rpx;
height: 350rpx; height: 390rpx;
background-image: url('https://jiangxiaoxian.0rui.cn/rent.png'); background-image: url('https://jiangxiaoxian.0rui.cn/shoppingMall.png');
background-size: 100%; background-size: 100% 100%;
border-radius: 18rpx; border-radius: 18rpx;
padding: 40rpx 30rpx 0rpx 30rpx; // padding: 40rpx 30rpx 0rpx 30rpx;
} }
.navTop-right { .navTop-right {
display: grid; // display: grid;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
width: 330rpx; width: 330rpx;
.navRight1 { .navRight1 {
width: 270rpx; width: 330rpx;
height: 140rpx; height: 180rpx;
background-image: url('https://jiangxiaoxian.0rui.cn/school.png'); background-image: url('https://jiangxiaoxian.0rui.cn/rent.png');
background-size: 100%; background-size: 100%;
border-radius: 18rpx; border-radius: 18rpx;
padding: 40rpx 30rpx 0rpx 30rpx; // padding: 40rpx 30rpx 0rpx 30rpx;
} }
.navRight2 { .navRight2 {
margin-top: 30rpx; margin-top: 30rpx;
width: 270rpx; width: 330rpx;
height: 140rpx; height: 180rpx;
background-image: url('https://jiangxiaoxian.0rui.cn/shoppingMall.png'); background-image: url('https://jiangxiaoxian.0rui.cn/school.png');
background-size: 100%; background-size: 100%;
border-radius: 18rpx; border-radius: 18rpx;
padding: 40rpx 30rpx 0rpx 30rpx; // padding: 40rpx 30rpx 0rpx 30rpx;
} }
} }
} }
@ -580,6 +673,7 @@
.recommend-box { .recommend-box {
margin-top: 30rpx; margin-top: 30rpx;
padding: 20rpx 30rpx; padding: 20rpx 30rpx;
height: 900rpx;
.recom-titleBox { .recom-titleBox {
display: flex; display: flex;
@ -587,6 +681,18 @@
align-items: center; align-items: center;
width: 690rpx; width: 690rpx;
.cityBox {
width: 222rpx;
height: 60rpx;
margin-left: 30rpx;
border-radius: 132rpx 132rpx 132rpx 132rpx;
border: 1rpx solid #999999;
display: flex;
align-items: center;
justify-content: center;
margin-top: 6rpx;
}
.title-more { .title-more {
display: flex; display: flex;
justify-content: center; justify-content: center;
@ -670,6 +776,9 @@
} }
.viewCan {}
} }
</style> </style>

View File

@ -26,20 +26,14 @@
<view style="font-weight: 800;" @click="sheep.$router.go('/pages/user/info')"> <view style="font-weight: 800;" @click="sheep.$router.go('/pages/user/info')">
{{ userInfo.nickname}} {{ userInfo.nickname}}
</view> </view>
<!-- <view class="UnAuthenBox weight8 fs-20" v-if="authenInfo.status == -1 " <image class="UnAuthenBox weight8 fs-20" v-if="authenInfo?.status == -1"
@click="toPage('/pages/user/authentication')">未认证</view> src="https://jiangxiaoxian.0rui.cn/unAuthen.png" @click="toPage('/pages/user/authentication')"></image>
<view class="authenticationBox weight8 fs-20" >已认证 <image class="authenticationBox weight8 fs-20" v-if="authenInfo?.status == 1 "
</view> -->
<image class="UnAuthenBox weight8 fs-20" v-if="authenInfo.status == -1"
src="https://jiangxiaoxian.0rui.cn/unAuthen.png"></image>
<image class="authenticationBox weight8 fs-20" v-if="authenInfo.status == 1 "
src="https://jiangxiaoxian.0rui.cn/authened.png"></image> src="https://jiangxiaoxian.0rui.cn/authened.png"></image>
</view> </view>
<view class="info-name fs-36 weight8 flexD" v-else> <view class="info-name fs-36 weight8 flexD" v-else>
<view style="font-weight: 800;" @click="toLogin">登录/注册</view> <view style="font-weight: 800;" @click="toLogin">登录/注册</view>
<!-- <view class="UnAuthenBox weight8 fs-20" v-if="authenInfo.status == -1 && isLogin == true">未认证</view>
<view class="authenticationBox weight8 fs-20" v-if="authenInfo.status == 1 && isLogin == true">已认证</view> -->
</view> </view>
<view class="fs-28 weight4" style="margin-top: 30rpx;">剩余拨打次数 <view class="fs-28 weight4" style="margin-top: 30rpx;">剩余拨打次数
{{ userInfo.all_mobile_num ? userInfo.all_mobile_num : 0 }} {{ userInfo.all_mobile_num ? userInfo.all_mobile_num : 0 }}
@ -255,6 +249,7 @@
const scrollHeight = ref() const scrollHeight = ref()
onShow(() => { onShow(() => {
// console.log('onShow',authenInfo.value.status);
isIos(); isIos();
sheep.$store('user').updateUserData(); sheep.$store('user').updateUserData();
}); });

View File

@ -7,16 +7,16 @@
<view style="padding: 0 30rpx;width: 100%;"> <view style="padding: 0 30rpx;width: 100%;">
<view v-if="currentTab == 0"> <view v-if="currentTab == 0">
<image v-if="form.workimage != '' && form.status == 1" style="width: 690rpx;height: 350rpx;" :src="baseUrl + form.workimage" @click="afterRead"></image> <image v-if="form.workimage != '' && form.status == 1" style="width: 690rpx;height: 350rpx;" :src="baseUrl + form.workimage" @click="afterRead" mode="aspectFill"></image>
<image v-else style="width: 690rpx;height: 350rpx;" <image v-else style="width: 690rpx;height: 350rpx;"
src="https://jiangxiaoxian.0rui.cn/manager.png" @click="afterRead"></image> src="https://jiangxiaoxian.0rui.cn/manager.png" @click="afterRead" mode="aspectFill"></image>
</view> </view>
<view v-if="currentTab == 1"> <view v-if="currentTab == 1">
<image v-if="form.gateimage != '' && form.status == 2" style="width: 690rpx;height: 350rpx;" <image v-if="form.gateimage != '' && form.status == 2" style="width: 690rpx;height: 350rpx;"
:src="baseUrl + form.gateimage" @click="afterRead"></image> :src="baseUrl + form.gateimage" @click="afterRead" mode="aspectFill"></image>
<image v-else style="width: 690rpx;height: 350rpx;" @click="afterRead" <image v-else style="width: 690rpx;height: 350rpx;" @click="afterRead"
src="https://jiangxiaoxian.0rui.cn/Merchant.png"> src="https://jiangxiaoxian.0rui.cn/Merchant.png" mode="aspectFill">
</image> </image>
</view> </view>

View File

@ -225,7 +225,7 @@
const res = await sheep.$api.rent.rentlist({ const res = await sheep.$api.rent.rentlist({
page: listQuery.value.page, page: listQuery.value.page,
limit: listQuery.value.limit, limit: listQuery.value.limit,
order: 'normal', order: 'new',
status: listQuery.value.status, status: listQuery.value.status,
my: 1, my: 1,
}); });

View File

@ -161,24 +161,31 @@
box-shadow: 0px 0px 4rpx rgba(51, 51, 51, 0.08), box-shadow: 0px 0px 4rpx rgba(51, 51, 51, 0.08),
0px 4rpx 6rpx 2rpx rgba(102, 102, 102, 0.12); 0px 4rpx 6rpx 2rpx rgba(102, 102, 102, 0.12);
border-radius: 30rpx; border-radius: 30rpx;
width: 134rpx; width: 150rpx;
height: 56rpx; height: 64rpx;
// width: 134rpx;
// height: 56rpx;
margin-left: 8rpx; margin-left: 8rpx;
.line { .line {
width: 2rpx; width: 4rpx;
height: 24rpx; height: 30rpx;
background: #e5e5e7; // height: 24rpx;
// background: #e5e5e7;
background-color: #000;
} }
.sicon-back { .sicon-back {
font-size: 32rpx; // font-size: 32rpx;
font-size: 36rpx;
color: #000; color: #000;
} }
.sicon-home { .sicon-home {
font-size: 32rpx; // font-size: 32rpx;
font-size: 36rpx;
color: #000; color: #000;
} }
.sicon-more { .sicon-more {
font-size: 32rpx; // font-size: 32rpx;
font-size: 36rpx;
color: #000; color: #000;
} }
.icon-button { .icon-button {

View File

@ -47,6 +47,7 @@ const getShareInfo = (
// 配置转发参数 // 配置转发参数
if (shareConfig.methods.includes('forward')) { if (shareConfig.methods.includes('forward')) {
console.log('shareConfig');
if (shareConfig.forwardInfo.title === '' || shareConfig.forwardInfo.image === '') { if (shareConfig.forwardInfo.title === '' || shareConfig.forwardInfo.image === '') {
console.log('请在平台设置中配置转发信息'); console.log('请在平台设置中配置转发信息');
} }
@ -148,11 +149,13 @@ const decryptSpm = (spm) => {
}; };
break; break;
} }
shareParams.platform = platformMap[shareParamsArray[3] - 1]; shareParams.platform = platformMap[shareParamsArray[3] - 1];
shareParams.from = fromMap[shareParamsArray[4] - 1]; shareParams.from = fromMap[shareParamsArray[4] - 1];
if (shareParams.shareId != 0) { if (shareParams.shareId != 0) {
// 已登录 立即添加分享记录 // 已登录 立即添加分享记录
if (user.isLogin) { if (user.isLogin) {
console.log('已登录 立即添加分享记录前');
user.addShareLog(shareParams); user.addShareLog(shareParams);
} else { } else {
// 未登录 待用户登录后添加分享记录 // 未登录 待用户登录后添加分享记录

View File

@ -186,7 +186,7 @@
}, },
leftWidth: { leftWidth: {
type: [Number, String], type: [Number, String],
default: 80, default: 86,
}, },
rightWidth: { rightWidth: {
type: [Number, String], type: [Number, String],
@ -285,25 +285,31 @@
background: #ffffff; background: #ffffff;
box-shadow: 0px 0px 4rpx rgba(51, 51, 51, 0.08), 0px 4rpx 6rpx 2rpx rgba(102, 102, 102, 0.12); box-shadow: 0px 0px 4rpx rgba(51, 51, 51, 0.08), 0px 4rpx 6rpx 2rpx rgba(102, 102, 102, 0.12);
border-radius: 30rpx; border-radius: 30rpx;
// width: 150rpx;
height: 64rpx;
width: 134rpx; width: 134rpx;
height: 56rpx; // height: 56rpx;
margin-left: 8rpx; margin-left: 8rpx;
.line { .line {
width: 2rpx; width: 4rpx;
height: 24rpx; height: 30rpx;
// background: #e5e5e7; // height: 24rpx;
background: #3d3d3d; // background: #e5e5e7;
background: #000;
} }
.sicon-back { .sicon-back {
font-size: 32rpx; // font-size: 32rpx;
font-size: 36rpx;
color: #000; color: #000;
} }
.sicon-home { .sicon-home {
font-size: 32rpx; // font-size: 32rpx;
font-size: 34rpx;
color: #000; color: #000;
} }
.sicon-more { .sicon-more {
font-size: 32rpx; // font-size: 32rpx;
font-size: 34rpx;
color: #000; color: #000;
} }
.icon-button { .icon-button {
@ -401,6 +407,7 @@
/* #endif */ /* #endif */
width: 120rpx; width: 120rpx;
justify-content: flex-start; justify-content: flex-start;
// justify-content: center;
align-items: center; align-items: center;
} }

View File

@ -89,12 +89,12 @@
child: [{ child: [{
id: '', id: '',
level: "city", level: "city",
name: "全", name: "全部地区",
pid: 0 pid: 0
}], // }], //
id: '', id: '',
level: "province", level: "province",
name: "全", name: "全部地区",
pid: 0 pid: 0
}] }]
const areaData = proFirst.concat(uni.getStorageSync('areaCity')) const areaData = proFirst.concat(uni.getStorageSync('areaCity'))