Browse Source

Merge branch 'master' into dev_delivery

dev_delivery
jiazhipeng 1 month ago
parent
commit
9326bd2aa2
  1. 4
      App.vue
  2. 2
      manifest.json
  3. 28
      pages.json
  4. 2
      pages/index/index.vue
  5. 140
      pages/user/user.vue
  6. 8
      static/js/request.js
  7. 2
      subPackages/activity/agriculturalProd.vue
  8. 2
      subPackages/activity/agriculturalProdNH.vue
  9. 51
      subPackages/activity/coffeeClub.vue
  10. 3
      subPackages/activity/commonRule.vue
  11. 377
      subPackages/activity/greenOrganic.vue
  12. 10
      subPackages/activity/jitoumi.vue
  13. 287
      subPackages/activity/mooncake.vue
  14. 293
      subPackages/activity/suchao.vue
  15. 10
      subPackages/sales/index.vue
  16. 10
      subPackages/sales/indexs.vue
  17. 5
      subPackages/search/techanResult.vue
  18. 50
      subPackages/techan/cartOrder.vue
  19. 17
      subPackages/techan/cartOrder1.vue
  20. 56
      subPackages/techan/detail.vue
  21. 111
      subPackages/techan/index.vue
  22. 48
      subPackages/techan/order.vue
  23. 2
      subPackages/techan/selfPickUpPoint.vue
  24. 56
      subPackages/user/travelerList.vue

4
App.vue

@ -8,8 +8,8 @@
uni.setStorageSync('SHFlag', false)
this.Post({id:2388},'/api/multimedia/detail').then(res => {
if (res && res.data) {
let SHFlag = res.data.company_name == 1 ? true : false
// let SHFlag = res.data.ext_link == 1 ? true : false
// let SHFlag = res.data.company_name == 1 ? true : false
let SHFlag = res.data.ext_link == 1 ? true : false
uni.setStorageSync('SHFlag', SHFlag)
return
} else {

2
manifest.json

@ -64,7 +64,7 @@
"desc" : "获取用户位置"
}
},
"requiredPrivateInfos" : [ "getLocation", "onLocationChange", "startLocationUpdate","chooseLocation" ]
"requiredPrivateInfos" : [ "getLocation", "onLocationChange", "startLocationUpdate","chooseLocation","chooseAddress" ]
},
"mp-alipay" : {
"usingComponents" : true

28
pages.json

@ -299,13 +299,13 @@
{
"path" : "sales/index",
"style" : {
"navigationBarTitleText" : "不时不食"
"navigationBarTitleText" : ""
}
},
{
"path" : "sales/indexs",
"style" : {
"navigationBarTitleText" : "限时特惠"
"navigationBarTitleText" : ""
}
},
{
@ -349,6 +349,30 @@
"style": {
"navigationBarTitleText" : "水八仙之首—苏州芡实 (鸡头米)"
}
},
{
"path": "activity/suchao",
"style": {
"navigationBarTitleText" : "跟着苏超逛时味苏州补给站"
}
},
{
"path": "activity/coffeeClub",
"style": {
"navigationBarTitleText" : ""
}
},
{
"path": "activity/mooncake",
"style": {
"navigationBarTitleText" : "苏式月饼"
}
},
{
"path": "activity/greenOrganic",
"style": {
"navigationBarTitleText" : "绿色有机标准认证"
}
}
]
}],

2
pages/index/index.vue

@ -138,7 +138,7 @@
},
//
onHide() {
// this.getLocation()
this.getLocation()
},
onReady() {
this.initRectInfo()

140
pages/user/user.vue

@ -52,14 +52,14 @@
<view class="cygj">
<view v-for="(item,index) in cyList" :key="index"
@click="gotoUrl(item,index)" v-if="item.isShow">
<button id="contact" class="cyItem flex-between" open-type="contact" bindcontact="handleContact" session-from="sessionFrom" v-if="index == 2">
<!-- <button id="contact" class="cyItem flex-between" open-type="contact" bindcontact="handleContact" session-from="sessionFrom" v-if="index == 2">
<view class="flex-center">
<img src="https://static.ticket.sz-trip.com/shiweisuzhou/images/user/lxkf.png" class="headIcon">
联系我们
</view>
<img src="https://static.ticket.sz-trip.com/dongtai/images/user/rightIcon-gray.png" class="rightIcon">
</button>
<view class="cyItem flex-between" v-else>
</button> -->
<view class="cyItem flex-between">
<view class="flex-center">
<img :src="item.src" class="headIcon">
{{item.title}}
@ -81,6 +81,46 @@
</view>
</uni-popup>
<uni-popup ref="kfpopup" type="bottom" :safe-area="false">
<view class="kf-popup-content">
<!-- 标题栏 -->
<view class="popup-header">
<text class="title">联系我们</text>
<text class="close-icon" @click="$refs.kfpopup.close()">×</text>
</view>
<!-- 内容区域 -->
<view class="popup-body">
<!-- 电话咨询 -->
<view class="contact-item" @click="clickPhone('0512-80822586')">
<view class="info">
<text class="label">电话咨询</text>
<text class="detail">0512-80822586</text>
</view>
<view class="arrow">
<image style="width: 100%;height: 100%;" mode="aspectFill" src="https://static.ticket.sz-trip.com/uploads/20250911/a58432ad47582207f9f03ac31a6e2d98.png"></image>
</view>
</view>
<!-- 在线客服 -->
<button class="concat-btn" open-type="contact" bindcontact="handleContact" session-from="sessionFrom">
<view class="contact-item">
<view class="info">
<text class="label">在线客服</text>
<text class="detail">工作时间: 9:00-18:00</text>
</view>
<view class="arrow">
<image style="width: 100%;height: 100%;" mode="aspectFill" src="https://static.ticket.sz-trip.com/uploads/20250911/11761e83954ecb845a8c9ea26e95c6e0.png"></image>
</view>
</view>
</button>
</view>
</view>
</uni-popup>
<CustomTabBar :currentTab="4" />
</view>
</template>
@ -137,8 +177,8 @@
isShow: true
},
{
src: 'https://static.ticket.sz-trip.com/shiweisuzhou/images/user/lxwm.png',
title: '联系客服',
src: 'https://static.ticket.sz-trip.com/shiweisuzhou/images/user/lxkf.png',
title: '联系我们',
path: '',
isShow: true
},
@ -301,7 +341,7 @@
// },
gotoUrl(item, index) {
if (index == 2) {
// this.$refs.popup.open()
this.$refs.kfpopup.open()
return;
}
if (index == 4) {
@ -676,4 +716,92 @@
}
}
}
/* 弹窗内容容器 */
.kf-popup-content {
width: 100%;
background-color: #fff;
border-top-left-radius: 16px;
border-top-right-radius: 16px;
overflow: hidden;
.popup-header {
display: flex;
justify-content: center;
align-items: center;
padding: 16px;
position: relative;
border-bottom: 1px solid #f5f5f5;
}
.title {
font-size: 18px;
font-weight: bold;
}
.close-icon {
position: absolute;
right: 16px;
font-size: 20px;
color: #999;
}
/* 弹窗内容区 */
.popup-body {
padding: 10px 0;
}
/* 联系项样式 */
.contact-item {
display: flex;
align-items: center;
padding: 16px 20px;
border-bottom: 1px solid #f5f5f5;
}
.info {
flex: 1;
}
.label {
font-size: 16px;
display: block;
margin-bottom: 4px;
}
.detail {
font-size: 14px;
color: #666;
}
.arrow {
width: 20px;
height: 20px;
color: #ccc;
font-size: 18px;
}
}
.concat-btn{
/* 清除默认背景和边框 */
background: none;
border: none;
padding: 0;
margin: 0;
/* 清除默认圆角 */
border-radius: 0;
/* 清除默认文字样式 */
color: inherit;
font-size: inherit;
line-height: inherit;
/* 清除点击效果(灰色背景) */
-webkit-tap-highlight-color: transparent;
text-align: left;
}
</style>

