Browse Source

修改页面样式

master
longjieli 10 months ago
parent
commit
3a6b51542a
86 changed files with 2020 additions and 704 deletions
  1. +3
    -3
      service-uniapp-client/components/address/redactAddress.vue
  2. +1
    -1
      service-uniapp-client/components/base/m-navbar.vue
  3. +71
    -69
      service-uniapp-client/components/couponList.vue
  4. +2
    -2
      service-uniapp-client/components/payOrder/selectAddressPopup.vue
  5. +1
    -1
      service-uniapp-client/components/payOrder/selectCouponPopup.vue
  6. +161
    -0
      service-uniapp-client/components/payOrder/selectEssentialOilPopup.vue
  7. +1
    -1
      service-uniapp-client/components/payOrder/selectTime.vue
  8. +20
    -18
      service-uniapp-client/components/review/reviewList/reviewList.vue
  9. +7
    -7
      service-uniapp-client/components/selectTechnicianCompoents.vue
  10. +13
    -11
      service-uniapp-client/components/technicianList.vue
  11. +56
    -0
      service-uniapp-client/mixins/order.js
  12. +29
    -1
      service-uniapp-client/pages.json
  13. +226
    -0
      service-uniapp-client/pages/complain/complain.vue
  14. +70
    -0
      service-uniapp-client/pages/evaluate/evaluate.vue
  15. +78
    -53
      service-uniapp-client/pages/index/center.vue
  16. +164
    -5
      service-uniapp-client/pages/index/index.vue
  17. +86
    -99
      service-uniapp-client/pages/index/order.vue
  18. +17
    -4
      service-uniapp-client/pages/index/technician.vue
  19. +7
    -4
      service-uniapp-client/pages/login/login.vue
  20. +10
    -34
      service-uniapp-client/pages/login/mobile.vue
  21. +221
    -0
      service-uniapp-client/pages/message/message.vue
  22. +2
    -2
      service-uniapp-client/pages/mine/address.vue
  23. +31
    -16
      service-uniapp-client/pages/mine/collect.vue
  24. +1
    -11
      service-uniapp-client/pages/mine/coupon.vue
  25. +28
    -59
      service-uniapp-client/pages/mine/distribution.vue
  26. +2
    -2
      service-uniapp-client/pages/mine/phoneDetail.vue
  27. +2
    -2
      service-uniapp-client/pages/mine/setting.vue
  28. +90
    -102
      service-uniapp-client/pages/mine/settled.vue
  29. +25
    -38
      service-uniapp-client/pages/mine/wallet.vue
  30. +7
    -10
      service-uniapp-client/pages/mine/withdraw.vue
  31. +2
    -4
      service-uniapp-client/pages/order/evaluate.vue
  32. +66
    -20
      service-uniapp-client/pages/order/orderDetail.vue
  33. +60
    -22
      service-uniapp-client/pages/order/payOrder.vue
  34. +317
    -0
      service-uniapp-client/pages/orderManagement/orderManagement.vue
  35. +10
    -10
      service-uniapp-client/pages/technician/subscribeService.vue
  36. +15
    -7
      service-uniapp-client/pages/technician/technicianDetail.vue
  37. BIN
      service-uniapp-client/static/address/address-icon.png
  38. BIN
      service-uniapp-client/static/address/position-icon.png
  39. BIN
      service-uniapp-client/static/bar/hm.png
  40. BIN
      service-uniapp-client/static/bar/hms.png
  41. BIN
      service-uniapp-client/static/bar/ph.png
  42. BIN
      service-uniapp-client/static/bar/phs.png
  43. BIN
      service-uniapp-client/static/bar/tp.png
  44. BIN
      service-uniapp-client/static/bar/tps.png
  45. BIN
      service-uniapp-client/static/bar/wd.png
  46. BIN
      service-uniapp-client/static/bar/wds.png
  47. BIN
      service-uniapp-client/static/complain/img.png
  48. BIN
      service-uniapp-client/static/coupon/c.png
  49. BIN
      service-uniapp-client/static/home/more.png
  50. BIN
      service-uniapp-client/static/home/time-icon.png
  51. BIN
      service-uniapp-client/static/icons/icon7.png
  52. BIN
      service-uniapp-client/static/icons/m1.png
  53. BIN
      service-uniapp-client/static/icons/m2.png
  54. BIN
      service-uniapp-client/static/icons/m3.png
  55. BIN
      service-uniapp-client/static/icons/m4.png
  56. BIN
      service-uniapp-client/static/icons/m5.png
  57. BIN
      service-uniapp-client/static/icons/m6.png
  58. BIN
      service-uniapp-client/static/icons/m7.png
  59. BIN
      service-uniapp-client/static/icons/secure.png
  60. BIN
      service-uniapp-client/static/message/arrow.png
  61. BIN
      service-uniapp-client/static/message/lightning-icon.png
  62. BIN
      service-uniapp-client/static/message/message-icon.png
  63. BIN
      service-uniapp-client/static/ms/banner.png
  64. BIN
      service-uniapp-client/static/ms/fontjszm.png
  65. BIN
      service-uniapp-client/static/ms/settled.png
  66. BIN
      service-uniapp-client/static/ms/w.png
  67. BIN
      service-uniapp-client/static/order/time.png
  68. BIN
      service-uniapp-client/static/payOrder/1.png
  69. BIN
      service-uniapp-client/static/payOrder/2.png
  70. BIN
      service-uniapp-client/static/payOrder/3.png
  71. BIN
      service-uniapp-client/static/payOrder/4.png
  72. BIN
      service-uniapp-client/static/payOrder/5.png
  73. BIN
      service-uniapp-client/static/payOrder/6.png
  74. BIN
      service-uniapp-client/static/payOrder/7.png
  75. BIN
      service-uniapp-client/static/payOrder/8.png
  76. BIN
      service-uniapp-client/static/payOrder/9.png
  77. BIN
      service-uniapp-client/static/technician/address.png
  78. BIN
      service-uniapp-client/static/technician/collect-icon.png
  79. BIN
      service-uniapp-client/static/technician/lightning-icon.png
  80. BIN
      service-uniapp-client/static/technician/lightning-icon1.png
  81. BIN
      service-uniapp-client/static/test/精油.png
  82. BIN
      service-uniapp-client/static/test/精油1.png
  83. BIN
      service-uniapp-client/static/test/精油2.png
  84. BIN
      service-uniapp-client/static/test/精油3.png
  85. +117
    -85
      service-uniapp-client/uni.css
  86. +1
    -1
      service-uniapp-client/utils/Share.js

+ 3
- 3
service-uniapp-client/components/address/redactAddress.vue View File

@ -76,7 +76,7 @@
color: white;
font-size: 28rpx;
margin: 0rpx auto;
background: linear-gradient(180deg, #6FDFBE, #5AC796);
background: #F7AEB6;
}
image {
@ -116,7 +116,7 @@
display: flex;
align-items: center;
height: 78rpx;
color: #5FCC9F;
color: #EF8C94;
}
.van-cell__value {
@ -126,7 +126,7 @@
}
&::v-deep .van-field__error-message {
color: #5AC796;
color: #EF8C94;
font-size: 20rpx;
margin-top: 10rpx;
}


+ 1
- 1
service-uniapp-client/components/base/m-navbar.vue View File

