wangfukang 1 month ago
parent
commit
c29d06644b
  1. 22
      components/tab-bar/delivery.vue
  2. 7
      package1/order/orderConfirm.vue
  3. 22
      package2/group/groupBuySingle.vue
  4. 253
      package2/myCenter/partTimeJobRegister.vue
  5. 302
      package2/shop/afterService.vue
  6. 3
      pages.json
  7. 189
      pages/index/index.vue

22
components/tab-bar/delivery.vue

@ -72,7 +72,7 @@
<scroll-view @scrolltolower="onReachPage" scroll-y style="width:100%;height: 620px;overflow: scroll;">
<view class="box1" v-for="(item,index) in pageData" :key="index">
<view class="maotou" v-if="item.deliveryType == 1">
<text>{{item.numberCode.length>14 ?'多订单':item.numberCode}}</text>
<text>{{item.numberCode.length>14 ?'多订单':item.numberCode | delPlus}}</text>
</view>
<view style="width: 100%;line-height: 70rpx;font-size: 28rpx;font-weight: 700;display: flex;">
<view v-if="item.deliveryType == 1"
@ -225,7 +225,7 @@
style="transform: scale(0.7);text-align: right;" />
</view>
</view>
<scroll-view scroll-y="true" style="min-height: 500rpx;">
<scroll-view scroll-y="true" style="height: 660rpx;overflow-y: scroll;">
<view style="height: 50rpx;line-height: 50rpx;font-weight: 700;display: flex;">
外卖规则
<view @tap="allCheck('waimai')" v-if="zhipaiCheck"
@ -302,14 +302,17 @@
style="margin-left:5px;"></uni-icons> -->
</view>
</view>
<view style="width: 100%;height: 140rpx;line-height: 140rpx;text-align: center;">
没有更多了
</view>
</scroll-view>
<view style="display: flex;position: absolute;bottom: 0;width: 93%;">
<view class="btn" @tap="selectRule">
确认规则
</view>
<view class="btn" @tap="buchong">
补充规则
</view>
<view class="btn" @tap="selectRule">
确认规则
</view>
</view>
</view>
</uni-popup>
@ -445,6 +448,12 @@
// 2. { } "
const result = str.replace(/[{}"]/g, '');
return result;
},
delPlus(data){
if (data.endsWith("+")) {
data = data.slice(0, -1); //
}
return data;
}
},
methods: {
@ -990,8 +999,7 @@
padding: 20rpx 20rpx 0;
background: #fff;
border-radius: 20rpx;
max-height: 1000rpx;
min-height: 640rpx;
height: 1000rpx;
position: relative;
}

7
package1/order/orderConfirm.vue

@ -55,7 +55,12 @@
});
},
back() {
uni.navigateBack()
const pages = getCurrentPages();
if (pages.length > 1) {
uni.navigateBack();
} else {
uni.switchTab({ url: '/pages/index/index' });
}
}
}

22
package2/group/groupBuySingle.vue