8
static/js/request.js

@ -51,9 +51,11 @@ Vue.prototype.Post = (params = {}, apiurl) => {
params.token = token;
}
return new Promise((resolve, reject) => {
uni.showLoading({
title: '加载中'
});
if (!params.noShowLoading) {
uni.showLoading({
title: '加载中'
});
}
uni.request({
method: params.method || 'GET',
url: Vue.prototype.NEWAPIURL + apiurl,

2
subPackages/activity/agriculturalProd.vue

@ -14,7 +14,7 @@
</view>
<image class="adv-image" mode="aspectFill" @click="gotoPath('/subPackages/activity/agriculturalProdNH')"
src="https://static.ticket.sz-trip.com/uploads/20250815/3786f50e9baa674b850df7383fa6ed88.png"></image>
src="https://static.ticket.sz-trip.com/uploads/20250902/fbb790d1c51d067d30cef50b34f06286.png"></image>
<image class="title-image" style="margin-bottom: 30rpx;" src="https://static.ticket.sz-trip.com/uploads/20250821/e45546af63bafab92ac2e8783d7b079c.png"></image>

2
subPackages/activity/agriculturalProdNH.vue

@ -17,7 +17,7 @@
<image style="width: 100%;" mode="widthFix" :src="ruleImg"></image>
</view>
<view class="btn" @click="goBack()">返回活动页</view>
<!-- <view class="btn" @click="goBack()">返回活动页</view> -->
<image class="bottom-img" src="https://static.ticket.sz-trip.com/uploads/20250815/877b45bf01e0181fd489f0e1086c62fd.png"></image>

51
subPackages/activity/coffeeClub.vue

@ -0,0 +1,51 @@
<template>
<view class="bg">
<image v-if="headImg" :src="showImg(headImg)" class="topImg" mode="widthFix"></image>
</view>
</template>
<script>
export default {
data() {
return {
headImg: '',
}
},
onLoad(option) {
},
onReady() {
this.getHeadImg(2392)
},
methods: {
getHeadImg (id) {
this.Post({id},'/api/multimedia/detail').then(res => {
this.headImg = res.data.head_img
uni.setNavigationBarTitle({
title:res.data.title
})
});
},
},
onPageScroll(res) {
}
}
</script>
<style lang="scss" scoped>
.bg {
width: 750rpx;
min-height: 100vh;
}
.topImg {
width: 100%;
}
</style>

3
subPackages/activity/commonRule.vue

@ -43,4 +43,7 @@
min-height: 100vh;
padding-bottom: 60rpx;
}
.content{
padding: 0 30rpx;
}
</style>

377
subPackages/activity/greenOrganic.vue

@ -0,0 +1,377 @@
<template>
<view class="bg">
<image v-if="headImg" :src="showImg(headImg)" class="topImg" mode="widthFix"></image>
<image class="what-img" @click="openPop()" mode="aspectFill" src="https://static.ticket.sz-trip.com/uploads/20250916/d5e91bdb2114c3e485349d8edae18173.png"></image>
<view class="main-container" style="margin-top: -2400rpx;position: relative;" >
<!-- <view class="type-container no-scrollbar" >
<view :class="['type-item']" @click="changeTypeIndex(i)"
v-for="(item,i) in typeList" :key="i">
<image v-show="typeIndex==i" mode="aspectFill" :src="item.imgs"></image>
<image v-show="typeIndex!=i" mode="aspectFill" :src="item.img"></image>
</view>
</view> -->
<scroll-view class="type-container type-scroll" scroll-x="true" scroll-with-animation="true" enable-flex
:scroll-into-view="scrollIntoView" :show-scrollbar="false">
<view :id="`item-${i}`" :class="['type-item']" @click="changeTypeIndex(i)"
v-for="(item,i) in typeList" :key="i">
<image v-show="typeIndex==i" mode="aspectFill" :src="item.imgs"></image>
<image v-show="typeIndex!=i" mode="aspectFill" :src="item.img"></image>
</view>
<view style="width: 20rpx;height: 1rpx;flex-shrink: 0;"></view>
</scroll-view>
<uni-transition :mode-class="['slide-left','fade']" :show="show">
<view class="type-container">
<image :src="typeList[typeIndex].textImg" mode="widthFix" style="width: 100%;margin: 25rpx 0 30rpx;"></image>
</view>
</uni-transition>
<view class="flex-between" style="flex-wrap: wrap;padding: 0 26rpx;box-sizing: border-box;">
<view class="column-product" @click="gotoDetailByType(item)" :key="index"
v-for="(item,index) in typeList[typeIndex].list.slice(0,typeList[typeIndex].viewNum)">
<image class="img" :src="showImg(item.headimg)" mode="aspectFill"></image>
<view class="content flex-column">
<view class="title text-overflowRows">{{item.title}}</view>
<view>
<view class="tags" v-if="item.display_tags">
<view class="tag text-overflow" v-for="(tag,tagI) in item.display_tags.split(',')" :key="tagI">{{tag}}</view>
</view>
<view class="flex-between">
<view class="price">{{item.price/100}}</view>
<view class="btn">立即购买</view>
</view>
</view>
</view>
</view>
</view>
<view class="view-more" v-if="typeList[typeIndex].list.length>0&&typeList[typeIndex].viewNum<=6" @click="typeList[typeIndex].viewNum=999">
查看更多<image src="https://static.ticket.sz-trip.com/uploads/20250909/848e3a18b3ad3227fa4b2952890b91ef.png"></image>
</view>
<image class="bottom-img" src="https://static.ticket.sz-trip.com/uploads/20250909/55c100f9650df6cbd4a4e5a18c8201de.png"></image>
<image @click="returnTop" v-show="showGoTop" class="back-img" src="https://static.ticket.sz-trip.com/uploads/20250915/74031edf3be17888e522df104e790540.png"></image>
</view>
<uni-popup ref="popup" type="center" mask-background-color="rgba(10,13,11,0.72);">
<view style="idth: 608.67rpx;height: 592.67rpx;position: relative;">
<image style="width: 608.67rpx;height: 592.67rpx;" mode="aspectFill"
src="https://static.ticket.sz-trip.com/uploads/20250915/7a262bdbe38f2fb6efb202d2a14d7512.png"></image>
<view style="position: absolute;width: 60rpx;height: 60rpx;top: 10rpx;right: 10rpx;"
@click="$refs.popup.close()"></view>
</view>
</uni-popup>
</view>
</template>
<script>
export default {
data() {
return {
list: [],
viewNum: 3,
headImg: '',
typeIndex: 0,
typeList: [
{
id: 104,title: "绿色食品",viewNum:6, list: [],
img:"https://static.ticket.sz-trip.com/uploads/20250916/70b50a9d3f0b70454763e7146ac0a4d1.png",
imgs:"https://static.ticket.sz-trip.com/uploads/20250916/3b251683c250cf6669378266ed786de4.png",
textImg: "https://static.ticket.sz-trip.com/uploads/20250916/277332c4b9e2e9c52eff288f131bc290.png",
},
{
id: 105,title: "有机农产品",viewNum:6, list: [],
img:"https://static.ticket.sz-trip.com/uploads/20250916/600b3f0ca1b6582da3dc128f98cc1ea9.png",
imgs:"https://static.ticket.sz-trip.com/uploads/20250916/9692497b22091c3e3d3d69bf9c4fd311.png",
textImg:"https://static.ticket.sz-trip.com/uploads/20250916/b9f991050bfaaee598e2d91cd731801f.png",
},
{
id: 106,title: "名特优新",viewNum:6, list: [],
img:"https://static.ticket.sz-trip.com/uploads/20250916/9810f9261e137b354132063fced2d43c.png",
imgs:"https://static.ticket.sz-trip.com/uploads/20250916/2b3cfb94571cd911af3cca2b4027438c.png",
textImg:"https://static.ticket.sz-trip.com/uploads/20250916/40dc980c379e382d2e43dfc6d2cfc5f8.png",
},
{
id: 107,title: "农产品地理标志",viewNum:6, list: [],
img:"https://static.ticket.sz-trip.com/uploads/20250916/6c8216888e1224e9534309bde2a87a14.png",
imgs:"https://static.ticket.sz-trip.com/uploads/20250916/37d84af1f692cce86158ff0784fefb73.png",
textImg:"https://static.ticket.sz-trip.com/uploads/20250916/3b7395a773381ebe93c224528100e0c8.png",
},
],
showGoTop: false,
show: true,
scrollIntoView: "item-0",
}
},
onLoad(option) {
this.getHeadImg(2397)
this.getGoods()
},
onReady() {
},
methods: {
changeTypeIndex (i) {
if (this.typeIndex==i) {
return
}
this.show = false
setTimeout(()=>{
this.typeIndex = i;
this.show = true;
},300)
this.$nextTick(()=>{
let index=i-1;
if (index<0) {index=0}
// 使scroll-into-view
this.scrollIntoView = `item-${index}`;
//
setTimeout(() => {
this.scrollIntoView = `item-${index}`;
}, 100);
})
},
getHeadImg (id) {
this.Post({id},'/api/multimedia/detail').then(res => {
this.headImg = res.data.head_img
uni.setNavigationBarTitle({
title:res.data.title
})
});
},
goRule (id) {
uni.navigateTo({
url:"/subPackages/activity/commonRule?id="+id
})
},
openPop () {
this.$refs.popup.open()
},
//
getGoods() {
for(let p of this.typeList) {
this.Post({
tag_id: p.id,
offset: 0,
limit: 999,
},'/api/product/get_product_by_tag_subject').then(res => {
if (res.data.list.length < p.viewNum) {
p.viewNum = 999
}
p.list = res.data.list
console.log(p)
})
}
},
viewDetail(item) {
this.gotoDetailByType(item)
},
returnTop(){
uni.pageScrollTo({
scrollTop: 0,
duration: 200,
})
},
},
onPageScroll(res) {
this.showGoTop = res.scrollTop > 200 ? true : false;
}
}
</script>
<style lang="scss" scoped>
view{
box-sizing: border-box;
}
.bg {
width: 750rpx;
min-height: 100vh;
padding-bottom: 60rpx;
position: relative;
background: white;
}
.topImg {
width: 100%;
}
.what-img{
position: absolute;
top: 40rpx;
right: 0;
width: 230.67rpx;
height: 46.67rpx;
}
.main-container{
width: 100%;
padding: 48rpx 0 60rpx;
}
.type-item:first-of-type{
width: 238.67rpx;
}
.type-item:nth-of-type(1){
width: 262.67rpx
}
.type-item:nth-of-type(2){
width: 238.67rpx
}
.type-item:nth-of-type(2){
width: 307.33rpx
}
.title{
font-weight: 600;
font-size: 28rpx;
color: #000000;
}
.tags{
width: 100%;
display: flex;
overflow: hidden;
margin-bottom: 18rpx;
.tag{
height: 40rpx;
line-height: 38rpx;
font-weight: 400;
font-size: 24rpx;
color: #0E6500;
padding: 0rpx 10rpx;
border-radius: 20rpx;
border: 1px solid #317626;
margin-right: 13rpx;
}
}
.view-more{
font-weight: 400;
font-size: 24rpx;
color: #8C8C8C;
text-align: center;
margin: 27rpx auto 40rpx;
image{
width: 18.67rpx;
height: 18.67rpx;
margin-left: 8rpx;
}
}
.type-container{
display: flex;
flex-wrap: nowrap;
width: 100%;
overflow-y: hidden;
overflow-x: auto;
padding:0 26rpx;
.type-item{
height: 88rpx;
margin-right: 10rpx;
flex-shrink: 0;
image{
width: 100%;
height: 100%;
}
}
.type-item:first-of-type{
width: 238.67rpx;
}
.type-item:nth-of-type(2){
width: 262.67rpx
}
.type-item:nth-of-type(3){
width: 238.67rpx
}
.type-item:nth-of-type(4){
width: 307.33rpx;
margin-right: 0;
}
}
.type-container.type-scroll{
height: 90rpx;
padding: 0;
padding-left: 20rpx;
box-sizing: border-box;
}
.column-product{
width: 335rpx;
height: 569rpx;
background: #ECFFE9;
border-radius: 25rpx;
overflow: hidden;
margin-bottom: 32rpx;
font-size: 0;
box-shadow: 0rpx 3rpx 15rpx 0rpx rgba(0,0,0,0.18);
.img{
width: 335rpx;
height: 335rpx;
border-radius: 25rpx 25rpx 0rpx 0rpx;
flex-shrink: 0;
}
.content{
width: 100%;
flex: 1;
height: 234rpx;
justify-content: space-between;
padding:10rpx 16rpx 20rpx;
}
.price{
font-weight: bold;
font-size: 28rpx;
color: #FF7700;
&::before{
content: "¥";
font-size: 24rpx;
font-weight: 500;
}
&::after{
content: "起";
font-size: 24rpx;
font-weight: 500;
}
}
.btn{
width: 160rpx;
height: 57rpx;
background: linear-gradient( 270deg, #319F56 0%, #9CED46 100%);
border-radius: 200rpx 200rpx 200rpx 200rpx;
font-weight: bold;
font-size: 28rpx;
color: #FFFFFF;
line-height: 57rpx;
text-align: center;
text-shadow: 0px 2px 4px #244705;
}
}
.bottom-img{
width: 149.33rpx;
height: 64rpx;
margin: 27rpx auto 0;
display: block;
}
.back-img{
position: fixed;
width: 68rpx;
height: 68rpx;
bottom: 66rpx;
right: 26rpx;
}
</style>

10
subPackages/activity/jitoumi.vue

@ -6,8 +6,8 @@
<image class="title-image" src="https://static.ticket.sz-trip.com/uploads/20250822/a7ab5b85fcc1085c14f4a2ec23f0692f.png"></image>
<image class="adv-image" mode="aspectFill" @click="gotoPath('/subPackages/activity/agriculturalProdNH')"
src="https://static.ticket.sz-trip.com/uploads/20250822/2393a3923a07f2f1112ad0210f37021d.png"></image>
<image class="adv-image" v-if="couponImg" mode="aspectFill" @click="gotoPath('/subPackages/activity/agriculturalProdNH')"
:src="showImg(couponImg)"></image>
<image class="title-image" style="margin-bottom: 38rpx;width: 100%;height: 3rpx;"
src="https://static.ticket.sz-trip.com/uploads/20250822/321e0c681ddbcc6853d6312eb69742c9.png"></image>
@ -42,7 +42,7 @@
list: [],
viewNum: 5,
headImg: '',
couponImg: '',
showGoTop: false,
}
},
@ -61,6 +61,10 @@
title:res.data.title
})
});
this.Post({id:2391},'/api/multimedia/detail').then(res => {
this.couponImg = res.data.head_img
});
},
//