@ -29,7 +29,7 @@
top: 0;
width: 100%;
height: 90rpx;
background: linear-gradient(to right, #4899a6, #6fc6ad);
background: #F1B8BD;
display: flex;
justify-content: center;
align-items: center;


+ 71
- 69
service-uniapp-client/components/couponList.vue View File

@ -1,10 +1,7 @@
<template>
<view v-if="list.length > 0" class="list">
<view class="item"
v-for="(item,index) in list"
@click="$emit('select', item)"
:key="index">
<view class="item" v-for="(item,index) in list" @click="$emit('select', item)" :key="index">
<view class="price">
<view class="num">
<view class="icon">
@ -19,94 +16,99 @@
<view class="date">
有效期{{ item.endTime }}
</view>
<view @click.stop="$emit('select',item)" class="status">
<!-- 使 -->
使
</view>
</view>
</view>
<van-empty v-else image="/static/empty/coupon.png" image-size="400rpx" description="暂无优惠券"/>
<van-empty v-else image="/static/empty/coupon.png" image-size="400rpx" description="暂无优惠券" />
</template>
<script>
export default {
props : ['list'],
name:"couponList",
props: ['list'],
name: "couponList",
data() {
return {
};
},
methods : {
methods: {
}
}
</script>
<style scoped lang="scss">
.list{
.item{
color: #4FD3BC;
position: relative;
width: calc(100% - 40rpx);
height: 220rpx;
background: url(/static/coupon/c.png);
background-size: 100% 100%;
margin: 20rpx;
box-sizing: border-box;
padding: 30rpx;
.status{
position: absolute;
right: 20rpx;
top: 20rpx;
height: calc(100% - 40rpx);
width: 60rpx;
writing-mode:vertical-rl;
.list {
.item {
color: #EF8C94;
position: relative;
width: calc(100% - 40rpx);
height: 220rpx;
background: url(/static/coupon/c.png);
background-size: 100% 100%;
margin: 20rpx;
box-sizing: border-box;
padding: 20rpx;
background-color: #fff;
border-radius: 60rpx;
display: flex;
justify-content: center;
align-items: center;
}
.price{
display: flex;
align-items: center;
.num{
color: #4FD3BC;
font-weight: 900;
font-size: 70rpx;
padding: 30rpx;
.status {
position: absolute;
right: 20rpx;
top: 20rpx;
height: calc(100% - 40rpx);
width: 60rpx;
writing-mode: vertical-rl;
box-sizing: border-box;
padding: 20rpx;
background-color: #fff;
border-radius: 60rpx;
display: flex;
justify-content: center;
align-items: center;
}
.price {
display: flex;
align-items: flex-end;
.icon{
color: #fff;
background-color: #4FD3BC;
width: 30rpx;
height: 30rpx;
align-items: center;
.num {
color: #EF8C94;
font-weight: 900;
font-size: 70rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 20rpx;
border-radius: 14rpx;
margin-bottom: 14rpx;
margin-right: 10rpx;
align-items: flex-end;
.icon {
color: #fff;
background-color: #EF8C94;
width: 30rpx;
height: 30rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 20rpx;
border-radius: 14rpx;
margin-bottom: 14rpx;
margin-right: 10rpx;
}
}
.tiao {
padding: 10rpx 20rpx;
background-color: #F1B8BD;
color: #EF8C94;
font-size: 22rpx;
margin-left: 20rpx;
border-radius: 10rpx;
}
}
.tiao{
padding: 10rpx 20rpx;
background-color: #9ee3d1;
color: #25a28c;
font-size: 22rpx;
margin-left: 20rpx;
border-radius: 10rpx;
}
}
.date{
.date {}
}
}
}
</style>

+ 2
- 2
service-uniapp-client/components/payOrder/selectAddressPopup.vue View File

@ -132,7 +132,7 @@
.box {
width: 100%;
height: 100%;
background: linear-gradient(#57CAA0, #55B16E);
background: #F1B8BD;
box-sizing: border-box;
padding: 40rpx 40rpx 140rpx 40rpx;
@ -247,7 +247,7 @@
color: white;
text-align: center;
font-size: 28rpx;
background: linear-gradient(180deg, #6FDFBE, #5AC796);
background: #EF8C94;
}
}


+ 1
- 1
service-uniapp-client/components/payOrder/selectCouponPopup.vue View File

@ -96,7 +96,7 @@
.box{
width: 100%;
height: 100%;
background: linear-gradient(#57CAA0, #55B16E);
background: #F1B8BD;
box-sizing: border-box;
padding: 40rpx;
.title{


+ 161
- 0
service-uniapp-client/components/payOrder/selectEssentialOilPopup.vue View File

@ -0,0 +1,161 @@
<template>
<view class="selectEssentialOil">
<van-popup v-model:show="showBottom" round position="bottom" @close="close" :style="{ height: '75%' }">
<view class="box">
<view class="title">
{{ title || '选择精油' }}
</view>
<view class="technician-list">
<van-list v-model:loading="loading" :finished="finished" @load="onLoad">
<view class="EssentialOil-list">
<view @click="select(item)" v-for="item in essentialOilList" :key="item.key" class="EssentialOil-item">
<view class="img-box">
<image :src="item.path" mode="aspectFill"></image>
</view>
<view class="name-price">
<view class="name">{{ item.name }}</view>
<view class="price">{{ item.price }}</view>
</view>
</view>
</view>
</van-list>
</view>
</view>
</van-popup>
</view>
</template>
<script>
export default {
data() {
return {
showBottom : false,
essentialOilList : [
{ id : 1 , path : '/static/test/精油.png' , name : '精油1' , price : 600 },
{ id : 2 , path : '/static/test/精油1.png' , name : '精油2' , price : 660 },
{ id : 3 , path : '/static/test/精油2.png' , name : '精油3' , price : 888 },
{ id : 4 , path : '/static/test/精油3.png' , name : '精油4' , price : 999 },
],
loading : false,
finished : true
}
},
props : ['show', 'title'],
created(){
this.getEssentialOil()
},
methods: {
//
getEssentialOil(){
this.loading = false;
this.finished = true;
console.log('获取精油列表');
},
//
select(e){
this.$emit('select', e)
},
//
close(){
this.$emit('close')
},
//()
onLoad(){
// this.queryParams.pageSize += 10
// this.getEssentialOil()
}
},
watch: {
show: {
handler (newValue, oldValue) {
this.showBottom = newValue
this.getEssentialOil()
},
immediate: true
}
}
}
</script>
<style lang="scss" scoped>
.selectEssentialOil {
.box {
width: 100%;
height: 100%;
background: #F1B8BD;
box-sizing: border-box;
padding: 40rpx;
.title {
font-size: 32rpx;
text-align: center;
color: #fff;
margin-bottom: 40rpx;
}
.technician-list {
overflow: auto;
width: 100%;
height: calc(100% - 45rpx);
}
.EssentialOil-list{
display: flex;
flex-wrap: wrap;
.EssentialOil-item{
width: calc(50% - 15rpx);
background: #fff;
padding: 20rpx;
margin-right: 15rpx;
flex-shrink: 0;
margin-bottom: 20rpx;
border-radius: 10rpx;
box-sizing: border-box;
.img-box{
display: flex;
align-items: center;
justify-content: center;
width: 100%;
aspect-ratio: 1 / 1; /* 设置宽高比为1:1 */
image{
width: 100%;
height: 100%;
}
}
.name-price{
.name{
font-size: 30rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
color: #666;
margin: 20rpx;
}
.price{
color: red;
}
}
&:nth-child(2n){
margin-right: 0rpx;
}
}
}
}
}
</style>

+ 1
- 1
service-uniapp-client/components/payOrder/selectTime.vue View File

@ -121,7 +121,7 @@
.box{
width: 100%;
height: 100%;
background: linear-gradient(#57CAA0, #55B16E);
background: #F1B8BD;
box-sizing: border-box;
padding: 40rpx;
.title{


+ 20
- 18
service-uniapp-client/components/review/reviewList/reviewList.vue View File

@ -8,7 +8,8 @@
</view>
<view class="user-name-and-time box-s">
<view class="user-name">
匿名用户
<text class="name">匿名用户</text>
<text class="server-name">皇家尊享spa</text>
</view>
<view class="peview-time">
{{ item.createTime }}
@ -21,7 +22,7 @@
</view>
<view class="mark">
<van-rate v-model="item.serviceNum" size="25rpx" color="#FCD618" />
<text class="desc">{{ item.labelText }}</text>
<text class="desc">{{ getSatisfaction(item.serviceNum) }}</text>
</view>
<view class="tags">
<view class="tag" v-for="(t) in item.labelText.split(',')">
@ -53,26 +54,17 @@
list: {
type: Array,
default: function() {
return [{
userName: 'IYU466930948',
peviewTime: '2024.01.18',
tag: '皇家尊享spa',
agrenn: '非常满意',
content: '经常久坐肩颈很不舒服,下单了#皇家尊享spa预约的技师是#李晓纯,下单还不到20分钟就过来了,等待时间比较快,手法力道真的很专业,服务态度也不错,顺便还给我普及了穴位知识,真的很满意',
num: 450
}, {
userName: 'IYU466930948',
peviewTime: '2024.01.18',
tag: '皇家尊享spa',
agrenn: '非常满意',
content: '经常久坐肩颈很不舒服,下单了#皇家尊享spa预约的技师是#李晓纯,下单还不到20分钟就过来了,等待时间比较快,手法力道真的很专业,服务态度也不错,顺便还给我普及了穴位知识,真的很满意',
num: 450
}, ]
return []
}
}
},
methods: {
//
getSatisfaction(num){
let satisfaction = ['不满意','不满意','较满意','满意','非常满意']
return satisfaction[num - 1]
}
}
}
</script>
@ -110,7 +102,17 @@
padding: 10rpx 15rpx;
.user-name {
display: flex;
align-items: center;
font-size: 30rpx;
.server-name {
background: #FEF4F5;
color: #EF8D95;
font-size: 20rpx;
padding: 8rpx 15rpx;
border-radius: 5rpx;
}
}
.peview-time {


+ 7
- 7
service-uniapp-client/components/selectTechnicianCompoents.vue View File

@ -114,7 +114,7 @@
position: absolute;
left: 10%;
bottom: -15rpx;
background: #55CCA7;
background: #EF8C94;
width: 80%;
color: white;
font-size: 22rpx;
@ -143,8 +143,8 @@
}
.btn {
border: 1px solid #55CCA7;
color: #55CCA7;
border: 1px solid #EF8C94;
color: #F6BEC3;
font-size: 20rpx;
padding: 5rpx;
border-radius: 5rpx;
@ -153,11 +153,11 @@
.appointed-time {
width: 40%;
background: #E7FDF7;
background: #FFE3E6;
height: 40rpx;
border-radius: 22.5rpx;
font-size: 20rpx;
color: #5DB9A3;
color: #EF8C94;
.capsule {
display: flex;
@ -172,7 +172,7 @@
height: 100%;
color: white;
border-radius: 20rpx;
background: #52CFB0;
background: #EF8C94;
}
.today {
@ -224,7 +224,7 @@
width: 160rpx;
border-radius: 40rpx;
color: white;
background: linear-gradient(170deg, #53CEAC, #5AC796);
background: #EF8C94;
font-size: 24rpx;
}


+ 13
- 11
service-uniapp-client/components/technicianList.vue View File

@ -9,7 +9,7 @@
<image :src="item.image" mode="aspectFill" class="bg"></image>
<image v-if="item.icon" :src="item.icon" mode="aspectFit" class="hot"></image>
<view v-if="item.bookable == 'Y'" class="available-for-service">
<image src="@/static/address/lightning-icon.png" mode="aspectFit"></image>
<image src="@/static/technician/lightning-icon.png" mode="aspectFit"></image>
<text class="desc">可服务</text>
</view>
</view>
@ -112,9 +112,11 @@
width: 150rpx;
height: 150rpx;
border-radius: 10rpx;
border: 1px solid #5EBAA2;
border: 1px solid #F6BEC3;
.img-box{
position: relative;
.bg {
width: 150rpx;
height: 150rpx;
@ -144,14 +146,14 @@
justify-content: center;
align-items: center;
position: absolute;
left: 50%;
bottom: -13rpx;
top: 0rpx;
right: 0rpx;
width: 70%;
height: 40rpx;
background: #60C285;
border-radius: 10rpx;
background: #F6BEC3;
border-top-left-radius: 20rpx;
border-bottom-left-radius: 20rpx;
color: white;
transform: translate(-50%);
.desc {
font-size: 18rpx;
@ -215,11 +217,11 @@
.appointed-time {
width: 48%;
background: #E7FDF7;
background: #FFE3E6;
height: 40rpx;
border-radius: 22.5rpx;
font-size: 20rpx;
color: #5DB9A3;
color: #EF8C94;
.capsule {
display: flex;
@ -234,7 +236,7 @@
height: 100%;
color: white;
border-radius: 20rpx;
background: #52CFB0;
background: #EF8C94;
}
.today {
@ -309,7 +311,7 @@
width: 180rpx;
border-radius: 40rpx;
color: white;
background: linear-gradient(170deg, #53CEAC, #5AC796);
background: #EF8C94;
}
.notAvailable {


+ 56
- 0
service-uniapp-client/mixins/order.js View File

@ -0,0 +1,56 @@
import { showConfirmDialog } from 'vant';
export default {
methods : {
//再来一单
moreOrder(projectId,successCallback) {
this.$api('getProjectDetail', {
id: projectId
}, res => {
if (res.code == 200) {
successCallback && successCallback(res,projectId)
}
})
},
//立即评价
toEvaluate(id,projectId) {
uni.navigateTo({
url: '/pages/order/evaluate?id=' + id + '&projectId=' + projectId
})
},
//取消订单
calcelOrder(orderId,successCallback) {
showConfirmDialog({
title: '取消订单',
message: '确认取消订单?',
}).then(() => {
this.$api('cancelVipOrder', {
orderId
}, res => {
if (res.code == 200) {
successCallback && successCallback()
}
})
}).catch(() => {});
},
//立即支付
toPayOrder(item) {
this.$api('immediatelyPay', {
addressId: item.addressId,
couponId: item.couponId,
orderId: item.id,
payType: item.payType,
remark: item.remark,
serviceTime: item.serviceTime
}, res => {
if (res.code == 200) {
this.$wxPay(res, this.getOrderList, this.getOrderList)
}
})
},
}
}

+ 29
- 1
service-uniapp-client/pages.json View File

@ -173,6 +173,34 @@
{
"navigationBarTitleText" : "钱包提现"
}
},
{
"path" : "pages/message/message",
"style" :
{
"navigationBarTitleText" : "消息通知"
}
},
{
"path" : "pages/complain/complain",
"style" :
{
"navigationBarTitleText" : "投诉建议"
}
},
{
"path" : "pages/evaluate/evaluate",
"style" :
{
"navigationBarTitleText" : "我的评价"
}
},
{
"path" : "pages/orderManagement/orderManagement",
"style" :
{
"navigationBarTitleText" : "订单管理"
}
}
],
"globalStyle": {
@ -184,7 +212,7 @@
},
"tabBar": {
"backgroundColor": "white",
"selectedColor": "#56CBA4",
"selectedColor": "#EF8C94",
"list": [
{
"selectedIconPath": "/static/bar/hms.png",


+ 226
- 0
service-uniapp-client/pages/complain/complain.vue View File

@ -0,0 +1,226 @@
<!-- 投诉建议 -->
<template>
<view class="complain">
<mNavbar title="投诉建议" :leftClick="leftClick"></mNavbar>
<view class="content">
<view class="c-input">
<textarea v-model="form.suggestion" :maxlength="maxNum" @input="GetNumber"
placeholder="请输入投诉/建议的内容....."></textarea>
<view class="input-num">{{ inputNum }} / {{ maxNum }}</view>
</view>
<view class="c-input">
<input v-model="remark" type="text" placeholder="备注(选填)" />
</view>
<!-- 上传图片 -->
<view class="upload">
<view class="upload-title">上传图片/视频</view>
<view class="image-list">
<view @click="selectImg(item)" v-for="(item,index) in form.images" class="image-item">
<image :src="item" mode=""></image>
</view>
<view @click="fileUploads" v-if="uploadNum < maxUploadNum" class="add-img-btn">
<image src="/static/complain/img.png" mode="scaleToFill"></image>
</view>
</view>
</view>
</view>
<view class="add-btn">
<view @click="complain" class="btn">
提交审核
</view>
</view>
<van-action-sheet v-model:show="show" :actions="actions" @select="selectionOperation" />
</view>
</template>
<script>
import mNavbar from '@/components/base/m-navbar.vue'
import { showImagePreview } from 'vant';
export default {
components: {
mNavbar
},
data() {
return {
maxNum: 600, //
inputNum: 0, //
form: {
suggestion: '', //,
images : [],
remark : ''
},
actions: [{
index : 0,
name: '查看图片'
},
{
index : 1,
name: '删除图片'
}
],
show : false,
maxUploadNum : 5, //5
currentImg : null, //
uploadNum : 0, //
}
},
methods: {
//
leftClick() {
uni.switchTab({
url: '/pages/index/center'
})
},
//
GetNumber(e) {
this.inputNum = e.detail.cursor;
},
//
complain() {
},
//
selectionOperation(item){
let { index } = item
if(index){
this.removeImg()
}else{
this.viewImg()
}
},
//
removeImg(){
this.form.images = this.form.images.filter(item => {
return item != this.currentImg
})
this.show = false
this.uploadNum = this.form.images.length
},
//
viewImg(){
showImagePreview([this.currentImg]);
},
//
selectImg(item){
this.show = true;
this.currentImg = item;
},
//
fileUploads() {
uni.chooseImage({
count: 1, // 91
sizeType: ['original', 'compressed'], //
sourceType: ['album'], //
success: (res) => {
let resultPromise = [];
//
this.uploadFileToOSS(res.tempFiles[0]).then(imgPath => {
this.form.images.push(imgPath)
this.uploadNum++
})
}
});
},
}
}
</script>
<style lang="scss" scoped>
.complain {
.content {
width: 96%;
margin: 0rpx auto;
padding-bottom: 80rpx;
.c-input {
background: #F6F6F6;
border-radius: 20rpx;
margin-top: 20rpx;
box-sizing: border-box;
padding: 40rpx;
textarea {
width: 100%;
}
.input-num {
text-align: right;
color: #BCB7B7;
font-size: 22rpx;
}
}
.upload {
.upload-title {
margin: 30rpx 0rpx;
}
.image-list {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.image-item,
.add-img-btn {
width: calc(375rpx - 10px);
height: calc(375rpx - 10px);
overflow: hidden;
border-radius: 20rpx;
box-sizing: border-box;
border: 2px dashed #ccc;
margin-bottom: 25rpx;
image {
width: calc(375rpx - 10px);
height: calc(375rpx - 10px);
}
}
}
}
}
.add-btn {
position: fixed;
display: flex;
justify-content: center;
align-items: center;
left: 0;
bottom: 0;
width: 750rpx;
height: 100rpx;
background: white;
.btn {
display: flex;
align-items: center;
justify-content: center;
width: 85%;
height: 80rpx;
border-radius: 40rpx;
color: white;
text-align: center;
font-size: 28rpx;
background: #EF8C94;
}
}
}
</style>

+ 70
- 0
service-uniapp-client/pages/evaluate/evaluate.vue View File

@ -0,0 +1,70 @@
<!-- 我的评价 -->
<template>
<view class="evaluate">
<mNavbar title="我的评价" :leftClick="leftClick"></mNavbar>
<van-list v-if="reviewList.length > 0" v-model:loading="loading" :finished="finished" finished-text="没有更多了"
@load="onLoad">
<reviewListVue :list="reviewList"></reviewListVue>
</van-list>
<van-empty v-else image="/static/empty/record.png" image-size="400rpx" description="暂无评论" />
</view>
</template>
<script>
import mNavbar from '@/components/base/m-navbar.vue'
import reviewListVue from '@/components/review/reviewList/reviewList.vue'
export default {
components: {
mNavbar,
reviewListVue
},
data() {
return {
loading : false,
finished : false,
reviewList : [],
}
},
onShow(){
this.getReview()
},
methods: {
//
leftClick() {
uni.switchTab({
url: '/pages/index/center'
})
},
//
onLoad(){
this.queryParams.pageSize += 10;
this.getReview()
},
//
getReview(index) {
this.loading = true
this.$api('getCommentList', this.queryParams, res => {
if (res.code == 200) {
this.reviewList = res.result;
// if(res.result.total > this.queryParams.pageSize){
// this.finished = true;
// }
this.finished = true;
this.loading = false;
}
})
},
}
}
</script>
<style lang="scss" scoped>
.evaluate {}
</style>

+ 78
- 53
service-uniapp-client/pages/index/center.vue View File

@ -25,26 +25,7 @@
</view>
<view class="one-card b-relative">
<view style="position: absolute; top: -65rpx;left: 50%;z-index: 9;
transform: translate(-50%);">
<image style="width: 605rpx;height: 200rpx;margin-left: 8px;" src="/static/ms/tx.png"></image>
<view class="font-4">
<view>账号余额</view>
<view class="font-5">
<span style="font-size: 32rpx;margin-right: 10rpx">¥</span>
{{ userInfo.price }}
</view>
</view>
<view class="button-cz" @click="clickWallet">立即充值</view>
</view>
<view class="cart-top">
</view>
<view class="one-card">
<view class="cart">
<view class="collect" @click="clickCollect">
<view class="tx">
@ -67,30 +48,49 @@
</view>
<view class="two-card">
<view class="flex">
<view style="width: 10rpx;height: 30rpx;background: #4a9ca6;border-radius: 6rpx;" />
<view class="flex" style="margin: 40rpx 0rpx;">
<view style="width: 10rpx;height: 30rpx;background: #EF8C94;border-radius: 6rpx;" />
<view class="head-title">常用功能</view>
</view>
<view class="flex flex-sb icons">
<view @click="clickAddress">
<view class="icon-item" @click="toOrderManagement">
<image class="icon" src="/static/icons/m1.png" />
<view class="title">地址管理</view>
<view class="title">订单管理</view>
</view>
<view @click="clickSettled">
<view class="icon-item" @click="toMessage">
<image class="icon" src="/static/icons/m2.png" />
<view class="title">技师入驻</view>
<view class="title">消息通知</view>
</view>
<view @click="clickService">
<view class="icon-item" @click="clickAddress">
<image class="icon" src="/static/icons/m3.png" />
<view class="title">联系客服</view>
<view class="title">地址管理</view>
</view>
<view @click="clickDistribute">
</view>
<view class="flex flex-sb icons">
<view class="icon-item" @click="toComplain">
<image class="icon" src="/static/icons/m4.png" />
<view class="title">分销代理</view>
<view class="title">投诉建议</view>
</view>
<view class="icon-item" @click="clickService">
<image class="icon" src="/static/icons/m5.png" />
<view class="title">客服中心</view>
</view>
<view class="icon-item" @click="toEvaluate">
<image class="icon" src="/static/icons/m6.png" />
<view class="title">我的评价</view>
</view>
</view>
<view class="flex flex-sb icons">
<view class="icon-item" @click="clickSettled">
<image class="icon" src="/static/icons/m7.png" />
<view class="title">商家入驻</view>
</view>
</view>
@ -254,6 +254,34 @@
uni.reLaunch({
url : '/pages/mine/phoneDetail'
})
},
//
toMessage(){
uni.navigateTo({
url: '/pages/message/message'
})
},
//
toComplain(){
uni.navigateTo({
url: '/pages/complain/complain'
})
},
//
toEvaluate(){
uni.navigateTo({
url: '/pages/evaluate/evaluate'
})
},
//
toOrderManagement(){
uni.navigateTo({
url: '/pages/orderManagement/orderManagement'
})
}
}
}
@ -267,7 +295,7 @@
.banner {
width: 100%;
height: calc(392rpx -160rpx);
background: linear-gradient(to top right, #4899a6, #6fc6ad);
background: #F1B8BD;
}
.head-div {
@ -305,9 +333,8 @@
.one-card {
width: calc(100% - 80px);
height: 116px;
border-radius: 16rpx;
margin: -30rpx auto 0;
margin: -50rpx auto 0;
background-color: #fff;
padding: 20px;
}
@ -316,8 +343,7 @@
width: calc(100% - 60px);
border-radius: 16rpx;
margin: 20rpx auto;
padding: 40rpx 10px;
background: #ffffff;
padding: 0rpx 10px;
border-radius: 16px;
}
@ -332,19 +358,24 @@
margin-top: 15rpx;
}
.icons {
width: calc(100% - 20px);
height: 98rpx;
padding: 30rpx 20rpx;
margin-top: 30rpx;
}
.icon {
margin: 0 32rpx;
width: 48rpx;
height: 48rpx;
margin: 0 auto;
width: 60rpx;
height: 60rpx;
border-radius: 50%;
}
.icon-item{
display: flex;
flex-direction: column;
justify-content: center;
width: calc(33.33% - 20rpx);
background: #fff;
border-radius: 20rpx;
box-sizing: border-box;
padding: 40rpx 0rpx;
margin-bottom: 20rpx;
}
.head-title {
font-size: 30rpx;
@ -399,12 +430,8 @@
}
.cart {
width: calc(100% - 15px);
width: 100%;
background-color: #fff;
position: absolute;
top: 60px;
left: 10px;
z-index: 10;
display: flex;
justify-content: center;
align-items: center;
@ -413,8 +440,6 @@
.cart>view {
width: calc(50% - 10px);
height: 140rpx;
background-color: #2f2e2e;
border-radius: 20rpx;
background-size: 100% 100%;
box-sizing: border-box;
padding: 20rpx;


+ 164
- 5
service-uniapp-client/pages/index/index.vue View File

@ -27,15 +27,59 @@
<view class="home-content">
<!-- 轮播图 -->
<view class="banner b-relative">
<van-swipe class="my-swipe" :autoplay="3000" indicator-color="white">
<van-swipe-item v-for="item in bannerList" :key="item.id">
<image class="banner-image" :src="item.image" mode="widthFix"></image>
<!-- <image class="banner-image" :src="item.image" mode="widthFix"></image> -->
<image class="banner-image" src="/static/ms/banner.png" mode="widthFix"></image>
</van-swipe-item>
</van-swipe>
</view>
<!-- tab栏 -->
<view class="tab">
<van-tabs v-model:active="active" color="#EF8C94" background="transparent">
<van-tab title="男士套餐"></van-tab>
<van-tab title="女士套餐"></van-tab>
<!-- 后面这三个用于解决bug -->
<van-tab disabled></van-tab>
<van-tab disabled></van-tab>
<van-tab disabled></van-tab>
</van-tabs>
</view>
<!-- 套餐 -->
<view class="combo">
<view class="combo-top">
<view class="combo-title">女士套餐</view>
<view class="more">
<text>更多</text>
<image src="../../static/home/more.png" mode="widthFix"></image>
</view>
</view>
<view class="combo-list">
<view v-for="(item,index) in projectList" :key="index" class="combo-item">
<image :src="item.image" mode="aspectFill"></image>
<view class="server-name">{{ item.title }}</view>
<view class="time-tag">
<view class="combo-time">
<image src="@/static/home/time-icon.png"></image>
<view>{{ item.times }}分钟</view>
</view>
<view class="tag">限时特价</view>
</view>
</view>
</view>
</view>
<!-- 近期热销 -->
<view v-if="projectList.length > 0" class="server-list">
<view class="server-list-title">
<view class="title">近期热销</view>
<view class="tag">推荐必抢</view>
</view>
<van-list v-model:loading="loading" :finished="finished" finished-text="没有更多了" ref="list"
@load="onLoad">
<view v-for="item in projectList" class="server-item" @click="toServiceDetail(item.id)">
@ -105,7 +149,8 @@
finished: false,
technicianList: [],
showAeraPro: false,
area: ''
area: '',
active : 0
}
},
onShow() {
@ -254,7 +299,6 @@
.home-top {
height: 350rpx;
background: linear-gradient(38deg, #4899A6, #60BDA2);
padding-top: 60rpx;
.search {
@ -332,7 +376,7 @@
.right-area {
.search-button {
background: #60BDA2;
background: #F6BEC3;
height: 60rpx;
width: 130rpx;
font-size: 26rpx;
@ -374,10 +418,125 @@
}
}
}
.tab{
margin: 20rpx 0rpx;
}
.combo {
background: #fff;
border-radius: 20rpx;
box-sizing: border-box;
padding: 20rpx;
overflow: hidden;
.combo-top {
display: flex;
align-items: center;
justify-content: space-between;
.combo-title {
font-size: 26rpx;
}
.more {
display: flex;
align-items: center;
font-size: 20rpx;
color: #666666;
image {
width: 10rpx;
margin-left: 10rpx;
}
}
}
.combo-list {
display: flex;
flex-wrap: nowrap;
overflow-x: auto;
margin-top: 30rpx;
padding: 0rpx;
&::-webkit-scrollbar {
width: 0;
height: 0;
}
.combo-item {
width: 190rpx;
flex-shrink: 0;
margin-right: 15rpx;
.server-name{
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin: 10rpx 0rpx;
}
.time-tag {
display: flex;
justify-content: space-between;
align-items: center;
.combo-time{
display: flex;
align-items: center;
color: #B8B8B8;
font-size: 20rpx;
}
image {
width: 22rpx;
height: 22rpx;
margin-right: 5rpx;
}
}
.tag{
font-size: 20rpx;
color: #D34430;
}
image {
width: 100%;
height: 190rpx;
border-radius: 10rpx;
}
}
}
}
.server-list {
padding-bottom: 80rpx;
.server-list-title {
display: flex;
margin: 30rpx 0rpx;
.title {
font-size: 30rpx;
font-weight: bold;
}
.tag {
background: #F29E45;
padding: 5rpx 10rpx;
border-radius: 20rpx;
color: white;
font-size: 20rpx;
margin-left: 20rpx;
}
}
.server-item {
display: flex;
flex-wrap: wrap;
@ -489,7 +648,7 @@
width: 170rpx;
border-radius: 40rpx;
color: white;
background: linear-gradient(170deg, #53CEAC, #5AC796);
background: #EF8C94;
}
}
}


+ 86
- 99
service-uniapp-client/pages/index/order.vue View File

@ -3,7 +3,7 @@
<mNavbar title="订单中心" />
<van-tabs v-model:active="active" title-active-color="var(--van-primary-color)" @change="clickTabs"
<van-tabs v-model:active="active" color="#EF8C94" @change="clickTabs"
style="position: sticky;top: 90rpx;z-index: 99;">
<van-tab :title="item.name" v-for="(item, index) in tabs" :key="index"
@click="getOrderList(index)"></van-tab>
@ -28,9 +28,6 @@
<view class="left">
<image mode="aspectFill" :src="item.image"></image>
<view class="tag">
{{item.technicianId_dictText}}
</view>
</view>
<view class="right">
@ -46,32 +43,44 @@
<view class="text-hidden-1">
总计时间{{item.useTime}}分钟
</view>
<view class="price">
总价格<text class="num">{{item.money}}</text>
</view>
</view>
</view>
<view class="bottom">
<view @click.stop="toPayOrder(item)" class="b1" v-if="item.state == 0">
立即付款
<view class="order-price">
<view v-if="true" class="tag">
{{item.technicianId_dictText}}
</view>
<view @click.stop="calcelOrder(item.id)" class="b1" v-if="item.state == 1">
取消订单
<view v-else class="anticipate">
<image src="/static/order/time.png" mode="aspectFill"></image>
<text>预计30min内到达</text>
</view>
<view class="b2" @click.stop="toEvaluate()" v-if="item.state == 0 && item.type == 0">
微信支付
<view class="price">
总价格<text class="num">{{item.money}}</text>
</view>
<view class="b2" @click.stop="toEvaluate()" v-if="item.state == 0 && item.type == 1">
余额支付
</view>
<view class="bottom">
<view @click.stop="calcelOrder(item.id,cancelSuccess)" class="b1" v-if="item.state == 0">
取消订单
</view>
<view @click.stop="toPayOrder(item)" class="b2" v-if="item.state == 0">
立即付款
</view>
<view class="b1" @click.stop="moreOrder(item)" v-if="item.state == 3">
<!-- <view @click.stop="toPayOrder(item)" class="b2" v-if="item.state == 2">
立即确认
</view> -->
<view class="b1" @click.stop="moreOrder(item.projectId,toPlaceorder)" v-if="item.state == 3">
再来一单
</view>
<view class="b2" @click.stop="toEvaluate(item)" v-if="item.state == 3 && item.jsEvaluated == 0">
<view class="b2" @click.stop="toEvaluate(item.id,item.projectId)" v-if="item.state == 3">
立即评价
</view>
<view class="b2" @click.stop="moreOrder(item.projectId,toPlaceorder)" v-if="item.state == 4">
再来一单
</view>
</view>
</view>
@ -84,15 +93,15 @@
<script>
import mNavbar from '@/components/base/m-navbar.vue'
import {
showConfirmDialog
} from 'vant';
import { showConfirmDialog } from 'vant';
import Position from '@/utils/position.js'
import order from '@/mixins/order.js'
export default {
components: {
mNavbar,
},
mixins: [ order ],
data() {
return {
tabs: [{
@ -133,15 +142,13 @@
getOrderList() {
this.$api('getOrderList', this.queryParams, res => {
if (res.code == 200) {
if (res.code == 200) {
this.orderList = res.result.records;
} else {
this.finished = true
}
this.orderList = res.result.records;
if (this.queryParams.pageSize > res.result.total) {
this.finished = true
}
this.loading = false
}else{
this.finished = true
}
//token
@ -165,13 +172,6 @@
this.getOrderList()
},
//
toEvaluate(item) {
uni.navigateTo({
url: '/pages/order/evaluate?id=' + item.id + '&projectId=' + item.projectId
})
},
//
toOrderDetail(id) {
uni.navigateTo({
@ -179,54 +179,21 @@
})
},
//
moreOrder(item) {
this.$api('getProjectDetail', {
id: item.projectId
}, res => {
if (res.code == 200) {
uni.navigateTo({
url: `/pages/technician/selectTechnician?serviceId=${item.projectId}`
})
sessionStorage.setItem('technicianList', JSON.stringify(res.result.tenPageList))
}
//
toPlaceorder(res, projectId) {
uni.navigateTo({
url: `/pages/technician/selectTechnician?serviceId=${projectId}`
})
sessionStorage.setItem('technicianList', JSON.stringify(res.result.tenPageList))
},
//
calcelOrder(orderId) {
showConfirmDialog({
title: '取消订单',
message: '确认取消订单?取消后,请留意退款或后续通知。',
}).then(() => {
this.$api('cancelVipOrder', {
orderId
}, res => {
if (res.code == 200) {
uni.showToast({
title: '取消成功',
icon: 'none'
})
this.getOrderList()
}
})
}).catch(() => {});
},
//
toPayOrder(item) {
this.$api('immediatelyPay', {
addressId: item.addressId,
couponId: item.couponId,
orderId: item.id,
payType: item.payType,
remark: item.remark,
serviceTime: item.serviceTime
}, res => {
if (res.code == 200) {
this.$wxPay(res,this.getOrderList,this.getOrderList)
}
//
cancelSuccess() {
uni.showToast({
title: '取消成功',
icon: 'none'
})
this.getOrderList()
},
//list
@ -262,7 +229,7 @@
.service {}
.status {
color: var(--van-primary-color);
color: #333;
font-size: 26rpx;
font-weight: 600;
}
@ -275,24 +242,13 @@
.left {
width: 150rpx;
height: 150rpx;
overflow: hidden;
border-radius: 10rpx;
image {
width: 150rpx;
height: 150rpx;
border-radius: 10rpx;
}
.tag {
color: var(--van-primary-color);
font-size: 24rpx;
text-align: center;
width: 100%;
background-color: #e7fdf7;
border: 1px solid var(--van-primary-color);
border-radius: 8rpx;
padding: 2rpx 0;
}
}
.right {
@ -302,14 +258,45 @@
padding-left: 20rpx;
line-height: 40rpx;
.price {
font-weight: 900;
text-align: right;
}
}
text {
color: #ff780099;
font-size: 30rpx;
}
.order-price {
display: flex;
justify-content: space-between;
margin: 20rpx 0rpx;
.tag {
width: 150rpx;
color: #EF8C94;
font-size: 24rpx;
text-align: center;
background-color: #FAE9EA;
border: 1px solid #EF8C94;
border-radius: 8rpx;
padding: 2rpx 0;
}
.anticipate {
display: flex;
align-items: center;
font-size: 24rpx;
color: #666666;
image {
width: 25rpx;
height: 25rpx;
margin-right: 5rpx;
}
}
.price {
font-weight: 900;
text-align: right;
text {
color: #ff780099;
font-size: 30rpx;
}
}
}
@ -326,7 +313,7 @@
}
.b2 {
background: linear-gradient(178deg, #4FD3BC, #60C285);
background: #EF8C94;
color: #fff;
}


+ 17
- 4
service-uniapp-client/pages/index/technician.vue View File

@ -30,6 +30,18 @@
<view class="a"><uni-icons type="staff" color="#fff" size="13" />绿色安全</view>
</view>
</view>
<!-- tab栏 -->
<view class="tab">
<van-tabs v-model:active="active" color="#EF8C94" background="transparent">
<van-tab title="男士套餐"></van-tab>
<van-tab title="女士套餐"></van-tab>
<!-- 后面这两个个用于解决页面显示bug -->
<van-tab title="免通行费"></van-tab>
<van-tab disabled></van-tab>
<van-tab disabled></van-tab>
</van-tabs>
</view>
<van-list v-model:loading="loading" :finished="finished" @load="onLoad">
<technician-list :technicianList="technicianList"></technician-list>
@ -59,7 +71,8 @@
loading: false,
finished: false,
showAeraPro: false,
area: ''
area: '',
active : 0
}
},
onShow() {
@ -153,7 +166,7 @@
}
.technician-top {
background: linear-gradient(38deg, #4899A6, #60BDA2);
background: #F6BEC3;
}
.technician-bottm {
@ -243,7 +256,7 @@
.right-area {
.search-button {
background: #60BDA2;
background: #F6BEC3;
height: 60rpx;
width: 130rpx;
font-size: 26rpx;
@ -260,7 +273,7 @@
}
.technician-search-button {
background-color: #60BDA2;
background-color: #F6BEC3;
color: #fff;
font-size: 26rpx;
padding: 2rpx 24rpx;


+ 7
- 4
service-uniapp-client/pages/login/login.vue View File

@ -4,7 +4,7 @@
<view class="a1">手机号快捷登录</view>
<view class="a2">美好服务即刻享受</view>
<view class="a3" @click="clickStaff">
<image src="@/static/login/logo.png" mode="aspectFit"></image>
<!-- <image src="@/static/login/logo.png" mode="aspectFit"></image> -->
</view>
<view class="a4">上门服务服务平台</view>
@ -43,6 +43,7 @@
onShow() {
this.getConfig()
if (this.GetQueryString('code')) { //code
uni.showLoading({});
this.agreement = true; //
//
this.toWxLogin(this.GetQueryString('code'))
@ -119,6 +120,7 @@
} else {
location.href = import.meta.env.VITE_REDIRECT_URI + '/#/pages/index/index'
}
uni.hideLoading();
} else {
location.href = import.meta.env.VITE_REDIRECT_URI + '/#/pages/login/login'
}
@ -170,6 +172,7 @@
border-radius: 16px;
margin: 0 auto;
overflow: hidden;
background: #F6BEC3;
}
.a3 image {
@ -192,7 +195,7 @@
.a5 {
width: 568rpx;
height: 90rpx;
background: #51d0b4;
background: #F6BEC3;
border-radius: 16rpx;
margin: 0 auto;
@ -219,7 +222,7 @@
}
.a6 .agreement {
color: #6FDFBE;
color: #F6BEC3;
}
.a7 {
@ -233,7 +236,7 @@
}
.a8 {
background-color: #6FDFBE;
background-color: #F6BEC3;
border: none;
color: #fff;
}

+ 10
- 34
service-uniapp-client/pages/login/mobile.vue View File

@ -21,7 +21,7 @@
<span>输入验证码</span>
</view>
<view class="b2">
验证码已发送至156**3437
验证码已发送至{{ phone }}
</view>
<view>
<view class="flex flex-sb" style="padding: 40rpx; width: calc(100% - 80rpx)">
@ -47,11 +47,12 @@
return {
step: 1,
openid: '',
code: ''
code: '',
phone : '156**3437'
}
},
onShow() {
console.log();
},
methods: {
clickCancel() {
@ -60,33 +61,7 @@
})
},
clickSendCode() {
let timestamp = Date.now()
let userName = 'tairoudj'
uni.request({
url: 'http://agent.izjun.com:8001/sms/api/sendMessageOne',
data: {
userName,
messageList : [
{
"phone" : "13055015802",
"content" : "尊敬的龙先生, 这是一条测试短信"
}
],
timestamp,
sign : window.md5(userName + timestamp + window.md5('evXRctaIoX22'))
},
header: {
'Accept': 'application/json',
'Content-Type': 'application/json;charset=utf-8'
},
method: 'POST',
success: (res) => {
console.log(res.data);
}
})
// this.step = 2
this.step = 2
},
clickNum(i) {
this.code = this.code.substring(0, i - 1)
@ -150,7 +125,7 @@
.input-m.active {
width: 90rpx;
height: 130rpx;
border: 3rpx solid #51d0b4;
border: 3rpx solid #F6BEC3;
}
.b3 {
@ -162,7 +137,7 @@
}
.b3 span {
color: #51D0B4;
color: #F6BEC3;
}
.b4 {
@ -170,7 +145,7 @@
height: 90rpx;
line-height: 90rpx;
border-radius: 46rpx;
background: #51d0b4;
background: #F6BEC3;
font-size: 28rpx;
font-family: PingFang SC, PingFang SC-Regular;
@ -214,6 +189,7 @@
.a3 {
width: 100%;
height: 120rpx;
background: #fff;
}
.a4 {
@ -248,7 +224,7 @@
width: 556rpx;
height: 90rpx;
line-height: 90rpx;
background: #51d0b4;
background: #F6BEC3;
border-radius: 46px;
margin: 60rpx auto;


+ 221
- 0
service-uniapp-client/pages/message/message.vue View File

@ -0,0 +1,221 @@
<!-- 消息通知 -->
<template>
<view class="message">
<mNavbar title="消息通知" :leftClick="leftClick"></mNavbar>
<!-- 新人礼包 -->
<view class="message-top content">
<image src="/static/message/message-icon.png" mode="widthFix"></image>
<view class="pack-descript">
<view class="new-person">
<view class="title">新人注册礼包</view>
<view class="tag">活动</view>
</view>
<view class="desc">新人领券至高可领40元</view>
</view>
<view class="time-icon">
<view class="time">刚刚</view>
<view class="icon">
<image src="/static/message/arrow.png" mode="aspectFill"></image>
</view>
</view>
</view>
<!-- 聊天列表 -->
<view class="recover-list content">
<view v-for="item in 10" class="recover-item">
<view class="img-box">
<image src="/favicon.ico" mode="aspectFill"></image>
<view class="available-ervice">
<image src="/static/message/lightning-icon.png" mode="aspectFill"></image>
<text>可服务</text>
</view>
</view>
<view class="recover-content">
<view class="name">刘莓莓</view>
<view class="msg">好的亲亲</view>
</view>
<view class="time">刚刚</view>
</view>
</view>
</view>
</template>
<script>
import mNavbar from '@/components/base/m-navbar.vue'
export default {
components: {
mNavbar
},
data() {
return {
}
},
methods: {
//
leftClick() {
uni.switchTab({
url: '/pages/index/center'
})
},
}
}
</script>
<style lang="scss" scoped>
.message {
background: #f5f5f5;
min-height: 100vh;
.message-top {
display: flex;
justify-content: space-between;
align-items: center;
image {
width: 130rpx;
height: 130rpx;
}
.pack-descript {
width: calc(100% - 210rpx);
height: 130rpx;
display: flex;
flex-direction: column;
justify-content: center;
.new-person {
display: flex;
.title{
color: black;
font-size: 28rpx;
font-weight: bold;
margin-right: 10rpx;
}
.tag{
display: flex;
align-items: center;
background: #FBAB32;
color: white;
font-size: 20rpx;
padding: 0rpx 10rpx;
border-radius: 10rpx;
}
}
.desc {
font-size: 24rpx;
color: #999999;
margin-top: 10rpx;
}
}
.time-icon {
text-align: center;
width: 60rpx;
.time {
font-size: 24rpx;
color: #999999;
}
.icon {
image {
width: 25rpx;
height: 25rpx;
margin-top: 20rpx;
}
}
}
}
.recover-list{
.recover-item{
display: flex;
justify-content: space-between;
align-items: center;
padding-bottom: 20rpx;
border-bottom: 2px dashed #D3D1D1;
margin-top: 20rpx;
.img-box{
position: relative;
width: 120rpx;
height: 120rpx;
box-sizing: border-box;
border: 2px solid #F6BEC3;
border-radius: 10rpx;
image{
width: 100%;
height: 100%;
border-radius: 10rpx;
}
.available-ervice{
display: flex;
align-items: center;
justify-content: center;
width: 120rpx;
position: absolute;
bottom: 0;
left: 0;
color: white;
font-size: 20rpx;
background: #F6BEC3;
image{
width: 15rpx;
height: 15rpx;
}
}
}
.recover-content{
display: flex;
flex-direction: column;
justify-content: center;
width: calc(100% - 170rpx);
box-sizing: border-box;
padding-left: 15rpx;
.name{
color: #333333;
font-size: 30rpx;
font-weight: bold;
}
.msg{
color: #999999;
font-size: 20rpx;
margin-top: 5rpx;
}
}
.time{
width: 50rpx;
color: #999999;
font-size: 24rpx;
}
}
}
.content {
width: 96%;
margin: 0rpx auto;
}
}
</style>

+ 2
- 2
service-uniapp-client/pages/mine/address.vue View File

@ -28,7 +28,7 @@
<view class="controls">
<view class="default-checkbox">
<van-radio @click="addDefault(item)" :name="item.id" label-disabled icon-size="30rpx">
<van-radio @click="addDefault(item)" :name="item.id" checked-color="#FBAB32" label-disabled icon-size="30rpx">
默认地址
</van-radio>
</view>
@ -459,7 +459,7 @@
color: white;
text-align: center;
font-size: 28rpx;
background: linear-gradient(180deg, #6FDFBE, #5AC796);
background: #EF8C94;
}
}
}


+ 31
- 16
service-uniapp-client/pages/mine/collect.vue View File

@ -2,8 +2,21 @@
<view class="collect">
<mNavbar title="我的收藏" :leftClick="leftClick"></mNavbar>
<!-- tab栏 -->
<view class="tab">
<van-tabs v-model:active="active" color="#EF8C94" background="transparent">
<van-tab title="男士套餐"></van-tab>
<van-tab title="女士套餐"></van-tab>
<!-- 后面这两个个用于解决页面显示bug -->
<van-tab title="免通行费"></van-tab>
<van-tab disabled></van-tab>
<van-tab disabled></van-tab>
</van-tabs>
</view>
<view v-if="collectList.length > 0" class="collect-list">
<view @click="gototechnicianDetail(item.technician)" v-for="item in collectList" :key="item.id" class="collect-item">
<view @click="gototechnicianDetail(item.technician)" v-for="item in collectList" :key="item.id"
class="collect-item">
<view class="collect-main">
<view class="technician-head b-relative">
@ -26,7 +39,7 @@
<van-icon name="star" color="#E8615E" size="25rpx" />
<text class="score">{{ item.technician.level }}</text>
</view>
<view @click="calcelCollect(item.technician.id)" class="alert-collect">
<view @click.stop="calcelCollect(item.technician.id)" class="alert-collect">
<image src="@/static/collect/alert-collect-icon.png"></image>
<text class="alert-add-collect">取消收藏</text>
</view>
@ -65,8 +78,8 @@
</view>
</view>
<van-empty v-else image="/static/empty/collect.png" image-size="400rpx" description="暂无收藏技师"/>
<van-empty v-else image="/static/empty/collect.png" image-size="400rpx" description="暂无收藏技师" />
</view>
</template>
@ -88,6 +101,7 @@
pageSize: 10
},
collectList: [],
active: 0
}
},
onShow() {
@ -172,9 +186,11 @@
width: 150rpx;
height: 150rpx;
border-radius: 10rpx;
border: 1px solid #5EBAA2;
border: 1px solid #F6BEC3;
.img-box {
position: relative;
.bg {
width: 150rpx;
height: 150rpx;
@ -187,7 +203,7 @@
}
image {
width: 100%;
height: 100%;
}
}
@ -204,14 +220,14 @@
justify-content: center;
align-items: center;
position: absolute;
left: 50%;
bottom: -13rpx;
top: 0rpx;
right: 0rpx;
width: 70%;
height: 40rpx;
background: #60C285;
border-radius: 10rpx;
background: #F6BEC3;
border-top-left-radius: 20rpx;
border-bottom-left-radius: 20rpx;
color: white;
transform: translate(-50%);
.desc {
font-size: 18rpx;
@ -265,7 +281,6 @@
.alert-add-collect {
margin-left: 5rpx;
color: #FC9A37;
}
}
@ -276,11 +291,11 @@
.appointed-time {
width: 48%;
background: #E7FDF7;
background: #FFE3E6;
height: 40rpx;
border-radius: 22.5rpx;
font-size: 20rpx;
color: #5DB9A3;
color: #EF8C94;
.capsule {
display: flex;
@ -295,7 +310,7 @@
height: 100%;
color: white;
border-radius: 20rpx;
background: #52CFB0;
background: #EF8C94;
}
.today {
@ -370,7 +385,7 @@
width: 180rpx;
border-radius: 40rpx;
color: white;
background: linear-gradient(170deg, #53CEAC, #5AC796);
background: #EF8C94;
}
.notAvailable {


+ 1
- 11
service-uniapp-client/pages/mine/coupon.vue View File

@ -2,12 +2,10 @@
<view>
<mNavbar title="我的优惠劵"
:leftClick="toLeft"
style="background: linear-gradient(#4899a6, rgb(78 160 167));"
/>
<view style="position: sticky;top: 45px;z-index: 99;">
<van-tabs v-model:active="active"
title-active-color="var(--van-primary-color)"
@change="clickTabs"
>
<van-tab :title="item.name"
@ -100,13 +98,5 @@
</script>
<style scoped lang="scss">
.btn{
padding: 0px 30rpx;
background-color: #4FD3BC;
color: #fff;
font-size: 22rpx;
margin-left: 20rpx;
font-size: 20rpx;
border-radius: 30rpx;
}
</style>

+ 28
- 59
service-uniapp-client/pages/mine/distribution.vue View File

@ -8,25 +8,25 @@
<view class="content">
<view class="content-box">
<view class="content-box1">
<view>可用余额</view>
<view>总佣金</view>
<view>累计提现</view>
<view>累积收益</view>
<!-- <view>累积收益</view> -->
</view>
<view class="content-box2">
<view>{{ agentFlow.use_money }}</view>
<view>{{ agentFlow.lei_give }}</view>
<view>{{ agentFlow.lei_set }}</view>
<!-- <view>{{ agentFlow.lei_set }}</view> -->
</view>
<view class="content-box3">
<view @click="toNodes">
<text>粉丝</text>
<text>提现</text>
</view>
<view @click="toWithdraw">
<text>提现</text>
<text>提现记录</text>
</view>
<view @click="showQrcode">
<!-- <view @click="showQrcode">
<text>二维码</text>
</view>
</view> -->
</view>
</view>
</view>
@ -39,7 +39,13 @@
<view class="tab-box">
<view class="tab-box1" v-if="agentFlow.pageList && agentFlow.pageList.total">
<van-cell center border :title="item.title" v-for="(item, index) in agentFlow.pageList.records"
:value="x[item.type] + item.money" :label="item.createTime" />
:label="item.createTime">
<template #value>
<view :class="{ addMonry : x[item.type] == '+'}">
{{ x[item.type] + item.money }}
</view>
</template>
</van-cell>
</view>
<van-empty v-else description="暂无数据" image="/static/ms/empty.png" />
</view>
@ -70,9 +76,8 @@
type: 0,
active : 0,
tabs : [
{ title : '费用明细' },
{ title : '提现记录' },
{ title : '收益记录' }
{ title : '金额明细' },
{ title : '提现记录' }
]
}
},
@ -110,46 +115,6 @@
this.$refs.placard.draw()
})
},
wxshare() {
window.jWeixin.config({
debug: false, // ,apialertpclogpc
appId: 'wxe934cebcbc89d869', //
// timestamp: res.data.timestamp, //
// nonceStr: res.data.nonceStr, //
// signature: res.data.signature, // 1
// surl: res.data.surl, //debugtrueURL
jsApiList: ["updateAppMessageShareData", "updateTimelineShareData"]
});
window.jWeixin.ready(() => {
//QQ1.4.0
window.jWeixin.updateAppMessageShareData({
title: '邀请新用户', //
desc: "邀请新用户,成为你的粉丝", //
link: "http://tairoudj.natapp1.cc", //
imgUrl: res.result, //
success: res => {
//
this.wxsharetip = true
},
cancel: function() {
//
}
});
//QQ1.4.0
window.jWeixin.updateTimelineShareData({
title: '标题', //
link: "http://tairoudj.natapp1.cc", //
imgUrl: res.result, //
success: res => {
//
this.wxsharetip = true
},
cancel: function() {
//
}
});
})
},
tagChange(index) { //
this.type = index;
this.getAgentFlow()
@ -176,7 +141,7 @@
.box1 {
height: 100px;
background: linear-gradient(to right, #4899a6, #6fc6ad);
background: #F6BEC3;
}
.content {
@ -190,7 +155,7 @@
left: 3%;
z-index: 9;
border-radius: 10px;
box-shadow: 0px 1px 7px 1px #4899a6;
box-shadow: 0px 1px 7px 1px rgba(0,0,0,.1);
.content-box {
display: flex;
@ -203,7 +168,7 @@
display: flex;
width: 100%;
height: 60px;
justify-content: center;
justify-content: space-around;
align-items: center;
view {
@ -217,14 +182,14 @@
display: flex;
width: 100%;
height: 60px;
justify-content: center;
justify-content: space-around;
align-items: center;
view {
width: 200rpx;
display: flex;
justify-content: space-around;
color: #4C9FA6;
color: #F6BEC3;
font-size: 18px;
}
@ -234,7 +199,7 @@
display: flex;
width: 100%;
height: 60px;
justify-content: center;
justify-content: space-around;
align-items: center;
view {
@ -248,8 +213,8 @@
display: inline-block;
padding: 5px 20px;
text-align: center;
border: 1px solid #96C8CB;
color: #76B7BA;
border: 1px solid #F6BEC3;
color: #F6BEC3;
border-radius: 5px;
}
@ -269,6 +234,10 @@
.tab-box1 {
margin-top: 10px;
}
.addMonry{
color: #FC5341;
}
}
}

+ 2
- 2
service-uniapp-client/pages/mine/phoneDetail.vue View File

@ -153,7 +153,7 @@
height: 60rpx;
border-radius: 30rpx;
padding: 0rpx 30rpx;
background: #5AC796;
background: #EF8C94;
color: white;
}
@ -199,7 +199,7 @@
text-align: center;
line-height: 80rpx;
font-size: 28rpx;
background: linear-gradient(180deg, #6FDFBE, #5AC796);
background: #EF8C94;
}
}
}


+ 2
- 2
service-uniapp-client/pages/mine/setting.vue View File

@ -164,7 +164,7 @@
.item-line .before {
width: 8rpx;
height: 30rpx;
background: #4fd3bc;
background: #EF8C94;
border-radius: 4rpx;
margin: 15rpx 12rpx 15rpx 0;
}
@ -194,7 +194,7 @@
width: 596rpx;
height: 90rpx;
line-height: 90rpx;
background: linear-gradient(180deg, #6fdfbe, #5ac796);
background: #EF8C94;
border-radius: 46rpx;
margin: 40rpx auto;


+ 90
- 102
service-uniapp-client/pages/mine/settled.vue View File

@ -14,43 +14,29 @@
<view>
<view class="item-card">
<view class="item-line flex">
<view class="serrled-title">
<view class="before"></view>
<view class="label">技师姓名</view>
<input placeholder="请输入姓名" v-model="technician.name" />
店铺信息
</view>
<view class="item-line flex">
<view class="before"></view>
<view class="label">技师性别</view>
<van-radio-group v-model="technician.sex" direction="horizontal">
<van-radio name="男"></van-radio>
<van-radio name="女"></van-radio>
</van-radio-group>
<view class="label">店铺名称</view>
<input placeholder="请输入店铺名称" v-model="technician.name" />
</view>
<view class="item-line flex">
<view class="label">你的姓名</view>
<input placeholder="请输入姓名" v-model.number="technician.username" />
</view>
<view class="item-line flex">
<view class="before"></view>
<view class="label">联系方式</view>
<input placeholder="请输入联系方式" v-model="technician.phone" />
</view>
<view class="item-line flex">
<view class="before"></view>
<view class="label">技师年龄</view>
<input placeholder="请输入技师年龄" type="number" v-model.number="technician.age" />
<view class="label">所在地区</view>
<input placeholder="请输入所在地区" v-model="technician.city" />
</view>
<view class="item-line flex">
<view class="before"></view>
<view class="label">意向城市</view>
<input placeholder="请输入意向工作城市" v-model="technician.city" />
</view>
<view class="item-line flex">
<view class="before"></view>
<view class="label" style="width: 100%">请上传本人近期照片</view>
</view>
<view v-if="!technician.image" @click="fileUploads" class="upload">
<uni-icons type="plusempty" size="80rpx" color="#37bea7"/>
</view>
<view v-else @click="fileUploads" class="upload b-relative">
<image class="upload-img" :src="technician.image" mode="aspectFill"></image>
<view class="label">详细地址</view>
<textarea v-model="technician.detailAddress" placeholder="请输入详细地址" class="textarea"></textarea>
</view>
</view>
</view>
@ -64,100 +50,89 @@
<script>
import OSS from "ali-oss"
import { v4 as uuidv4 } from 'uuid';
import { showDialog } from 'vant';
import {
v4 as uuidv4
} from 'uuid';
import {
showDialog
} from 'vant';
export default {
data() {
return {
technician: {
id : '',
name : '',
sex : '男',
phone : '',
age : '',
city : '',
image : '',
phone : ''
},
imgs : []
id: '',
name: '',
phone: '',
username: '',
city: '',
phone: '',
detailAddress : ''
}
}
},
onShow(){
onShow() {
this.getTenFans()
},
methods: {
getUserInfo() { //
getUserInfo() { //
this.$api('getUserInfo', {}, res => {
if (res.code == 200) {
this.userInfo = res.result;
}
})
},
addOrUpdateMsgTer() { //
addOrUpdateMsgTer() { //
let isOk = this.parameterVerification()
if(!isOk.auth){
if (!isOk.auth) {
return uni.showToast({
title : isOk.title,
icon : 'none'
title: isOk.title,
icon: 'none'
})
}
this.$api('addOrUpdateMsgTer', this.technician, res => {
if (res.code == 200) {
showDialog({
title: this.technician.id ? '修改入驻' : '技师入驻',
message: this.technician.id ? '技师入驻修改成功' : '技师入驻提交成功',
title: this.technician.id ? '修改入驻' : '技师入驻',
message: this.technician.id ? '技师入驻修改成功' : '技师入驻提交成功',
}).then(() => {
uni.switchTab({
url: '/pages/index/index'
})
uni.switchTab({
url: '/pages/index/index'
})
});
}
})
},
parameterVerification(){ //
let { name , sex , phone , age , city , image } = this.technician
if(name.trim() == ''){
return { title : '请填写技师姓名' , auth : false }
}else if(sex.trim() == ''){
return { title : '请选择性别' , auth : false }
}else if(phone.trim() == ''){
return { title : '请填写手机号' , auth : false }
}else if(!age){
return { title : '请填写年龄' , auth : false }
}else if(city.trim() == ''){
return { title : '请填写意向城市' , auth : false }
}else if(image.trim() == ''){
return { title : '请上传近期照片' , auth : false }
}else if(phone.trim() != ''){
if(!this.$utils.verificationPhone(phone)){
return { title : '手机号格式不合法' , auth : false }
parameterVerification() { //
let { name, sex, phone, age, city, image } = this.technician
if (name.trim() == '') {
return { title: '请填写技师姓名', auth: false }
} else if (sex.trim() == '') {
return { title: '请选择性别', auth: false }
} else if (phone.trim() == '') {
return { title: '请填写手机号', auth: false }
} else if (!age) {
return { title: '请填写年龄', auth: false }
} else if (city.trim() == '') {
return { title: '请填写意向城市', auth: false }
} else if (image.trim() == '') {
return { title: '请上传近期照片', auth: false }
} else if (phone.trim() != '') {
if (!this.$utils.verificationPhone(phone)) {
return { title: '手机号格式不合法', auth: false }
}
}
return { title : '验证通过' , auth : true }
},
fileUploads() { //
uni.chooseImage({
count: 1, // 91
sizeType: ['original', 'compressed'], //
sourceType: ['album', 'camera'], //
success: (res) => {
let resultPromise = [];
//
this.uploadFileToOSS(res.tempFiles[0]).then(imgPath => {
this.technician.image = imgPath;
})
}
});
return {
title: '验证通过',
auth: true
}
},
getTenFans(){ //
getTenFans() { //
this.$api('getTenFans', {}, res => {
if (res.code == 200) {
if(res.result.length > 0){
let { id , name , sex , age , city , image , phone } = res.result[0];
this.technician = { id ,name , sex , age , city , image , phone }
if (res.result.length > 0) {
let { id, name, sex, age, city, image, phone } = res.result[0];
this.technician = { id , name, sex, age, city, image, phone }
}
}
})
@ -174,7 +149,6 @@
.banner {
width: 100vw;
height: calc(392rpx - 160rpx);
background: linear-gradient(38deg, #4899a6 44%, #60bda2 100%);
}
@ -226,7 +200,7 @@
font-family: PingFang SC, PingFang SC-Bold;
font-weight: 700;
text-align: center;
color: #26c591;
color: #EF7683;
}
@ -240,6 +214,23 @@
padding: 1rpx 20rpx;
}
.serrled-title {
display: flex;
align-items: center;
margin: 20rpx 0rpx;
font-size: 30rpx;
font-weight: bold;
}
.serrled-title .before {
content: '';
width: 8rpx;
height: 32rpx;
background: #FAA8B0;
border-radius: 4rpx;
margin-right: 10rpx;
}
.item-line {
height: 60rpx;
font-size: 28rpx;
@ -250,16 +241,6 @@
margin-top: 40rpx;
}
.item-line .before {
content: "";
width: 8rpx;
height: 30rpx;
background: #4fd3bc;
border-radius: 4rpx;
margin-right: 10rpx;
margin-top: 15rpx;
}
.item-line .label {
display: flex;
align-items: center;
@ -282,6 +263,13 @@
padding: 0 20rpx;
}
.item-line textarea{
background: #F5F5F5;
border-radius: 10rpx;
padding: 20rpx;
height: 150rpx;
}
.upload {
display: flex;
@ -295,8 +283,8 @@
margin: 10rpx 12rpx;
}
.upload-img{
.upload-img {
width: calc(100% - 4rpx);
height: calc(100% - 4rpx);
border: 2rpx dashed #ccc;
@ -309,7 +297,7 @@
justify-content: center;
width: 596rpx;
height: 90rpx;
background: linear-gradient(180deg, #6fdfbe, #5ac796);
background: #F7AEB6;
border-radius: 46rpx;
margin: 20rpx auto;


+ 25
- 38
service-uniapp-client/pages/mine/wallet.vue View File

@ -157,17 +157,17 @@
var phoneRegex = /^1(3|4[0-9]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9\d)\d{8}$/;
return phoneRegex.test(phone);
},
chooseWXPay(res){
chooseWXPay(res) {
window.jWeixin.config({
debug: false,
appId:res.result.appId,//
jsApiList: ['chooseWXPay']
debug: false,
appId: res.result.appId, //
jsApiList: ['chooseWXPay']
});
window.jWeixin.ready(function() {
window.jWeixin.chooseWXPay({
appId: res.result.appId,
timestamp: res.result
.timeStamp, // jssdk 使 timestamp 使 timeStamp S
.timeStamp, // jssdk 使 timestamp 使 timeStamp S
nonceStr: res.result.nonceStr, // 32
package: res.result.packageValue, // prepay_idprepay_id=\*\*\*
signType: res.result.signType, // V3 RSA ,V2V2
@ -176,7 +176,8 @@
this.getUserInfo()
//
uni.navigateTo({
url: '/pages/payment/payment-success?price=' + this.projectDetail.price
url: '/pages/payment/payment-success?price=' + this
.projectDetail.price
})
}
});
@ -201,16 +202,10 @@
background-color: #fff;
}
.banner {
width: 100vw;
height: 256rpx;
background: #cfece7;
}
.center {
width: 710rpx;
height: 316rpx;
margin: -204rpx auto 0;
margin: 40rpx auto;
}
.center image {
@ -227,26 +222,6 @@
text-shadow: 0 4rpx 6rpx 0 rgba(40, 170, 133, 0.81);
}
.font-menu {
font-size: 24rpx;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: 500;
text-align: center;
color: #ffffff;
line-height: 24rpx;
width: 710rpx;
position: absolute;
left: 0;
bottom: 25rpx;
}
.font-menu view {
width: calc(100% / 4);
border-right: 1rpx solid #fff;
}
.item-line input {
width: 456rpx;
height: 60rpx;
@ -264,7 +239,7 @@
.from-body {
padding: 40rpx 20rpx;
padding: 0rpx 20rpx 40rpx 20rpx;
font-size: 28rpx;
text-align: left;
color: #333333;
@ -333,6 +308,15 @@
margin: 20rpx 0rpx;
}
.money .van-cell-group--inset {
margin: 0;
}
.money .van-field {
padding: auto 0rpx;
margin-bottom: 30rpx !important;
}
.recharge {
position: fixed;
display: flex;
@ -346,15 +330,18 @@
}
.recharge .btn {
display: flex;
align-items: center;
justify-content: center;
width: 85%;
height: 80rpx;
border-radius: 40rpx;
color: white;
text-align: center;
line-height: 80rpx;
font-size: 28rpx;
background: linear-gradient(180deg, #6FDFBE, #5AC796);
background: #EF8C94;
}
.withdrawal-statement {
color: #666666;
}
@media all and (min-width: 961px) {


+ 7
- 10
service-uniapp-client/pages/mine/withdraw.vue View File

@ -1,7 +1,6 @@
<template>
<view class="withdraw">
<mNavbar title="钱包提现" :leftClick="leftClick" />
<view class="banner" />
<view class="b-relative center font-m">
<image src="/static/ms/w.png" />
@ -141,16 +140,10 @@
background-color: #fff;
}
.banner {
width: 100vw;
height: 256rpx;
background: #cfece7;
}
.center {
width: 710rpx;
height: 316rpx;
margin: -204rpx auto 0;
margin: 40rpx auto;
}
.center image {
@ -184,7 +177,7 @@
.from-body {
padding: 40rpx 20rpx;
padding: 0rpx 20rpx 40rpx 20rpx;
font-size: 28rpx;
text-align: left;
color: #333333;
@ -282,7 +275,11 @@
text-align: center;
line-height: 80rpx;
font-size: 28rpx;
background: linear-gradient(180deg, #6FDFBE, #5AC796);
background: #EF8C94;
}
.withdrawal-statement{
color: #666666;
}
@media all and (min-width: 961px) {


+ 2
- 4
service-uniapp-client/pages/order/evaluate.vue View File

@ -101,9 +101,7 @@
<view class="btn">
<van-button
style="width: 80%;margin-left: 10%;background:
linear-gradient(178deg, #4FD3BC, #60C285);;"
type="primary" round block @click="submit">提交</van-button>
style="width: 80%;margin-left: 10%;background:#EF8C94;color: white;" round block @click="submit">提交</van-button>
</view>
</view>
</template>
@ -217,7 +215,7 @@ body{
border-radius: 24rpx;
}
.act{
background-color: var(--van-primary-color);
background-color: #EF8C94;
color: #fff;
}
}


+ 66
- 20
service-uniapp-client/pages/order/orderDetail.vue View File

@ -1,11 +1,11 @@
<template>
<view class="order">
<mNavbar title="订单详情" :leftClick="toLeft" style="background: linear-gradient(#4899a6, rgb(78 160 167));" />
<mNavbar title="订单详情" :leftClick="toLeft" />
<view class="box">
<view class="title">
<view class="icon">
<uni-icons type="wallet-filled" color="#4899a6" size="15"></uni-icons>
<uni-icons type="wallet-filled" color="#F1B8BD" size="15"></uni-icons>
</view>
<view class="text">
{{ getStatus(msgOrder.state) }}
@ -16,7 +16,7 @@
<!-- 请确认订单 -->
</view>
<van-steps style="background: transparent;padding-bottom: 30px;" active-color="#fff" inactive-color="#ddd"
<van-steps style="background: transparent;padding-bottom: 30px;" active-color="#F5F5F5" inactive-color="#ddd"
:active="stepsActive">
<van-step v-for="(item, index) in steps">
@ -39,8 +39,20 @@
</van-steps>
<view class="btns">
<view class="btn btc" @click="calcelOrder(msgOrder.id,cancelSuccess)" v-if="msgOrder.state == 0">
取消订单
</view>
<view class="btn" @click="toPayOrder(msgOrder)" v-if="msgOrder.state == 0">
去付款
立即付款
</view>
<view class="btn btc" @click="moreOrder(msgOrder.projectId,toPlaceorder)" v-if="msgOrder.state == 3">
再来一单
</view>
<view class="btn" @click="toEvaluate(msgOrder.id,msgOrder.projectId)" v-if="msgOrder.state == 3">
立即评价
</view>
<view class="btn" @click="moreOrder(msgOrder.projectId,toPlaceorder)" v-if="msgOrder.state == 4">
再来一单
</view>
</view>
@ -49,7 +61,7 @@
<view class="info">
<view class="flex">
<view style="width: 8rpx;height: 30rpx;
background: #6fc6ad;border-radius: 6rpx;" />
background: #EF8C94;border-radius: 6rpx;" />
<view class="head-title">服务项目</view>
</view>
@ -68,7 +80,8 @@
</view>
<view class="current-price">
<text class="unit"></text>{{msgOrder.money}}
<text class="unit">{{msgOrder.money}}</text>
<text class="essential-oil">需要使用精油</text>
</view>
<view class="time-coupon">
@ -117,7 +130,7 @@
</view>
</view>
<view @click="gototechnicianDetail(msgTechnician)" class="btn-x">
服务技师
联系技师
</view>
</view>
@ -222,10 +235,13 @@
<script>
import mNavbar from '@/components/base/m-navbar.vue'
import order from '@/mixins/order.js'
export default {
components: {
mNavbar,
},
mixins: [order],
data() {
return {
rate: 5,
@ -356,7 +372,24 @@
getStatus(state){
let stateArr = ['待付款','已付款','已确认','已完成','已取消']
return stateArr[state]
}
},
//
cancelSuccess() {
uni.showToast({
title: '取消成功',
icon: 'none'
})
this.getOrderDetail()
},
//
toPlaceorder(res, projectId) {
uni.navigateTo({
url: `/pages/technician/selectTechnician?serviceId=${projectId}`
})
sessionStorage.setItem('technicianList', JSON.stringify(res.result.tenPageList))
},
}
}
@ -364,7 +397,7 @@
<style scoped lang="scss">
.order {
background: linear-gradient(#4899a6, #6fc6ad, #6fc6ad);
background: #F1B8BD;
padding-bottom: 10px;
}
@ -372,8 +405,8 @@
padding: 20px;
.active-icon {
width: 12px;
height: 12px;
width: 15px;
height: 15px;
background-color: #fff;
border-radius: 6px;
transform: translate(-25%, 0);
@ -397,17 +430,17 @@
.inactive-icon.tip {
width: 6px;
height: 6px;
background-color: #fff;
background-color: #F8DBDE;
border-radius: 3px;
}
.stepText.tip {
background-color: #b5d7d3;
background-color: #F8DBDE;
padding: 3px 5px;
position: relative;
top: 50px;
border-radius: 5px;
color: #4899a6;
color: #EF8C94;
display: flex;
font-size: 10px;
}
@ -418,7 +451,7 @@
left: 50%;
transform: translate(-50%, 0);
border-top: 7px solid transparent;
border-bottom: 7px solid #b5d7d3;
border-bottom: 7px solid #F8DBDE;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
}
@ -467,9 +500,14 @@
.btn {
color: #fff;
padding: 10rpx 50rpx;
background-color: #ffb300;
background-color: #FF6470;
border-radius: 30rpx;
font-size: 25rpx;
margin-left: 10rpx;
}
.btc{
background: #ccc;
}
}
}
@ -618,8 +656,16 @@
}
.current-price {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 30rpx;
color: #F29E45;
.essential-oil{
font-size: 24rpx;
color: #EF8C94;
}
}
.line {
@ -678,8 +724,8 @@
}
.btn-x {
color: #6fc6ad;
border: 1px solid #6fc6ad;
color: #fff;
background: #EF8C94;
padding: 10rpx 20rpx;
border-radius: 30rpx;
}
@ -689,8 +735,8 @@
justify-content: center;
.btn {
color: #6fc6ad;
border: 1px solid #6fc6ad;
color: #B4AEAE;
border: 1px solid #B4AEAE;
padding: 10rpx 20rpx;
border-radius: 30rpx;
}


+ 60
- 22
service-uniapp-client/pages/order/payOrder.vue View File

@ -41,23 +41,23 @@
<van-cell title="请选择地址" is-Link @click="selectAddressPopupShow = true"
:value="(address.name + address.phone + address.addressDetail) || ''">
<template #icon>
<image class="icon" src="../../static/payOrder/7.png" mode="aspectFill"></image>
<image class="icon" src="../../static/payOrder/1.png" mode="aspectFill"></image>
</template>
</van-cell>
<van-cell title="服务技师">
<text style="color: #4899a6;">{{ technicianDetail.title }}</text>
<text style="color: #EF8C94;">{{ technicianDetail.title }}</text>
<template #icon>
<image class="icon" src="../../static/payOrder/1.png" mode="aspectFill"></image>
<image class="icon" src="../../static/payOrder/2.png" mode="aspectFill"></image>
</template>
</van-cell>
<van-cell title="服务时间" is-Link @click="onServiceTime">
<text style="color: #4899a6;">
<text style="color: #EF8C94;">
{{ time.timeName ? (dateObj.format('MM-DD') + ' ' + time.timeName) : '' }}
</text>
@ -66,15 +66,27 @@
</template>
</van-cell>
<van-cell title="精油选择" is-Link @click="showEssentialOil">
<text style="color: #EF8C94;">
{{ essentialOil.name }}
</text>
<template #icon>
<image class="icon" src="../../static/payOrder/9.png" mode="aspectFill"></image>
</template>
</van-cell>
<van-cell title="出行方式">
<text style="color: #fff;
background-color: #6fc6ad;
background-color: #EF8C94;
padding: 5px 10px;
border-radius: 5px;
font-size: 12px;">出租车</text>
<template #icon>
<image class="icon" src="../../static/payOrder/2.png" mode=""></image>
<image class="icon" src="../../static/payOrder/4.png" mode=""></image>
</template>
</van-cell>
@ -88,7 +100,7 @@
<view class="mileage">
<view class="top">
全程共
<text style="color: #4899a6;
<text style="color: #EF8C94;
font-size: 16px;">{{ distance || 0}}</text>
公里
</view>
@ -100,7 +112,7 @@
<van-cell title="订单备注" is-Link @click="remarkShow = true">
<text>{{ remark || '选填' }}</text>
<template #icon>
<image class="icon" src="../../static/payOrder/4.png" mode=""></image>
<image class="icon" src="../../static/payOrder/5.png" mode=""></image>
</template>
</van-cell>
</van-cell-group>
@ -114,21 +126,21 @@
<text style="color: #888;">余额{{ userInfo.price }}</text>
</template>
<template #icon>
<image class="icon" src="../../static/payOrder/5.png" mode=""></image>
<image class="icon" src="../../static/payOrder/6.png" mode=""></image>
</template>
<template #right-icon>
<van-radio :name="1"></van-radio>
<van-radio :name="1" checked-color="#EF8C94"></van-radio>
</template>
</van-cell>
<van-cell title="微信支付">
<template #icon>
<image class="icon" src="../../static/payOrder/9.png" mode=""></image>
<image class="icon" src="../../static/payOrder/7.png" mode=""></image>
</template>
<template #right-icon>
<van-radio :name="0"></van-radio>
<van-radio :name="0" checked-color="#EF8C94"></van-radio>
</template>
</van-cell>
@ -142,10 +154,10 @@
<van-cell title="优惠劵" is-Link @click="selectCouponPopupShow = true">
<text v-if="coupon.money" style="color: #4899a6;">优惠 {{ coupon.money }}</text>
<text v-else style="color: #4899a6;">{{ couponNum == 0 ? '无' : `${couponNum}` }}</text>
<text v-else style="color:#EF8C94">{{ couponNum == 0 ? '无' : `${couponNum}` }}</text>
<template #icon>
<image class="icon" src="../../static/payOrder/5.png" mode=""></image>
<image class="icon" src="../../static/payOrder/6.png" mode=""></image>
</template>
</van-cell>
@ -157,8 +169,8 @@
</view>
<view class="agreement">
<van-checkbox v-model="agreement"></van-checkbox>
本人已同意<text @click="configPopupShow = true" style="color: #6FDFBE;">用户使用协议</text>
<van-checkbox v-model="agreement" checked-color="#15BA11"></van-checkbox>
本人已同意<text @click="configPopupShow = true" style="color: #15BA11;">用户使用协议</text>
</view>
</view>
@ -191,6 +203,9 @@
<selectAddressPopup :show="selectAddressPopupShow" @select="selectAddress"
@close="selectAddressPopupShow = false" />
<selectEssentialOil :show="essentialOilShow" @select="selectEssentialOil"
@close="essentialOilShow = false" />
<van-popup v-model:show="remarkShow" round position="bottom" @close="remarkShow = false"
:style="{ height: '160px' }">
@ -209,6 +224,7 @@
import selectTechnician from '@/components/payOrder/selectTechnicianPopup.vue'
import selectAddressPopup from '@/components/payOrder/selectAddressPopup.vue'
import selectCouponPopup from '@/components/payOrder/selectCouponPopup.vue'
import selectEssentialOil from '../../components/payOrder/selectEssentialOilPopup.vue'
import configPopup from '@/components/configPopup'
import Position from '@/utils/position.js'
import { showDialog } from 'vant';
@ -221,7 +237,8 @@
selectTechnician,
selectAddressPopup,
selectCouponPopup,
configPopup
configPopup,
selectEssentialOil
},
data() {
return {
@ -256,7 +273,9 @@
distance : 0,
travelMoney : 0,
selectDay : '', //
couponNum : 0
couponNum : 0,
essentialOilShow : false,
essentialOil : '', //
}
},
onShow() {
@ -336,9 +355,15 @@
if (!this.address.id) {
return this.selectAddressPopupShow = true
}
if (!this.time.id) {
return this.selectTimeShow = true
}
if(!this.essentialOil.id){
return this.essentialOilShow = true
}
if (!this.agreement) {
return uni.showToast({
title: '请勾选用户使用协议协议',
@ -372,6 +397,8 @@
} else if (this.payMethod == 0) { //
this.$wxPay(res,this.paySusscess,this.paySusscess)
}
}else{ //
this.paySusscess()
}
})
},
@ -482,6 +509,17 @@
//
countCouponNum(num){
this.couponNum = num
},
//
showEssentialOil(){
this.essentialOilShow = true
},
//
selectEssentialOil(essentialoil){
this.essentialOil = essentialoil
this.essentialOilShow = false
}
}
}
@ -497,7 +535,7 @@
position: absolute;
width: 100%;
height: 100px;
background: linear-gradient(to right, #4899a6, #6fc6ad);
background: #F6BEC3;
}
.box {
@ -622,7 +660,7 @@
.top {
padding: 5px 10px;
padding-left: 25px;
background-color: #A1D9CC99;
background-color: #F7C8CC;
font-size: 12px;
position: relative;
}
@ -642,7 +680,7 @@
.info {
padding: 10px;
background-color: #ECFFFB;
background-color: #FEF4F5;
color: #888;
font-size: 11px;
line-height: 20px;
@ -678,7 +716,7 @@
}
.btn {
background: linear-gradient(178deg, #4FD3BC, #60C285);
background: #EF8C94;
color: white;
width: 120px;
height: 45px;


+ 317
- 0
service-uniapp-client/pages/orderManagement/orderManagement.vue View File

@ -0,0 +1,317 @@
<template>
<view class="orderManagement">
<mNavbar title="订单管理" :leftClick="leftClick"></mNavbar>
<van-tabs v-model:active="active" color="#EF8C94" @change="clickTabs"
style="position: sticky;top: 90rpx;z-index: 99;">
<van-tab :title="item.name" v-for="(item, index) in tabs" :key="index"
@click="getOrderList(index)"></van-tab>
</van-tabs>
<view v-if="orderList.length > 0" class="list">
<van-list v-model:loading="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
<view class="item" v-for="(item, index) in orderList" @click="toOrderDetail(item.id)">
<view class="top">
<view class="service">
<text>{{item.projectId_dictText}}</text>
<uni-icons type="right" size="15"></uni-icons>
<text>{{item.type_dictText}}</text>
</view>
<view class="status">
<text> {{item.state_dictText}}</text>
</view>
</view>
<view class="content">
<view class="left">
<image mode="aspectFill" :src="item.image"></image>
</view>
<view class="right">
<view class="text-hidden-1">
客户姓名{{item.name}}
</view>
<view class="text-hidden-1">
下单时间{{item.createTime}}
</view>
<view class="text-hidden-1">
下单地址{{item.addressId_dictText}}
</view>
<view class="text-hidden-1">
总计时间{{item.useTime}}分钟
</view>
</view>
</view>
<view class="order-price">
<view v-if="true" class="tag">
{{item.technicianId_dictText}}
</view>
<view v-else class="anticipate">
<image src="/static/order/time.png" mode="aspectFill"></image>
<text>预计30min内到达</text>
</view>
<view class="price">
总价格<text class="num">{{item.money}}</text>
</view>
</view>
<view class="bottom">
<view @click.stop="calcelOrder(item.id,cancelSuccess)" class="b1" v-if="item.state == 0">
取消订单
</view>
<view @click.stop="toPayOrder(item)" class="b2" v-if="item.state == 0">
立即付款
</view>
<!-- <view @click.stop="toPayOrder(item)" class="b2" v-if="item.state == 2">
立即确认
</view> -->
<view class="b1" @click.stop="moreOrder(item.projectId,toPlaceorder)" v-if="item.state == 3">
再来一单
</view>
<view class="b2" @click.stop="toEvaluate(item.id,item.projectId)" v-if="item.state == 3">
立即评价
</view>
<view class="b2" @click.stop="moreOrder(item.projectId,toPlaceorder)" v-if="item.state == 4">
再来一单
</view>
</view>
</view>
</van-list>
</view>
<van-empty v-else image="/static/empty/order.png" image-size="400rpx" description="暂无订单" />
</view>
</template>
<script>
import mNavbar from '@/components/base/m-navbar.vue'
import order from '@/mixins/order.js'
export default {
components: {
mNavbar
},
mixins: [order],
data(){
return {
active : 0,
tabs: [
{
name: '待付款'
},
{
name: '已付款'
},
{
name: '已确认'
},
{
name: '已完成'
},
{
name: '已取消'
}
],
queryParams: {
state: 0,
pageNo: 1,
pageSize: 10
},
orderList : [],
finished : false,
}
},
onShow(){
this.getOrderList(0)
},
methods : {
//
leftClick() {
uni.switchTab({
url: '/pages/index/center'
})
},
//tab
clickTabs(index) {
this.queryParams.state = index;
this.getOrderList()
},
//
getOrderList() {
this.$api('getOrderList', this.queryParams, res => {
if (res.code == 200) {
this.orderList = res.result.records;
if (this.queryParams.pageSize > res.result.total) {
this.finished = true
}
this.loading = false
}else{
this.finished = true
}
//token
if (res.code == 500 && res.message === '操作失败,用户不存在!') {
localStorage.removeItem('token')
localStorage.removeItem('userInfo')
uni.navigateTo({
url: '/pages/login/login'
})
}
})
},
//
toOrderDetail(id) {
uni.navigateTo({
url: '/pages/order/orderDetail?id=' + id
})
},
//list
onLoad() {
this.queryParams.pageSize += 10;
this.getOrderList()
},
//
cancelSuccess() {
uni.showToast({
title: '取消成功',
icon: 'none'
})
this.getOrderList()
},
}
}
</script>
<style lang="scss" scoped>
.orderManagement{
.list {
.item {
width: calc(100% - 40rpx);
background-color: #fff;
margin: 20rpx;
box-sizing: border-box;
border-radius: 16rpx;
padding: 30rpx;
.top {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 30rpx;
.service {}
.status {
color: #333;
font-size: 26rpx;
font-weight: 600;
}
}
.content {
display: flex;
margin: 10rpx 0;
.left {
width: 150rpx;
height: 150rpx;
border-radius: 10rpx;
image {
width: 150rpx;
height: 150rpx;
}
}
.right {
width: calc(100% - 160rpx);
color: #777;
font-size: 24rpx;
padding-left: 20rpx;
line-height: 40rpx;
}
}
.order-price {
display: flex;
justify-content: space-between;
margin: 20rpx 0rpx;
.tag {
width: 150rpx;
color: #EF8C94;
font-size: 24rpx;
text-align: center;
background-color: #FAE9EA;
border: 1px solid #EF8C94;
border-radius: 8rpx;
padding: 2rpx 0;
}
.anticipate {
display: flex;
align-items: center;
font-size: 24rpx;
color: #666666;
image {
width: 25rpx;
height: 25rpx;
margin-right: 5rpx;
}
}
.price {
font-weight: 900;
text-align: right;
text {
color: #ff780099;
font-size: 30rpx;
}
}
}
.bottom {
display: flex;
justify-content: flex-end;
font-size: 25rpx;
.b1 {
border: 1px solid #777;
color: #777;
box-sizing: border-box;
}
.b2 {
background: #EF8C94;
color: #fff;
}
view {
margin: 12rpx;
border-radius: 28rpx;
padding: 8rpx 28rpx;
margin-bottom: 0;
}
}
}
}
}
</style>

+ 10
- 10
service-uniapp-client/pages/technician/subscribeService.vue View File

@ -7,7 +7,7 @@
</view>
<view class="door box-s bg-w">
<view class="call box-s">
<image src="@/static/technician/lightning-icon.png" mode="aspectFill"></image>
<image src="@/static/technician/lightning-icon1.png" mode="aspectFill"></image>
<view class="rush-door">
<text class="rush">急速</text>上门
</view>
@ -36,11 +36,11 @@
<view class="title">保障</view>
<view class="guarantee">
<view class="guarantee-item">
<image src="@/static/icons/icon7.png"></image>
<image src="@/static/icons/secure.png"></image>
安全可靠
</view>
<view class="guarantee-item">
<image src="@/static/icons/icon7.png"></image>
<image src="@/static/icons/secure.png"></image>
无额外收费
</view>
</view>
@ -62,7 +62,7 @@
</view>
<van-tabs v-model:active="active">
<van-tabs v-model:active="active" color="#EF8C94">
<van-tab title="项目介绍">
<img class="project-detail-img" width="100%" :src="projectDetail.projectSub" alt="项目介绍图片" />
</van-tab>
@ -307,7 +307,7 @@
margin-left: 5rpx;
.rush {
color: #49B369;
color: #EF8C94;
}
}
@ -325,12 +325,12 @@
display: flex;
flex-direction: column;
justify-content: space-around;
background: #E4FEF1;
background: #FFF2F3;
width: 300rpx;
height: 120rpx;
border-radius: 15rpx;
padding: 10rpx 20rpx;
border: 1px solid #49B369;
border: 1px solid #EF8C94;
.server-name {
font-size: 24rpx;
@ -442,8 +442,8 @@
}
.select-classify {
background: #ECFCF1;
color: #55B16E;
background: #FEF4F5;
color: #EF8D95;
}
}
}
@ -466,7 +466,7 @@
width: 90%;
height: 80rpx;
margin: 0 auto;
background: #49B369;
background: #EF8C94;
border-radius: 42.5rpx;
color: white;
font-size: 28rpx;


+ 15
- 7
service-uniapp-client/pages/technician/technicianDetail.vue View File

@ -73,11 +73,11 @@
<view class="text">
<div class="colleact-info">
<view style="color: #454545;">个人介绍</view>
<view v-if="collect == 0" class="selective-technician">
<!-- <view v-if="collect == 0" class="selective-technician">
<view @click.stop="addCollect(technicianDetail.id)" class="btn">
立即收藏
</view>
</view>
</view> -->
</div>
<view style="color: #A1A1A1; margin-top: 5px;">
{{ technicianDetail.notes }}
@ -88,7 +88,7 @@
<view>服务项目</view>
</view> -->
<van-tabs class="tabs" v-model:active="activeTag">
<van-tabs class="tabs" v-model:active="activeTag" color="#EF8C94">
<van-tab title="服务项目">
<van-empty v-if="projectList.length <= 0" image="/static/empty/message-list.png" image-size="400rpx" description="暂无服务"/>
<view v-else class="server-list">
@ -145,6 +145,14 @@
</van-tabs>
</view>
<van-floating-bubble
v-if="collect == 0"
axis="xy"
icon="/static/technician/collect-icon.png"
magnetic="x"
@click="addCollect(technicianDetail.id)"
/>
</view>
</template>
@ -252,7 +260,7 @@
margin: 0 auto;
.technician-Detail-Top {
background-color: var(--van-primary-color);
background-color: #EF8C94;
::v-deep .van-nav-bar__title {
color: #fff;
@ -591,7 +599,7 @@
width: 170rpx;
border-radius: 40rpx;
color: white;
background: linear-gradient(170deg, #53CEAC, #5AC796);
background: #EF8C94;
}
.notAvailable {
@ -635,10 +643,10 @@
width: 170rpx;
border-radius: 40rpx;
color: white;
background: linear-gradient(170deg, #53CEAC, #5AC796);
background: #EF8C94;
}
}
}
}
</style>

BIN
service-uniapp-client/static/address/address-icon.png View File

Before After
Width: 143  |  Height: 143  |  Size: 12 KiB Width: 143  |  Height: 143  |  Size: 8.1 KiB

BIN
service-uniapp-client/static/address/position-icon.png View File

Before After
Width: 42  |  Height: 54  |  Size: 2.1 KiB Width: 42  |  Height: 54  |  Size: 1.8 KiB

BIN
service-uniapp-client/static/bar/hm.png View File

Before After
Width: 41  |  Height: 41  |  Size: 1.3 KiB Width: 61  |  Height: 61  |  Size: 2.5 KiB

BIN
service-uniapp-client/static/bar/hms.png View File

Before After
Width: 41  |  Height: 41  |  Size: 1.8 KiB Width: 61  |  Height: 61  |  Size: 2.6 KiB

BIN
service-uniapp-client/static/bar/ph.png View File

Before After
Width: 40  |  Height: 40  |  Size: 1.5 KiB Width: 60  |  Height: 60  |  Size: 3.0 KiB

BIN
service-uniapp-client/static/bar/phs.png View File

Before After
Width: 40  |  Height: 40  |  Size: 1.6 KiB Width: 60  |  Height: 60  |  Size: 3.1 KiB

BIN
service-uniapp-client/static/bar/tp.png View File

Before After
Width: 40  |  Height: 40  |  Size: 833 B Width: 60  |  Height: 60  |  Size: 1.7 KiB

BIN
service-uniapp-client/static/bar/tps.png View File

Before After
Width: 40  |  Height: 40  |  Size: 916 B Width: 60  |  Height: 60  |  Size: 1.7 KiB

BIN
service-uniapp-client/static/bar/wd.png View File

Before After
Width: 40  |  Height: 40  |  Size: 1.6 KiB Width: 60  |  Height: 60  |  Size: 2.9 KiB

BIN
service-uniapp-client/static/bar/wds.png View File

Before After
Width: 40  |  Height: 40  |  Size: 1.7 KiB Width: 60  |  Height: 60  |  Size: 3.0 KiB

BIN
service-uniapp-client/static/complain/img.png View File

Before After
Width: 442  |  Height: 440  |  Size: 12 KiB

BIN
service-uniapp-client/static/coupon/c.png View File

Before After
Width: 336  |  Height: 112  |  Size: 8.2 KiB Width: 977  |  Height: 325  |  Size: 38 KiB

BIN
service-uniapp-client/static/home/more.png View File

Before After
Width: 14  |  Height: 24  |  Size: 658 B

BIN
service-uniapp-client/static/home/time-icon.png View File

Before After
Width: 29  |  Height: 29  |  Size: 985 B Width: 29  |  Height: 29  |  Size: 990 B

BIN
service-uniapp-client/static/icons/icon7.png View File

Before After
Width: 29  |  Height: 32  |  Size: 1.3 KiB Width: 43  |  Height: 49  |  Size: 1.9 KiB

BIN
service-uniapp-client/static/icons/m1.png View File

Before After
Width: 47  |  Height: 47  |  Size: 2.9 KiB Width: 66  |  Height: 66  |  Size: 2.4 KiB

BIN
service-uniapp-client/static/icons/m2.png View File

Before After
Width: 44  |  Height: 42  |  Size: 816 B Width: 66  |  Height: 66  |  Size: 1.6 KiB

BIN
service-uniapp-client/static/icons/m3.png View File

Before After
Width: 44  |  Height: 41  |  Size: 1.7 KiB Width: 71  |  Height: 71  |  Size: 4.6 KiB

BIN
service-uniapp-client/static/icons/m4.png View File

Before After
Width: 43  |  Height: 43  |  Size: 1.6 KiB Width: 64  |  Height: 64  |  Size: 2.7 KiB

BIN
service-uniapp-client/static/icons/m5.png View File

Before After
Width: 66  |  Height: 61  |  Size: 3.0 KiB

BIN
service-uniapp-client/static/icons/m6.png View File

Before After
Width: 71  |  Height: 71  |  Size: 2.7 KiB

BIN
service-uniapp-client/static/icons/m7.png View File

Before After
Width: 70  |  Height: 72  |  Size: 3.1 KiB

BIN
service-uniapp-client/static/icons/secure.png View File

Before After
Width: 32  |  Height: 38  |  Size: 1.3 KiB

BIN
service-uniapp-client/static/message/arrow.png View File

Before After
Width: 39  |  Height: 39  |  Size: 1.5 KiB

BIN
service-uniapp-client/static/message/lightning-icon.png View File

Before After
Width: 17  |  Height: 23  |  Size: 519 B

BIN
service-uniapp-client/static/message/message-icon.png View File

Before After
Width: 150  |  Height: 150  |  Size: 20 KiB

BIN
service-uniapp-client/static/ms/banner.png View File

Before After
Width: 710  |  Height: 310  |  Size: 88 KiB Width: 1065  |  Height: 396  |  Size: 213 KiB

BIN
service-uniapp-client/static/ms/fontjszm.png View File

Before After
Width: 362  |  Height: 90  |  Size: 15 KiB Width: 362  |  Height: 90  |  Size: 5.8 KiB

BIN
service-uniapp-client/static/ms/settled.png View File

Before After
Width: 710  |  Height: 310  |  Size: 98 KiB Width: 1065  |  Height: 465  |  Size: 196 KiB

BIN
service-uniapp-client/static/ms/w.png View File

Before After
Width: 710  |  Height: 316  |  Size: 129 KiB Width: 1065  |  Height: 474  |  Size: 249 KiB

BIN
service-uniapp-client/static/order/time.png View File

Before After
Width: 42  |  Height: 42  |  Size: 1.5 KiB

BIN
service-uniapp-client/static/payOrder/1.png View File

Before After
Width: 44  |  Height: 46  |  Size: 2.1 KiB Width: 44  |  Height: 46  |  Size: 1.7 KiB

BIN
service-uniapp-client/static/payOrder/2.png View File

Before After
Width: 39  |  Height: 46  |  Size: 2.0 KiB Width: 44  |  Height: 46  |  Size: 2.2 KiB

BIN
service-uniapp-client/static/payOrder/3.png View File

Before After
Width: 47  |  Height: 47  |  Size: 1.6 KiB Width: 47  |  Height: 47  |  Size: 1.5 KiB

BIN
service-uniapp-client/static/payOrder/4.png View File

Before After
Width: 42  |  Height: 46  |  Size: 909 B Width: 39  |  Height: 46  |  Size: 2.1 KiB

BIN
service-uniapp-client/static/payOrder/5.png View File

Before After
Width: 48  |  Height: 39  |  Size: 1.1 KiB Width: 42  |  Height: 46  |  Size: 944 B

BIN
service-uniapp-client/static/payOrder/6.png View File

Before After
Width: 48  |  Height: 39  |  Size: 1.1 KiB

BIN
service-uniapp-client/static/payOrder/7.png View File

Before After
Width: 44  |  Height: 46  |  Size: 1.6 KiB Width: 58  |  Height: 48  |  Size: 2.3 KiB

BIN
service-uniapp-client/static/payOrder/8.png View File

Before After
Width: 48  |  Height: 48  |  Size: 1.8 KiB Width: 48  |  Height: 39  |  Size: 1.1 KiB

BIN
service-uniapp-client/static/payOrder/9.png View File

Before After
Width: 58  |  Height: 48  |  Size: 2.2 KiB Width: 48  |  Height: 53  |  Size: 1.9 KiB

BIN
service-uniapp-client/static/technician/address.png View File

Before After
Width: 26  |  Height: 35  |  Size: 1.2 KiB Width: 26  |  Height: 35  |  Size: 1.2 KiB

BIN
service-uniapp-client/static/technician/collect-icon.png View File

Before After
Width: 78  |  Height: 71  |  Size: 2.5 KiB

BIN
service-uniapp-client/static/technician/lightning-icon.png View File

Before After
Width: 27  |  Height: 37  |  Size: 1.0 KiB Width: 17  |  Height: 23  |  Size: 519 B

BIN
service-uniapp-client/static/technician/lightning-icon1.png View File

Before After
Width: 27  |  Height: 37  |  Size: 1.0 KiB

BIN
service-uniapp-client/static/test/精油.png View File

Before After
Width: 71  |  Height: 71  |  Size: 1.6 KiB

BIN
service-uniapp-client/static/test/精油1.png View File

Before After
Width: 71  |  Height: 71  |  Size: 1.6 KiB

BIN
service-uniapp-client/static/test/精油2.png View File

Before After
Width: 71  |  Height: 71  |  Size: 1.9 KiB

BIN
service-uniapp-client/static/test/精油3.png View File

Before After
Width: 71  |  Height: 71  |  Size: 1.5 KiB

+ 117
- 85
service-uniapp-client/uni.css View File

@ -1,52 +1,55 @@
.van-step__circle-container{
.van-step__circle-container {
background: transparent !important;
}
.test{
.test {
border: 1rpx dashed red;
}
.font-c{
.font-c {
color: #ccc;
}
.w50{
.w50 {
width: 50%;
}
.h375{
.h375 {
width: 100%;
height: 375rpx;
}
.h238{
.h238 {
width: 238rpx;
height: 238rpx;
margin: auto;
}
.h220{
.h220 {
width: 100%;
height: 220rpx;
}
.h120 {
width: 100%;
height: 120rpx;
line-height: 120rpx;
}
.h70{
.h70 {
width: 100%;
height: 70rpx;
line-height: 70rpx;
}
.h88{
.h88 {
width: 100%;
height: 88rpx;
line-height: 88rpx;
@ -54,114 +57,133 @@
.mb40{
.mb40 {
margin-bottom: 40rpx;
}
.mb20{
.mb20 {
margin-bottom: 20rpx;
}
.mt20{
.mt20 {
margin-top: 20rpx;
}
.mt56{
.mt56 {
margin-top: 56rpx;
}
.pb120{
.pb120 {
padding-bottom: 120rpx;
}
.m5{
.m5 {
margin-top: 5rpx;
margin-bottom: 5rpx;
}
.m10{
.m10 {
margin-top: 10rpx;
margin-bottom: 10rpx;
}
.m20{
.m20 {
margin-top: 20rpx;
margin-bottom: 20rpx;
}
.mt100{
.mt100 {
margin-top: 100rpx;
}
.mt40{
.mt40 {
margin-top: 40rpx;
}
.m120{
.m120 {
margin-top: 120rpx;
margin-bottom: 120rpx;
}
.m10auto{
.m10auto {
margin: 10 auto;
}
.m20auto{
}
.m20auto {
margin: 20 auto;
}
}
.flex{
.flex {
display: flex;
}
.flex-sb{
.flex-sb {
display: flex;
justify-content: space-between;
}
.sb-w3{
.sb-w3 {
width: calc(100% / 3);
text-align: center;
}
.sb-w4{
.sb-w4 {
width: calc(100% / 4);
text-align: center;
}
.sb-w5{
.sb-w5 {
width: calc(100% / 5);
text-align: center;
}
.sb-w8{
.sb-w8 {
width: calc(100% / 8);
text-align: center;
}
.flex-wrap{
.flex-wrap {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.line36{
.line36 {
line-height: 36rpx;
font-size: 30rpx;
}
.line42{
.line42 {
line-height: 42rpx;
font-size: 32rpx;
}
.line64{
.line64 {
line-height: 64rpx;
font-size: 36rpx;
}
.line72{
.line72 {
line-height: 72rpx;
font-size: 42rpx;
}
.bottom-line{
.bottom-line {
border-bottom: 2rpx solid #eee;
}
.bottom-line:last-child{
.bottom-line:last-child {
border-bottom: none;
}
@ -178,27 +200,29 @@
.b-fiexd{
height: 120rpx;
width: calc(100vw - 40rpx);
.b-fiexd {
height: 120rpx;
width: calc(100vw - 40rpx);
padding: 0 20rpx;
position: fixed;
left: 0;
bottom: 0;
position: fixed;
left: 0;
bottom: 0;
box-shadow: -20rpx 10rpx 10rpx #000;
background-color: #ffffff;
}
.b-relative{
.b-relative {
position: relative;
}
.b-button{
background-color: 10rpx;
height:72rpx;
line-height: 72rpx;
text-align:center;
color: #ffffff;
width: 376rpx;
background-color: #fe8a00;
.b-button {
background-color: 10rpx;
height: 72rpx;
line-height: 72rpx;
text-align: center;
color: #ffffff;
width: 376rpx;
background-color: #fe8a00;
border-radius: 10rpx;
margin: 24rpx auto;
}
@ -207,15 +231,17 @@
/**
* 滑动定位
*/
.bg-white{
.bg-white {
background-color: white;
}
.box-shadow-gray{
.box-shadow-gray {
box-shadow: #ccc 0 0rpx 40rpx 0.1rpx;
}
.sticky{
position: sticky;
top: 0;
.sticky {
position: sticky;
top: 0;
z-index: 100;
}
@ -225,15 +251,15 @@
*/
.back-feixd {
background-color: #fff8ef;
border: 1rpx solid #dbc9ba;
border-radius: 50%;
border: 1rpx solid #dbc9ba;
border-radius: 50%;
width: 60rpx;
height: 60rpx;
position: fixed;
top: 100rpx;
position: fixed;
top: 100rpx;
left: 12rpx;
z-index: 101;
line-height: 60rpx;
text-align: center;
opacity: .7;
@ -245,24 +271,25 @@
*/
.s-input {
padding: 16rpx 40rpx;
margin: 0 20rpx;
width: 590rpx;
border-radius: 40rpx;
height: 40rpx;
line-height: 40rpx;
border: 1rpx solid #ccc;
margin: 0 20rpx;
width: 590rpx;
border-radius: 40rpx;
height: 40rpx;
line-height: 40rpx;
border: 1rpx solid #ccc;
color: #0d0d0d;
font-size: 28rpx;
}
.s-input-line {
height: 72rpx;
line-height: 72rpx;
margin: 0 78rpx;
color: #666;
height: 72rpx;
line-height: 72rpx;
margin: 0 78rpx;
color: #666;
font-size: 28rpx;
}
/**
* 超出隐藏
*/
@ -276,7 +303,7 @@
/**
* 圆形图片
*/
.radius80{
.radius80 {
width: 80rpx;
height: 80rpx;
border-radius: 50%;
@ -290,22 +317,27 @@
/* vant样式 */
:root{
--van-primary-color : #60bda2 !important;
:root {
--van-primary-color: #F6BEC3 !important;
/* --primary-two-color : #60bda2 !important; */
}
.text-hidden-1{
.van-floating-bubble {
background: #dfdfdf !important;
}
.text-hidden-1 {
text-overflow: ellipsis;
display: -webkit-box;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
-webkit-line-clamp: 1;
overflow: hidden;
}
.text-hidden-2{
.text-hidden-2 {
text-overflow: ellipsis;
display: -webkit-box;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
-webkit-line-clamp: 2;
overflow: hidden;
}

+ 1
- 1
service-uniapp-client/utils/Share.js View File

@ -51,7 +51,7 @@ function share() { //微信分享
window.jWeixin.onMenuShareWeibo(shareData);
});
window.jWeixin.error(function(res){
window.jWeixin.error(function(err){
console.error(err);
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
})


Loading…
Cancel
Save