@ -153,6 +153,9 @@
<view class="goods-deal1">
销量 <text> {{item.tailWarn != null ? item.tailWarn : 0}}</text>
</view>
<view style="width: 40%;text-align: right;font-size: 14px;color: #777;font-weight: 700;text-decoration: line-through;" v-if="groupId && item.isMoreBuy != 0">
¥{{item.attributeListPrice | sliceMsg}}
</view>
</view>
<view class="shop-tag1">
<view class="goods-tag" @tap.stop="openOrderWait(item)"
@ -377,7 +380,7 @@
</view>
</view>
<view class="goods-team" v-if="moreBuyList.length > 0 && isPintuan" style="min-height: 280rpx;">
<view class="goods-team" v-if="moreBuyList.length > 0 && isPintuan" style="height: 300rpx;">
<view :class="spec.isChecked ? 'team-check1' : 'team2'" v-for="(spec, sIndex) in moreBuyList"
:key="sIndex" @tap="selectMoreBuy(spec,sIndex)">
<view>
@ -822,6 +825,10 @@
const info = uni.getSystemInfoSync();
this.navBarHeight = info.statusBarHeight + 40;
},
onPullDownRefresh() {
this.getCategory(this.shopItem.id);
this.getProduct('');
},
onReady() {
// container
setTimeout(() => {
@ -932,6 +939,7 @@
this.searchForm.categoryId = categoryId;
that.tui.request("/app/product/getShareList", "POST", this.searchForm, false, false).then((res) => {
that.loadStatus = 'nomore';
uni.stopPullDownRefresh()
if (res.code == 200) {
if (that.searchForm.pageNum == 1) {
that.productItem = res.result.records;
@ -1772,10 +1780,14 @@
this.$refs.couponPopup.open('bottom');
},
back() {
uni.navigateBack()
const pages = getCurrentPages();
if (pages.length > 1) {
uni.navigateBack();
} else {
uni.switchTab({ url: '/pages/index/index' });
}
}
}
}
</script>
@ -2330,7 +2342,7 @@
border-radius: 10px;
float: left;
text-align: center;
margin-right: 20px;
margin: 10px 20px 0 0;
padding: 10px 10px 0;
position: relative;
}
@ -2342,7 +2354,7 @@
border-radius: 10px;
float: left;
text-align: center;
margin-right: 20px;
margin: 10px 20px 0 0;
padding: 10px 10px 0;
position: relative;
}

253
package2/myCenter/partTimeJobRegister.vue

@ -18,10 +18,11 @@
style="background: rgba(247, 248, 248, 0.6);height: 80rpx;line-height: 80rpx;padding: 18rpx 20rpx;border-radius: 20rpx;">
</view>
</view>
<view class="box1">
<view class="reg-name">
<text style="color:red;">*</text> 学生证上传 <text style="font-weight: 400;color: #777;font-size: 11px;">身份信息仅用于认证身份平台会严格保密</text>
<text style="color:red;">*</text> 学生证上传 <text
style="font-weight: 400;color: #777;font-size: 11px;">身份信息仅用于认证身份平台会严格保密</text>
</view>
<view class="reg-value">
<img @tap="pictureAdd('mentou')"
@ -80,7 +81,8 @@
</view>
</view>
<view class="guize-list">
<view class="guize1" v-for="(item, index) in waimaRuleList" :key="index" style="flex-direction: column; padding-bottom: 20rpx; border-bottom: 1px solid #ddd;">
<view class="guize1" v-for="(item, index) in waimaRuleList" :key="index"
style="flex-direction: column; padding-bottom: 20rpx; border-bottom: 1px solid #ddd;">
<view style="display: flex; width: 100%;">
<view class="guize1-qusong">
<view class="qusong1">
@ -99,13 +101,17 @@
</view>
</view>
<view class="qusong3" style="display:flex; align-items:center;">
<input type="digit" v-model="item.orderBkge" placeholder="填写配送费" style="flex:1;">
<uni-icons type="closeempty" size="20" @click="removeRule('waima', index)" color="#ff0000" style="margin-left:10rpx;"></uni-icons>
<input type="digit" v-model="item.orderBkge" placeholder="填写配送费"
style="flex:1;">
<uni-icons type="closeempty" size="20" @click="removeRule('waima', index)"
color="#ff0000" style="margin-left:10rpx;"></uni-icons>
</view>
</view>
<view style="display: flex; width: 100%; margin-top: 20rpx; align-items: center;">
<text style="margin: 0 20rpx 0 10rpx; color: #777; font-size: 26rpx; font-weight: bold;">备注</text>
<input type="text" v-model="item.remark" placeholder="填写备注,如:限时/大件加钱" style="flex:1; background: #fff; border-radius: 10rpx; padding: 0 20rpx; height: 60rpx; line-height: 60rpx;">
<text
style="margin: 0 20rpx 0 10rpx; color: #777; font-size: 26rpx; font-weight: bold;">备注</text>
<input type="text" v-model="item.remark" placeholder="填写备注,如:限时/大件加钱"
style="flex:1; background: #fff; border-radius: 10rpx; padding: 0 20rpx; height: 60rpx; line-height: 60rpx;">
</view>
</view>
</view>
@ -121,7 +127,8 @@
</view>
</view>
<view class="guize-list">
<view class="guize1" v-for="(item, index) in paotuiRuleList" :key="index" style="flex-direction: column; padding-bottom: 20rpx; border-bottom: 1px solid #ddd;">
<view class="guize1" v-for="(item, index) in paotuiRuleList" :key="index"
style="flex-direction: column; padding-bottom: 20rpx; border-bottom: 1px solid #ddd;">
<view style="display: flex; width: 100%;">
<view class="guize1-qusong">
<view class="qusong1">
@ -140,13 +147,17 @@
</view>
</view>
<view class="qusong3" style="display:flex; align-items:center;">
<input type="digit" v-model="item.orderBkge" placeholder="填写配送费" style="flex:1;">
<uni-icons type="closeempty" size="20" @click="removeRule('paotui', index)" color="#ff0000" style="margin-left:10rpx;"></uni-icons>
<input type="digit" v-model="item.orderBkge" placeholder="填写配送费"
style="flex:1;">
<uni-icons type="closeempty" size="20" @click="removeRule('paotui', index)"
color="#ff0000" style="margin-left:10rpx;"></uni-icons>
</view>
</view>
<view style="display: flex; width: 100%; margin-top: 20rpx; align-items: center;">
<text style="margin: 0 20rpx 0 10rpx; color: #777; font-size: 26rpx; font-weight: bold;">备注</text>
<input type="text" v-model="item.remark" placeholder="填写备注,如:限时/大件加钱" style="flex:1; background: #fff; border-radius: 10rpx; padding: 0 20rpx; height: 60rpx; line-height: 60rpx;">
<text
style="margin: 0 20rpx 0 10rpx; color: #777; font-size: 26rpx; font-weight: bold;">备注</text>
<input type="text" v-model="item.remark" placeholder="填写备注,如:限时/大件加钱"
style="flex:1; background: #fff; border-radius: 10rpx; padding: 0 20rpx; height: 60rpx; line-height: 60rpx;">
</view>
</view>
</view>
@ -156,7 +167,8 @@
<view
style="width: 240rpx;height: 280rpx;background: rgba(166, 255, 234, 1);margin: 20rpx auto;border-radius: 40rpx;text-align: center;">
<img show-menu-by-longpress src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/d23a9043a8c24731831ec4db909fe3b4.jpg" alt=""
<img show-menu-by-longpress
src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/d23a9043a8c24731831ec4db909fe3b4.jpg" alt=""
style="width: 180rpx;height: 180rpx;margin-top: 20rpx;" />
<view style="height: 50rpx;line-height: 50rpx;font-weight: 700;">关注公众号</view>
</view>
@ -170,6 +182,20 @@
<img :src="bigImg" alt="" style="width: 100%;height: 100%;">
</view>
</uni-popup>
<!-- 温馨提示弹出层 -->
<uni-popup ref="lianggePopup" background-color="#fff" @change="changePopup">
<view class="liangge-popup-content">
<view class="liangge-title">
温馨提示
</view>
<view class="liangge-text">
1.送单规则需要在<text style="color:red">配送</text>页面开启才能生效
</view>
<view class="liangge-text">
2.您还没有关注公众号关注公众号后可提现佣金
</view>
</view>
</uni-popup>
<!-- 规则选择弹出层 -->
<uni-popup ref="guizePopup" background-color="#fff">
<view class="guize-popup-content">
@ -178,8 +204,8 @@
alt="" style="width: 204rpx;height: 50rpx;" />
</view>
<view style="margin-top: 20rpx;height: auto;overflow:hidden;min-height: 90rpx;">
<view class="box-check-btn" @tap="qucanOrsongcan('qucan',index)" v-for="(item,index) in qucan" :key="index"
style="float: left;padding: 0 20rpx;width: auto;margin-bottom:20rpx;"
<view class="box-check-btn" @tap="qucanOrsongcan('qucan',index)" v-for="(item,index) in qucan"
:key="index" style="float: left;padding: 0 20rpx;width: auto;margin-bottom:20rpx;"
:style="{background:item.checked?'rgba(180, 255, 238, 0.27)':'rgba(247, 248, 248, 0.6)',border:item.checked?'1px solid rgba(180, 255, 238, 1)':'1px solid #777'}">
{{item.title}}
</view>
@ -190,8 +216,8 @@
alt="" style="width: 204rpx;height: 50rpx;" />
</view>
<view style="margin-top: 20rpx;height: auto;overflow:hidden;min-height: 90rpx;">
<view class="box-check-btn" @tap="qucanOrsongcan('songcan',index)" v-for="(item,index) in songcan" :key="index"
style="float: left;padding: 0 20rpx;width: auto;margin-bottom:20rpx;"
<view class="box-check-btn" @tap="qucanOrsongcan('songcan',index)" v-for="(item,index) in songcan"
:key="index" style="float: left;padding: 0 20rpx;width: auto;margin-bottom:20rpx;"
:style="{background:item.checked?'rgba(180, 255, 238, 0.27)':'rgba(247, 248, 248, 0.6)',border:item.checked?'1px solid rgba(180, 255, 238, 1)':'1px solid #777'}">
{{item.title}}
</view>
@ -200,7 +226,8 @@
<view class="guize-btn" @tap="closeGuize">
确定
</view>
<view style="position: absolute;bottom: -100rpx;left: 50%;transform:translateX(-50%);" @tap.stop="$refs.guizePopup.close()">
<view style="position: absolute;bottom: -100rpx;left: 50%;transform:translateX(-50%);"
@tap.stop="$refs.guizePopup.close()">
<uni-icons type="close" size="40" color="#fff"></uni-icons>
</view>
</view>
@ -219,12 +246,12 @@
highFloorFee: 0,
paotui: false,
waima: false,
mobile:'',
mobile: '',
studentCard: '',
},
bigImg: '',
qucan:[],
songcan:[],
qucan: [],
songcan: [],
shopArea: [],
waimaRuleList: [],
paotuiRuleList: [],
@ -235,55 +262,58 @@
},
onLoad() {
this.getShopArea()
this.getShopArea()
this.getWorkerMessage()
},
onShow() {
this.menuButtonInfo = uni.getMenuButtonBoundingClientRect()
},
methods: {
getWorkerMessage(){
getWorkerMessage() {
let that = this
that.tui.request("/app/workerRelaPrice/getByWorkerId?workerId=" + uni.getStorageSync('worker').workerId, "GET", {}, false, true).then((res) => {
that.tui.request("/app/workerRelaPrice/getByWorkerId?workerId=" + uni.getStorageSync('worker').workerId,
"GET", {}, false, true).then((res) => {
if (res.code == 200) {
if(res.result != null){
if (res.result != null) {
let data = res.result;
if (data.workerName) that.formData.name = data.workerName;
if (data.cardPicture) that.formData.studentCard = data.cardPicture;
if (data.mobile) that.formData.mobile = data.mobile;
if (data.highFloorFee !== undefined && data.highFloorFee !== null) that.formData.highFloorFee = data.highFloorFee;
if (data.highFloorFee !== undefined && data.highFloorFee !== null) that.formData
.highFloorFee = data.highFloorFee;
let list = data.workerRelaPriceList || [];
let waimaList = list.filter(item => item.orderType == 0);
let paotuiList = list.filter(item => item.orderType == 1);
if(waimaList.length > 0) {
if (waimaList.length > 0) {
that.formData.waima = true;
that.waimaRuleList = waimaList;
}
if(paotuiList.length > 0) {
if (paotuiList.length > 0) {
that.formData.paotui = true;
that.paotuiRuleList = paotuiList;
}
that.$forceUpdate();
}
} else {
that.tui.toast(res.message,1000)
that.tui.toast(res.message, 1000)
return
}
}).catch((res) => {})
},
getShopArea(){
getShopArea() {
let that = this
that.tui.request("/app/shopArea/getByParentId/"+JSON.parse(uni.getStorageSync('area')).id, "GET", {}, false, true).then((res) => {
that.tui.request("/app/shopArea/getByParentId/" + JSON.parse(uni.getStorageSync('area')).id, "GET", {},
false, true).then((res) => {
if (res.code == 200) {
if(res.result != null){
for(let m = 0;m<res.result.length;m++){
if (res.result != null) {
for (let m = 0; m < res.result.length; m++) {
that.shopArea.push(res.result[m])
}
}
} else {
that.tui.toast(res.message,1000)
that.tui.toast(res.message, 1000)
return
}
}).catch((res) => {})
@ -304,7 +334,7 @@
}
this.$forceUpdate()
},
qucanOrsongcan(type,index){
qucanOrsongcan(type, index) {
if (type == 'qucan') {
this.qucan[index].checked = !this.qucan[index].checked
} else {
@ -312,12 +342,15 @@
}
this.$forceUpdate()
},
closeGuize(){
closeGuize() {
let selectedQucan = this.qucan.filter(item => item.checked);
let selectedSongcan = this.songcan.filter(item => item.checked);
if(selectedQucan.length == 0 || selectedSongcan.length == 0) {
uni.showToast({title: '请至少选择一个取货地址和一个送货地址', icon: 'none'});
if (selectedQucan.length == 0 || selectedSongcan.length == 0) {
uni.showToast({
title: '请至少选择一个取货地址和一个送货地址',
icon: 'none'
});
return;
}
@ -326,12 +359,13 @@
let userId = uni.getStorageSync('id') || '';
selectedQucan.forEach(q => {
selectedSongcan.forEach(s => {
let existing = currentRuleList.find(r => r.getAreaId == q.id && r.putAreaId == s.id);
let existing = currentRuleList.find(r => r.getAreaId == q.id && r.putAreaId == s
.id);
if (existing) {
newRules.push(existing);
} else {
newRules.push({
workerId: "W"+userId,
workerId: "W" + userId,
getAreaId: q.id,
getAreaName: q.title,
putAreaId: s.id,
@ -352,6 +386,11 @@
this.$refs.guizePopup.close()
},
changePopup(e){
if(e.show == false){
uni.navigateBack()
}
},
checkAddress(type) {
let that = this
this.currentConfigType = type;
@ -365,41 +404,68 @@
let isPutChecked = currentRuleList.some(r => r.putAreaId == item.id);
if (item.isCanteen == isCanteenVal) {
that.qucan.push({...item, checked: isGetChecked});
that.qucan.push({
...item,
checked: isGetChecked
});
} else {
that.songcan.push({...item, checked: isPutChecked});
that.songcan.push({
...item,
checked: isPutChecked
});
}
});
this.$refs.guizePopup.open()
},
removeRule(type, index) {
if(type == 'waima') {
if (type == 'waima') {
this.waimaRuleList.splice(index, 1);
} else {
this.paotuiRuleList.splice(index, 1);
}
},
submit() {
if (!this.formData.name) return uni.showToast({title: '请填写姓名', icon: 'none'});
if (!this.formData.studentCard) return uni.showToast({title: '请上传学生证', icon: 'none'});
if (!this.formData.waima && !this.formData.paotui) return uni.showToast({title: '请至少选择一种兼职类型', icon: 'none'});
if (!this.formData.name) return uni.showToast({
title: '请填写姓名',
icon: 'none'
});
if (!this.formData.studentCard) return uni.showToast({
title: '请上传学生证',
icon: 'none'
});
if (!this.formData.waima && !this.formData.paotui) return uni.showToast({
title: '请至少选择一种兼职类型',
icon: 'none'
});
if (this.formData.waima && this.waimaRuleList.length == 0) {
return uni.showToast({title: '请配置外卖规则', icon: 'none'});
return uni.showToast({
title: '请配置外卖规则',
icon: 'none'
});
}
if (this.formData.paotui && this.paotuiRuleList.length == 0) {
return uni.showToast({title: '请配置快递规则', icon: 'none'});
return uni.showToast({
title: '请配置快递规则',
icon: 'none'
});
}
let workerRelaPriceList = [];
if (this.formData.waima) {
let invalid = this.waimaRuleList.find(item => !item.orderBkge);
if (invalid) return uni.showToast({title: '请填写外卖配送费', icon: 'none'});
if (invalid) return uni.showToast({
title: '请填写外卖配送费',
icon: 'none'
});
workerRelaPriceList = workerRelaPriceList.concat(this.waimaRuleList);
}
if (this.formData.paotui) {
let invalid = this.paotuiRuleList.find(item => !item.orderBkge);
if (invalid) return uni.showToast({title: '请填写快递配送费', icon: 'none'});
if (invalid) return uni.showToast({
title: '请填写快递配送费',
icon: 'none'
});
workerRelaPriceList = workerRelaPriceList.concat(this.paotuiRuleList);
}
@ -412,32 +478,28 @@
workerRelaPriceList: workerRelaPriceList
};
uni.showLoading({title: '提交中...', mask: true});
uni.showLoading({
title: '提交中...',
mask: true
});
this.tui.request('/app/workerRelaPrice/batchAdd', 'post', submitData).then(res => {
uni.hideLoading();
if (res.code == 200) {
let user = res.result;
uni.setStorageSync('officialAccountOpenid',user.officialAccountOpenid)
if(user.officialAccountOpenid == null || user.officialAccountOpenid == '' || user.officialAccountOpenid == undefined){
uni.showModal({
title: '提示',
content: '您还没有关注公众号,关注公众号后可提现佣金',
cancelText:'去关注',
confirmText:'暂时不用',
success: function (res) {
if (res.confirm) {
uni.showToast({title: '提交成功'});
setTimeout(() => {
uni.navigateBack();
}, 1500);
}
}
uni.setStorageSync('officialAccountOpenid', user.officialAccountOpenid)
if (user.officialAccountOpenid == null || user.officialAccountOpenid == '' || user
.officialAccountOpenid == undefined) {
this.$refs.lianggePopup.open()
} else {
uni.showToast({
title: '提交成功'
});
}else{
uni.showToast({title: '提交成功'});
}
} else {
uni.showToast({title: res.message, icon: 'none'});
uni.showToast({
title: res.message,
icon: 'none'
});
}
}).catch(err => {
uni.hideLoading();
@ -558,6 +620,26 @@
height: 500rpx;
}
.liangge-popup-content {
background: #fff;
border-radius: 10px;
padding: 10px;
height: 150px;
}
.liangge-title{
height: 50px;
line-height: 35px;
text-align: center;
font-size: 16px;
font-weight: 700;
}
.liangge-text{
height: 30px;
font-size: 14px;
font-weight: 700;
}
.box-check-btn {
width: 160rpx;
height: 70rpx;
@ -667,17 +749,18 @@
overflow: scroll;
position: relative;
}
.guize-btn{
background: #00231c;
border-radius: 100rpx;
height: 100rpx;
width: 100%;
margin: 120rpx auto 0;
color: #b4ffee;
clear: both;
text-align: center;
line-height: 100rpx;
font-size:30rpx;
font-weight: 700
.guize-btn {
background: #00231c;
border-radius: 100rpx;
height: 100rpx;
width: 100%;
margin: 120rpx auto 0;
color: #b4ffee;
clear: both;
text-align: center;
line-height: 100rpx;
font-size: 30rpx;
font-weight: 700
}
</style>

302
package2/shop/afterService.vue

@ -52,121 +52,6 @@
</view>
</view>
<uni-popup ref="orderPopup" background-color="#fff">
<view class="popup-area-content" style="height: 1200rpx;overflow: scroll;">
<view class="popup-area-title">
<text>订单详情</text>
</view>
<view class="box1">
<view style="width: 100%;line-height: 70rpx;font-size: 28rpx;font-weight: 700;">
{{orderDetail.shopName}}
<img @tap="makeCall(orderDetail.shopPhone)"
src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/869a7af6a1c24bf3a0d523c4a18b55c6.png"
alt="" style="width: 60rpx;height: 60rpx;" />
</view>
<view v-for="(item1,index1) in goodsList" :key="index1" v-if="goodsList != null && goodsList.length > 0" style="display: flex;padding: 20rpx;background: rgba(247, 248, 248, 0.6);border-radius: 20rpx;">
<view class="goods-img">
<img :src="item1.productPicture" alt="">
</view>
<view class="goods-content">
<view class="goods-name">
{{item1.productName}}
</view>
<view class="goods-content-center">
<view class="goods-deal1">
{{item1.specs}}
</view>
</view>
<view class="goods-content-bottom">
<view style="width: 50%;">
X{{item1.quantity}}
</view>
<view class="pintuan-left-price">
{{item1.price}}
</view>
</view>
</view>
</view>
<view>
<view style="height: 80rpx;line-height: 80rpx;display: flex;" v-if="orderDetail.packageFee != null && orderDetail.packageFee > 0">
<view style="flex: 1;color: #777;font-weight: 700;">
打包费
</view>
<view style="color: #000;font-weight:700;">
{{orderDetail.packageFee}}
</view>
</view>
<view style="height: 80rpx;line-height: 80rpx;display: flex;" v-if="orderDetail.deliveryType == 1">
<view style="flex: 1;color: #777;font-weight: 700;">
配送费
</view>
<view style="color: #000;font-weight:700;">
{{orderDetail.deliveryFee}}
</view>
</view>
<view style="height: 80rpx;line-height: 80rpx;display: flex;">
<view style="flex: 1;color: #777;font-weight: 700;">
优惠券
</view>
<view style="color: #000;font-weight:700;">
-1 <uni-icons type="right" size="12"></uni-icons>
</view>
</view>
</view>
<view style="display: flex;height: 80rpx;line-height: 100rpx;border-top: 1px solid #eee;font-size: 32rpx;font-weight: 700;">
<view style="flex: 1;">
实付
</view>
<view class="">
{{orderDetail.totalAmount}}
</view>
</view>
</view>
<view class="box1">
<view>
<!-- <view style="height: 80rpx;line-height: 80rpx;display: flex;">
<view style="flex: 1;color: #777;font-weight: 700;">
收件地址
</view>
<view style="color: #000;font-weight: 700;">
北校区1号宿舍楼5楼512(0702)
</view>
</view> -->
<view style="height: 80rpx;line-height: 80rpx;display: flex;" v-if="orderDetail.numberCode != null">
<view style="flex: 1;color: #777;font-weight: 700;">
订单号
</view>
<view style="color: #000;font-weight: 700;">
{{orderDetail.numberCode}}
</view>
</view>
<view style="height: 80rpx;line-height: 80rpx;display: flex;">
<view style="flex: 1;color: #777;font-weight: 700;">
下单时间
</view>
<view style="color: #000;font-weight: 700;">
{{orderDetail.createTime | formatISOTime}}
</view>
</view>
<view style="height: 80rpx;line-height: 80rpx;display: flex;" v-if="orderDetail.shopMakeTime != null">
<view style="flex: 1;color: #777;font-weight: 700;">
商家出餐时间
</view>
<view style="color: #000;font-weight: 700;">
{{orderDetail.shopMakeTime ? orderDetail.shopMakeTime : '' | formatISOTime}}
</view>
</view>
</view>
</view>
<view class="popup-area-container" v-for="(item,index) in productData" :key="index">
<text style="display: inline-block">{{item.productName}} {{item.specs}} * {{item.quantity}}</text>
</view>
</view>
</uni-popup>
<!-- 拼团详情弹窗 -->
<uni-popup ref="pintuanPopup" background-color="#fff">
<view class="guize-list">
@ -230,6 +115,37 @@
</view>
</view>
</uni-popup>
<uni-popup ref="orderPopup" background-color="transparent">
<view class="product-popup-content">
<view class="product-popup-header">
<view class="product-popup-title">商品详情</view>
<view class="product-popup-subtitle">请核对商品规格和数量</view>
</view>
<view class="product-popup-list" v-if="goodsList != null && goodsList.length > 0">
<view class="product-popup-card" v-for="(item1,index1) in goodsList" :key="index1">
<view class="product-popup-img">
<img :src="item1.productPicture" alt="">
</view>
<view class="product-popup-info">
<view class="product-popup-name">
{{item1.productName}}
</view>
<view class="product-popup-spec">
<text class="product-popup-label">规格</text>
<text class="product-popup-spec-text">{{item1.specs | delNode}}</text>
</view>
</view>
<view class="product-popup-quantity">
<view class="product-popup-quantity-num">x{{item1.quantity}}</view>
<view class="product-popup-quantity-label">数量</view>
</view>
</view>
</view>
<view class="product-popup-empty" v-else>
暂无商品详情
</view>
</view>
</uni-popup>
</view>
</view>
</template>
@ -265,6 +181,23 @@
const minutes = date.getMinutes().toString().padStart(2, '0');
const seconds = date.getSeconds().toString().padStart(2, '0');
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
},
delNode(data) {
// 1.
let str;
if (typeof data === 'object' && data !== null) {
// JSON
str = JSON.stringify(data);
} else if (typeof data === 'string') {
str = data;
} else {
//
str = String(data);
}
// 2. { } "
const result = str.replace(/[{}"]/g, '');
return result;
}
},
onShow() {
@ -299,7 +232,7 @@
this.returnFormData.refundType = item.refundType;
this.returnFormData.refundTypeStatus = item.refundTypeStatus;
this.orderDetail = item.mallOrder;
this.goodsList = item.items;
this.goodsList = item.items;
this.$refs.orderPopup.open();
},
makeCall(phone){
@ -545,4 +478,141 @@
padding-right:20rpx;
font-weight: 700;
}
.product-popup-content {
width: 680rpx;
max-height: 880rpx;
padding: 34rpx 28rpx 30rpx;
box-sizing: border-box;
overflow: scroll;
border-radius: 36rpx;
background:
radial-gradient(circle at 92% 4%, rgba(166, 255, 234, 0.38) 0, rgba(166, 255, 234, 0) 180rpx),
linear-gradient(180deg, #ffffff 0%, #f8fffc 100%);
box-shadow: 0 24rpx 56rpx rgba(0, 35, 28, 0.18);
}
.product-popup-header {
margin-bottom: 26rpx;
text-align: center;
}
.product-popup-title {
color: #143d35;
font-size: 36rpx;
font-weight: 900;
line-height: 48rpx;
}
.product-popup-subtitle {
margin-top: 8rpx;
color: #7b8a85;
font-size: 24rpx;
line-height: 34rpx;
}
.product-popup-list {
display: flex;
flex-direction: column;
gap: 20rpx;
}
.product-popup-card {
display: flex;
align-items: center;
padding: 22rpx;
border: 1px solid rgba(166, 255, 234, 0.58);
border-radius: 28rpx;
background: rgba(255, 255, 255, 0.88);
box-shadow: 0 12rpx 28rpx rgba(0, 35, 28, 0.06);
}
.product-popup-img {
width: 128rpx;
height: 128rpx;
flex-shrink: 0;
overflow: hidden;
border-radius: 22rpx;
background: #f0f5f3;
img {
width: 100%;
height: 100%;
background-size: 100%;
}
}
.product-popup-info {
flex: 1;
min-width: 0;
padding: 0 22rpx;
}
.product-popup-name {
color: #172f2a;
font-size: 30rpx;
font-weight: 900;
line-height: 42rpx;
}
.product-popup-spec {
display: flex;
align-items: flex-start;
margin-top: 16rpx;
}
.product-popup-label {
flex-shrink: 0;
height: 34rpx;
padding: 0 14rpx;
border-radius: 999rpx;
background: rgba(166, 255, 234, 0.72);
color: #126255;
font-size: 20rpx;
font-weight: 800;
line-height: 34rpx;
}
.product-popup-spec-text {
flex: 1;
margin-left: 12rpx;
color: #65736f;
font-size: 24rpx;
line-height: 34rpx;
word-break: break-all;
}
.product-popup-quantity {
width: 92rpx;
height: 92rpx;
flex-shrink: 0;
border-radius: 28rpx;
background: linear-gradient(135deg, #fff4ce 0%, #a6ffea 100%);
color: #103f36;
text-align: center;
box-shadow: 0 10rpx 20rpx rgba(0, 35, 28, 0.08);
}
.product-popup-quantity-num {
padding-top: 16rpx;
font-size: 30rpx;
font-weight: 900;
line-height: 34rpx;
}
.product-popup-quantity-label {
margin-top: 2rpx;
color: #52736b;
font-size: 20rpx;
line-height: 28rpx;
}
.product-popup-empty {
padding: 80rpx 20rpx;
border-radius: 28rpx;
background: rgba(247, 255, 251, 0.9);
color: #7b8a85;
font-size: 28rpx;
font-weight: 700;
text-align: center;
}
</style>

3
pages.json

@ -154,7 +154,8 @@
"path": "group/groupBuySingle",
"style": {
"navigationBarTitleText": "拼团单一商家",
"navigationStyle": "custom"
"navigationStyle": "custom",
"enablePullDownRefresh": true
}
},{
"path": "group/groupBuyList",

189
pages/index/index.vue

@ -1,5 +1,5 @@
<template>
<view class="page1" :class="{'is-sticky': lastScrollTop>583}">
<view class="page1">
<view class="swiper-container">
<view class="swiper-page" v-if="currentIndex == 0">
<view style="position: relative;height: 545rpx;">
@ -31,7 +31,7 @@
<view class="order-msg-box">
<view class="order-msg-left">
<img src="/static/images/img/songshu.png"
alt="" />
alt="" style="width: 70%;height: 70%;margin: 15% 0 0 15%;" />
</view>
<view class="order-msg-center">
<view
@ -228,108 +228,108 @@
</view>
</view>
<view class="daimai-box" style="padding-bottom:180rpx;">
<view class="daimai-tab" id="menuList" :class="{'daimai-tab--sticky': lastScrollTop>583}"
:style="daimaiTabStyle">
<view class="daimai-tab-item" :class="{'active': checked == 'waimai'}"
@tap="checkTab1('waimai')">
<view class="daimai-tab-glow"></view>
<view class="daimai-tab-icon"></view>
<view class="daimai-tab-info">
<text class="daimai-tab-label">外卖</text>
<text class="daimai-tab-count">{{waimaiCount}}</text>
</view>
<view style="width:100%;height:100rpx;" v-if="lastScrollTop>583"></view>
<view class="daimai-tab" id="menuList" :class="{'daimai-tab--sticky': lastScrollTop>583}"
:style="{'top': (navBarHeight+46) + 'px'}">
<view class="daimai-tab-item" :class="{'active': checked == 'waimai'}"
@tap="checkTab1('waimai')">
<view class="daimai-tab-glow"></view>
<view class="daimai-tab-icon"></view>
<view class="daimai-tab-info">
<text class="daimai-tab-label">外卖</text>
<text class="daimai-tab-count">{{waimaiCount}}</text>
</view>
<view class="daimai-tab-item" :class="{'active': checked == 'kuaidi'}"
@tap="checkTab1('kuaidi')">
<view class="daimai-tab-glow"></view>
<view class="daimai-tab-icon"></view>
<view class="daimai-tab-info">
<text class="daimai-tab-label">快递</text>
<text class="daimai-tab-count">{{kuaidiCount}}</text>
</view>
</view>
<view class="daimai-tab-item" :class="{'active': checked == 'kuaidi'}"
@tap="checkTab1('kuaidi')">
<view class="daimai-tab-glow"></view>
<view class="daimai-tab-icon"></view>
<view class="daimai-tab-info">
<text class="daimai-tab-label">快递</text>
<text class="daimai-tab-count">{{kuaidiCount}}</text>
</view>
<view class="daimai-tab-item" :class="{'active': checked == 'paotui'}"
@tap="checkTab1('paotui')">
<view class="daimai-tab-glow"></view>
<view class="daimai-tab-icon"></view>
<view class="daimai-tab-info">
<text class="daimai-tab-label">跑腿</text>
<text class="daimai-tab-count">{{paotuiCount}}</text>
</view>
</view>
<view class="daimai-tab-item" :class="{'active': checked == 'paotui'}"
@tap="checkTab1('paotui')">
<view class="daimai-tab-glow"></view>
<view class="daimai-tab-icon"></view>
<view class="daimai-tab-info">
<text class="daimai-tab-label">跑腿</text>
<text class="daimai-tab-count">{{paotuiCount}}</text>
</view>
<view class="daimai-tab-item" :class="{'active': checked == 'zhipai'}"
@tap="checkTab1('zhipai')" v-if="worker != null">
<view class="daimai-tab-glow"></view>
<view class="daimai-tab-icon"></view>
<view class="daimai-tab-info">
<text class="daimai-tab-label">指派单</text>
<text class="daimai-tab-count">{{zhipaiCount}}</text>
</view>
</view>
<view class="daimai-tab-item" :class="{'active': checked == 'zhipai'}"
@tap="checkTab1('zhipai')" v-if="worker != null">
<view class="daimai-tab-glow"></view>
<view class="daimai-tab-icon"></view>
<view class="daimai-tab-info">
<text class="daimai-tab-label">指派单</text>
<text class="daimai-tab-count">{{zhipaiCount}}</text>
</view>
</view>
<view class="title-sort" v-if="(lastScrollTop>300 || getAreaData.id != undefined || putAreaData.id != undefined || checkYongjin)" :class="{'title-sort--sticky': lastScrollTop>583}"
:style="titleSortStyle">
<view class="sort-member" style="position: relative;">
<view @tap="checkAdd">
取餐地址 <text style="font-size: 20rpx;"></text>
</view>
<view class="sort-value" v-if="isgetArea">
<view class="sort-value1" v-for="(item,index) in getshopArea" :key="index"
@tap="searchOrder('getarea',item)">{{item.title}}</view>
</view>
</view>
<view class="title-sort" v-if="(lastScrollTop>300 || getAreaData.id != undefined || putAreaData.id != undefined || checkYongjin)" :class="{'title-sort--sticky': lastScrollTop>583}"
:style="{'top': (navBarHeight+90) + 'px'}">
<view class="sort-member" style="position: relative;">
<view @tap="checkAdd">
取餐地址 <text style="font-size: 20rpx;"></text>
</view>
<view class="sort-member" style="position: relative;">
<view @tap="checkAdd1">
送餐地址 <text style="font-size: 20rpx;"></text>
</view>
<view class="sort-value" v-if="isputArea">
<view class="sort-value1" v-for="(item,index) in putshopArea" :key="index"
@tap="searchOrder('putarea',item)">{{item.title}}</view>
</view>
<view class="sort-value" v-if="isgetArea">
<view class="sort-value1" v-for="(item,index) in getshopArea" :key="index"
@tap="searchOrder('getarea',item)">{{item.title}}</view>
</view>
</view>
<view class="sort-member" style="position: relative;">
<view @tap="checkAdd1">
送餐地址 <text style="font-size: 20rpx;"></text>
</view>
<view @tap="searchOrder('yongjin')" class="sort-member" style="border-radius: 60rpx"
:style="{'background':checkYongjin==true?'linear-gradient(135deg, rgba(255, 247, 215, 0.95), rgba(166, 255, 234, 0.72))':'rgba(248, 255, 250, 0.86)','border':checkYongjin==true?'1px solid rgba(255, 188, 119, 0.72)':'1px solid rgba(166, 255, 234, 0.46)'}">
佣金
<view class="sort-value" v-if="isputArea">
<view class="sort-value1" v-for="(item,index) in putshopArea" :key="index"
@tap="searchOrder('putarea',item)">{{item.title}}</view>
</view>
</view>
<view class="sort-text"
v-if="getAreaData.id != undefined || putAreaData.id != undefined || checkYongjin"
:style="sortTextStyle">
<view class="sort-text-inner">
<view @tap="searchOrder('delgetarea')" class="guize1-qusong"
v-if="getAreaData.id != undefined">
<view class="qusong1">
</view>
<view class="qusong2">
{{getAreaData.title}}
</view>
<view @tap="searchOrder('yongjin')" class="sort-member" style="border-radius: 60rpx"
:style="{'background':checkYongjin==true?'linear-gradient(135deg, rgba(255, 247, 215, 0.95), rgba(166, 255, 234, 0.72))':'rgba(248, 255, 250, 0.86)','border':checkYongjin==true?'1px solid rgba(255, 188, 119, 0.72)':'1px solid rgba(166, 255, 234, 0.46)'}">
佣金
</view>
</view>
<view class="sort-text"
v-if="getAreaData.id != undefined || putAreaData.id != undefined || checkYongjin"
:style="{'top': (navBarHeight+140) + 'px'}">
<view class="sort-text-inner">
<view @tap="searchOrder('delgetarea')" class="guize1-qusong"
v-if="getAreaData.id != undefined">
<view class="qusong1">
</view>
<view @tap="searchOrder('delputarea')" class="guize1-qusong"
v-if="putAreaData.id != undefined">
<view class="qusong1">
</view>
<view class="qusong2" style="background: rgba(209, 206, 255, 1);">
{{putAreaData.title}}
</view>
<view class="qusong2">
{{getAreaData.title}}
</view>
<view @tap="searchOrder('delyongjin')" class="guize1-qusong" v-if="checkYongjin">
<view class="qusong1">
</view>
<view class="qusong2 commission-chip">
佣金优先
</view>
</view>
<view @tap="searchOrder('delputarea')" class="guize1-qusong"
v-if="putAreaData.id != undefined">
<view class="qusong1">
</view>
<view @tap="clearCheck"
v-if="getAreaData.id != undefined || putAreaData.id != undefined || checkYongjin"
class="clear-filter">
清空
<view class="qusong2" style="background: rgba(209, 206, 255, 1);">
{{putAreaData.title}}
</view>
</view>
<view @tap="searchOrder('delyongjin')" class="guize1-qusong" v-if="checkYongjin">
<view class="qusong1">
</view>
<view class="qusong2 commission-chip">
佣金优先
</view>
</view>
<view @tap="clearCheck"
v-if="getAreaData.id != undefined || putAreaData.id != undefined || checkYongjin"
class="clear-filter">
清空
</view>
</view>
</view>
<scroll-view @scrolltolower="onReachPage" :scroll-y="lastScrollTop>583" class="delivery-list-wrap">
<view class="empty-delivery" v-if="deliveryItem.length <= 0">
@ -730,17 +730,6 @@
postList,
myCenter
},
computed: {
daimaiTabStyle() {
return { top: (this.navBarHeight + 46) + 'px' };
},
titleSortStyle() {
return { top: (this.navBarHeight + 90) + 'px' };
},
sortTextStyle() {
return { top: (this.navBarHeight + 140) + 'px' };
}
},
filters: {
formatHourMinute(value) {
if (!value) return '';

Loading…
Cancel
Save