287
subPackages/activity/mooncake.vue

@ -0,0 +1,287 @@
<template>
<view class="bg">
<image v-if="headImg" :src="showImg(headImg)" class="topImg" mode="widthFix"></image>
<view class="main-container">
<view class="coupon-box">
<view class="rule" @click="goRule(5)">
活动规则<uni-icons type="right" size="12"></uni-icons>
</view>
<!-- <view class="coupon-tip">消费券领取后3天内未使用自动失效<br>失效后可再次领取</view> -->
<view class="flex-between" style="flex-wrap: wrap;margin-top: 20rpx;">
<image class="coupon-img" v-for="(item,i) in couponList" :key="i"
:src="item.img" @click="getCoupon(item)" mode="aspectFill"></image>
</view>
</view>
<image class="adv-image" mode="aspectFill"
src="https://static.ticket.sz-trip.com/uploads/20250909/76159d9ddffcf7b53daf4fa5ebd1180f.png"></image>
<view class="row-product" v-for="(item,index) in list.slice(0,viewNum)"
:key="index" @click="gotoDetailByType(item)">
<image class="img" :src="showImg(item.headimg)" mode="aspectFill"></image>
<view class="content flex-column">
<view class="title text-overflowRows">{{item.title}}</view>
<view class="tags" v-if="item.display_tags">
<view class="tag" v-for="(tag,tagI) in item.display_tags.split(',')" :key="tagI">{{tag}}</view>
</view>
<view class="flex-between">
<view class="price">{{(item.price/100).toFixed(2)}}</view>
<view class="btn">立即购买</view>
</view>
</view>
</view>
<view class="view-more" v-if="list.length>0&&viewNum<=5" @click="viewNum=999">
查看更多<image src="https://static.ticket.sz-trip.com/uploads/20250909/848e3a18b3ad3227fa4b2952890b91ef.png"></image>
</view>
<image class="bottom-img" src="https://static.ticket.sz-trip.com/uploads/20250909/55c100f9650df6cbd4a4e5a18c8201de.png"></image>
<!-- <image @click="returnTop" v-show="showGoTop" class="back-img" src="https://static.ticket.sz-trip.com/uploads/20250815/108583b6b888b0e5556393b140a7cb84.png"></image> -->
</view>
</view>
</template>
<script>
export default {
data() {
return {
list: [],
viewNum: 5,
headImg: '',
couponList: [
{id: null, img: "https://static.ticket.sz-trip.com/uploads/20250909/df85ecc7576c496c6f0c1b8f0187f354.png"},
{id: null, img: "https://static.ticket.sz-trip.com/uploads/20250909/edc18f90c11f8ac6b0b6219015055994.png"},
{id: null, img: "https://static.ticket.sz-trip.com/uploads/20250909/3f0b4898b5dbb53665fc2cb7771959f7.png"},
{id: null, img: "https://static.ticket.sz-trip.com/uploads/20250909/177508729382abf7eac929b952e9de1e.png"},
],
isReceive: true,
showGoTop: false,
}
},
onLoad(option) {
},
onReady() {
this.getHeadImg(2395)
this.getGoods()
},
methods: {
getHeadImg (id) {
this.Post({id},'/api/multimedia/detail').then(res => {
this.headImg = res.data.head_img
uni.setNavigationBarTitle({
title:res.data.title
})
if (res.data.company_name) {
res.data.company_name.split(',').forEach((item, index) => {
this.couponList[index].id = item
})
}
});
},
goRule (id) {
uni.navigateTo({
url:"/subPackages/activity/commonRule?id="+id
})
},
//
getGoods() {
this.Post({
tag_id: 102,
offset: 0,
limit: 999,
},'/api/product/get_product_by_tag_subject').then(res => {
if (res.data.length < this.viewNum) {
this.viewNum = 999
}
this.list = res.data.list
})
},
getCoupon(item) {
if (!this.isReceive) {
uni.showToast({
title: "短时间内请勿重复点击!",
icon: 'none'
})
return;
}
this.isReceive = false
setTimeout(() => {this.isReceive = true}, 3000)
this.Post({
ids: item.id,
is_all: 1,
},"/api/coupon/getNewCouponsByActivitiesIds").then(res => {
if (res) {
uni.showToast({
title: res.data,
icon: 'none'
})
}
})
},
viewDetail(item) {
this.gotoDetailByType(item)
},
returnTop(){
uni.pageScrollTo({
scrollTop: 0,
duration: 200,
})
},
},
onPageScroll(res) {
this.showGoTop = res.scrollTop > 200 ? true : false;
}
}
</script>
<style lang="scss" scoped>
.bg {
width: 750rpx;
min-height: 100vh;
padding-bottom: 27rpx;
background-image: url("https://static.ticket.sz-trip.com/uploads/20250909/0b246a12035de1bc119b6a0bb8ee96db.png");
background-size: 100% 100%;
// background-repeat: repeat-y;
}
.topImg {
width: 100%;
}
.main-container{
width: 100%;
margin-top: -330rpx;
padding: 0 26rpx 60rpx;
.adv-image{
margin: 26rpx 0 36rpx;
width: 100%;
height: 258.67rpx;
}
}
.coupon-box{
width: 100%;
.rule{
text-align: right;
font-weight: 400;
font-size: 24rpx;
color: #000000;
}
.coupon-img{
width: 340.85rpx;
height: 143.16rpx;
margin-bottom: 18rpx;
}
}
.row-product{
width: 100%;
height: 213.33rpx;
background: #FFFFFF;
border-radius: 21rpx;
padding: 22rpx 22rpx 14rpx 19rpx;
display: flex;
align-items: center;
margin-bottom: 22rpx;
.img{
width: 160rpx;
height: 160rpx;
flex-shrink: 0;
}
.content{
width: 100rpx;
height: 100%;
flex: 1;
justify-content: space-between;
padding: 0rpx 0 0rpx 22rpx;
}
.price{
font-weight: 400;
font-size: 32rpx;
color: #FE2E18;
&::before{
content: "¥";
font-size: 24rpx;
}
// &::after{
// content: "";
// font-size: 24rpx;
// }
}
.btn{
width: 123rpx;
height: 48rpx;
background: #FE4A29;
border-radius: 7rpx 7rpx 7rpx 7rpx;
font-weight: 400;
font-size: 24rpx;
color: #FFFFFF;
line-height: 48rpx;
text-align: center;
}
}
.title{
font-weight: 400;
font-size: 28rpx;
color: #000000;
}
.tags{
width: 100%;
display: flex;
overflow: hidden;
.tag{
font-weight: 400;
font-size: 20rpx;
color: #FFA100;
height: 33rpx;
// line-height: 33rpx;
padding: 0rpx 8rpx;
border-radius: 3rpx;
border: 1rpx solid #FFA100;
margin-right: 10rpx;
display: flex;
align-items: center;
justify-content: center;
}
}
.view-more{
font-weight: 400;
font-size: 24rpx;
color: #8C8C8C;
text-align: center;
margin: 27rpx auto 0;
image{
width: 18.67rpx;
height: 18.67rpx;
margin-left: 8rpx;
}
}
.bottom-img{
width: 149.33rpx;
height: 64rpx;
margin: 27rpx auto 0;
display: block;
}
.back-img{
position: fixed;
width: 66rpx;
height: 66rpx;
bottom: 66rpx;
right: 26rpx;
}
</style>

293
subPackages/activity/suchao.vue

@ -0,0 +1,293 @@
<template>
<view class="bg">
<image v-if="headImg" :src="showImg(headImg)" class="topImg" mode="widthFix"></image>
<view class="main-container">
<image class="title-image" src="https://static.ticket.sz-trip.com/uploads/20250903/0962fc4e972a669f83e97a5a126b2f53.png"></image>
<view class="coupon-box">
<view class="flex-between">
<image class="coupon-img" v-for="(item,i) in couponList" :key="i"
:src="item.img" @click="getCoupon(item)" mode="aspectFill"></image>
</view>
<view class="rule" @click="goRule(3)">活动规则</view>
</view>
<view class="row-product" v-for="(item,index) in list.slice(0,viewNum)"
:key="index" @click="gotoDetailByType(item)">
<image class="img" :src="showImg(item.headimg)" mode="aspectFill"></image>
<view class="content flex-column">
<view class="title text-overflowRows">{{item.title}}</view>
<view class="tags" v-if="item.display_tags">
<view class="tag text-overflow" v-for="(tag,tagI) in item.display_tags.split(',')" :key="tagI">{{tag}}</view>
</view>
<view class="flex-between">
<view class="price">{{item.price/100}}</view>
<view class="btn">立即购买</view>
</view>
</view>
</view>
<view class="view-more" v-if="list.length>4&&viewNum<=4" @click="viewNum=999">查看更多</view>
<image class="bottom-img" src="https://static.ticket.sz-trip.com/uploads/20250903/5b9a286d9f77a62fac2ffa54c77a9ff7.png"></image>
<image @click="returnTop" v-show="showGoTop" class="back-img" src="https://static.ticket.sz-trip.com/uploads/20250903/0654ba8242c922ca4008b80948e6c9e4.png"></image>
</view>
</view>
</template>
<script>
export default {
data() {
return {
list: [],
viewNum: 4,
headImg: '',
couponList: [
{id: null, img: "https://static.ticket.sz-trip.com/uploads/20250904/6bb90a456a4800a99df91b97197fbc76.png"},
{id: null, img: "https://static.ticket.sz-trip.com/uploads/20250904/a20709036f31e6979c9ae84c543a8538.png"},
],
isReceive: true,
showGoTop: false,
}
},
onLoad(option) {
},
onReady() {
this.getHeadImg(2393)
this.getGoods()
},
methods: {
getHeadImg (id) {
this.Post({id},'/api/multimedia/detail').then(res => {
this.headImg = res.data.head_img
uni.setNavigationBarTitle({
title:res.data.title
})
if (res.data.company_name) {
res.data.company_name.split(',').forEach((item, index) => {
this.couponList[index].id = item
})
}
});
},
goRule (id) {
uni.navigateTo({
url:"/subPackages/activity/commonRule?id="+id
})
},
//
getGoods() {
// 5
this.Post({
tag_id: 101,
offset: 0,
limit: 5,
},'/api/product/get_product_by_tag_subject').then(res => {
this.list = res.data.list
this.Post({
tag_id: 101,offset: 0,
limit: 999,noShowLoading: true,
},'/api/product/get_product_by_tag_subject').then(res => {
this.list = res.data.list
})
})
},
getCoupon(item) {
if (!this.isReceive) {
uni.showToast({
title: "短时间内请勿重复点击!",
icon: 'none'
})
return;
}
this.isReceive = false
setTimeout(() => {this.isReceive = true}, 3000)
this.Post({
ids: item.id,
is_all: 1,
},"/api/coupon/getNewCouponsByActivitiesIds").then(res => {
if (res) {
uni.showToast({
title: res.data,
icon: 'none'
})
}
})
},
viewDetail(item) {
this.gotoDetailByType(item)
},
returnTop(){
uni.pageScrollTo({
scrollTop: 0,
duration: 200,
})
},
},
onPageScroll(res) {
this.showGoTop = res.scrollTop > 200 ? true : false;
}
}
</script>
<style lang="scss" scoped>
.bg {
width: 750rpx;
min-height: 100vh;
background: #319F56;
padding-bottom: 60rpx;
}
.topImg {
width: 100%;
}
.main-container{
width: 100%;
margin-top: -140rpx;
padding: 0 26rpx 60rpx;
position: relative;
z-index: 5;
.title-image{
width: 100%;
height: 112rpx;
display: block;
}
}
.rule{
width: 109rpx;
height: 41rpx;
background: #319F56;
border-radius: 7rpx 0rpx 0rpx 7rpx;
font-weight: 600;
font-size: 24rpx;
color: #FFFFFF;
position: absolute;
top: 20rpx;
right: 0;
display: flex;
align-items: center;
justify-content: center;
line-height: 41rpx;
}
.coupon-box{
height: 293rpx;
background: #F4FFFE;
border-radius:0 0 25rpx 25rpx;
position: relative;
padding: 80rpx 26rpx 0;
overflow: hidden;
margin-bottom: 44rpx;
.coupon-img{
width: 311.33rpx;
height: 169.33rpx;
margin-bottom: 32rpx;
}
}
.row-product{
width: 100%;
height: 268rpx;
background: #FFFFFF;
border-radius: 25rpx;
padding: 24rpx 26rpx;
display: flex;
margin-bottom: 32rpx;
.img{
width: 220rpx;
height: 100%;
border-radius: 24rpx;
flex-shrink: 0;
}
.content{
width: 100rpx;
flex: 1;
justify-content: space-between;
padding-left: 24rpx;
}
.price{
font-weight: 500;
font-size: 40rpx;
color: #FF7700;
&::before{
content: "¥";
font-size: 28rpx;
}
&::after{
content: "起";
font-size: 28rpx;
}
}
.btn{
width: 160rpx;
height: 57rpx;
background: linear-gradient( 270deg, #319F56 0%, #9CED46 100%);
border-radius: 30rpx;
font-weight: bold;
font-size: 28rpx;
color: #FFFFFF;
text-shadow: 0px 1px 3px #244705;
line-height: 57rpx;
text-align: center;
}
}
.title{
font-weight: 600;
font-size: 32rpx;
color: #000000;
}
.tags{
width: 100%;
display: flex;
overflow: hidden;
.tag{
font-weight: 500;
font-size: 24rpx;
height: 40rpx;
line-height: 38rpx;
color: #026EF6;
padding: 0rpx 10rpx;
border-radius: 20rpx;
border: 1px solid #026EF6;
margin-right: 20rpx;
}
}
.view-more{
width: 262rpx;
height: 87rpx;
background: #FFFFFF;
box-shadow: 0rpx 4rpx 11rpx 0rpx rgba(0,25,72,0.25);
border-radius: 16rpx;
line-height: 87rpx;
font-weight: 600;
font-size: 35rpx;
color: #319F56;
text-align: center;
margin: 48rpx auto 0;
}
.bottom-img{
width: 174.67rpx;
height: 78rpx;
margin: 74rpx auto 0;
display: block;
}
.back-img{
position: fixed;
width: 66rpx;
height: 66rpx;
bottom: 66rpx;
right: 26rpx;
}
</style>

10
subPackages/sales/index.vue

@ -28,7 +28,7 @@
},
mounted() {
//
this.getHeadImg(2374).then(res => {this.headImg = res})
this.getHeadImg(2374)
this.getList()
},
onReachBottom() {
@ -37,6 +37,14 @@
},1000)
},
methods: {
getHeadImg (id) {
this.Post({id},'/api/multimedia/detail').then(res => {
this.headImg = res.data.head_img
uni.setNavigationBarTitle({
title:res.data.title
})
});
},
getList() {
this.Post({
offset: this.list.length,

10
subPackages/sales/indexs.vue

@ -28,7 +28,7 @@
},
mounted() {
//
this.getHeadImg(2375).then(res => {this.headImg = res})
this.getHeadImg(2375)
this.getList()
},
onReachBottom() {
@ -37,6 +37,14 @@
},1000)
},
methods: {
getHeadImg (id) {
this.Post({id},'/api/multimedia/detail').then(res => {
this.headImg = res.data.head_img
uni.setNavigationBarTitle({
title:res.data.title
})
});
},
getList() {
this.Post({
offset: this.list.length,

5
subPackages/search/techanResult.vue

@ -22,11 +22,12 @@
<text :class="[search_type==0?'active-search-item':'']" @click="changeSearchParm(0)">综合</text>
</view>
<view >
<text :class="[[1,2].includes(search_type)?'active-search-item':'']" @click="changeSearchParm(search_type==1?2:1)">销量</text>
<!-- <text :class="[[1,2].includes(search_type)?'active-search-item':'']" @click="changeSearchParm(search_type==1?2:1)">销量</text>
<view class="search-item">
<view :class="[search_type==1?'active-search-item':'','triangle-up']" @click="changeSearchParm(1)"></view>
<view :class="[search_type==2?'active-search-item':'']" @click="changeSearchParm(2)"></view>
</view>
</view> -->
<text :class="[[1,2].includes(search_type)?'active-search-item':'']" @click="changeSearchParm(2)">销量</text>
</view>
<view >
<text :class="[[3,4].includes(search_type)?'active-search-item':'']" @click="changeSearchParm(search_type==3?4:3)">价格</text>

50
subPackages/techan/cartOrder.vue

@ -121,6 +121,12 @@
<view class="people-popup">
<view class="button" @click="changeAddressAddPopup('open','',{})">添加收货地址</view>
<view style="display: flex;justify-content: center;padding-top: 20rpx;">
<view class="wx-address" @click="getWXAddress()">
<image class="wx-icon" src="https://static.ticket.sz-trip.com/uploads/20250916/3402d54588c3f0470bf05ac754f76cf0.png"></image>
<text style="padding-left: 8rpx;">获取微信地址</text>
</view>
</view>
<view class="popup-list" v-if="addressList.length > 0">
<view :class="['popup-item',selectInfo.contacts.id==item.id?'active':'']" v-for="(item, index) in addressList" :key="index" @click="seldThisAddress(item)">
<view class="item-top flex-between">
@ -201,6 +207,29 @@ export default {
onReady () {
},
methods: {
//
getWXAddress () {
let _this = this;
uni.chooseAddress({
success: (res) => {
_this.Post({...res,method:"POST"},'/api/uservice/user/addWxDefaultConsignee').then(()=>{
_this.getAddressList2()
})
}
})
},
getAddressList2 () {
this.Post({
contactType: "CONSIGNEE",
offset: '0',
limit: '100'
}, '/api/uservice/user/getContactOrConsignee').then(res => {
if (res) {
this.addressList = res.data || []
}
})
},
//
handleOrderGoods () {
let orderList = this.$store.state.user.techanOrderList.list1;
@ -348,6 +377,10 @@ export default {
//
this.contacts = item
this.orderList.forEach(v=>{
v.contacts = JSON.parse(JSON.stringify(this.contacts))
})
if (this.flag) {
this.getPost();
@ -1079,4 +1112,21 @@ view {
font-weight: bold;
}
}
.wx-address{
width: 201rpx;
height: 53rpx;
background: #6A8A2D;
border-radius: 9rpx;
font-weight: 500;
font-size: 24rpx;
color: #FFFFFF;
display: flex;
align-items: center;
justify-content: center;
.wx-icon{
width: 26.67rpx;
height: 26.67rpx;
}
}
</style>

17
subPackages/techan/cartOrder1.vue

@ -1027,4 +1027,21 @@ view {
font-size: 18rpx;
margin-left: 12rpx;
}
.wx-address{
width: 201rpx;
height: 53rpx;
background: #6A8A2D;
border-radius: 9rpx;
font-weight: 500;
font-size: 24rpx;
color: #FFFFFF;
display: flex;
align-items: center;
justify-content: center;
.wx-icon{
width: 26.67rpx;
height: 26.67rpx;
}
}
</style>

56
subPackages/techan/detail.vue

@ -40,6 +40,28 @@
支持{{ item }}
</view>
</view>
<view class="cert-box" style="padding-top: 1rpx;" v-if="certObj">
<view v-for="(item,key) in certObj" :key="key" class="cert-item flex-between" @click="viewImage(item)">
<image v-if="key==1" src="https://static.ticket.sz-trip.com/uploads/20250916/927117700e11004a0c332b535bb249b6.png"></image>
<image v-if="key==2" src="https://static.ticket.sz-trip.com/uploads/20250916/de42d3e5c17462615e6f22246c3ea24f.png"></image>
<image v-if="key==3" src="https://static.ticket.sz-trip.com/uploads/20250916/b63681844b2b85aec5e087cf89d5acf5.png"></image>
<image v-if="key==4" src="https://static.ticket.sz-trip.com/uploads/20250916/001b09bc6e33251f1817c3af71e1e8ff.png"></image>
<view class="cert-content flex-1 w-1rpx flex-between">
<view class="cert-text flex-1 w-1rpx" style="padding-left: 13rpx;">
<view v-if="key==1">绿色食品</view>
<view v-if="key==2">中国有机产品</view>
<view v-if="key==3">江苏食用农产品合格证</view>
<view v-if="key==4">农产品地理标志</view>
<view style="padding-top: 10rpx;">{{item.number}}</view>
</view>
<view class="view-icon flex-shrink-0">
查看<uni-icons type="right" color="#6A8A2D" size="12"></uni-icons>
</view>
</view>
</view>
</view>
</view>
<view class="price-box display-tag text-overflow" v-if="info.display_tags">
限制{{info.display_tags.split(',').join(' | ')}}
@ -194,6 +216,7 @@
cartNum: 0,
supplierInfo: null,
certObj: null,
};
},
onPageScroll(e){
@ -218,6 +241,16 @@
this.getCartList()
},
methods: {
viewImage (item) {
let image = "";
if (item.image) {
image = this.showImg(item.image)
uni.previewImage({
urls: [image]
})
}
},
changPopShow (e) {
this.popShow = e.show
},
@ -242,6 +275,12 @@
console.log(data)
this.info = data;
this.sku = data.sku || []
if (res.data.product_certification_data) {
try {
this.certObj = JSON.parse(res.data.product_certification_data)
console.log(this.certObj["1"])
} catch (e) {}
}
this.getSupplierInfo(res.data.supplier_id)
this.shareParam = {title: this.info.title, imageUrl: this.info.headimg}
@ -1041,4 +1080,21 @@
top: -10rpx;
right: -6rpx;
}
.cert-item{
width: 100%;
height: 93.33rpx;
padding: 3.33rpx 23rpx 3.33rpx 3.33rpx;
background: #EBF4D7;
font-weight: 500;
font-size: 24rpx;
color: #6A8A2D;
border-radius: 7rpx;
margin-top: 13rpx;
image{
height: 100%;
width: 86.67rpx;
flex-shrink: 0;
}
}
</style>

111
subPackages/techan/index.vue

@ -33,7 +33,14 @@
<view class="goods-container">
<view :class="['search-container',methodPopShow?'methodShow':'']">
<view class="left-box no-scrollbar" v-if="typeChild.length>0">
<view :class="['left-type-item',i==typeChildIndex?'active':'']"
v-for="(item,i) in typeChild" :key="i" @click="changeChildType(item,i)">
<view class="name-item">{{item.name}}</view>
</view>
</view>
<view class="right-box">
<view :class="['search-container',methodPopShow?'methodShow':'']">
<view class="common-view" @click="showMethodPopup()">
<text :class="[delivery_method.length>0?'active-search-item':'']">配送方式</text>
<view :class='[methodPopShow?"delivery-active":"delivery-no"]'>
@ -71,7 +78,7 @@
<view class="title text-overflowRows">{{item.title}}</view>
<!-- <view style="font-weight: 500;font-size: 21rpx;color: #999999;">已售{{item.sales_number}}</view> -->
<view class="tag-container" v-if="item.display_tags">
<view class="tag" v-for="(tag,tagI) in item.display_tags.split(',')" :key="tagI">{{tag}}</view>
<view class="tag text-overflow" v-for="(tag,tagI) in item.display_tags.split(',')" :key="tagI">{{tag}}</view>
</view>
<view class="bottom">
<view>
@ -90,7 +97,9 @@
</view>
<view style="height: 148rpx;width: 1rpx;"></view>
</scroll-view>
</view>
</view>
</template>
@ -150,7 +159,6 @@
<view class="btn-bottom" >
<cartDataVue ref="cartDataVueRef" :paramData="paramData" @changeParamData="changeParamData" style="width: 100%;height: 100%;">
<template class="btn-list" slot="content">
<view class="left-box">
<uni-badge class="uni-badge-left-margin" :text="paramData.num" absolute="rightTop" :offset="[5, 5]" size="small"
:custom-style="{background:'#D90F01',color:'#ffffff',border:'1px solid #ffffff'}">
@ -169,7 +177,6 @@
<view class="btn-buy" @click="goCartOrder">
去下单
</view>
</template>
</cartDataVue>
</view>
@ -294,8 +301,13 @@
headImg: "https://cgc.js-dyyj.com/uploads/20250513/f8b255f965efcd71b6843e4b72c3f1f3.png",
type_pid: 20,
//
typeParam: [],
typeIndex: 0,
//
typeChild: [],
typeChildIndex: 0,
list:[],
finished: false,
@ -388,30 +400,49 @@
this.getList()
},
//
getTypeTags () {
this.Post({
pid: this.type_pid
},'/api/product/tag_list').then(res => {
this.typeParam = res.data || []
this.getList()
this.getChildType()
// this.getList()
//
this.changeSelectPosition(this.typeIndex)
})
},
changeType (item, i) {
if (this.typeIndex!== i) {
this.typeIndex=i
this.finished = false
this.list = []
this.getList()
this.getChildType()
// this.getList()
this.showTypes(false)
}
this.changeSelectPosition(i)
},
//
getChildType (pid) {
let id = this.typeParam[this.typeIndex].id
if (pid) { id = pid }
this.Post({pid: id},'/api/product/tag_list').then(res => {
this.typeChild = res.data || []
this.typeChildIndex = 0
this.getList()
})
},
changeChildType (item,i) {
if (this.typeChildIndex!== i) {
this.typeChildIndex=i
this.finished = false
this.list = []
this.getList()
}
},
changeSearchParm(value) {
this.search_type = value
@ -422,6 +453,11 @@
//
getList(){
let tag_id = this.typeParam[this.typeIndex].id;
if (this.typeChild[this.typeChildIndex]&&this.typeChild[this.typeChildIndex].id) {
tag_id = this.typeChild[this.typeChildIndex].id
}
let param = {}
if (this.search_type == 1) { param = {order: 'asc',sort:'sales_number'} }
if (this.search_type == 2) { param = {order: 'desc',sort:'sales_number'} }
@ -429,7 +465,7 @@
if (this.search_type == 4) { param = {order: 'desc',sort:'price'} }
param.delivery_method = this.delivery_method.join(',')
this.Post({
tag_id: this.typeParam[this.typeIndex].id,
tag_id: tag_id,
offset: this.list.length,
limit: 10,
...param
@ -747,7 +783,6 @@
height: 1rpx;
flex: 1;
display: flex;
flex-direction: column;
background: #FFFFFF;
}
@ -758,9 +793,9 @@
font-weight: bold;
font-size: 27rpx;
color: #000000;
height: 107rpx;
height: 100rpx;
flex-shrink: 0;
padding: 0 32rpx;
padding: 0 20rpx;
background: #FFFFFF;
&>.common-view{
display: flex;
@ -784,7 +819,7 @@
background: white;
.item {
width: 100%;
padding:0 32rpx 32rpx 32rpx;
padding:0 20rpx 32rpx 20rpx;
display: flex;
.item-img {
width: 161rpx;
@ -1223,4 +1258,50 @@
position: relative;
z-index: 9999;
}
.goods-container{
.left-box{
width: 180rpx;
background: #F3F3F3;
height: 100%;
flex-shrink: 0;
overflow-x: hidden;
overflow-y: auto;
.left-type-item{
width: 100%;
font-weight: bold;
font-size: 27rpx;
color: #000000;
position: relative;
padding: 26rpx 0;
display: flex;
align-items: center;
.name-item{
width: 100%;
min-height: 53rpx;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
padding: 0 20rpx;
}
&.active {
background: white;
.name-item{
border-left: 7rpx solid #6A8A2D;;
}
}
}
}
.right-box{
height: 100%;
flex: 1;
width: 100rpx;
background: white;
display: flex;
flex-direction: column;
}
}
</style>

48
subPackages/techan/order.vue

@ -194,6 +194,13 @@
<!-- 邮寄 -->
<view class="people-popup" v-if="selectInfo&&selectInfo.user_select_type == 1">
<view class="button" @click="changeAddressAddPopup('open','',{})">添加收货地址</view>
<view style="display: flex;justify-content: center;padding-top: 20rpx;">
<view class="wx-address" @click="getWXAddress()">
<image class="wx-icon" src="https://static.ticket.sz-trip.com/uploads/20250916/3402d54588c3f0470bf05ac754f76cf0.png"></image>
<text style="padding-left: 8rpx;">获取微信地址</text>
</view>
</view>
<view class="popup-list" v-if="addressList.length > 0">
<view :class="['popup-item',selectInfo.contacts.id==item.id?'active':'']" v-for="(item, index) in addressList" :key="index" @click="seldThisAddress(item)">
<view class="item-top flex-between">
@ -330,6 +337,29 @@ export default {
// })
},
methods: {
//
getWXAddress () {
let _this = this;
uni.chooseAddress({
success: (res) => {
_this.Post({...res,method:"POST"},'/api/uservice/user/addWxDefaultConsignee').then(()=>{
_this.getAddressList2()
})
}
})
},
getAddressList2 () {
this.Post({
contactType: "CONSIGNEE",
offset: '0',
limit: '100'
}, '/api/uservice/user/getContactOrConsignee').then(res => {
if (res) {
this.addressList = res.data || []
}
})
},
handleOrderGoods () {
let orderList = this.$store.state.user.techanOrderList.list1;
// orderList = uni.getStorageSync("techanOrderList")
@ -1437,4 +1467,22 @@ view {
color: #666666;
line-height: 50rpx;
}
.wx-address{
width: 201rpx;
height: 53rpx;
background: #6A8A2D;
border-radius: 9rpx;
font-weight: 500;
font-size: 24rpx;
color: #FFFFFF;
display: flex;
align-items: center;
justify-content: center;
.wx-icon{
width: 26.67rpx;
height: 26.67rpx;
}
}
</style>

2
subPackages/techan/selfPickUpPoint.vue

@ -51,7 +51,7 @@
this.getList()
},
onShow(options) {
this.getLocation()
},
methods: {

56
subPackages/user/travelerList.vue

@ -124,9 +124,20 @@
</view>
<view class="btn-box">
<navigator v-if="showType==0" url="/subPackages/user/myContactsAdd" class="btn">添加联系人</navigator>
<navigator v-if="showType==1" url="/subPackages/user/myAddressAdd" class="btn">添加收货地址</navigator>
<view class="flex-between" v-if="showType==0" style="width: 660rpx;margin: 0 auto;">
<navigator :url="'/subPackages/user/myAddressAdd'" class="btn" style="width: 300rpx;">添加收货地址</navigator>
<view class="btn" @click="getWXAddress()"
style="width: 300rpx;display: flex;align-items: center;justify-content: center;">
<image class="wx-icon" src="https://static.ticket.sz-trip.com/uploads/20250916/3402d54588c3f0470bf05ac754f76cf0.png"></image>
<text style="padding-left: 8rpx;">获取微信地址</text>
</view>
</view>
<navigator v-if="showType==1" :url="'/subPackages/user/myContactsAdd'" class="btn">添加联系人</navigator>
<navigator v-if="showType==2" url="/subPackages/user/myDeliveryAdd" class="btn">添加配送地址</navigator>
</view>
</view>
</template>
@ -144,7 +155,7 @@
};
},
onLoad(option) {
this.showType = option.showType || 0
this.showType = option.showType
console.log(this.showType)
if (option.noShowNav) {
this.noShowNav = option.noShowNav
@ -233,7 +244,20 @@
uni.navigateTo({
url: url
});
}
},
//
getWXAddress () {
let _this = this;
uni.chooseAddress({
success: (res) => {
_this.Post({...res,method:"POST"},'/api/uservice/user/addWxDefaultConsignee').then(()=>{
_this.init()
})
}
})
},
}
}
</script>
@ -385,21 +409,27 @@
bottom: 0;
left: 0;
width: 100%;
height: 200rpx;
height: 153rpx;
background-color: #fff;
box-shadow: 0rpx 0rpx 13rpx 0rpx rgba(82,82,82,0.25);
display: flex;
align-items: center;
justify-content: center;
.btn {
width: 697rpx;
line-height: 80rpx;
height: 73rpx;
line-height: 73rpx;
background: #6A8A2D;
border-radius: 37rpx;
font-weight: 500;
font-size: 36rpx;
color: #fff;
border-radius: 11rpx;
font-weight: bold;
font-size: 32rpx;
color: #FFFFFF;
text-align: center;
position: fixed;
bottom: 53rpx;
left: 26.67rpx;
}
}
.wx-icon{
width: 30rpx;
height: 30rpx;
}
</style>

Loading…
Cancel
Save