Browse Source

Merge branch 'master' of http://123.60.98.226:3000/chenkainan/changshu

# Conflicts:
#	pages.json
#	unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
#	unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
#	unpackage/dist/dev/mp-weixin/app.json
#	unpackage/dist/dev/mp-weixin/common/vendor.js
#	unpackage/dist/dev/mp-weixin/project.config.json
#	unpackage/dist/dev/mp-weixin/project.private.config.json
dev
chenkainan 7 months ago
parent
commit
0a92c9438d
  1. 3
      .gitignore
  2. 45
      pages.json
  3. 155
      pages/login/login.vue
  4. 644
      pages/user/user.vue
  5. 196
      static/js/mmmm-image-tools/index.js
  6. 11
      static/js/mmmm-image-tools/package.json
  7. 3
      static/js/request.js
  8. 186
      subPackages/service/service.vue
  9. 164
      subPackages/user/bindTel.vue
  10. 87
      subPackages/user/changeNickname.vue
  11. 126
      subPackages/user/collect.vue
  12. 494
      subPackages/user/coupon.vue
  13. 386
      subPackages/user/myAddressAdd.vue
  14. 247
      subPackages/user/myContactsAdd.vue
  15. 58
      subPackages/user/privacy.vue
  16. 30
      subPackages/user/privacyInfo.vue
  17. 350
      subPackages/user/profile.vue
  18. 328
      subPackages/user/travelerList.vue
  19. 2
      unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
  20. 2
      unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  21. 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map
  22. 2
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/user.js.map
  23. 1
      unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/service/service.js.map
  24. 1
      unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/coupon.js.map
  25. 1
      unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/privacy.js.map
  26. 1
      unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/privacyInfo.js.map
  27. 1
      unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/profile.js.map
  28. 1
      unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/travelerList.js.map
  29. 1
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.js.map
  30. 1
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.js.map
  31. 11
      unpackage/dist/dev/mp-weixin/app.json
  32. 7
      unpackage/dist/dev/mp-weixin/common/main.wxss
  33. 2
      unpackage/dist/dev/mp-weixin/common/runtime.js
  34. 6
      unpackage/dist/dev/mp-weixin/common/vendor.js
  35. 2
      unpackage/dist/dev/mp-weixin/pages/login/login.js
  36. 6
      unpackage/dist/dev/mp-weixin/pages/login/login.json
  37. 1
      unpackage/dist/dev/mp-weixin/pages/login/login.wxml
  38. 85
      unpackage/dist/dev/mp-weixin/pages/login/login.wxss
  39. 2
      unpackage/dist/dev/mp-weixin/pages/user/user.js
  40. 7
      unpackage/dist/dev/mp-weixin/pages/user/user.json
  41. 2
      unpackage/dist/dev/mp-weixin/pages/user/user.wxml
  42. 310
      unpackage/dist/dev/mp-weixin/pages/user/user.wxss
  43. 8
      unpackage/dist/dev/mp-weixin/project.private.config.json
  44. 196
      unpackage/dist/dev/mp-weixin/static/js/mmmm-image-tools/index.js
  45. 11
      unpackage/dist/dev/mp-weixin/static/js/mmmm-image-tools/package.json
  46. 3
      unpackage/dist/dev/mp-weixin/static/js/request.js
  47. 2
      unpackage/dist/dev/mp-weixin/subPackages/service/service.js
  48. 4
      unpackage/dist/dev/mp-weixin/subPackages/service/service.json
  49. 1
      unpackage/dist/dev/mp-weixin/subPackages/service/service.wxml
  50. 104
      unpackage/dist/dev/mp-weixin/subPackages/service/service.wxss
  51. 2
      unpackage/dist/dev/mp-weixin/subPackages/user/coupon.js
  52. 6
      unpackage/dist/dev/mp-weixin/subPackages/user/coupon.json
  53. 1
      unpackage/dist/dev/mp-weixin/subPackages/user/coupon.wxml
  54. 283
      unpackage/dist/dev/mp-weixin/subPackages/user/coupon.wxss
  55. 2
      unpackage/dist/dev/mp-weixin/subPackages/user/privacy.js
  56. 4
      unpackage/dist/dev/mp-weixin/subPackages/user/privacy.json
  57. 1
      unpackage/dist/dev/mp-weixin/subPackages/user/privacy.wxml
  58. 48
      unpackage/dist/dev/mp-weixin/subPackages/user/privacy.wxss
  59. 2
      unpackage/dist/dev/mp-weixin/subPackages/user/privacyInfo.js
  60. 4
      unpackage/dist/dev/mp-weixin/subPackages/user/privacyInfo.json
  61. 1
      unpackage/dist/dev/mp-weixin/subPackages/user/privacyInfo.wxml
  62. 29
      unpackage/dist/dev/mp-weixin/subPackages/user/privacyInfo.wxss
  63. 2
      unpackage/dist/dev/mp-weixin/subPackages/user/profile.js
  64. 4
      unpackage/dist/dev/mp-weixin/subPackages/user/profile.json
  65. 1
      unpackage/dist/dev/mp-weixin/subPackages/user/profile.wxml
  66. 116
      unpackage/dist/dev/mp-weixin/subPackages/user/profile.wxss
  67. 2
      unpackage/dist/dev/mp-weixin/subPackages/user/travelerList.js
  68. 4
      unpackage/dist/dev/mp-weixin/subPackages/user/travelerList.json
  69. 1
      unpackage/dist/dev/mp-weixin/subPackages/user/travelerList.wxml
  70. 154
      unpackage/dist/dev/mp-weixin/subPackages/user/travelerList.wxss
  71. 11
      unpackage/dist/dev/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.js
  72. 6
      unpackage/dist/dev/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.json
  73. 1
      unpackage/dist/dev/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.wxml
  74. 48
      unpackage/dist/dev/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.wxss
  75. 11
      unpackage/dist/dev/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.js
  76. 4
      unpackage/dist/dev/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.json
  77. 1
      unpackage/dist/dev/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.wxml

3
.gitignore

@ -0,0 +1,3 @@
/.hbuilderx/
/unpackage/
/node_modules/

45
pages.json

@ -9,7 +9,14 @@
{
"path": "pages/user/user",
"style": {
"navigationBarTitleText": "uni-app"
"navigationStyle": "custom",
"navigationBarTitleText": "我的"
}
},
{
"path": "pages/login/login",
"style": {
"navigationBarTitleText": "常熟文旅"
}
}
],
@ -33,6 +40,42 @@
"style": {
"navigationBarTitleText": "周边特惠活动"
}
},
{
"path": "service/service",
"style": {
"navigationBarTitleText": "投诉建议"
}
},
{
"path": "user/profile",
"style": {
"navigationBarTitleText": "个人信息"
}
},
{
"path": "user/travelerList",
"style": {
"navigationBarTitleText": "常用信息"
}
},
{
"path": "user/privacy",
"style": {
"navigationBarTitleText": "详情"
}
},
{
"path": "user/privacyInfo",
"style": {
"navigationBarTitleText": "详情"
}
},
{
"path": "user/coupon",
"style": {
"navigationBarTitleText": "优惠券"
}
}
]
}],

155
pages/login/login.vue

@ -0,0 +1,155 @@
<template>
<view class="bg">
<image src="https://static.ticket.sz-trip.com/yandu/images/user/logo.png" class="logo"></image>
<view :class="['btn', 'flex-center', {'btns': flag}]" @click="getUserInfo()">快捷登录</view>
<image src="https://static.ticket.sz-trip.com/yandu/images/user/tips.png" class="tips" v-show="!flag"></image>
<footer class="flex-between">
<view @click="flag = !flag" :style="{border: flag ? 'none' : ''}"><image src="https://static.ticket.sz-trip.com/yandu/images/user/dui.png" v-show="flag"></image></view>
我已阅读并同意 <span @click="gotoPath('/subPackages/user/privacy')">用户服务协议隐私政策</span>
</footer>
<uni-popup ref="popup" type="bottom" background-color="#fff">
<button type="default" open-type="getPhoneNumber" @getphonenumber="decryptPhoneNumber" style="width: 100%;height: 12vh;line-height: 12vh;">点击授权手机号</button>
</uni-popup>
</view>
</template>
<script>
export default {
data() {
return {
flag: false
}
},
methods: {
decryptPhoneNumber(e){
if( e.detail.errMsg == "getPhoneNumber:ok" ){ //
this.$refs.popup.close()
this.Post({
code: e.detail.code,
encryptedData: e.detail.encryptedData,
iv: e.detail.iv,
token: uni.getStorageSync('token1')
},'/api/mini_program/bindPhoneNumber').then(res => {
this.$store.commit('changeUserInfo', res.data.userinfo)
if (this.$store.state.user.toPath.includes('user/user')) {
uni.switchTab({
url: this.$store.state.user.toPath
})
} else {
uni.navigateBack({})
}
})
}
},
getUserInfo() {
if(!this.flag) return;
var _this = this
uni.login({
provider: 'weixin',
success(loginRes) {
uni.getUserInfo({
withCredentials: true,
success(res) {
_this.Post({
code: loginRes.code,
userInfo: res.userInfo,
encryptedData: res.encryptedData,
iv: res.iv,
wechat_qrcode: uni.getStorageSync('wechat_qrcode')?uni.getStorageSync('wechat_qrcode'):''
}, '/api/mini_program/login').then(resTwo => {
_this.$store.commit('changeUserInfo', resTwo.data.userinfo)
if(resTwo.data.userinfo.mobile){
if (_this.$store.state.user.toPath.includes('user/user')) {
uni.switchTab({
url: _this.$store.state.user.toPath
})
} else {
uni.navigateBack({})
}
}else{
uni.setStorageSync('token1', resTwo.data.userinfo.token)
_this.$refs.popup.open('bottom')
}
})
}
})
},
fail(err) {
console.log(err);
},
})
}
}
}
</script>
<style lang="scss" scoped>
.bg {
height: 100vh;
}
.logo {
width: 186rpx;
height: 132rpx;
position: absolute;
top: 79rpx;
left: 50%;
transform: translate(-50%, 0);
}
.btn {
width: 667rpx;
height: 93rpx;
background: #CCCCCC;
border-radius: 20rpx;
font-weight: 500;
font-size: 35rpx;
color: #FFFFFF;
position: absolute;
top: 301rpx;
left: 50%;
transform: translate(-50%,0)
}
.btns {
background: #71B580;
}
.tips {
position: absolute;
left: 54rpx;
bottom: 155rpx;
width: 293.33rpx;
height: 72.67rpx;
}
footer {
padding: 0 68rpx;
position: absolute;
bottom: 94rpx;
font-weight: 500;
font-size: 25rpx;
color: #333333;
width: 100%;
view {
width: 48rpx;
height: 48rpx;
border-radius: 50%;
overflow: hidden;
border: 1rpx solid #666666;
image {
width: 100%;
height: 100%;
}
}
span {
color: rgba(113, 181, 128, 1);
}
}
</style>

644
pages/user/user.vue

@ -1,8 +1,650 @@
<template>
<view class="bg">
<view class="title">我的</view>
<view class="topBox" @click="gotoProfile">
<view class="avatar-box flex-center">
<image :src="showImg(userInfo.avatar)" mode="aspectFill" class="headImg" v-if="userInfo.avatar"></image>
<image src="https://static.ticket.sz-trip.com/yandu/images/user/grxx.png" mode="aspectFill"
class="headImg" v-else></image>
</view>
<view class="username" v-if="userInfo.nickname">{{userInfo.nickname}}</view>
<view class="username" v-else>请登录/注册 ></view>
</view>
<view class="orderBox">
<navigator :url="'/subPackages/order/trades'" class="moreBox flex-between">
我的订单
<span class="flex-between">全部订单 <img
src="https://static.ticket.sz-trip.com/yandu/images/user/rightIcon.png" alt=""></span>
</navigator>
<view class="flex-around" style="margin-top: 20rpx;">
<view class="orderItem" v-for="(item,index) in orderList" :key="index" @click="goTrades(item)">
<img :src="item.src" alt="">
<view>{{item.title}}</view>
</view>
</view>
<!-- 待付款轮播 -->
<!-- <swiper class="my-swipe" :autoplay="3000" indicator-color="white" v-if="dfkList && dfkList.length>0" circular>
<swiper-item v-for="(item,index) in dfkList" :key="item.id">
<div class="dfkBox" @click="goToOrderDetail(item)">
<image :src="showImg(item.order_child[0].specifications_image)" mode="aspectFill"></image>
<div class="contentBox">
<div style="width:300rpx;">
<div style="font-size: 27rpx;margin-bottom: 10rpx;">等待付款 </div>
<div style="display: flex;color: #8A8A8A;font-size: 27rpx;">剩余时间<uni-countdown class="countdown" @timeup="timeup(index)" :show-day="false" :hour="differTimeList[index].slice(0,2)" :minute="differTimeList[index].slice(3,5)" :second="differTimeList[index].slice(6,8)"/></div>
</div>
<div class="orderBtn" @click.stop="setOrderId(item.order_id)">去支付</div>
</div>
</div>
</swiper-item>
</swiper> -->
</view>
<view class="cygj">
<view class="cyItem flex-between" v-for="(item,index) in cyList" :key="index"
@click="gotoUrl(item,index)" v-if="item.isShow">
<view class="flex-center">
<img :src="item.src" class="headIcon">
{{item.title}}
</view>
<img src="https://static.ticket.sz-trip.com/yandu/images/user/rightIcon-gray.png" class="rightIcon">
</view>
<!-- <button id="contact" class="cyItem flex-between" open-type="contact" bindcontact="handleContact" session-from="sessionFrom">
<view class="flex-center">
<img src="https://static.ticket.sz-trip.com/dongtai/images/user/zxkf.png" class="headIcon">
在线客服
</view>
<img src="https://static.ticket.sz-trip.com/dongtai/images/user/rightIcon-gray.png" class="rightIcon">
</button> -->
</view>
<!-- 旅游咨询弹框 -->
<uni-popup ref="popup" type="center">
<view class="consult-popup">
即将跳转人工客服
<view class="consult-subtitle">服务时间周一至周五<br>8:30-11:3014:30-18:00</view>
<view class="consult-btns">
<view @click="$refs.popup.close()">取消</view>
<!-- <view @click="clickPhone('0515-69186109')">确定</view> -->
<view>
<button class="confirm" open-type="contact">确定</button>
</view>
</view>
</view>
</uni-popup>
</view>
</template>
<script>
// import moment from "moment";
export default {
data() {
return {
dfkList: [],
differTimeList: [],
nowDateTime: '', //
userInfo: {},
orderList: [{
src: 'https://static.ticket.sz-trip.com/yandu/images/user/dfk.png',
title: '待付款',
status: 'WAIT_PAYMENT'
},
{
src: 'https://static.ticket.sz-trip.com/yandu/images/user/dfh.png',
title: '待发货',
status: 'PAYMENT_SUCCESSFULLY'
},
{
src: 'https://static.ticket.sz-trip.com/yandu/images/user/dsh.png',
title: '待收货',
status: 'POST'
},
// {
// src: 'https://static.ticket.sz-trip.com/yandu/images/user/dpj.png',
// title: '',
// status: 'WAIT_COMMENT'
// },
{
src: 'https://static.ticket.sz-trip.com/yandu/images/user/tksh.png',
title: '退款/售后',
status: 'WAIT_REFUND,REFUND_SUCCESS,REFUND_REFUSAL,REFUND_ERROR,REFUND_PART'
},
],
cyList: [
// {
// src: 'https://static.ticket.sz-trip.com/yandu/images/user/grsc.png',
// title: '',
// path: '/subPackages/user/collect',
// isShow: true
// },
{
src: 'https://static.ticket.sz-trip.com/yandu/images/user/yhq.png',
title: '优惠券',
path: '/subPackages/user/coupon',
isShow: true
},
{
src: 'https://static.ticket.sz-trip.com/yandu/images/user/cyxx.png',
title: '常用信息',
path: '/subPackages/user/travelerList',
isShow: true
},
{
src: 'https://static.ticket.sz-trip.com/yandu/images/user/lyzx.png',
title: '旅游咨询',
path: '',
isShow: true
},
{
src: 'https://static.ticket.sz-trip.com/yandu/images/user/tsjb.png',
title: '投诉建议',
path: '/subPackages/service/service',
isShow: true
},
{
src: 'https://static.ticket.sz-trip.com/yandu/images/user/ysgl.png',
title: '隐私管理',
path: '/subPackages/user/privacy',
isShow: true
}
],
}
},
onShow() {
this.userInfo = (uni.getStorageSync('userInfo') && JSON.parse(uni.getStorageSync('userInfo'))) || this.$store.state.user.userInfo || {}
console.log(this.userInfo)
// this.dfkList = []
// this.nowDateTime = parseInt(new Date().getTime() / 1000)
// this.Post({}, "/api/user/userInfo").then((res) => {
// if (res.data) {
// this.userInfo = res.data;
// // this.getDfk()
// //
// this.Post({},'/api/merchants/is_merchant').then(res => {
// this.cyList[6].isShow = res.data
// })
// }
// });
},
methods: {
//
gotoProfile() {
// token
if(this.userInfo.token) {
uni.navigateTo({
url: '/subPackages/user/profile'
})
}else {
uni.navigateTo({
url: '/pages/login/login'
})
}
},
timeup(index) {
// return this.dfkList.splice(index,1)
},
setOrderId(id) {
let that = this;
that.orderId = id;
that.Post({
order_id: id,
type: "miniprogram",
platform: 'miniprogram'
},
'/api/pay/unify'
).then(res => {
if (res.data) {
uni.requestPayment({
nonceStr: res.data.nonceStr,
package: res.data.package,
paySign: res.data.paySign,
signType: res.data.signType,
timeStamp: res.data.timeStamp
});
}
});
},
//
getDfk() {
this.differTimeList = []
let params = {
offset: this.dfkList.length,
limit: 10,
status: 'WAIT_PAYMENT',
}
this.Post(params, '/api/order/orderList').then(res => {
this.isLoading = false
if (res) {
this.dfkList = [...this.dfkList, ...res.data]
this.dfkList.forEach(item => {
// ,-differTimeList
let del;
if (moment(item.close_time).diff(moment()) > 0) {
del = moment.utc(moment(item.close_time).diff(moment())).format('HH:mm:ss')
} else {
del = '00:00:00'
}
this.differTimeList.push(del)
})
console.log(this.differTimeList);
console.log('this.differTimeList:' + this.differTimeList[0].slice(0, 2))
}
})
},
goToOrderDetail(item) {
uni.navigateTo({
url: '/subPackages/order/detail?id=' + item.order_id
});
},
getChild(list) {
let arr = []
for (let i = 0; i < list.length; i++) {
if (list[i].product_model == "ticket") {
console.log(list[i]);
arr.push(list[i])
break
}
}
console.log(arr);
if (arr.length > 0) {
return arr[0]
} else {
return list[0]
}
},
goCoupon() {
uni.navigateTo({
url: "/subPackages/user/coupon",
});
},
goKeFu() {
uni.navigateTo({
url: "/subPackages/publicservices/ServiceOnline",
});
},
// open(){
// this.$refs.popup.open('center')
// },
gotoUrl(item, index) {
if (item.title == "旅游咨询") {
this.$refs.popup.open()
return;
}
uni.navigateTo({
url: item.path
})
},
qidai() {
uni.showToast({
title: '功能建设中...',
icon: 'none'
})
},
goTrades(item) {
if (item) {
uni.navigateTo({
url: "/subPackages/order/trades?type=" + item.title,
});
} else {
uni.navigateTo({
url: "/subPackages/order/trades",
});
}
},
//
isGz(item) {
this.$refs.pop.openPop(
'https://yjks.oss-cn-shanghai.aliyuncs.com/uploads/20230517/db9eb60e0abfea8be1075b406fefe551.jpg');
// this.Post({}, '/api/wechat/getSubcribeInfo').then(res => {
// if (res.data) {
// uni.navigateTo({
// url:'/subPackages/webPage/webPage?url='+'https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzU2NjQwNTYxNg==#wechat_redirect'
// })
// } else {
// console.log(this.$refs.pop);
// }
// });
},
}
}
</script>
<style>
<style scoped lang="scss">
view{
box-sizing: border-box;
}
/deep/.uni-countdown {
font-size: 20px !important;
/deep/.uni-countdown__splitor {
font-size: 20px !important;
}
}
.bg {
min-height: 100vh;
overflow-x: hidden;
background: url('https://static.ticket.sz-trip.com/yandu/images/user/topBg.png') no-repeat;
background-size: 100%;
background-color: #F7F7F7;
padding-bottom: 100rpx;
}
.title {
font-weight: bold;
font-size: 36rpx;
color: #333333;
position: absolute;
top: 110rpx;
left: 50%;
transform: translate(-50%, 0);
}
.topBox {
width: 750rpx;
height: 373rpx;
padding: 100rpx 0 0 26rpx;
box-sizing: border-box;
display: flex;
margin-top: 90rpx;
.avatar-box {
width: 120rpx;
height: 120rpx;
background: #FFFFFF;
border-radius: 50%;
overflow: hidden;
}
.headImg {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
}
.username {
margin: 40rpx 0 0 28rpx;
font-weight: 500;
font-size: 40rpx;
color: #000000;
}
}
.orderBox {
width: 697rpx;
background: #FFFFFF;
box-shadow: 0rpx 0rpx 23rpx 0rpx rgba(80, 80, 80, 0.12);
border-radius: 20rpx;
margin: -48rpx auto 0;
padding-bottom: 30.6rpx;
.moreBox {
height: 84rpx;
margin: auto;
font-size: 31rpx;
font-family: PingFang SC;
font-weight: bold;
color: #000000;
padding-left: 26rpx;
span {
width: 173rpx;
height: 40rpx;
background: #D6F2F0;
border-radius: 20rpx 0rpx 0rpx 20rpx;
padding: 0 24rpx;
font-size: 25rpx;
font-family: PingFang SC;
font-weight: 500;
color: #00AEA0;
box-sizing: border-box;
img {
width: 20rpx;
height: 20rpx;
}
}
}
.orderItem {
font-size: 24rpx;
font-family: PingFang SC;
font-weight: 500;
color: #000000;
width: 20%;
text-align: center;
img {
width: 62rpx;
height: 62rpx;
margin-bottom: 10rpx;
}
}
}
.lxwm {
width: 696rpx;
height: 447rpx;
background: #FFFFFF;
box-shadow: 0px 4rpx 12rpx 0px rgba(150, 149, 149, 0.3);
border-radius: 20rpx;
margin: auto;
padding: 27rpx 19rpx 0 19rpx;
font-size: 31rpx;
font-family: PingFang SC;
font-weight: bold;
color: #000000;
.midBox {
padding: 26rpx 43rpx 21rpx 44rpx;
box-sizing: border-box;
img {
width: 265rpx;
height: 252rpx;
border-radius: 15rpx;
}
}
.botBox {
padding: 0 30rpx 0 51rpx;
font-size: 27rpx;
font-family: PingFang SC;
font-weight: bold;
color: #000000;
}
}
.cygj {
width: 697rpx;
background: #FFFFFF;
border-radius: 20rpx;
margin: 30rpx auto 0;
padding: 0 27rpx;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #000000;
box-sizing: border-box;
.cyItem {
height: 106rpx;
display: flex;
align-items: center;
border-bottom: 1rpx solid #D8D8D8;
.headIcon {
width: 42rpx;
height: 42rpx;
margin-right: 15rpx;
}
.rightIcon {
width: 20rpx;
height: 20rpx;
}
}
.cyItem:last-child {
border: none;
}
}
.my-swipe {
// width: 100%;
margin: 0 30rpx;
margin-top: 37.3rpx;
}
swiper {
height: 111rpx !important;
}
.dfkBox {
width: 100%;
height: 111rpx;
background: #F7F7F7;
margin: 0 auto 30.64rpx;
// padding: 0.25rem;
display: flex;
}
.dfkBox image {
width: 137rpx;
height: 111rpx;
border-radius: 13rpx;
flex-shrink: 0;
// margin-right: 16.7rpx;
}
.dfkBox .contentBox {
padding-left: 5rpx;
padding-right: 5rpx;
height: 111rpx;
width: 100%;
display: flex;
justify-content: space-around;
align-items: center;
}
// .van-count-down{
// font-size: 0.39rem;
// font-family: PingFang SC;
// font-weight: 400;
// color: #FB6E4D;
// }
.orderBtn {
width: 152rpx;
height: 56rpx;
background: linear-gradient(270deg, #FC5109, #FDC43A);
;
border-radius: 28rpx;
text-align: center;
line-height: 56rpx;
font-size: 27rpx;
font-family: PingFang SC;
font-weight: 400;
color: #FFFFFF;
// margin-left: 50rpx;
// margin-right: 20rpx;
}
#contact {
-webkit-tap-highlight-color: transparent;
background-color: rgba(0, 0, 0, 0);
border-radius: 0;
box-sizing: border-box;
color: transparent;
cursor: pointer;
overflow: hidden;
padding: 0 27rpx;
position: relative;
text-align: center;
text-decoration: none;
border: transparent 0px solid;
display: flex;
align-items: center;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #000000;
}
button::after {
border: none;
background-color: rgba(0, 0, 0, 0);
}
.more {
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, .5);
position: fixed;
top: 0;
left: 0;
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
image {
width: 646rpx;
height: 959rpx;
}
img {
width: 80rpx;
height: 80rpx;
}
}
.consult-popup {
width: 487rpx;
height: 367rpx;
background: #F0F0F0;
border-radius: 20rpx;
padding: 65rpx 0 23rpx;
font-weight: bold;
font-size: 32rpx;
color: #000000;
text-align: center;
.consult-subtitle {
font-weight: 500;
font-size: 27rpx;
color: #333333;
margin-top: 43rpx;
}
.consult-btns {
display: flex;
margin-top: 75rpx;
view {
width: 50%;
font-weight: bold;
font-size: 32rpx;
color: #00AEA0;
line-height: 54rpx;
}
view:first-child {
border-right: 1rpx solid #D8D8D8;
color: #000000;
}
}
}
.confirm{
height: 58rpx;
line-height: 58rpx;
background: none;
font-weight: bold;
font-size: 32rpx;
color: #00AEA0;
}
</style>

196
static/js/mmmm-image-tools/index.js

@ -0,0 +1,196 @@
function getLocalFilePath(path) {
if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path.indexOf('_downloads') === 0) {
return path
}
if (path.indexOf('file://') === 0) {
return path
}
if (path.indexOf('/storage/emulated/0/') === 0) {
return path
}
if (path.indexOf('/') === 0) {
var localFilePath = plus.io.convertAbsoluteFileSystem(path)
if (localFilePath !== path) {
return localFilePath
} else {
path = path.substr(1)
}
}
return '_www/' + path
}
function dataUrlToBase64(str) {
var array = str.split(',')
return array[array.length - 1]
}
var index = 0
function getNewFileId() {
return Date.now() + String(index++)
}
function biggerThan(v1, v2) {
var v1Array = v1.split('.')
var v2Array = v2.split('.')
var update = false
for (var index = 0; index < v2Array.length; index++) {
var diff = v1Array[index] - v2Array[index]
if (diff !== 0) {
update = diff > 0
break
}
}
return update
}
export function pathToBase64(path) {
return new Promise(function(resolve, reject) {
if (typeof window === 'object' && 'document' in window) {
if (typeof FileReader === 'function') {
var xhr = new XMLHttpRequest()
xhr.open('GET', path, true)
xhr.responseType = 'blob'
xhr.onload = function() {
if (this.status === 200) {
let fileReader = new FileReader()
fileReader.onload = function(e) {
resolve(e.target.result)
}
fileReader.onerror = reject
fileReader.readAsDataURL(this.response)
}
}
xhr.onerror = reject
xhr.send()
return
}
var canvas = document.createElement('canvas')
var c2x = canvas.getContext('2d')
var img = new Image
img.onload = function() {
canvas.width = img.width
canvas.height = img.height
c2x.drawImage(img, 0, 0)
resolve(canvas.toDataURL())
canvas.height = canvas.width = 0
}
img.onerror = reject
img.src = path
return
}
if (typeof plus === 'object') {
plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), function(entry) {
entry.file(function(file) {
var fileReader = new plus.io.FileReader()
fileReader.onload = function(data) {
resolve(data.target.result)
}
fileReader.onerror = function(error) {
reject(error)
}
fileReader.readAsDataURL(file)
}, function(error) {
reject(error)
})
}, function(error) {
reject(error)
})
return
}
if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {
wx.getFileSystemManager().readFile({
filePath: path,
encoding: 'base64',
success: function(res) {
resolve('data:image/png;base64,' + res.data)
},
fail: function(error) {
reject(error)
}
})
return
}
reject(new Error('not support'))
})
}
export function base64ToPath(base64) {
return new Promise(function(resolve, reject) {
if (typeof window === 'object' && 'document' in window) {
base64 = base64.split(',')
var type = base64[0].match(/:(.*?);/)[1]
var str = atob(base64[1])
var n = str.length
var array = new Uint8Array(n)
while (n--) {
array[n] = str.charCodeAt(n)
}
return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], { type: type })))
}
var extName = base64.split(',')[0].match(/data\:\S+\/(\S+);/)
if (extName) {
extName = extName[1]
} else {
reject(new Error('base64 error'))
}
var fileName = getNewFileId() + '.' + extName
if (typeof plus === 'object') {
var basePath = '_doc'
var dirPath = 'uniapp_temp'
var filePath = basePath + '/' + dirPath + '/' + fileName
if (!biggerThan(plus.os.name === 'Android' ? '1.9.9.80627' : '1.9.9.80472', plus.runtime.innerVersion)) {
plus.io.resolveLocalFileSystemURL(basePath, function(entry) {
entry.getDirectory(dirPath, {
create: true,
exclusive: false,
}, function(entry) {
entry.getFile(fileName, {
create: true,
exclusive: false,
}, function(entry) {
entry.createWriter(function(writer) {
writer.onwrite = function() {
resolve(filePath)
}
writer.onerror = reject
writer.seek(0)
writer.writeAsBinary(dataUrlToBase64(base64))
}, reject)
}, reject)
}, reject)
}, reject)
return
}
var bitmap = new plus.nativeObj.Bitmap(fileName)
bitmap.loadBase64Data(base64, function() {
bitmap.save(filePath, {}, function() {
bitmap.clear()
resolve(filePath)
}, function(error) {
bitmap.clear()
reject(error)
})
}, function(error) {
bitmap.clear()
reject(error)
})
return
}
if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {
var filePath = wx.env.USER_DATA_PATH + '/' + fileName
wx.getFileSystemManager().writeFile({
filePath: filePath,
data: dataUrlToBase64(base64),
encoding: 'base64',
success: function() {
resolve(filePath)
},
fail: function(error) {
reject(error)
}
})
return
}
reject(new Error('not support'))
})
}

11
static/js/mmmm-image-tools/package.json

@ -0,0 +1,11 @@
{
"id": "mmmm-image-tools",
"name": "image-tools",
"version": "1.4.0",
"description": "图像转换工具,可用于图像和base64的转换",
"keywords": [
"base64",
"保存",
"图像"
]
}

3
static/js/request.js

@ -15,7 +15,8 @@ const getToken = () => {
return userInfo.token;
}
}
return store.state.user.userInfo.token;
// return store.state.user.userInfo.token;
return "9e78c382-3fe9-4d54-82b2-27f83e1d5f24"
};
// 定义错误处理函数

186
subPackages/service/service.vue

@ -0,0 +1,186 @@
<template>
<view class="bg">
<view class="line-list">
<view class="form">
<view class="form-item">
<view class="form-title">
姓名:
</view>
<input type="text" v-model="form.name" placeholder="请填写您的姓名"
placeholder-style="color:#999999;font-size:31rpx">
</view>
<view class="form-item">
<view class="form-title">
手机号:
</view>
<input type="number" v-model="form.phone" placeholder="请填写您的联系方式" maxlength="11"
placeholder-style="color:#999999;font-size:31rpx">
</view>
</view>
<view class="content">
<view class="content-name">
反馈内容:
</view>
<textarea cols="30" rows="10" v-model="form.content" placeholder="请填写具体的问题内容"
placeholder-style="color: #999999;font-size: 31rpx;" maxlength="500">
</textarea>
<span>{{form.content.length}}/500</span>
</view>
</view>
<view :class="['btn',{'actBtn':form.name&&form.phone&&form.content}]" @click="sendForm()">
提交
</view>
</view>
</template>
<script>
export default {
data() {
return {
form: {
name: '',
phone: '',
content: '',
},
};
},
onLoad() {
},
methods: {
sendForm() {
if (!this.idChinaName(this.form.name)) {
uni.showToast({
title: "请输入正确的姓名",
icon: "none"
})
return false
}
if (!this.IsTel(this.form.phone)) {
uni.showToast({
title: "请输入正确的手机号",
icon: "none"
})
return false
}
if (this.form.content.replace(/\s*/g, "").length < 15) {
uni.showToast({
title: "请输入15字以上的建议或反馈",
icon: "none"
})
return false
}
this.Post({
username: this.form.name,
mobile: this.form.phone,
content: this.form.content
}, "/api/suggest/add").then(res => {
if (res) {
uni.showToast({
title: res.msg,
icon: "none"
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
view {
box-sizing: border-box;
font-family: PingFang SC;
}
.bg {
min-height: 100vh;
background-color: rgba(255, 255, 255, 1);
padding-top: 35rpx;
overflow: hidden;
padding-bottom: 160rpx;
}
.line-list {
width: 697rpx;
margin: 0 auto;
.form {
.form-item {
width: 697rpx;
height: 120rpx;
display: flex;
align-items: center;
border-bottom: #D8D8D8 solid 1rpx;
.form-title {
width: 150rpx;
font-size: 31rpx;
font-weight: 500;
color: #333333;
}
}
}
.content {
margin: 0 auto;
margin-top: 36rpx;
width: 697rpx;
position: relative;
span {
font-weight: 400;
font-size: 24rpx;
color: #999999;
position: absolute;
right: 22rpx;
bottom: 14rpx;
}
.content-name {
font-size: 31rpx;
font-weight: 500;
color: #333333;
}
textarea {
width: 657rpx;
height: 243rpx;
background: #F7F7F7;
border-radius: 13rpx;
padding: 20rpx;
margin-top: 42rpx;
font-size: 31rpx;
font-weight: 500;
color: #333333;
padding-bottom: 45rpx;
}
}
}
.btn {
width: 697rpx;
height: 80rpx;
background: #CCCCCC;
border-radius: 40rpx;
margin: 0 auto;
margin-top: 160rpx;
text-align: center;
line-height: 80rpx;
font-size: 36rpx;
font-weight: 500;
color: #FFFFFF;
position: absolute;
left: 26.5rpx;
bottom: 46rpx;
}
.actBtn {
background: #00AEA0;
}
</style>

164
subPackages/user/bindTel.vue

@ -0,0 +1,164 @@
<template>
<view class="bg">
<view class="input-box">
<span>手机号:</span>
<input type="number" v-model="mobile" placeholder="请输入新手机号" maxlength="11" />
</view>
<view class="input-box">
<span>验证码:</span>
<input type="number" v-model="code" placeholder="请输入短信验证码" maxlength="6" />
<view class="btn" @click="getCode">{{text}}</view>
</view>
<view class="btn bottom-btn" @click="save">保存</view>
</view>
</template>
<script>
export default {
name: "BindTel",
data: function() {
return {
mobile: '',
code: '',
sendFlag: true,
timer: null,
text: "获取验证码"
}
},
mounted: function() {
// this.wxShare();
},
methods: {
save: function() {
if (!this.mobile || !this.IsTel(this.mobile)) {
uni.showToast({
title: "请输入正确的手机号码",
icon: 'none'
})
return;
}
if (!this.code) {
uni.showToast({
title: "请输入验证码",
icon: 'none'
})
return;
}
this.Post({
code: this.code,
mobile: this.mobile
}, '/api/user/bindMobileCode').then(res => {
if (res.code == 1) {
uni.showModal({
title: '提示',
content: '保存成功!',
success: res => {
if (res.confirm) {
this.goBack()
}
}
})
}
}).catch(err => {
console.log('err:', err)
})
},
getCode: function() {
if (!this.sendFlag) return;
if (!this.mobile || !this.IsTel(this.mobile)) {
uni.showToast({
title: '请输入正确的手机号码',
icon: 'none'
})
return;
}
this.sendFlag = false;
this.Post({
mobile: this.mobile
}, '/api/user/bindMobileSendMsm').then(res => {
if (res.code == 1) {
//
this.text = "发送成功";
let time = 60;
//
this.timer = setInterval(() => {
time--;
this.text = time + "s后重新获取";
if (time == 0) {
clearInterval(this.timer);
this.timer = null;
this.text = "重新发送";
this.sendFlag = true;
}
}, 1000);
} else {
this.text = "重新发送";
this.sendFlag = true;
}
})
}
}
}
</script>
<style scoped>
.bg {
min-height: 100vh;
text-align: center;
}
.input-box {
font-size: 32rpx;
margin: 0 30rpx;
height: 124rpx;
display: flex;
align-items: center;
border-bottom: 1rpx solid #CECECE;
}
.input-box span {
margin-right: 20rpx;
flex-shrink: 0;
white-space: normal;
}
.input-box input {
flex: 1;
display: block;
width: 100%;
font-size: 32rpx;
margin-right: 10rpx;
min-width: 100rpx;
text-align: left;
}
.btn {
color: black;
width: 200rpx;
height: 53rpx;
line-height: 53rpx;
background: rgba(127, 212, 145, 1);
border-radius: 27rpx;
color: #FFFFFF;
}
.input-box .btn {
padding: 0 10rpx;
font-size: 26rpx;
flex-shrink: 0;
}
.bottom-btn {
color: black;
margin: 50rpx auto;
line-height: 80rpx;
position: relative;
font-size: 34rpx;
text-align: center;
width: 333rpx;
height: 80rpx;
background: linear-gradient(90deg, #9EE4FE, #7FD491);
border-radius: 40rpx;
color: #FFFFFF;
}
</style>

87
subPackages/user/changeNickname.vue

@ -0,0 +1,87 @@
<template>
<view class="bg">
<view class="nickname-box">
<span>姓名</span>
<input v-model="nickname" type="text" placeholder="请输入您的姓名" />
</view>
<view class="btn" @click="save">保存修改</view>
</view>
</template>
<script>
export default {
name: "changeNickname",
data: function() {
return {
nickname: ""
}
},
methods: {
save: function() {
if (!this.nickname) {
uni.showToast({
title: '请输入昵称',
icon: 'none'
})
return;
}
this.Post({
nickname: this.nickname
}, '/api/user/profile').then(res => {
console.log(res)
if (res.code == 1) {
uni.showModal({
title: '提示',
content: '保存成功!',
success: res => {
if (res.confirm) {
this.goBack()
}
}
})
}
})
}
}
}
</script>
<style scoped>
.bg {
min-height: 100vh;
}
.nickname-box {
display: flex;
padding: 10rpx 30rpx;
align-items: center;
background: white;
margin-bottom: 100rpx;
font-size: 30rpx;
height: 70rpx;
}
.nickname-box span {
flex-shrink: 0;
}
.nickname-box input {
flex: 1;
font-size: 30rpx;
display: block;
}
.btn {
color: black;
margin: 0 auto;
line-height: 80rpx;
position: relative;
font-size: 34rpx;
text-align: center;
width: 333rpx;
height: 80rpx;
background: linear-gradient(90deg, #9EE4FE, #7FD491);
border-radius: 40rpx;
color: #FFFFFF;
}
</style>

126
subPackages/user/collect.vue

@ -0,0 +1,126 @@
<template>
<view class="bg">
<view v-for="(item,index) in list" :key="index" class="item" @click="gotoDetail(item)">
<image :src="showImg(item.arr.image)" mode="aspectFill"></image>
<view class="content flex-column">
<view class="title text-overflowRows">{{item.arr.title}}</view>
<view class="price" v-if="item.arr.low_money || item.arr.price">{{(item.arr.low_money || item.arr.price) / 100}}</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
list: []
}
},
onShow() {
this.getList()
},
methods: {
getList() {
this.Post({
offset: 0,
limit: 100
},'/api/scenic/getCollectList').then(res => {
this.list = res.data
})
},
// type
gotoDetail(item) {
let res = this.goOtherDetail(item.arr)
if (res) {
return
}
// 1 2 3 4 5 6线 7
let url = ''
switch (item.type){
case 1:
url= '/subPackages/travelGuide/detail?id=' + item.arr.id
break;
case 2:
url= '/subPackages/ticketBooking/detail?id=' + item.arr.id
break;
case 3:
url= '/subPackages/food/foodDetail?id=' + item.arr.id
break;
case 4:
url= '/subPackages/hotelHomestay/detail?id=' + item.arr.id
break;
case 5:
url= '/subPackages/techan/detail?id=' + item.arr.id
break;
case 6:
url= ''
break;
case 7:
url= '/subPackages/eventCalendar/detail?id=' + item.arr.id
break;
default:
break;
}
this.gotoPath(url)
}
}
}
</script>
<style lang="scss" scoped>
.bg {
min-height: 100vh;
padding: 20rpx auto 100rpx;
background: #F7F7F7;
}
.item {
width: 697rpx;
height: 213rpx;
padding: 6rpx 20rpx 6rpx 6rpx;
border-radius: 20rpx;
display: flex;
margin: 0 auto 20rpx;
background: #FFFFFF;
image {
width: 200rpx;
height: 200rpx;
background: #DFEDE0;
border-radius: 13rpx;
}
.content {
flex: 1;
margin-left: 15rpx;
padding: 10rpx 0;
height: 200rpx;
justify-content: space-between;
.title {
font-weight: bold;
font-size: 31rpx;
color: #333333;
}
.price {
font-weight: bold;
font-size: 40rpx;
color: #FF3D3D;
text-align: right;
}
.price::before {
content: '¥';
font-size: 31rpx;
color: #FF3D3D;
}
.price::after {
content: '起';
font-weight: 500;
font-size: 27rpx;
color: #999999;
}
}
}
</style>

494
subPackages/user/coupon.vue

@ -0,0 +1,494 @@
<template>
<view class="bg">
<!-- 导航栏 -->
<view class="nav-list">
<view :class="['nav-item',{active:index==navActive}]" v-for="(item,index) in navList" :key="index"
@click="changeNav(index)">{{ item.name }}
</view>
</view>
<!-- 列表 -->
<view class="coupon-list" v-if="coupon.length>0">
<view :class="['coupon-item',{'hasUse':navActive!=0}]" v-for="(item, index) in coupon" :key="index">
<!-- 分割线上部分 -->
<view class="item-top">
<view class="top-left">
<view class="price price-before" v-if="item.type == 1">
<span>{{item.discounts/100}}</span>
</view>
<view class="price" v-else>
<span>{{getPecenet(item.percent)}}</span>
</view>
<view class="subtitle">
{{item.min_limit/100}}元可用
</view>
</view>
<view class="top-right">
<view class="title">
{{item.title}}
</view>
<view class="time">
{{item.open_time.slice(0,10)}}-{{item.end_time.slice(0,10)}}可用
</view>
</view>
</view>
<!-- 分割线 -->
<view class="item-circle">
<view class="circle left"></view>
<view class="line"></view>
<view class="circle right"></view>
</view>
<!-- 分割线下部分 -->
<view class="item-bottom">
<view class="rules" @click="changeRules(item,index)">
<span v-if="!item.openRules">使用规则{{item.coupon_activity.note}}</span>
<view class="open" v-else>使用规则{{item.coupon_activity.note}}</view>
<!-- <span v-if="!item.openRules">使用规则{{item.content}}</span>
<view class="open" v-else>使用规则{{item.content}}</view> -->
<image v-if="!item.openRules" src="https://yjks.oss-cn-shanghai.aliyuncs.com/uploads/20230415/6a7630c176f976bb16674dde482779fb.png" mode=""></image>
<image v-else src="https://yjks.oss-cn-shanghai.aliyuncs.com/uploads/20230415/f0073b18b3ab88cac62de60411360fc1.png" mode=""></image>
</view>
<!-- <view class="use" @click="use" v-if="navActive==0">
去使用
</view>
<view class="use" v-else>
已失效
</view> -->
</view>
</view>
</view>
<view v-else class="noCoupon">
<img src="https://static.ticket.sz-trip.com/yandu/images/user/couponNo.png" class="no-couPon">
<view>暂无优惠券</view>
</view>
<!-- 兑换优惠券 -->
<!-- <view class="duihuan" @click="open">
兑换优惠券 >
</view> -->
<!-- 弹框 -->
<uni-popup ref="popup" type="center">
<view class="popupBox">
<view class="name">
兑换优惠券
</view>
<input type="text" v-model="password" placeholder="请输入兑换码">
<view class="btns">
<view class="cancel" @click="cancel">
取消
</view>
<span></span>
<view class="sub" @click="submitPassword">
兑换
</view>
</view>
</view>
</uni-popup>
</view>
</template>
<script>
export default {
data() {
return {
navList: [
{name: '可使用', id:"wait_use"},
{name: '已失效', id:"past"},
],
navActive:'', //
coupon:[],
// openRules: false,
password:''
}
},
onShow() {
this.getList(this.navList[0])
},
methods: {
getPecenet:function (percent) {
if(percent>=100 || percent<=0) return "";
percent = 100 - percent;
if(percent%10==0){
percent = percent/10;
}
return percent
},
use() {
uni.switchTab({
url: "/pages/index/index",
});
},
submitPassword() {
console.log('提交的兑换码',this.password);
let that = this
that.password = that.password.trim()
that.$refs.popup.close()
if (that.password== '') {
uni.showToast({
title: '请输入优惠券领取卡号',
icon: 'none'
})
return
}
that.Post({
card_key: that.password
}, "/api/coupon/getCoupon").then((res) => {
console.log(res.code);
if (res.code == 200) {
that.coupon = []
this.getList(this.navList[0])
uni.showToast({
title: '兑换成功',
icon: 'none'
})
} else{
uni.showToast({
title: res.msg,
icon: 'none'
})
}
});
that.password = ''
},
cancel() {
this.password = ''
this.$refs.popup.close()
},
open() {
this.$refs.popup.open('center')
},
// 使
changeRules(item,index){
let list = this.coupon
list.forEach((Item, Index) => {
if (Index === index) {
Item.openRules = !Item.openRules
} else {
Item.openRules = false
}
})
this.coupon = list
this.$forceUpdate()
},
//
showNoPriceNew(price) {
if (price && price > 0) {
return (price / 100)
} else {
return '0'
}
},
//
changeNav(index){
this.navActive=index
this.getList(this.navList[this.navActive])
},
//
getList(item) {
let that = this
that.Post({
status: item.id,
offset: 0,
limit: 100,
}, "/api/coupon/getUserCoupon").then((res) => {
if (res) {
console.log(res.data);
that.coupon = res.data
}
});
}
}
}
</script>
<style lang="scss" scoped>
.bg {
background: #F7F7F7;
min-height: 100vh;
}
/*导航*/
.nav-list {
width: 100%;
height: 107rpx;
display: flex;
justify-content: space-around;
align-items: center;
position: fixed;
background: #FFFFFF;
}
.nav-list .nav-item {
text-align: center;
line-height: 106rpx;
box-sizing: border-box;
font-size: 31rpx;
font-weight: bold;
padding: .23rpx 0;
color: #333333;
}
.nav-list .nav-item.active {
color: #71B580;
border-bottom: 7rpx solid #71B580;
}
.coupon-list{
/* width: 100%; */
position: absolute;
top: 115rpx;
padding: 0 26.67rpx;
background: #F7F7F7;
min-height: 100vh;
padding-bottom: 30rpx;
}
.coupon-list .coupon-item {
background: #ffffff;
margin-top: 20rpx;
border-radius: 13rpx;
}
.coupon-list .coupon-item .item-top {
display: flex;
padding: 30rpx 16rpx 24rpx 36rpx;
align-items: center;
}
.coupon-item .item-top .price {
font-size: 25rpx;
font-weight: bold;
color: #FC5209;
display: flex;
align-items: baseline;
justify-content: center;
}
.coupon-item .item-top .price span {
font-size: 60rpx;
margin-right: 6.67rpx;
}
.top-left .subtitle {
width: 100%;
font-size: 24rpx;
color: #FC5209;
padding-left: 6rpx;
overflow: hidden;
white-space: nowrap;
}
.top-left .price-before::before{
content: '¥';
font-size: 32rpx;
}
.top-right {
margin-left: 46.67rpx;
font-size: 25rpx;
font-weight: 500;
color: #111;
}
.top-right .title {
margin-bottom: 26rpx;
font-size: 31rpx;
font-weight: bold;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.coupon-list .coupon-item .item-circle {
/* position: relative; */
line-height: 1rpx;
height: 1rpx;
width: 692rpx;
}
.coupon-list .coupon-item .item-circle .line {
border-bottom: 1px dashed #ccc;
/* position: absolute; */
top: 0;
bottom: 0;
left: 0;
right: 0;
/* width: calc(100% - 1rem); */
height: .1rpx;
margin: auto;
z-index: 9;
}
.coupon-list .coupon-item .item-circle .circle {
position: absolute;
top: 0;
bottom: 0;
margin: auto;
border-radius: 50%;
background: #ccc;
width: .46rpx;
height: .46rpx;
z-index: 10;
}
.coupon-list .coupon-item .item-circle .circle.left{
left:-.23rpx;
}
.coupon-list .coupon-item .item-circle .circle.right{
right: -.23rpx;
}
.item-bottom {
padding: 16rpx 20rpx;
display: flex;
align-items: flex-start;
justify-content: space-between;
}
.item-bottom .rules {
font-size: 24rpx;
font-weight: 500;
color: #999;
display: flex;
line-height: 47rpx;
}
.item-bottom .rules span {
width: 569rpx;
overflow: hidden; //
white-space: nowrap; //
text-overflow: ellipsis;
}
.item-bottom .rules image {
width: 20rpx;
height: 20rpx;
margin-left: 68rpx;
margin-top: 15rpx;
}
.item-bottom .use {
width: 133rpx;
height: 47rpx;
border: 1px solid #FC5209;
border-radius: 23rpx;
text-align: center;
font-size: 25rpx;
font-weight: 500;
color: #fc5209;
line-height: 47rpx;
}
.open {
width: 569rpx;
min-height: 30rpx;
flex-wrap: wrap;
}
.duihuan {
width: 293rpx;
height: 67rpx;
background: #fff;
box-shadow: 0rpx 0rpx 7rpx 0rpx rgba(153,153,153,0.18);
border-radius: 33rpx;
font-size: 31rpx;
font-weight: 500;
color: #07C49B;
text-align: center;
line-height: 67rpx;
margin-left: 228.67rpx;
position: fixed;
bottom: 52.67rpx;
}
.top-left {
width: 140rpx;
}
.top-left .price {
width: 100%;
/* overflow: hidden; */
white-space: nowrap;
}
.popupBox {
background: #fff;
border-radius: 20rpx;
padding: 40.67rpx 39.33rpx 35.33rpx 40rpx;
}
.popupBox .name {
font-size: 35rpx;
color: #111;
font-weight: bold;
margin-bottom: 57.33rpx;
text-align: center;
}
.popupBox input {
width: 454rpx;
height: 81rpx;
border: 1px solid #D8D8D8;
border-radius: 7rpx;
font-size: 31rpx;font-weight: 500;
color: #999999;
line-height: 81rpx;
margin: 0 39.33rpx 72.67rpx 40rpx;
text-align: center;
}
.popupBox .btns {
display: flex;
align-items: center;
font-size: 35rpx;
justify-content: space-around;
}
.popupBox .btns .cancel {
color: #111;
}
.popupBox .btns span {
width: 1rpx;
height: 53rpx;
background: #D8D8D8;
}
.popupBox .btns .sub {
color: #07C49B;
}
.hasUse {
color: #999 !important;
}
.hasUse .item-top .top-left .price{
color: #999 !important;
}
.hasUse .item-top .top-left .subtitle{
color: #999 !important;
}
.hasUse .item-top .top-right .title {
color: #999 !important;
}
.hasUse .item-top .top-right .time {
color: #999 !important;
}
.hasUse .item-bottom .use {
border: 1px solid #B3B3B3 !important;
color: #999999 !important;
}
.noCoupon{
padding-top: 524rpx;
text-align: center;
font-size: 31rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
.no-couPon{
width: 173rpx;
height: 173rpx;
margin-bottom: 15rpx;
}
}
</style>

386
subPackages/user/myAddressAdd.vue

@ -0,0 +1,386 @@
<template>
<view class="bg">
<view class="list-forms">
<view class="list-item">
<view class="list-item-title">姓名:</view>
<view class="list-item-input"><input type="text" v-model="username" placeholder="请输入姓名" /></view>
</view>
<view class="list-item">
<view class="list-item-title">手机号:</view>
<view class="list-item-input"><input type="number" v-model="mobile" placeholder="请输入手机号" maxlength="11"
/></view>
</view>
<view class="list-item" style="position: relative;">
<view class="list-item-title">选择地区:</view>
<view class="list-item-input3" style="flex: 1;">
<picker mode="multiSelector" :range="newProvinceDataList" range-key="name" @change="changeArea" @columnchange="pickerColumnchange"
style="position: relative;z-index: 2;">
<input type="text" readonly style="text-align: right;font-size: 35rpx;position: relative;z-index: -1;"
v-model="citySeld" disabled="true" placeholder="请选择地区"/>
</picker>
</view>
</view>
<view class="list-item">
<view class="list-item-title">详细地址:</view>
<view class="list-item-input"><input type="text" v-model="detailAddr" placeholder="请输入详细地址" /></view>
</view>
<view class="list-item">
<view class="list-item-title">设为默认:</view>
<view class="list-item-switch">
<switch :checked="idDefault" @change="switchChange" color="#7FD491"/>
</view>
</view>
<view class="list-item-btn">
<view class="list-item-post" @click="postSave()">保存</view>
</view>
</view>
</view>
</template>
<script>
import District from 'ydui-district/dist/jd_province_city_area_id';
export default {
data() {
return {
username: '',
mobile: '',
citySeld: '',
detailAddr: '',
idDefault: false,
title: '新增收货地址',
show: false,
district: District, //
ready: false,
province: null,
city: null,
area: '',
provinceId: null,
cityId: null,
areaId: null,
columns: [],
id: '',
newProvinceDataList:[
[],[],[]
],
multiIndex: [0, 0, 0],
}
},
onLoad(option){
this.id = option.id
if (option.id > 0) {
this.title = '编辑收货地址'
this.getDetail()
}
else {
this.getSeldCityList()
}
},
methods: {
switchChange(e){
this.idDefault = e.detail.value
},
changeArea(e){
//
this.multiIndex = e.detail.value;
this.citySeld = this.newProvinceDataList[0][this.multiIndex[0]].name + this.newProvinceDataList[1][this.multiIndex[1]].name + this.newProvinceDataList[2][this.multiIndex[2]].name
this.provinceId = this.newProvinceDataList[0][this.multiIndex[0]].id
this.cityId = this.newProvinceDataList[1][this.multiIndex[1]].id
this.areaId = this.newProvinceDataList[2][this.multiIndex[2]].id
},
getSeldCityList() {
let that = this
that.Post({}, '/api/areas/getAll').then(res => {
if (res.code === 1) {
var data = res.data;
var result = {};
for (var i = 0; i < data.length; i++) {
var item = data[i];
if (item.parent_id == 0) {
continue;
}
//
if (item.parent_id == "1") {
result[item.id.toString()] = {};
result[item.id.toString()].children = []
result[item.id.toString()].name = item.name;
result[item.id.toString()].id = item.id;
} else if (result[item.parent_id.toString()]) {
//
var t = {
id: item.id,
name: item.name,
children: []
}
result[item.parent_id.toString()].children.push(t)
} else {
//
var k = {
id: item.id,
name: item.name
}
for (var j = 0; j < result[item.parent_id.toString().substr(0, 2) + "0000"].children
.length; j++) {
if (result[item.parent_id.toString().substr(0, 2) + "0000"].children[j].id == item
.parent_id) {
result[item.parent_id.toString().substr(0, 2) + "0000"].children[j].children.push(k)
}
}
}
}
var r = [];
//ObjectArray
for (var i in result) {
r.push(result[i]);
}
//
that.district = r;
let arr = []
let arr1 = []
let arr2 = []
that.district.forEach(item => {
arr.push(item)
})
that.district[0].children.forEach(item => {
arr1.push(item)
})
that.district[0].children[0].children.forEach(item => {
arr2.push(item)
})
that.columns = arr
//
that.ready = true;
console.log(this.columns)
for(let i=0; i<this.columns.length; i++){
this.newProvinceDataList[0].push({name:this.columns[i].name,id:this.columns[i].id});
}
console.log(this.columns[0].children)
for(let i=0; i<this.columns[0].children.length; i++){
this.newProvinceDataList[1].push({name:this.columns[0].children[i].name,id:this.columns[0].children[i].id});
}
for(let i=0; i<this.columns[0].children[0].children.length; i++){
this.newProvinceDataList[2].push({name:this.columns[0].children[0].children[i].name,id:this.columns[0].children[0].children[i].id});
}
}
})
},
//
pickerColumnchange(e){
//
// console.log(e.detail.column);
//
// console.log(e.detail.value)
//
if(e.detail.column === 0){
this.multiIndex[0] = e.detail.value
// console.log('');
// this.newProvinceDataList[1] = [];
this.newProvinceDataList[1] = this.columns[this.multiIndex[0]].children.map((item,index)=>{
// console.log(item)
return item
})
// console.log(this.multiIndex)
if(this.columns[this.multiIndex[0]].children.length === 1){
this.newProvinceDataList[2] = this.columns[this.multiIndex[0]].children[0].children.map((item,index)=>{
// console.log(item)
return item
})
}else{
this.newProvinceDataList[2] = this.columns[this.multiIndex[0]].children[this.multiIndex[1]].children.map((item,index)=>{
// console.log(item)
return item
})
}
//
this.multiIndex.splice(1, 1, 0)
this.multiIndex.splice(2, 1, 0)
}
//
if(e.detail.column === 1){
this.multiIndex[1] = e.detail.value
// console.log('');
// console.log(this.multiIndex)
this.newProvinceDataList[2] = this.columns[this.multiIndex[0]].children[this.multiIndex[1]].children.map((item,index)=>{
// console.log(item)
return item
})
//
this.multiIndex.splice(2, 1, 0)
}
//
if(e.detail.column === 2){
this.multiIndex[2] = e.detail.value
// console.log('')
// console.log(this.multiIndex)
}
},
getDetail() {
this.Post({
id: this.id
}, "/api/user/contactDetail").then(res => {
res = res.data;
if (res && res.id > 0) {
this.username = res.name
this.mobile = res.tel
this.idDefault = res.is_default == 1 ? true : false
this.provinceId = res.province_id
this.cityId = res.city_id
this.areaId = res.district_id
this.citySeld = res.province_text + '' + res.city_text + '' + res.district_text
this.detailAddr = res.detail_addr;
this.getSeldCityList();
}
})
},
postSave() {
this.username = this.username.trim()
this.mobile = this.mobile.trim()
this.detailAddr = this.detailAddr.trim()
if (this.username.length < 1) {
uni.showToast({
title: '请输入姓名',
icon: 'none'
})
return
}
if (this.username.length > 6) {
uni.showToast({
title: '姓名最多6个字',
icon: 'none'
})
return
}
if (!this.IsTel(this.mobile)) {
uni.showToast({
title: '请输入正确的手机号',
icon: 'none'
})
return
}
if (this.citySeld.length < 1) {
uni.showToast({
title: '请选择地区',
icon: 'none'
})
return
}
if (this.detailAddr.length < 2) {
uni.showToast({
title: '请输入具体地址',
icon: 'none'
})
return
}
this.Post({
name: this.username,
tel: this.mobile,
is_default: this.idDefault ? '1' : '0',
province_id: this.provinceId,
city_id: this.cityId,
district_id: this.areaId,
detail_addr: this.detailAddr,
id: this.id || null
},'/api/user/' + (this.id > 0 ? 'edit' : 'add') + 'Consignee').then(res => {
if(res.code == 1){
uni.setStorageSync('addressNow',JSON.stringify(res.data))
uni.showModal({
title: '提示',
content: this.id>0?'编辑成功':'添加成功',
showCancel: false,
success: res => {
if(res.confirm){
uni.navigateBack({})
}
}
})
}else{
uni.showModal({
title: '提示',
content: res.msg,
showCancel: false,
success: res => {
}
})
}
})
}
}
}
</script>
<style scoped>
.bg {
min-height: 100vh;
background-color: white;
display: flex;
flex-direction: column;
}
.list-forms {
display: flex;
flex-direction: column;
border-top: 1rpx solid #D8D8D8;
padding: 20rpx 40rpx;
box-sizing: content-box
}
.list-item {
display: flex;
border-bottom: 1rpx solid #D8D8D8;
padding: 30rpx 0;
height: 60rpx;
align-items: center;
box-sizing: content-box
}
.list-item-title {
width: 150rpx;
font-size: 31rpx;
margin-right: 20rpx;
}
.list-item-input {
flex: 1;
}
.list-item-input input {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
border: 0;
background-color: transparent;
line-height: 34rpx;
font-size: 34rpx;
text-align: right;
}
.list-item-input input::placeholder {
font-size: 26rpx;
}
.list-item-switch {
display: flex;
flex: 1;
justify-content: flex-end;
}
.list-item-btn {
display: flex;
justify-content: center;
margin-top: 20rpx;
}
.list-item-post {
display: flex;
color: #000;
font-size: 36rpx;
width: 697rpx;
height: 73rpx;
background: linear-gradient(90deg, #9EE4FE, #7FD491);
border-radius: 37rpx;
justify-content: center;
align-items: center;
margin-top: 650rpx;
}
</style>

247
subPackages/user/myContactsAdd.vue

@ -0,0 +1,247 @@
<template>
<view class="bg">
<view class="list-forms">
<view class="list-item">
<view class="list-item-title">姓名:</view>
<view class="list-item-input"><input type="text" v-model="username" placeholder="请输入姓名" /></view>
</view>
<view class="list-item">
<picker mode="selector" :range="idcardTypeList" range-key="title" @change="changeIdType">
<view class="list-item-title flex-center"
style="border: 1rpx solid #999999;border-radius: 7rpx;padding: 18rpx 19rpx;">{{idcardTypeValue}}
<image src="https://static.ticket.sz-trip.com/yandu/images/user/dui.png" mode=""
style="width: 40rpx;height: 40rpx;margin-left: 48rpx;"></image>
</view>
</picker>
<view class="list-item-input"><input type="text" v-model="idNumber" placeholder="请输入正确的证件号" /></view>
</view>
<view class="list-item">
<view class="list-item-title">手机号:</view>
<view class="list-item-input"><input type="number" v-model="mobile" placeholder="请输入手机号"
maxlength="11" /></view>
</view>
</view>
<view class="btn" @click="submit">保存</view>
</view>
</template>
<script>
export default {
data() {
return {
username: '',
mobile: '',
idNumber: '',
idcardTypeValue: '身份证',
show: false,
idcardTypeList: [],
document_type: 'DAM01001',
id: '',
type: ''
}
},
onLoad(option) {
if (option) {
this.id = option.id
}
if(option && option.type){
this.type = option.type
}
},
onShow() {
this.getIdcardTypeList()
if (this.id) {
this.getDetail()
}
// uni.setNavigationBarTitle({
// title: ''
// })
var pages = getCurrentPages();//
var beforePage = pages[pages.length - 2];//
if(beforePage.route == 'subPackages/scenic/scenicOrder' || beforePage.route == 'subPackages/venue/venueOrder'){
uni.setStorageSync('route', 1)
}
},
methods: {
getDetail() {
this.Post({
id: this.id
}, '/api/user/contactDetail').then(res => {
if (res.code === 1) {
res = res.data
if (res && res.id > 0) {
this.username = res.name
this.mobile = res.tel
this.idNumber = res.id_number
this.idDefault = res.is_default == 1 ? true : false
this.idcardType = res.idcard_type
this.idcardTypeValue = res.document_type_text
}
}
})
},
//
getIdcardTypeList() {
this.Post({}, '/api/user/getIdcardTypeList').then(res => {
this.idcardTypeList = res.data
})
},
//
changeIdType(e) {
this.idcardTypeValue = this.idcardTypeList[e.detail.value].title
this.document_type = this.idcardTypeList[e.detail.value].document_type
},
//
submit() {
this.username = this.username.trim()
this.mobile = this.mobile.trim()
this.idNumber = this.idNumber.trim()
if (this.username.length < 1) {
uni.showToast({
title: '请输入姓名',
icon: 'none'
})
return
}
if (!this.IsTel(this.mobile)) {
uni.showToast({
title: '请输入正确的手机号',
icon: 'none'
})
return
}
if (this.idcardTypeValue == '身份证') {
if (!this.idCardNumber(this.idNumber)) {
uni.showToast({
title: '请输入正确的身份证',
icon: 'none'
})
return
}
} else if (this.idcardTypeValue == '护照') {
if (!this.passportValid(this.idNumber)) {
uni.showToast({
title: '请输入正确的护照',
icon: 'none'
})
return
}
} else if (this.idcardTypeValue == '台胞证') {
if (!this.taiwanValid(this.idNumber)) {
uni.showToast({
title: '请输入正确的台胞证',
icon: 'none'
})
return
}
} else if (this.idcardTypeValue == '港澳通行证') {
if (!this.gangaoValid(this.idNumber)) {
uni.showToast({
title: '请输入正确的港澳通行证',
icon: 'none'
})
return
}
} else if (this.idcardTypeValue == '外国人永久居留证') {
if (!this.foreignerValid(this.idNumber)) {
uni.showToast({
title: '请输入正确的外国人永久居留证',
icon: 'none'
})
return
}
} else if (this.idcardTypeValue == '军官证') {
if (!this.officerValid(this.idNumber)) {
uni.showToast({
title: '请输入正确的军官证',
icon: 'none'
})
return
}
}
this.Post({
id: this.type == 'edit'?this.id:'',
id_number: this.idNumber,
name: this.username,
tel: this.mobile,
document_type: this.document_type
}, this.type=='edit'?'/api/user/editContact':'/api/user/addContact').then(res => {
if (res.code == 1) {
uni.showModal({
title: '提示',
content: '成功',
showCancel: false,
success: res => {
if (res.confirm) {
uni.navigateBack({})
}
}
})
}
})
}
}
}
</script>
<style scoped lang="scss">
.bg {
min-height: 100vh;
background-color: #FFFFFF;
position: relative;
}
.list-forms {
padding: 0 33rpx;
.list-item {
display: flex;
border-bottom: 1rpx solid #D8D8D8;
padding: 30rpx 0;
height: 60rpx;
box-sizing: content-box;
.list-item-title {
font-size: 34rpx;
margin-right: 20rpx;
}
.list-item-input {
flex: 1;
input {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
border: 0;
background-color: transparent;
line-height: 34rpx;
font-size: 34rpx;
text-align: right;
}
input::placeholder {
font-size: 26rpx;
}
}
}
}
.btn {
width: 697rpx;
height: 80rpx;
background: linear-gradient(90deg, #9EE4FE, #7FD491);
border-radius: 40rpx;
text-align: center;
line-height: 80rpx;
font-size: 36rpx;
font-family: PingFang SC;
font-weight: 500;
color: black;
position: absolute;
bottom: 53rpx;
left: 27rpx;
}
</style>

58
subPackages/user/privacy.vue

@ -0,0 +1,58 @@
<template>
<view class="bg">
<view class="list">
<view class="item" v-for="(item,index) in list" :key="item.id" @click="goInfo(item)">
{{item.name}}
</view>
</view>
</view>
</template>
<script>
export default{
data(){
return {
list:[{name:'用户协议',id:'10001'},{name:'隐私协议',id:'9999'},{name:'个人信息收集清单',id:'9997'}],
}
},
onShow() {
// this.Post({
// id: 9999
// },'/api/article/getArticleById').then(res => {
// this.content = res.data.content
// })
},
methods:{
goInfo(item){
uni.navigateTo({
url:'/subPackages/user/privacyInfo?id='+item.id
})
}
}
}
</script>
<style scoped lang="scss">
view{
box-sizing: border-box;
}
.list{
width: 698rpx;
background: #FFFFFF;
box-shadow: 0px 4rpx 12rpx 0px rgba(150,149,149,0.3);
border-radius: 18rpx;
margin: 0 auto;
margin-top: 20rpx;
padding:0 20rpx ;
}
.item{
width: 100%;
height: 93rpx;
border-bottom: 1rpx solid #EEEFF7;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
line-height: 93rpx;
}
</style>

30
subPackages/user/privacyInfo.vue

@ -0,0 +1,30 @@
<template>
<view class="bg">
<view class="text" v-html="formateRichText(content)">
</view>
</view>
</template>
<script>
export default {
data() {
return {
content:''
};
},
onLoad(option){
this.Post({
id:option.id
},'/api/article/getArticleById').then(res => {
this.content = res.data.content
})
}
}
</script>
<style lang="scss">
.text{
padding: 20rpx;
}
</style>

350
subPackages/user/profile.vue

@ -0,0 +1,350 @@
<template>
<view v-if="info">
<view class="user-other-info">
<div class="info-avatar-top">
<span>头像</span>
<view @click="uploadImg()">
<image :src="showImg(info.avatar)" mode="aspectFill"
style="width: 80rpx;height: 80rpx;border-radius: 50%;"></image>
</view>
</div>
<navigator url="/subPackages/user/changeNickname" tag="view" class="userinfo-item">
<span>姓名</span>
<view>{{nickname}}</view>
</navigator>
<view class="userinfo-item" @click="showSexSelect = true">
<span>性别</span>
<!-- <view>{{sexes[info.gender]}}</view> -->
<radio-group @change="changesex">
<label style="margin-right: 15rpx;" v-for="(item,index) in sexes" :key="index">
<radio color="#7FD491" :value="item.value" :checked="index === info.gender-1" />{{item.text}}
</label>
</radio-group>
</view>
<view class="userinfo-item">
<span>手机号</span>
<view>{{info.mobile}}</view>
</view>
<view class="userinfo-item">
<span>生日</span>
<picker mode="date" :value="date" :start="startDate" :end="endDate" @change="bindDateChange">
<view class="uni-input">{{birthday}}</view>
</picker>
</view>
<view class="btn-tao" @click="submit">保存</view>
</view>
</view>
</template>
<script>
import {pathToBase64} from "@/static/js/mmmm-image-tools/index.js"
export default {
name: "Profile",
data() {
const currentDate = this.getDate({
format: true
})
return {
date: currentDate,
info: null,
showSexSelect: false,
sexes: [{
value: '1',
text: '男'
},
{
value: '2',
text: '女'
}
],
today: null,
showCropper: false,
nickname: '',
gender: '',
birthday: '',
email: '',
fileList1: [],
startDate: '1900-1-1',
endDate: '2050-1-1'
}
},
onShow() {
console.log(this.$store.state.user.userInfo,uni.getStorageSync('userInfo'))
this.getList()
},
computed: {
// startDate() {
// return this.getDate('start');
// },
// endDate() {
// return this.getDate('end');
// }
},
methods: {
getFile(e) {
console.log(e)
},
getList() {
let today = new Date();
today = today.getFullYear() + "/" + (today.getMonth() + 1) + "/" + today.getDate();
this.today = today;
this.Post({}, "/api/user/userInfo").then(res => {
if (!res.data.birthday) {
let date = new Date();
res.data.birthday = date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + date
.getDate();
}
this.info = res.data;
this.nickname = this.info.nickname
this.email = this.info.email
this.birthday = this.info.birthday
this.gender = this.info.gender
this.info.token = JSON.parse(uni.getStorageSync('userInfo')).token || this.$store.state.user.userInfo.token
console.log(this.info)
this.$store.commit('changeUserInfo', this.info)
})
},
uploadImg() {
uni.chooseImage({
success: (chooseImageRes) => {
const tempFilePaths = chooseImageRes.tempFilePaths;
// // #ifdef MP-WEIXIN
// uni.getFileSystemManager().readFile({
// filePath: tempFilePaths[0],
// encoding: 'base64',
// success: res => {
// this.Post({
// method: 'POST',
// base64: 'data:image/png;base64,' + res.data
// }, '/api/common/base64').then(res => {
// if (res.data) {
// this.Post({
// avatar: res.data
// }, '/api/user/profile').then(res => {
// uni.showModal({
// title: '',
// content: res.msg,
// showCancel: false,
// success: res => {
// if (res.confirm) {
// this.getList()
// }
// }
// })
// })
// }
// })
// }
// })
// // #endif
pathToBase64(tempFilePaths[0]).then(base64 => {
this.Post({
method: 'POST',
base64: base64
}, '/api/common/base64').then(res => {
if (res.data) {
this.Post({
avatar: res.data
}, '/api/user/profile').then(res => {
uni.showModal({
title: '提示',
content: res.msg,
showCancel: false,
success: res => {
if (res.confirm) {
this.getList()
}
}
})
})
}
})
})
}
});
},
//
bindDateChange: function(e) {
this.birthday = e.detail.value
},
getDate(type) {
const date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
if (type === 'start') {
year = year - 60;
} else if (type === 'end') {
year = year + 2;
}
month = month > 9 ? month : '0' + month;
day = day > 9 ? day : '0' + day;
return `${year}/${month}/${day}`;
},
changesex(value) {
this.gender = value.detail.value
},
submit() {
uni.showModal({
title: '提示',
content: '确认修改您的信息?',
success: res => {
if (res.confirm) {
this.Post({
nickname: this.nickname,
gender: this.gender,
birthday: this.birthday
}, '/api/user/profile').then(res => {
console.log(res)
if (res.code == 1) {
uni.showModal({
title: '提示',
content: res.msg,
showCancel: false,
success: res => {
if (res.confirm) {
this.getList()
}
}
})
}
})
}
}
})
},
}
}
</script>
<style scoped>
view {
box-sizing: content-box;
}
.info-avatar-top {
display: flex;
justify-content: space-between;
font-size: 30rpx;
border-bottom: 1rpx solid #D8D8D8;
padding: 40rpx 0;
height: 48rpx;
color: #333;
align-items: center;
}
.info-avatar-top view{
display: flex;
align-items: center;
}
.info-avatar-top view:after{
font-family: "iconfont";
content: "\e62e";
font-size: 26rpx;
font-weight: bold;
margin-left: 6rpx;
}
.info-avatar-top img {
width: 80rpx;
height: 80rpx;
border-radius: 50%;
margin-right: 10rpx;
}
.change-avatar-btn {
color: #FFF;
width: 220rpx;
margin: 0 auto;
line-height: 70rpx;
border-radius: 20rpx;
background: #4C93FF;
position: relative;
font-size: 34rpx;
}
.change-avatar-btn input {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
opacity: 0;
}
.user-other-info {
margin: 30rpx;
}
.userinfo-item {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 30rpx;
border-bottom: 1rpx solid #D8D8D8;
padding: 40rpx 0;
height: 48rpx;
color: #333;
}
.info-avatar-top span {
font-weight: 500;
font-size: 31rpx;
flex-shrink: 0;
}
.userinfo-item span {
font-weight: 500;
font-size: 31rpx;
flex-shrink: 0;
}
.userinfo-item view:after,
.birthday-box:after {
font-family: "iconfont";
content: "\e62e";
font-size: 26rpx;
font-weight: bold;
margin-left: 6rpx;
}
.birthday-box {
text-align: right;
}
.cropper {
width: auto;
height: 100%;
}
.cropper-content {
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 1000;
}
.dialog-footer .change-avatar-btn {
position: fixed;
text-align: center;
bottom: 80rpx;
left: 50%;
margin-left: -110rpx;
}
.btn-tao {
text-align: center;
font-size: 30rpx;
width: 697rpx;
height: 80rpx;
background: linear-gradient(90deg, #9EE4FE, #7FD491);
border-radius: 40rpx;
line-height: 80rpx;
color: #FFFFFF;
position: fixed;
left: 26rpx;
bottom: 100rpx;
}
</style>

328
subPackages/user/travelerList.vue

@ -0,0 +1,328 @@
<template>
<view class="bg">
<view class="cancat-nav flex-around">
<view :class="['concat-nav-item',showType===0?'active':'']" @click="showType=0">
<view>出行人信息</view>
<view v-if="showType===0" class="active-bar"></view>
</view>
<view :class="['concat-nav-item',showType===1?'active':'']" @click="showType=1">
<view>收货地址</view>
<view v-if="showType===1" class="active-bar"></view>
</view>
</view>
<!-- 出行人信息 -->
<view v-if="showType===0">
<view class="item" v-for="(item,index) in travelList" :key="index">
<view class="name">
<view class="">
{{item.name}}
</view>
<view class="">
{{item.tel}}
</view>
</view>
<view class="idcard">
<view class="">
{{item.document_type_text}}:
</view>
<view class="">
{{item.id_number}}
</view>
</view>
<view class="item-btn">
<view class="choice">
<image src="https://static.ticket.sz-trip.com/yandu/images/user/dui.png" mode="aspectFill"
v-if="item.is_default==1">
</image>
<view class="yuan" v-else @click.stop="defaultC(item)">
</view>
<view class="">
默认出行人
</view>
</view>
<view class="btn-list">
<view class="btn-item" @click.stop="edit(item.id)">
修改
</view>
<view class="btn-item" @click.stop="delet(item)">
删除
</view>
</view>
</view>
</view>
</view>
<!-- 收货地址 -->
<view v-else>
<view class="item" v-for="(item,index) in addressList" :key="index">
<view class="name">
<view>
{{item.name}}
</view>
<view class="">
{{item.tel}}
<span v-if="item.is_default==1">默认</span>
</view>
</view>
<view class="idcard">
<view class="">
收货地址:
</view>
<view class="text-overflow">
{{item.address}}
</view>
</view>
<view class="item-btn" style="justify-content: flex-end;">
<view class="btn-list">
<view class="btn-item" @click.stop="edit(item.id)">
修改
</view>
<view class="btn-item" @click.stop="delet(item)">
删除
</view>
</view>
</view>
</view>
</view>
<view class="btn-box">
<navigator :url="showType ? '/subPackages/user/myAddressAdd' : '/subPackages/user/myContactsAdd'" class="btn">
{{showType ? '添加收货地址' : '添加出行人'}}
</navigator>
</view>
</view>
</template>
<script>
export default {
name: "travelerList",
data() {
return {
showType: 0,
travelList: [],
addressList: []
};
},
onShow() {
this.init()
},
methods: {
init () {
//
this.Post({}, "/api/user/contactList").then(res => {
if (res) this.travelList = res.data
})
//
this.Post({}, '/api/user/consigneeList').then(res => {
if(res) this.addressList = res.data
})
},
delet(item) {
let that = this
uni.showModal({
title: '提示',
content: '确定要删除该出行人吗?',
success: function(res) {
if (res.confirm) {
that.Post({
id: item.id
}, "/api/user/delDetail").then(res => {
if (res) {
uni.showToast({
icon: "none",
title: res.msg
})
}
that.init()
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
defaultC(item) {
this.Post({
id: item.id,
is_default: 1
}, "/api/user/editContact").then(res => {
if (res.code == 1) {
this.travelList.forEach(i => i.is_default = 0)
item.is_default = !item.is_default
}
})
},
//
edit(id){
let url = ''
if(this.showType) {
url = '/subPackages/user/myAddressAdd?id='+id
}else {
url = "/subPackages/user/myContactsAdd?type=edit&id="+id
}
uni.navigateTo({
url: url
});
}
}
}
</script>
<style lang="scss" scoped>
.bg {
position: relative;
background: #F7F7F7;
height: 100vh;
overflow-x: hidden;
padding-bottom: 200rpx;
}
.cancat-nav{
width: 100%;
display: flex;
height: 112rpx;
flex-shrink: 0;
.concat-nav-item{
ffont-weight: 500;
font-size: 35rpx;
color: #000000;
text-align: center;
}
.concat-nav-item.active{
color: #000000;
}
.active-bar{
width: 100%;
height: 11rpx;
background: #71B580;
}
}
.item {
width: 697rpx;
background: #FFFFFF;
border-radius: 13rpx;
margin: 0 auto;
margin-bottom: 28rpx;
padding: 26rpx;
.name,
.idcard {
display: flex;
font-size: 31rpx;
font-weight: bold;
color: #333333;
}
.name {
view:last-child {
margin-left: 40rpx;
}
span {
padding: 3rpx 9rpx;
background: #71B580;
border-radius: 7rpx;
font-weight: bold;
font-size: 24rpx;
color: #FFFFFF;
margin-left: 15rpx;
}
}
.idcard {
margin-top: 26rpx;
view:last-child {
margin-left: 14rpx;
font-weight: 400;
max-width: 492rpx;
}
}
.item-btn {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 40rpx;
.choice {
display: flex;
align-items: center;
view:last-child {
margin-left: 20rpx;
font-size: 27rpx;
font-weight: 500;
color: #333333;
}
image {
width: 40rpx;
height: 40rpx;
}
.yuan {
width: 40rpx;
height: 40rpx;
background: rgba(255, 200, 37, 0);
border: 1rpx solid #999999;
border-radius: 20rpx;
}
}
.btn-list {
display: flex;
align-items: center;
view {
width: 134rpx;
height: 54rpx;
background: #FFFFFF;
border: 1px solid #999999;
border-radius: 27rpx;
font-size: 27rpx;
font-weight: 500;
color: #333333;
line-height: 52rpx;
text-align: center;
}
view:last-child {
margin-left: 14rpx;
}
}
}
}
.btn-box {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
height: 200rpx;
.btn {
width: 697rpx;
line-height: 80rpx;
background: #00AEA0;
border-radius: 37rpx;
font-weight: 500;
font-size: 36rpx;
color: #FFFFFF;
text-align: center;
position: fixed;
bottom: 53rpx;
left: 26.67rpx;
}
}
</style>

2
unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map

File diff suppressed because one or more lines are too long

2
unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map

File diff suppressed because one or more lines are too long

1
unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map

File diff suppressed because one or more lines are too long

2
unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/user.js.map

File diff suppressed because one or more lines are too long

1
unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/service/service.js.map

File diff suppressed because one or more lines are too long

1
unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/coupon.js.map

File diff suppressed because one or more lines are too long

1
unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/privacy.js.map

File diff suppressed because one or more lines are too long

1
unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/privacyInfo.js.map

File diff suppressed because one or more lines are too long

1
unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/profile.js.map

File diff suppressed because one or more lines are too long

1
unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/travelerList.js.map

File diff suppressed because one or more lines are too long

1
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.js.map

File diff suppressed because one or more lines are too long

1
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.js.map

File diff suppressed because one or more lines are too long

11
unpackage/dist/dev/mp-weixin/app.json

@ -1,7 +1,8 @@
{
"pages": [
"pages/index/index",
"pages/user/user"
"pages/user/user",
"pages/login/login"
],
"subPackages": [
{
@ -9,7 +10,13 @@
"pages": [
"index",
"rim/rimList",
"peripheralActivity/peripheralActivity"
"peripheralActivity/peripheralActivity",
"service/service",
"user/profile",
"user/travelerList",
"user/privacy",
"user/privacyInfo",
"user/coupon"
]
}
],

7
unpackage/dist/dev/mp-weixin/common/main.wxss

@ -2143,7 +2143,7 @@ view {
}
.uni-btn[type=primary][disabled], .uni-btn[type=primary][disabled][loading], .uni-btn[type=primary][disabled]:not([hover-class]):active {
color: #fff;
border-color: #80aefa;
border-color: #80adfa;
background-color: #94bcff;
}
.uni-btn[type=primary][plain] {
@ -2203,7 +2203,7 @@ view {
}
.uni-btn[type=success][disabled], .uni-btn[type=success][disabled][loading], .uni-btn[type=success][disabled]:not([hover-class]):active {
color: #fff;
border-color: #89c795;
border-color: #89c794;
background-color: #8cde9b;
}
.uni-btn[type=success][plain] {
@ -2383,7 +2383,7 @@ view {
}
.uni-btn[type=info][disabled], .uni-btn[type=info][disabled][loading], .uni-btn[type=info][disabled]:not([hover-class]):active {
color: #fff;
border-color: #babcc2;
border-color: #babcc1;
background-color: #c7c9ce;
}
.uni-btn[type=info][plain] {
@ -2424,3 +2424,4 @@ page {
color: #333;
padding: 10px;
}

2
unpackage/dist/dev/mp-weixin/common/runtime.js

@ -1,5 +1,5 @@
!function(){try{var a=Function("return this")();a&&!a.Math&&(Object.assign(a,{isFinite:isFinite,Array:Array,Date:Date,Error:Error,Function:Function,Math:Math,Object:Object,RegExp:RegExp,String:String,TypeError:TypeError,setTimeout:setTimeout,clearTimeout:clearTimeout,setInterval:setInterval,clearInterval:clearInterval}),"undefined"!=typeof Reflect&&(a.Reflect=Reflect))}catch(a){}}();
(function(e){function r(r){for(var n,l,a=r[0],i=r[1],f=r[2],c=0,s=[];c<a.length;c++)l=a[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);p&&p(r);while(s.length)s.shift()();return u.push.apply(u,f||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,a=1;a<t.length;a++){var i=t[a];0!==o[i]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={"common/runtime":0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"===typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e["default"]}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var a=global["webpackJsonp"]=global["webpackJsonp"]||[],i=a.push.bind(a);a.push=r,a=a.slice();for(var f=0;f<a.length;f++)r(a[f]);var p=i;t()})([]);
(function(e){function n(n){for(var r,o,a=n[0],p=n[1],l=n[2],s=0,c=[];s<a.length;s++)o=a[s],Object.prototype.hasOwnProperty.call(u,o)&&u[o]&&c.push(u[o][0]),u[o]=0;for(r in p)Object.prototype.hasOwnProperty.call(p,r)&&(e[r]=p[r]);f&&f(n);while(c.length)c.shift()();return i.push.apply(i,l||[]),t()}function t(){for(var e,n=0;n<i.length;n++){for(var t=i[n],r=!0,o=1;o<t.length;o++){var a=t[o];0!==u[a]&&(r=!1)}r&&(i.splice(n--,1),e=p(p.s=t[0]))}return e}var r={},o={"common/runtime":0},u={"common/runtime":0},i=[];function a(e){return p.p+""+e+".js"}function p(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,p),t.l=!0,t.exports}p.e=function(e){var n=[],t={"uni_modules/uni-popup/components/uni-popup/uni-popup":1};o[e]?n.push(o[e]):0!==o[e]&&t[e]&&n.push(o[e]=new Promise((function(n,t){for(var r=({"uni_modules/uni-popup/components/uni-popup/uni-popup":"uni_modules/uni-popup/components/uni-popup/uni-popup","uni_modules/uni-transition/components/uni-transition/uni-transition":"uni_modules/uni-transition/components/uni-transition/uni-transition"}[e]||e)+".wxss",u=p.p+r,i=document.getElementsByTagName("link"),a=0;a<i.length;a++){var l=i[a],s=l.getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(s===r||s===u))return n()}var c=document.getElementsByTagName("style");for(a=0;a<c.length;a++){l=c[a],s=l.getAttribute("data-href");if(s===r||s===u)return n()}var f=document.createElement("link");f.rel="stylesheet",f.type="text/css",f.onload=n,f.onerror=function(n){var r=n&&n.target&&n.target.src||u,i=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");i.code="CSS_CHUNK_LOAD_FAILED",i.request=r,delete o[e],f.parentNode.removeChild(f),t(i)},f.href=u;var d=document.getElementsByTagName("head")[0];d.appendChild(f)})).then((function(){o[e]=0})));var r=u[e];if(0!==r)if(r)n.push(r[2]);else{var i=new Promise((function(n,t){r=u[e]=[n,t]}));n.push(r[2]=i);var l,s=document.createElement("script");s.charset="utf-8",s.timeout=120,p.nc&&s.setAttribute("nonce",p.nc),s.src=a(e);var c=new Error;l=function(n){s.onerror=s.onload=null,clearTimeout(f);var t=u[e];if(0!==t){if(t){var r=n&&("load"===n.type?"missing":n.type),o=n&&n.target&&n.target.src;c.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",c.name="ChunkLoadError",c.type=r,c.request=o,t[1](c)}u[e]=void 0}};var f=setTimeout((function(){l({type:"timeout",target:s})}),12e4);s.onerror=s.onload=l,document.head.appendChild(s)}return Promise.all(n)},p.m=e,p.c=r,p.d=function(e,n,t){p.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:t})},p.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},p.t=function(e,n){if(1&n&&(e=p(e)),8&n)return e;if(4&n&&"object"===typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(p.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var r in e)p.d(t,r,function(n){return e[n]}.bind(null,r));return t},p.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return p.d(n,"a",n),n},p.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},p.p="/",p.oe=function(e){throw console.error(e),e};var l=global["webpackJsonp"]=global["webpackJsonp"]||[],s=l.push.bind(l);l.push=n,l=l.slice();for(var c=0;c<l.length;c++)n(l[c]);var f=s;t()})([]);
//# sourceMappingURL=../../.sourcemap/mp-weixin/common/runtime.js.map

6
unpackage/dist/dev/mp-weixin/common/vendor.js

File diff suppressed because one or more lines are too long

2
unpackage/dist/dev/mp-weixin/pages/login/login.js

@ -0,0 +1,2 @@
(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["pages/login/login"],{90:function(e,n,t){"use strict";(function(e,n){var o=t(4);t(26);o(t(25));var r=o(t(91));e.__webpack_require_UNI_MP_PLUGIN__=t,n(r.default)}).call(this,t(1)["default"],t(2)["createPage"])},91:function(e,n,t){"use strict";t.r(n);var o=t(92),r=t(94);for(var i in r)["default"].indexOf(i)<0&&function(e){t.d(n,e,(function(){return r[e]}))}(i);t(96);var a,c=t(32),u=Object(c["default"])(r["default"],o["render"],o["staticRenderFns"],!1,null,"b237504c",null,!1,o["components"],a);u.options.__file="pages/login/login.vue",n["default"]=u.exports},92:function(e,n,t){"use strict";t.r(n);var o=t(93);t.d(n,"render",(function(){return o["render"]})),t.d(n,"staticRenderFns",(function(){return o["staticRenderFns"]})),t.d(n,"recyclableRender",(function(){return o["recyclableRender"]})),t.d(n,"components",(function(){return o["components"]}))},93:function(e,n,t){"use strict";var o;t.r(n),t.d(n,"render",(function(){return r})),t.d(n,"staticRenderFns",(function(){return a})),t.d(n,"recyclableRender",(function(){return i})),t.d(n,"components",(function(){return o}));try{o={uniPopup:function(){return t.e("uni_modules/uni-popup/components/uni-popup/uni-popup").then(t.bind(null,77))}}}catch(c){if(-1===c.message.indexOf("Cannot find module")||-1===c.message.indexOf(".vue"))throw c;console.error(c.message),console.error("1. 排查组件名称拼写是否正确"),console.error("2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"),console.error("3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件")}var r=function(){var e=this,n=e.$createElement;e._self._c;e._isMounted||(e.e0=function(n){e.flag=!e.flag})},i=!1,a=[];r._withStripped=!0},94:function(e,n,t){"use strict";t.r(n);var o=t(95),r=t.n(o);for(var i in o)["default"].indexOf(i)<0&&function(e){t.d(n,e,(function(){return o[e]}))}(i);n["default"]=r.a},95:function(e,n,t){"use strict";(function(e){Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var t={data:function(){return{flag:!1}},methods:{decryptPhoneNumber:function(n){var t=this;"getPhoneNumber:ok"==n.detail.errMsg&&(this.$refs.popup.close(),this.Post({code:n.detail.code,encryptedData:n.detail.encryptedData,iv:n.detail.iv,token:e.getStorageSync("token1")},"/api/mini_program/bindPhoneNumber").then((function(n){t.$store.commit("changeUserInfo",n.data.userinfo),t.$store.state.user.toPath.includes("user/user")?e.switchTab({url:t.$store.state.user.toPath}):e.navigateBack({})})))},getUserInfo:function(){if(this.flag){var n=this;e.login({provider:"weixin",success:function(t){e.getUserInfo({withCredentials:!0,success:function(o){n.Post({code:t.code,userInfo:o.userInfo,encryptedData:o.encryptedData,iv:o.iv,wechat_qrcode:e.getStorageSync("wechat_qrcode")?e.getStorageSync("wechat_qrcode"):""},"/api/mini_program/login").then((function(t){n.$store.commit("changeUserInfo",t.data.userinfo),t.data.userinfo.mobile?n.$store.state.user.toPath.includes("user/user")?e.switchTab({url:n.$store.state.user.toPath}):e.navigateBack({}):(e.setStorageSync("token1",t.data.userinfo.token),n.$refs.popup.open("bottom"))}))}})},fail:function(e){console.log(e)}})}}}};n.default=t}).call(this,t(2)["default"])},96:function(e,n,t){"use strict";t.r(n);var o=t(97),r=t.n(o);for(var i in o)["default"].indexOf(i)<0&&function(e){t.d(n,e,(function(){return o[e]}))}(i);n["default"]=r.a},97:function(e,n,t){}},[[90,"common/runtime","common/vendor"]]]);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/login/login.js.map

6
unpackage/dist/dev/mp-weixin/pages/login/login.json

@ -0,0 +1,6 @@
{
"navigationBarTitleText": "常熟文旅",
"usingComponents": {
"uni-popup": "/uni_modules/uni-popup/components/uni-popup/uni-popup"
}
}

1
unpackage/dist/dev/mp-weixin/pages/login/login.wxml

@ -0,0 +1 @@
<view class="bg data-v-b237504c"><image class="logo data-v-b237504c" src="https://static.ticket.sz-trip.com/yandu/images/user/logo.png"></image><view data-event-opts="{{[['tap',[['getUserInfo']]]]}}" class="{{['data-v-b237504c','btn','flex-center',[(flag)?'btns':'']]}}" bindtap="__e">快捷登录</view><image hidden="{{!(!flag)}}" class="tips data-v-b237504c" src="https://static.ticket.sz-trip.com/yandu/images/user/tips.png"></image><view class="flex-between _footer data-v-b237504c"><view data-event-opts="{{[['tap',[['e0',['$event']]]]]}}" style="{{'border:'+(flag?'none':'')+';'}}" bindtap="__e" class="data-v-b237504c"><image hidden="{{!(flag)}}" src="https://static.ticket.sz-trip.com/yandu/images/user/dui.png" class="data-v-b237504c"></image></view>我已阅读并同意<label data-event-opts="{{[['tap',[['gotoPath',['/subPackages/user/privacy']]]]]}}" bindtap="__e" class="_span data-v-b237504c">《用户服务协议》、《隐私政策》</label></view><uni-popup vue-id="35a7246c-1" type="bottom" background-color="#fff" data-ref="popup" class="data-v-b237504c vue-ref" bind:__l="__l" vue-slots="{{['default']}}"><button style="width:100%;height:12vh;line-height:12vh;" type="default" open-type="getPhoneNumber" data-event-opts="{{[['getphonenumber',[['decryptPhoneNumber',['$event']]]]]}}" bindgetphonenumber="__e" class="data-v-b237504c">点击授权手机号</button></uni-popup></view>

85
unpackage/dist/dev/mp-weixin/pages/login/login.wxss

@ -0,0 +1,85 @@
@charset "UTF-8";
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.bg.data-v-b237504c {
height: 100vh;
}
.logo.data-v-b237504c {
width: 186rpx;
height: 132rpx;
position: absolute;
top: 79rpx;
left: 50%;
-webkit-transform: translate(-50%, 0);
transform: translate(-50%, 0);
}
.btn.data-v-b237504c {
width: 667rpx;
height: 93rpx;
background: #CCCCCC;
border-radius: 20rpx;
font-weight: 500;
font-size: 35rpx;
color: #FFFFFF;
position: absolute;
top: 301rpx;
left: 50%;
-webkit-transform: translate(-50%, 0);
transform: translate(-50%, 0);
}
.btns.data-v-b237504c {
background: #71B580;
}
.tips.data-v-b237504c {
position: absolute;
left: 54rpx;
bottom: 155rpx;
width: 293.33rpx;
height: 72.67rpx;
}
._footer.data-v-b237504c {
padding: 0 68rpx;
position: absolute;
bottom: 94rpx;
font-weight: 500;
font-size: 25rpx;
color: #333333;
width: 100%;
}
._footer view.data-v-b237504c {
width: 48rpx;
height: 48rpx;
border-radius: 50%;
overflow: hidden;
border: 1rpx solid #666666;
}
._footer view image.data-v-b237504c {
width: 100%;
height: 100%;
}
._footer ._span.data-v-b237504c {
color: #71b580;
}

2
unpackage/dist/dev/mp-weixin/pages/user/user.js

File diff suppressed because one or more lines are too long

7
unpackage/dist/dev/mp-weixin/pages/user/user.json

@ -1,4 +1,7 @@
{
"navigationBarTitleText": "uni-app",
"usingComponents": {}
"navigationStyle": "custom",
"navigationBarTitleText": "我的",
"usingComponents": {
"uni-popup": "/uni_modules/uni-popup/components/uni-popup/uni-popup"
}
}

2
unpackage/dist/dev/mp-weixin/pages/user/user.wxml

@ -1 +1 @@
<view class="_div"></view>
<view class="bg data-v-80842834"><view class="title data-v-80842834">我的</view><view data-event-opts="{{[['tap',[['gotoProfile',['$event']]]]]}}" class="topBox data-v-80842834" bindtap="__e"><view class="avatar-box flex-center data-v-80842834"><block wx:if="{{userInfo.avatar}}"><image class="headImg data-v-80842834" src="{{$root.m0}}" mode="aspectFill"></image></block><block wx:else><image class="headImg data-v-80842834" src="https://static.ticket.sz-trip.com/yandu/images/user/grxx.png" mode="aspectFill"></image></block></view><block wx:if="{{userInfo.nickname}}"><view class="username data-v-80842834">{{userInfo.nickname}}</view></block><block wx:else><view class="username data-v-80842834">请登录/注册 ></view></block></view><view class="orderBox data-v-80842834"><navigator class="moreBox flex-between data-v-80842834" url="/subPackages/order/trades">我的订单<label class="flex-between _span data-v-80842834">全部订单<image src="https://static.ticket.sz-trip.com/yandu/images/user/rightIcon.png" alt class="_img data-v-80842834"></image></label></navigator><view class="flex-around data-v-80842834" style="margin-top:20rpx;"><block wx:for="{{orderList}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['goTrades',['$0'],[[['orderList','',index]]]]]]]}}" class="orderItem data-v-80842834" bindtap="__e"><image src="{{item.src}}" alt class="_img data-v-80842834"></image><view class="data-v-80842834">{{item.title}}</view></view></block></view></view><view class="cygj data-v-80842834"><block wx:for="{{cyList}}" wx:for-item="item" wx:for-index="index" wx:key="index"><block wx:if="{{item.isShow}}"><view data-event-opts="{{[['tap',[['gotoUrl',['$0',index],[[['cyList','',index]]]]]]]}}" class="cyItem flex-between data-v-80842834" bindtap="__e"><view class="flex-center data-v-80842834"><image class="headIcon _img data-v-80842834" src="{{item.src}}"></image>{{''+item.title+''}}</view><image class="rightIcon _img data-v-80842834" src="https://static.ticket.sz-trip.com/yandu/images/user/rightIcon-gray.png"></image></view></block></block></view><uni-popup vue-id="380011e0-1" type="center" data-ref="popup" class="data-v-80842834 vue-ref" bind:__l="__l" vue-slots="{{['default']}}"><view class="consult-popup data-v-80842834">即将跳转人工客服<view class="consult-subtitle data-v-80842834">服务时间:周一至周五<view class="_br data-v-80842834"></view>8:30-11:30,14:30-18:00</view><view class="consult-btns data-v-80842834"><view data-event-opts="{{[['tap',[['e0',['$event']]]]]}}" bindtap="__e" class="data-v-80842834">取消</view><view class="data-v-80842834"><button class="confirm data-v-80842834" open-type="contact">确定</button></view></view></view></uni-popup></view>

310
unpackage/dist/dev/mp-weixin/pages/user/user.wxss

@ -0,0 +1,310 @@
@charset "UTF-8";
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
view.data-v-80842834 {
box-sizing: border-box;
}
.data-v-80842834 .uni-countdown {
font-size: 20px !important;
}
.data-v-80842834 .uni-countdown /deep/.uni-countdown__splitor {
font-size: 20px !important;
}
.bg.data-v-80842834 {
min-height: 100vh;
overflow-x: hidden;
background: url("https://static.ticket.sz-trip.com/yandu/images/user/topBg.png") no-repeat;
background-size: 100%;
background-color: #F7F7F7;
padding-bottom: 100rpx;
}
.title.data-v-80842834 {
font-weight: bold;
font-size: 36rpx;
color: #333333;
position: absolute;
top: 110rpx;
left: 50%;
-webkit-transform: translate(-50%, 0);
transform: translate(-50%, 0);
}
.topBox.data-v-80842834 {
width: 750rpx;
height: 373rpx;
padding: 100rpx 0 0 26rpx;
box-sizing: border-box;
display: flex;
margin-top: 90rpx;
}
.topBox .avatar-box.data-v-80842834 {
width: 120rpx;
height: 120rpx;
background: #FFFFFF;
border-radius: 50%;
overflow: hidden;
}
.topBox .headImg.data-v-80842834 {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
}
.topBox .username.data-v-80842834 {
margin: 40rpx 0 0 28rpx;
font-weight: 500;
font-size: 40rpx;
color: #000000;
}
.orderBox.data-v-80842834 {
width: 697rpx;
background: #FFFFFF;
box-shadow: 0rpx 0rpx 23rpx 0rpx rgba(80, 80, 80, 0.12);
border-radius: 20rpx;
margin: -48rpx auto 0;
padding-bottom: 30.6rpx;
}
.orderBox .moreBox.data-v-80842834 {
height: 84rpx;
margin: auto;
font-size: 31rpx;
font-family: PingFang SC;
font-weight: bold;
color: #000000;
padding-left: 26rpx;
}
.orderBox .moreBox ._span.data-v-80842834 {
width: 173rpx;
height: 40rpx;
background: #D6F2F0;
border-radius: 20rpx 0rpx 0rpx 20rpx;
padding: 0 24rpx;
font-size: 25rpx;
font-family: PingFang SC;
font-weight: 500;
color: #00AEA0;
box-sizing: border-box;
}
.orderBox .moreBox ._span ._img.data-v-80842834 {
width: 20rpx;
height: 20rpx;
}
.orderBox .orderItem.data-v-80842834 {
font-size: 24rpx;
font-family: PingFang SC;
font-weight: 500;
color: #000000;
width: 20%;
text-align: center;
}
.orderBox .orderItem ._img.data-v-80842834 {
width: 62rpx;
height: 62rpx;
margin-bottom: 10rpx;
}
.lxwm.data-v-80842834 {
width: 696rpx;
height: 447rpx;
background: #FFFFFF;
box-shadow: 0px 4rpx 12rpx 0px rgba(150, 149, 149, 0.3);
border-radius: 20rpx;
margin: auto;
padding: 27rpx 19rpx 0 19rpx;
font-size: 31rpx;
font-family: PingFang SC;
font-weight: bold;
color: #000000;
}
.lxwm .midBox.data-v-80842834 {
padding: 26rpx 43rpx 21rpx 44rpx;
box-sizing: border-box;
}
.lxwm .midBox ._img.data-v-80842834 {
width: 265rpx;
height: 252rpx;
border-radius: 15rpx;
}
.lxwm .botBox.data-v-80842834 {
padding: 0 30rpx 0 51rpx;
font-size: 27rpx;
font-family: PingFang SC;
font-weight: bold;
color: #000000;
}
.cygj.data-v-80842834 {
width: 697rpx;
background: #FFFFFF;
border-radius: 20rpx;
margin: 30rpx auto 0;
padding: 0 27rpx;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #000000;
box-sizing: border-box;
}
.cygj .cyItem.data-v-80842834 {
height: 106rpx;
display: flex;
align-items: center;
border-bottom: 1rpx solid #D8D8D8;
}
.cygj .cyItem .headIcon.data-v-80842834 {
width: 42rpx;
height: 42rpx;
margin-right: 15rpx;
}
.cygj .cyItem .rightIcon.data-v-80842834 {
width: 20rpx;
height: 20rpx;
}
.cygj .cyItem.data-v-80842834:last-child {
border: none;
}
.my-swipe.data-v-80842834 {
margin: 0 30rpx;
margin-top: 37.3rpx;
}
swiper.data-v-80842834 {
height: 111rpx !important;
}
.dfkBox.data-v-80842834 {
width: 100%;
height: 111rpx;
background: #F7F7F7;
margin: 0 auto 30.64rpx;
display: flex;
}
.dfkBox image.data-v-80842834 {
width: 137rpx;
height: 111rpx;
border-radius: 13rpx;
flex-shrink: 0;
}
.dfkBox .contentBox.data-v-80842834 {
padding-left: 5rpx;
padding-right: 5rpx;
height: 111rpx;
width: 100%;
display: flex;
justify-content: space-around;
align-items: center;
}
.orderBtn.data-v-80842834 {
width: 152rpx;
height: 56rpx;
background: linear-gradient(270deg, #FC5109, #FDC43A);
border-radius: 28rpx;
text-align: center;
line-height: 56rpx;
font-size: 27rpx;
font-family: PingFang SC;
font-weight: 400;
color: #FFFFFF;
}
#contact.data-v-80842834 {
-webkit-tap-highlight-color: transparent;
background-color: rgba(0, 0, 0, 0);
border-radius: 0;
box-sizing: border-box;
color: transparent;
cursor: pointer;
overflow: hidden;
padding: 0 27rpx;
position: relative;
text-align: center;
text-decoration: none;
border: transparent 0px solid;
display: flex;
align-items: center;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #000000;
}
button.data-v-80842834::after {
border: none;
background-color: rgba(0, 0, 0, 0);
}
.more.data-v-80842834 {
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.5);
position: fixed;
top: 0;
left: 0;
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
}
.more image.data-v-80842834 {
width: 646rpx;
height: 959rpx;
}
.more ._img.data-v-80842834 {
width: 80rpx;
height: 80rpx;
}
.consult-popup.data-v-80842834 {
width: 487rpx;
height: 367rpx;
background: #F0F0F0;
border-radius: 20rpx;
padding: 65rpx 0 23rpx;
font-weight: bold;
font-size: 32rpx;
color: #000000;
text-align: center;
}
.consult-popup .consult-subtitle.data-v-80842834 {
font-weight: 500;
font-size: 27rpx;
color: #333333;
margin-top: 43rpx;
}
.consult-popup .consult-btns.data-v-80842834 {
display: flex;
margin-top: 75rpx;
}
.consult-popup .consult-btns view.data-v-80842834 {
width: 50%;
font-weight: bold;
font-size: 32rpx;
color: #00AEA0;
line-height: 54rpx;
}
.consult-popup .consult-btns view.data-v-80842834:first-child {
border-right: 1rpx solid #D8D8D8;
color: #000000;
}
.confirm.data-v-80842834 {
height: 58rpx;
line-height: 58rpx;
background: none;
font-weight: bold;
font-size: 32rpx;
color: #00AEA0;
}

8
unpackage/dist/dev/mp-weixin/project.private.config.json

@ -1,7 +1,15 @@
{
<<<<<<< HEAD
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
"projectname": "changshu",
"setting": {
"compileHotReLoad": true
}
=======
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
"projectname": "taihumeisu",
"setting": {
"compileHotReLoad": true
}
>>>>>>> 64176ed88ad71ab059733f680f3efd443a60f371
}

196
unpackage/dist/dev/mp-weixin/static/js/mmmm-image-tools/index.js

@ -0,0 +1,196 @@
function getLocalFilePath(path) {
if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path.indexOf('_downloads') === 0) {
return path
}
if (path.indexOf('file://') === 0) {
return path
}
if (path.indexOf('/storage/emulated/0/') === 0) {
return path
}
if (path.indexOf('/') === 0) {
var localFilePath = plus.io.convertAbsoluteFileSystem(path)
if (localFilePath !== path) {
return localFilePath
} else {
path = path.substr(1)
}
}
return '_www/' + path
}
function dataUrlToBase64(str) {
var array = str.split(',')
return array[array.length - 1]
}
var index = 0
function getNewFileId() {
return Date.now() + String(index++)
}
function biggerThan(v1, v2) {
var v1Array = v1.split('.')
var v2Array = v2.split('.')
var update = false
for (var index = 0; index < v2Array.length; index++) {
var diff = v1Array[index] - v2Array[index]
if (diff !== 0) {
update = diff > 0
break
}
}
return update
}
export function pathToBase64(path) {
return new Promise(function(resolve, reject) {
if (typeof window === 'object' && 'document' in window) {
if (typeof FileReader === 'function') {
var xhr = new XMLHttpRequest()
xhr.open('GET', path, true)
xhr.responseType = 'blob'
xhr.onload = function() {
if (this.status === 200) {
let fileReader = new FileReader()
fileReader.onload = function(e) {
resolve(e.target.result)
}
fileReader.onerror = reject
fileReader.readAsDataURL(this.response)
}
}
xhr.onerror = reject
xhr.send()
return
}
var canvas = document.createElement('canvas')
var c2x = canvas.getContext('2d')
var img = new Image
img.onload = function() {
canvas.width = img.width
canvas.height = img.height
c2x.drawImage(img, 0, 0)
resolve(canvas.toDataURL())
canvas.height = canvas.width = 0
}
img.onerror = reject
img.src = path
return
}
if (typeof plus === 'object') {
plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), function(entry) {
entry.file(function(file) {
var fileReader = new plus.io.FileReader()
fileReader.onload = function(data) {
resolve(data.target.result)
}
fileReader.onerror = function(error) {
reject(error)
}
fileReader.readAsDataURL(file)
}, function(error) {
reject(error)
})
}, function(error) {
reject(error)
})
return
}
if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {
wx.getFileSystemManager().readFile({
filePath: path,
encoding: 'base64',
success: function(res) {
resolve('data:image/png;base64,' + res.data)
},
fail: function(error) {
reject(error)
}
})
return
}
reject(new Error('not support'))
})
}
export function base64ToPath(base64) {
return new Promise(function(resolve, reject) {
if (typeof window === 'object' && 'document' in window) {
base64 = base64.split(',')
var type = base64[0].match(/:(.*?);/)[1]
var str = atob(base64[1])
var n = str.length
var array = new Uint8Array(n)
while (n--) {
array[n] = str.charCodeAt(n)
}
return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], { type: type })))
}
var extName = base64.split(',')[0].match(/data\:\S+\/(\S+);/)
if (extName) {
extName = extName[1]
} else {
reject(new Error('base64 error'))
}
var fileName = getNewFileId() + '.' + extName
if (typeof plus === 'object') {
var basePath = '_doc'
var dirPath = 'uniapp_temp'
var filePath = basePath + '/' + dirPath + '/' + fileName
if (!biggerThan(plus.os.name === 'Android' ? '1.9.9.80627' : '1.9.9.80472', plus.runtime.innerVersion)) {
plus.io.resolveLocalFileSystemURL(basePath, function(entry) {
entry.getDirectory(dirPath, {
create: true,
exclusive: false,
}, function(entry) {
entry.getFile(fileName, {
create: true,
exclusive: false,
}, function(entry) {
entry.createWriter(function(writer) {
writer.onwrite = function() {
resolve(filePath)
}
writer.onerror = reject
writer.seek(0)
writer.writeAsBinary(dataUrlToBase64(base64))
}, reject)
}, reject)
}, reject)
}, reject)
return
}
var bitmap = new plus.nativeObj.Bitmap(fileName)
bitmap.loadBase64Data(base64, function() {
bitmap.save(filePath, {}, function() {
bitmap.clear()
resolve(filePath)
}, function(error) {
bitmap.clear()
reject(error)
})
}, function(error) {
bitmap.clear()
reject(error)
})
return
}
if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {
var filePath = wx.env.USER_DATA_PATH + '/' + fileName
wx.getFileSystemManager().writeFile({
filePath: filePath,
data: dataUrlToBase64(base64),
encoding: 'base64',
success: function() {
resolve(filePath)
},
fail: function(error) {
reject(error)
}
})
return
}
reject(new Error('not support'))
})
}

11
unpackage/dist/dev/mp-weixin/static/js/mmmm-image-tools/package.json

@ -0,0 +1,11 @@
{
"id": "mmmm-image-tools",
"name": "image-tools",
"version": "1.4.0",
"description": "图像转换工具,可用于图像和base64的转换",
"keywords": [
"base64",
"保存",
"图像"
]
}

3
unpackage/dist/dev/mp-weixin/static/js/request.js

@ -15,7 +15,8 @@ const getToken = () => {
return userInfo.token;
}
}
return store.state.user.userInfo.token;
// return store.state.user.userInfo.token;
return "9e78c382-3fe9-4d54-82b2-27f83e1d5f24"
};
// 定义错误处理函数

2
unpackage/dist/dev/mp-weixin/subPackages/service/service.js

@ -0,0 +1,2 @@
(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["subPackages/service/service"],{100:function(n,e,t){"use strict";t.r(e);var r=t(101);t.d(e,"render",(function(){return r["render"]})),t.d(e,"staticRenderFns",(function(){return r["staticRenderFns"]})),t.d(e,"recyclableRender",(function(){return r["recyclableRender"]})),t.d(e,"components",(function(){return r["components"]}))},101:function(n,e,t){"use strict";var r;t.r(e),t.d(e,"render",(function(){return o})),t.d(e,"staticRenderFns",(function(){return c})),t.d(e,"recyclableRender",(function(){return i})),t.d(e,"components",(function(){return r}));var o=function(){var n=this,e=n.$createElement,t=(n._self._c,n.form.content.length);n.$mp.data=Object.assign({},{$root:{g0:t}})},i=!1,c=[];o._withStripped=!0},102:function(n,e,t){"use strict";t.r(e);var r=t(103),o=t.n(r);for(var i in r)["default"].indexOf(i)<0&&function(n){t.d(e,n,(function(){return r[n]}))}(i);e["default"]=o.a},103:function(n,e,t){"use strict";(function(n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={data:function(){return{form:{name:"",phone:"",content:""}}},onLoad:function(){},methods:{sendForm:function(){return this.idChinaName(this.form.name)?this.IsTel(this.form.phone)?this.form.content.replace(/\s*/g,"").length<15?(n.showToast({title:"请输入15字以上的建议或反馈",icon:"none"}),!1):void this.Post({username:this.form.name,mobile:this.form.phone,content:this.form.content},"/api/suggest/add").then((function(e){e&&n.showToast({title:e.msg,icon:"none"})})):(n.showToast({title:"请输入正确的手机号",icon:"none"}),!1):(n.showToast({title:"请输入正确的姓名",icon:"none"}),!1)}}};e.default=t}).call(this,t(2)["default"])},104:function(n,e,t){"use strict";t.r(e);var r=t(105),o=t.n(r);for(var i in r)["default"].indexOf(i)<0&&function(n){t.d(e,n,(function(){return r[n]}))}(i);e["default"]=o.a},105:function(n,e,t){},98:function(n,e,t){"use strict";(function(n,e){var r=t(4);t(26);r(t(25));var o=r(t(99));n.__webpack_require_UNI_MP_PLUGIN__=t,e(o.default)}).call(this,t(1)["default"],t(2)["createPage"])},99:function(n,e,t){"use strict";t.r(e);var r=t(100),o=t(102);for(var i in o)["default"].indexOf(i)<0&&function(n){t.d(e,n,(function(){return o[n]}))}(i);t(104);var c,u=t(32),s=Object(u["default"])(o["default"],r["render"],r["staticRenderFns"],!1,null,"f07d9c0a",null,!1,r["components"],c);s.options.__file="subPackages/service/service.vue",e["default"]=s.exports}},[[98,"common/runtime","common/vendor"]]]);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/subPackages/service/service.js.map

4
unpackage/dist/dev/mp-weixin/subPackages/service/service.json

@ -0,0 +1,4 @@
{
"navigationBarTitleText": "投诉建议",
"usingComponents": {}
}

1
unpackage/dist/dev/mp-weixin/subPackages/service/service.wxml

@ -0,0 +1 @@
<view class="bg data-v-f07d9c0a"><view class="line-list data-v-f07d9c0a"><view class="form data-v-f07d9c0a"><view class="form-item data-v-f07d9c0a"><view class="form-title data-v-f07d9c0a">姓名:</view><input type="text" placeholder="请填写您的姓名" placeholder-style="color:#999999;font-size:31rpx" data-event-opts="{{[['input',[['__set_model',['$0','name','$event',[]],['form']]]]]}}" value="{{form.name}}" bindinput="__e" class="data-v-f07d9c0a"/></view><view class="form-item data-v-f07d9c0a"><view class="form-title data-v-f07d9c0a">手机号:</view><input type="number" placeholder="请填写您的联系方式" maxlength="11" placeholder-style="color:#999999;font-size:31rpx" data-event-opts="{{[['input',[['__set_model',['$0','phone','$event',[]],['form']]]]]}}" value="{{form.phone}}" bindinput="__e" class="data-v-f07d9c0a"/></view></view><view class="content data-v-f07d9c0a"><view class="content-name data-v-f07d9c0a">反馈内容:</view><textarea cols="30" rows="10" placeholder="请填写具体的问题内容" placeholder-style="color: #999999;font-size: 31rpx;" maxlength="500" data-event-opts="{{[['input',[['__set_model',['$0','content','$event',[]],['form']]]]]}}" value="{{form.content}}" bindinput="__e" class="data-v-f07d9c0a"></textarea><label class="_span data-v-f07d9c0a">{{$root.g0+"/500"}}</label></view></view><view data-event-opts="{{[['tap',[['sendForm']]]]}}" class="{{['data-v-f07d9c0a','btn',[(form.name&&form.phone&&form.content)?'actBtn':'']]}}" bindtap="__e">提交</view></view>

104
unpackage/dist/dev/mp-weixin/subPackages/service/service.wxss

@ -0,0 +1,104 @@
@charset "UTF-8";
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
view.data-v-f07d9c0a {
box-sizing: border-box;
font-family: PingFang SC;
}
.bg.data-v-f07d9c0a {
min-height: 100vh;
background-color: white;
padding-top: 35rpx;
overflow: hidden;
padding-bottom: 160rpx;
}
.line-list.data-v-f07d9c0a {
width: 697rpx;
margin: 0 auto;
}
.line-list .form .form-item.data-v-f07d9c0a {
width: 697rpx;
height: 120rpx;
display: flex;
align-items: center;
border-bottom: #D8D8D8 solid 1rpx;
}
.line-list .form .form-item .form-title.data-v-f07d9c0a {
width: 150rpx;
font-size: 31rpx;
font-weight: 500;
color: #333333;
}
.line-list .content.data-v-f07d9c0a {
margin: 0 auto;
margin-top: 36rpx;
width: 697rpx;
position: relative;
}
.line-list .content ._span.data-v-f07d9c0a {
font-weight: 400;
font-size: 24rpx;
color: #999999;
position: absolute;
right: 22rpx;
bottom: 14rpx;
}
.line-list .content .content-name.data-v-f07d9c0a {
font-size: 31rpx;
font-weight: 500;
color: #333333;
}
.line-list .content textarea.data-v-f07d9c0a {
width: 657rpx;
height: 243rpx;
background: #F7F7F7;
border-radius: 13rpx;
padding: 20rpx;
margin-top: 42rpx;
font-size: 31rpx;
font-weight: 500;
color: #333333;
padding-bottom: 45rpx;
}
.btn.data-v-f07d9c0a {
width: 697rpx;
height: 80rpx;
background: #CCCCCC;
border-radius: 40rpx;
margin: 0 auto;
margin-top: 160rpx;
text-align: center;
line-height: 80rpx;
font-size: 36rpx;
font-weight: 500;
color: #FFFFFF;
position: absolute;
left: 26.5rpx;
bottom: 46rpx;
}
.actBtn.data-v-f07d9c0a {
background: #00AEA0;
}

2
unpackage/dist/dev/mp-weixin/subPackages/user/coupon.js

@ -0,0 +1,2 @@
(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["subPackages/user/coupon"],{139:function(n,e,t){"use strict";(function(n,e){var o=t(4);t(26);o(t(25));var s=o(t(140));n.__webpack_require_UNI_MP_PLUGIN__=t,e(s.default)}).call(this,t(1)["default"],t(2)["createPage"])},140:function(n,e,t){"use strict";t.r(e);var o=t(141),s=t(143);for(var i in s)["default"].indexOf(i)<0&&function(n){t.d(e,n,(function(){return s[n]}))}(i);t(145);var r,c=t(32),u=Object(c["default"])(s["default"],o["render"],o["staticRenderFns"],!1,null,"a3c6d7ec",null,!1,o["components"],r);u.options.__file="subPackages/user/coupon.vue",e["default"]=u.exports},141:function(n,e,t){"use strict";t.r(e);var o=t(142);t.d(e,"render",(function(){return o["render"]})),t.d(e,"staticRenderFns",(function(){return o["staticRenderFns"]})),t.d(e,"recyclableRender",(function(){return o["recyclableRender"]})),t.d(e,"components",(function(){return o["components"]}))},142:function(n,e,t){"use strict";var o;t.r(e),t.d(e,"render",(function(){return s})),t.d(e,"staticRenderFns",(function(){return r})),t.d(e,"recyclableRender",(function(){return i})),t.d(e,"components",(function(){return o}));try{o={uniPopup:function(){return t.e("uni_modules/uni-popup/components/uni-popup/uni-popup").then(t.bind(null,77))}}}catch(c){if(-1===c.message.indexOf("Cannot find module")||-1===c.message.indexOf(".vue"))throw c;console.error(c.message),console.error("1. 排查组件名称拼写是否正确"),console.error("2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"),console.error("3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件")}var s=function(){var n=this,e=n.$createElement,t=(n._self._c,n.coupon.length),o=t>0?n.__map(n.coupon,(function(e,t){var o=n.__get_orig(e),s=1!=e.type?n.getPecenet(e.percent):null,i=e.open_time.slice(0,10),r=e.end_time.slice(0,10);return{$orig:o,m0:s,g1:i,g2:r}})):null;n.$mp.data=Object.assign({},{$root:{g0:t,l0:o}})},i=!1,r=[];s._withStripped=!0},143:function(n,e,t){"use strict";t.r(e);var o=t(144),s=t.n(o);for(var i in o)["default"].indexOf(i)<0&&function(n){t.d(e,n,(function(){return o[n]}))}(i);e["default"]=s.a},144:function(n,e,t){"use strict";(function(n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={data:function(){return{navList:[{name:"可使用",id:"wait_use"},{name:"已失效",id:"past"}],navActive:"",coupon:[],password:""}},onShow:function(){this.getList(this.navList[0])},methods:{getPecenet:function(n){return n>=100||n<=0?"":(n=100-n,n%10==0&&(n/=10),n)},use:function(){n.switchTab({url:"/pages/index/index"})},submitPassword:function(){var e=this;console.log("提交的兑换码",this.password);var t=this;t.password=t.password.trim(),t.$refs.popup.close(),""!=t.password?(t.Post({card_key:t.password},"/api/coupon/getCoupon").then((function(o){console.log(o.code),200==o.code?(t.coupon=[],e.getList(e.navList[0]),n.showToast({title:"兑换成功",icon:"none"})):n.showToast({title:o.msg,icon:"none"})})),t.password=""):n.showToast({title:"请输入优惠券领取卡号",icon:"none"})},cancel:function(){this.password="",this.$refs.popup.close()},open:function(){this.$refs.popup.open("center")},changeRules:function(n,e){var t=this.coupon;t.forEach((function(n,t){n.openRules=t===e&&!n.openRules})),this.coupon=t,this.$forceUpdate()},showNoPriceNew:function(n){return n&&n>0?n/100:"0"},changeNav:function(n){this.navActive=n,this.getList(this.navList[this.navActive])},getList:function(n){var e=this;e.Post({status:n.id,offset:0,limit:100},"/api/coupon/getUserCoupon").then((function(n){n&&(console.log(n.data),e.coupon=n.data)}))}}};e.default=t}).call(this,t(2)["default"])},145:function(n,e,t){"use strict";t.r(e);var o=t(146),s=t.n(o);for(var i in o)["default"].indexOf(i)<0&&function(n){t.d(e,n,(function(){return o[n]}))}(i);e["default"]=s.a},146:function(n,e,t){}},[[139,"common/runtime","common/vendor"]]]);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/subPackages/user/coupon.js.map

6
unpackage/dist/dev/mp-weixin/subPackages/user/coupon.json

@ -0,0 +1,6 @@
{
"navigationBarTitleText": "优惠券",
"usingComponents": {
"uni-popup": "/uni_modules/uni-popup/components/uni-popup/uni-popup"
}
}

1
unpackage/dist/dev/mp-weixin/subPackages/user/coupon.wxml

@ -0,0 +1 @@
<view class="bg data-v-a3c6d7ec"><view class="nav-list data-v-a3c6d7ec"><block wx:for="{{navList}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['changeNav',[index]]]]]}}" class="{{['data-v-a3c6d7ec','nav-item',[(index==navActive)?'active':'']]}}" bindtap="__e">{{item.name+''}}</view></block></view><block wx:if="{{$root.g0>0}}"><view class="coupon-list data-v-a3c6d7ec"><block wx:for="{{$root.l0}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view class="{{['data-v-a3c6d7ec','coupon-item',[(navActive!=0)?'hasUse':'']]}}"><view class="item-top data-v-a3c6d7ec"><view class="top-left data-v-a3c6d7ec"><block wx:if="{{item.$orig.type==1}}"><view class="price price-before data-v-a3c6d7ec"><label class="_span data-v-a3c6d7ec">{{item.$orig.discounts/100}}</label></view></block><block wx:else><view class="price data-v-a3c6d7ec"><label class="_span data-v-a3c6d7ec">{{item.m0}}</label>折</view></block><view class="subtitle data-v-a3c6d7ec">{{'满'+item.$orig.min_limit/100+'元可用'}}</view></view><view class="top-right data-v-a3c6d7ec"><view class="title data-v-a3c6d7ec">{{''+item.$orig.title+''}}</view><view class="time data-v-a3c6d7ec">{{''+item.g1+"-"+item.g2+'可用'}}</view></view></view><view class="item-circle data-v-a3c6d7ec"><view class="circle left data-v-a3c6d7ec"></view><view class="line data-v-a3c6d7ec"></view><view class="circle right data-v-a3c6d7ec"></view></view><view class="item-bottom data-v-a3c6d7ec"><view data-event-opts="{{[['tap',[['changeRules',['$0',index],[[['coupon','',index]]]]]]]}}" class="rules data-v-a3c6d7ec" bindtap="__e"><block wx:if="{{!item.$orig.openRules}}"><label class="_span data-v-a3c6d7ec">{{"使用规则:"+item.$orig.coupon_activity.note}}</label></block><block wx:else><view class="open data-v-a3c6d7ec">{{"使用规则:"+item.$orig.coupon_activity.note}}</view></block><block wx:if="{{!item.$orig.openRules}}"><image src="https://yjks.oss-cn-shanghai.aliyuncs.com/uploads/20230415/6a7630c176f976bb16674dde482779fb.png" mode class="data-v-a3c6d7ec"></image></block><block wx:else><image src="https://yjks.oss-cn-shanghai.aliyuncs.com/uploads/20230415/f0073b18b3ab88cac62de60411360fc1.png" mode class="data-v-a3c6d7ec"></image></block></view></view></view></block></view></block><block wx:else><view class="noCoupon data-v-a3c6d7ec"><image class="no-couPon _img data-v-a3c6d7ec" src="https://static.ticket.sz-trip.com/yandu/images/user/couponNo.png"></image><view class="data-v-a3c6d7ec">暂无优惠券</view></view></block><uni-popup vue-id="15766e3c-1" type="center" data-ref="popup" class="data-v-a3c6d7ec vue-ref" bind:__l="__l" vue-slots="{{['default']}}"><view class="popupBox data-v-a3c6d7ec"><view class="name data-v-a3c6d7ec">兑换优惠券</view><input type="text" placeholder="请输入兑换码" data-event-opts="{{[['input',[['__set_model',['','password','$event',[]]]]]]}}" value="{{password}}" bindinput="__e" class="data-v-a3c6d7ec"/><view class="btns data-v-a3c6d7ec"><view data-event-opts="{{[['tap',[['cancel',['$event']]]]]}}" class="cancel data-v-a3c6d7ec" bindtap="__e">取消</view><label class="_span data-v-a3c6d7ec"></label><view data-event-opts="{{[['tap',[['submitPassword',['$event']]]]]}}" class="sub data-v-a3c6d7ec" bindtap="__e">兑换</view></view></view></uni-popup></view>

283
unpackage/dist/dev/mp-weixin/subPackages/user/coupon.wxss

@ -0,0 +1,283 @@
@charset "UTF-8";
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.bg.data-v-a3c6d7ec {
background: #F7F7F7;
min-height: 100vh;
}
/*导航*/
.nav-list.data-v-a3c6d7ec {
width: 100%;
height: 107rpx;
display: flex;
justify-content: space-around;
align-items: center;
position: fixed;
background: #FFFFFF;
}
.nav-list .nav-item.data-v-a3c6d7ec {
text-align: center;
line-height: 106rpx;
box-sizing: border-box;
font-size: 31rpx;
font-weight: bold;
padding: 0.23rpx 0;
color: #333333;
}
.nav-list .nav-item.active.data-v-a3c6d7ec {
color: #71B580;
border-bottom: 7rpx solid #71B580;
}
.coupon-list.data-v-a3c6d7ec {
/* width: 100%; */
position: absolute;
top: 115rpx;
padding: 0 26.67rpx;
background: #F7F7F7;
min-height: 100vh;
padding-bottom: 30rpx;
}
.coupon-list .coupon-item.data-v-a3c6d7ec {
background: #ffffff;
margin-top: 20rpx;
border-radius: 13rpx;
}
.coupon-list .coupon-item .item-top.data-v-a3c6d7ec {
display: flex;
padding: 30rpx 16rpx 24rpx 36rpx;
align-items: center;
}
.coupon-item .item-top .price.data-v-a3c6d7ec {
font-size: 25rpx;
font-weight: bold;
color: #FC5209;
display: flex;
align-items: baseline;
justify-content: center;
}
.coupon-item .item-top .price ._span.data-v-a3c6d7ec {
font-size: 60rpx;
margin-right: 6.67rpx;
}
.top-left .subtitle.data-v-a3c6d7ec {
width: 100%;
font-size: 24rpx;
color: #FC5209;
padding-left: 6rpx;
overflow: hidden;
white-space: nowrap;
}
.top-left .price-before.data-v-a3c6d7ec::before {
content: "¥";
font-size: 32rpx;
}
.top-right.data-v-a3c6d7ec {
margin-left: 46.67rpx;
font-size: 25rpx;
font-weight: 500;
color: #111;
}
.top-right .title.data-v-a3c6d7ec {
margin-bottom: 26rpx;
font-size: 31rpx;
font-weight: bold;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.coupon-list .coupon-item .item-circle.data-v-a3c6d7ec {
/* position: relative; */
line-height: 1rpx;
height: 1rpx;
width: 692rpx;
}
.coupon-list .coupon-item .item-circle .line.data-v-a3c6d7ec {
border-bottom: 1px dashed #ccc;
/* position: absolute; */
top: 0;
bottom: 0;
left: 0;
right: 0;
/* width: calc(100% - 1rem); */
height: 0.1rpx;
margin: auto;
z-index: 9;
}
.coupon-list .coupon-item .item-circle .circle.data-v-a3c6d7ec {
position: absolute;
top: 0;
bottom: 0;
margin: auto;
border-radius: 50%;
background: #ccc;
width: 0.46rpx;
height: 0.46rpx;
z-index: 10;
}
.coupon-list .coupon-item .item-circle .circle.left.data-v-a3c6d7ec {
left: -0.23rpx;
}
.coupon-list .coupon-item .item-circle .circle.right.data-v-a3c6d7ec {
right: -0.23rpx;
}
.item-bottom.data-v-a3c6d7ec {
padding: 16rpx 20rpx;
display: flex;
align-items: flex-start;
justify-content: space-between;
}
.item-bottom .rules.data-v-a3c6d7ec {
font-size: 24rpx;
font-weight: 500;
color: #999;
display: flex;
line-height: 47rpx;
}
.item-bottom .rules ._span.data-v-a3c6d7ec {
width: 569rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.item-bottom .rules image.data-v-a3c6d7ec {
width: 20rpx;
height: 20rpx;
margin-left: 68rpx;
margin-top: 15rpx;
}
.item-bottom .use.data-v-a3c6d7ec {
width: 133rpx;
height: 47rpx;
border: 1px solid #FC5209;
border-radius: 23rpx;
text-align: center;
font-size: 25rpx;
font-weight: 500;
color: #fc5209;
line-height: 47rpx;
}
.open.data-v-a3c6d7ec {
width: 569rpx;
min-height: 30rpx;
flex-wrap: wrap;
}
.duihuan.data-v-a3c6d7ec {
width: 293rpx;
height: 67rpx;
background: #fff;
box-shadow: 0rpx 0rpx 7rpx 0rpx rgba(153, 153, 153, 0.18);
border-radius: 33rpx;
font-size: 31rpx;
font-weight: 500;
color: #07C49B;
text-align: center;
line-height: 67rpx;
margin-left: 228.67rpx;
position: fixed;
bottom: 52.67rpx;
}
.top-left.data-v-a3c6d7ec {
width: 140rpx;
}
.top-left .price.data-v-a3c6d7ec {
width: 100%;
/* overflow: hidden; */
white-space: nowrap;
}
.popupBox.data-v-a3c6d7ec {
background: #fff;
border-radius: 20rpx;
padding: 40.67rpx 39.33rpx 35.33rpx 40rpx;
}
.popupBox .name.data-v-a3c6d7ec {
font-size: 35rpx;
color: #111;
font-weight: bold;
margin-bottom: 57.33rpx;
text-align: center;
}
.popupBox input.data-v-a3c6d7ec {
width: 454rpx;
height: 81rpx;
border: 1px solid #D8D8D8;
border-radius: 7rpx;
font-size: 31rpx;
font-weight: 500;
color: #999999;
line-height: 81rpx;
margin: 0 39.33rpx 72.67rpx 40rpx;
text-align: center;
}
.popupBox .btns.data-v-a3c6d7ec {
display: flex;
align-items: center;
font-size: 35rpx;
justify-content: space-around;
}
.popupBox .btns .cancel.data-v-a3c6d7ec {
color: #111;
}
.popupBox .btns ._span.data-v-a3c6d7ec {
width: 1rpx;
height: 53rpx;
background: #D8D8D8;
}
.popupBox .btns .sub.data-v-a3c6d7ec {
color: #07C49B;
}
.hasUse.data-v-a3c6d7ec {
color: #999 !important;
}
.hasUse .item-top .top-left .price.data-v-a3c6d7ec {
color: #999 !important;
}
.hasUse .item-top .top-left .subtitle.data-v-a3c6d7ec {
color: #999 !important;
}
.hasUse .item-top .top-right .title.data-v-a3c6d7ec {
color: #999 !important;
}
.hasUse .item-top .top-right .time.data-v-a3c6d7ec {
color: #999 !important;
}
.hasUse .item-bottom .use.data-v-a3c6d7ec {
border: 1px solid #B3B3B3 !important;
color: #999999 !important;
}
.noCoupon.data-v-a3c6d7ec {
padding-top: 524rpx;
text-align: center;
font-size: 31rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.noCoupon .no-couPon.data-v-a3c6d7ec {
width: 173rpx;
height: 173rpx;
margin-bottom: 15rpx;
}

2
unpackage/dist/dev/mp-weixin/subPackages/user/privacy.js

@ -0,0 +1,2 @@
(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["subPackages/user/privacy"],{123:function(n,e,t){"use strict";(function(n,e){var r=t(4);t(26);r(t(25));var u=r(t(124));n.__webpack_require_UNI_MP_PLUGIN__=t,e(u.default)}).call(this,t(1)["default"],t(2)["createPage"])},124:function(n,e,t){"use strict";t.r(e);var r=t(125),u=t(127);for(var c in u)["default"].indexOf(c)<0&&function(n){t.d(e,n,(function(){return u[n]}))}(c);t(129);var i,a=t(32),o=Object(a["default"])(u["default"],r["render"],r["staticRenderFns"],!1,null,"0aa4cf54",null,!1,r["components"],i);o.options.__file="subPackages/user/privacy.vue",e["default"]=o.exports},125:function(n,e,t){"use strict";t.r(e);var r=t(126);t.d(e,"render",(function(){return r["render"]})),t.d(e,"staticRenderFns",(function(){return r["staticRenderFns"]})),t.d(e,"recyclableRender",(function(){return r["recyclableRender"]})),t.d(e,"components",(function(){return r["components"]}))},126:function(n,e,t){"use strict";var r;t.r(e),t.d(e,"render",(function(){return u})),t.d(e,"staticRenderFns",(function(){return i})),t.d(e,"recyclableRender",(function(){return c})),t.d(e,"components",(function(){return r}));var u=function(){var n=this,e=n.$createElement;n._self._c},c=!1,i=[];u._withStripped=!0},127:function(n,e,t){"use strict";t.r(e);var r=t(128),u=t.n(r);for(var c in r)["default"].indexOf(c)<0&&function(n){t.d(e,n,(function(){return r[n]}))}(c);e["default"]=u.a},128:function(n,e,t){"use strict";(function(n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={data:function(){return{list:[{name:"用户协议",id:"10001"},{name:"隐私协议",id:"9999"},{name:"个人信息收集清单",id:"9997"}]}},onShow:function(){},methods:{goInfo:function(e){n.navigateTo({url:"/subPackages/user/privacyInfo?id="+e.id})}}};e.default=t}).call(this,t(2)["default"])},129:function(n,e,t){"use strict";t.r(e);var r=t(130),u=t.n(r);for(var c in r)["default"].indexOf(c)<0&&function(n){t.d(e,n,(function(){return r[n]}))}(c);e["default"]=u.a},130:function(n,e,t){}},[[123,"common/runtime","common/vendor"]]]);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/subPackages/user/privacy.js.map

4
unpackage/dist/dev/mp-weixin/subPackages/user/privacy.json

@ -0,0 +1,4 @@
{
"navigationBarTitleText": "详情",
"usingComponents": {}
}

1
unpackage/dist/dev/mp-weixin/subPackages/user/privacy.wxml

@ -0,0 +1 @@
<view class="bg data-v-0aa4cf54"><view class="list data-v-0aa4cf54"><block wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="id"><view data-event-opts="{{[['tap',[['goInfo',['$0'],[[['list','id',item.id]]]]]]]}}" class="item data-v-0aa4cf54" bindtap="__e">{{''+item.name+''}}</view></block></view></view>

48
unpackage/dist/dev/mp-weixin/subPackages/user/privacy.wxss

@ -0,0 +1,48 @@
@charset "UTF-8";
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
view.data-v-0aa4cf54 {
box-sizing: border-box;
}
.list.data-v-0aa4cf54 {
width: 698rpx;
background: #FFFFFF;
box-shadow: 0px 4rpx 12rpx 0px rgba(150, 149, 149, 0.3);
border-radius: 18rpx;
margin: 0 auto;
margin-top: 20rpx;
padding: 0 20rpx;
}
.item.data-v-0aa4cf54 {
width: 100%;
height: 93rpx;
border-bottom: 1rpx solid #EEEFF7;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
line-height: 93rpx;
}

2
unpackage/dist/dev/mp-weixin/subPackages/user/privacyInfo.js

@ -0,0 +1,2 @@
(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["subPackages/user/privacyInfo"],{131:function(n,t,e){"use strict";(function(n,t){var r=e(4);e(26);r(e(25));var c=r(e(132));n.__webpack_require_UNI_MP_PLUGIN__=e,t(c.default)}).call(this,e(1)["default"],e(2)["createPage"])},132:function(n,t,e){"use strict";e.r(t);var r=e(133),c=e(135);for(var u in c)["default"].indexOf(u)<0&&function(n){e.d(t,n,(function(){return c[n]}))}(u);e(137);var i,o=e(32),a=Object(o["default"])(c["default"],r["render"],r["staticRenderFns"],!1,null,null,null,!1,r["components"],i);a.options.__file="subPackages/user/privacyInfo.vue",t["default"]=a.exports},133:function(n,t,e){"use strict";e.r(t);var r=e(134);e.d(t,"render",(function(){return r["render"]})),e.d(t,"staticRenderFns",(function(){return r["staticRenderFns"]})),e.d(t,"recyclableRender",(function(){return r["recyclableRender"]})),e.d(t,"components",(function(){return r["components"]}))},134:function(n,t,e){"use strict";var r;e.r(t),e.d(t,"render",(function(){return c})),e.d(t,"staticRenderFns",(function(){return i})),e.d(t,"recyclableRender",(function(){return u})),e.d(t,"components",(function(){return r}));var c=function(){var n=this,t=n.$createElement,e=(n._self._c,n.formateRichText(n.content));n.$mp.data=Object.assign({},{$root:{m0:e}})},u=!1,i=[];c._withStripped=!0},135:function(n,t,e){"use strict";e.r(t);var r=e(136),c=e.n(r);for(var u in r)["default"].indexOf(u)<0&&function(n){e.d(t,n,(function(){return r[n]}))}(u);t["default"]=c.a},136:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={data:function(){return{content:""}},onLoad:function(n){var t=this;this.Post({id:n.id},"/api/article/getArticleById").then((function(n){t.content=n.data.content}))}};t.default=r},137:function(n,t,e){"use strict";e.r(t);var r=e(138),c=e.n(r);for(var u in r)["default"].indexOf(u)<0&&function(n){e.d(t,n,(function(){return r[n]}))}(u);t["default"]=c.a},138:function(n,t,e){}},[[131,"common/runtime","common/vendor"]]]);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/subPackages/user/privacyInfo.js.map

4
unpackage/dist/dev/mp-weixin/subPackages/user/privacyInfo.json

@ -0,0 +1,4 @@
{
"navigationBarTitleText": "详情",
"usingComponents": {}
}

1
unpackage/dist/dev/mp-weixin/subPackages/user/privacyInfo.wxml

@ -0,0 +1 @@
<view class="bg"><view class="text"><rich-text nodes="{{$root.m0}}"></rich-text></view></view>

29
unpackage/dist/dev/mp-weixin/subPackages/user/privacyInfo.wxss

@ -0,0 +1,29 @@
@charset "UTF-8";
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.text {
padding: 20rpx;
}

2
unpackage/dist/dev/mp-weixin/subPackages/user/profile.js

@ -0,0 +1,2 @@
(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["subPackages/user/profile"],{106:function(e,t,n){"use strict";(function(e,t){var o=n(4);n(26);o(n(25));var a=o(n(107));e.__webpack_require_UNI_MP_PLUGIN__=n,t(a.default)}).call(this,n(1)["default"],n(2)["createPage"])},107:function(e,t,n){"use strict";n.r(t);var o=n(108),a=n(110);for(var r in a)["default"].indexOf(r)<0&&function(e){n.d(t,e,(function(){return a[e]}))}(r);n(113);var i,c=n(32),s=Object(c["default"])(a["default"],o["render"],o["staticRenderFns"],!1,null,"88bf8616",null,!1,o["components"],i);s.options.__file="subPackages/user/profile.vue",t["default"]=s.exports},108:function(e,t,n){"use strict";n.r(t);var o=n(109);n.d(t,"render",(function(){return o["render"]})),n.d(t,"staticRenderFns",(function(){return o["staticRenderFns"]})),n.d(t,"recyclableRender",(function(){return o["recyclableRender"]})),n.d(t,"components",(function(){return o["components"]}))},109:function(e,t,n){"use strict";var o;n.r(t),n.d(t,"render",(function(){return a})),n.d(t,"staticRenderFns",(function(){return i})),n.d(t,"recyclableRender",(function(){return r})),n.d(t,"components",(function(){return o}));var a=function(){var e=this,t=e.$createElement,n=(e._self._c,e.info?e.showImg(e.info.avatar):null);e._isMounted||(e.e0=function(t){e.showSexSelect=!0}),e.$mp.data=Object.assign({},{$root:{m0:n}})},r=!1,i=[];a._withStripped=!0},110:function(e,t,n){"use strict";n.r(t);var o=n(111),a=n.n(o);for(var r in o)["default"].indexOf(r)<0&&function(e){n.d(t,e,(function(){return o[e]}))}(r);t["default"]=a.a},111:function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(112),a={name:"Profile",data:function(){var e=this.getDate({format:!0});return{date:e,info:null,showSexSelect:!1,sexes:[{value:"1",text:"男"},{value:"2",text:"女"}],today:null,showCropper:!1,nickname:"",gender:"",birthday:"",email:"",fileList1:[],startDate:"1900-1-1",endDate:"2050-1-1"}},onShow:function(){console.log(this.$store.state.user.userInfo,e.getStorageSync("userInfo")),this.getList()},computed:{},methods:{getFile:function(e){console.log(e)},getList:function(){var t=this,n=new Date;n=n.getFullYear()+"/"+(n.getMonth()+1)+"/"+n.getDate(),this.today=n,this.Post({},"/api/user/userInfo").then((function(n){if(!n.data.birthday){var o=new Date;n.data.birthday=o.getFullYear()+"/"+(o.getMonth()+1)+"/"+o.getDate()}t.info=n.data,t.nickname=t.info.nickname,t.email=t.info.email,t.birthday=t.info.birthday,t.gender=t.info.gender,t.info.token=JSON.parse(e.getStorageSync("userInfo")).token||t.$store.state.user.userInfo.token,console.log(t.info),t.$store.commit("changeUserInfo",t.info)}))},uploadImg:function(){var t=this;e.chooseImage({success:function(n){var a=n.tempFilePaths;(0,o.pathToBase64)(a[0]).then((function(n){t.Post({method:"POST",base64:n},"/api/common/base64").then((function(n){n.data&&t.Post({avatar:n.data},"/api/user/profile").then((function(n){e.showModal({title:"提示",content:n.msg,showCancel:!1,success:function(e){e.confirm&&t.getList()}})}))}))}))}})},bindDateChange:function(e){this.birthday=e.detail.value},getDate:function(e){var t=new Date,n=t.getFullYear(),o=t.getMonth()+1,a=t.getDate();return"start"===e?n-=60:"end"===e&&(n+=2),o=o>9?o:"0"+o,a=a>9?a:"0"+a,"".concat(n,"/").concat(o,"/").concat(a)},changesex:function(e){this.gender=e.detail.value},submit:function(){var t=this;e.showModal({title:"提示",content:"确认修改您的信息?",success:function(n){n.confirm&&t.Post({nickname:t.nickname,gender:t.gender,birthday:t.birthday},"/api/user/profile").then((function(n){console.log(n),1==n.code&&e.showModal({title:"提示",content:n.msg,showCancel:!1,success:function(e){e.confirm&&t.getList()}})}))}})}}};t.default=a}).call(this,n(2)["default"])},113:function(e,t,n){"use strict";n.r(t);var o=n(114),a=n.n(o);for(var r in o)["default"].indexOf(r)<0&&function(e){n.d(t,e,(function(){return o[e]}))}(r);t["default"]=a.a},114:function(e,t,n){}},[[106,"common/runtime","common/vendor"]]]);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/subPackages/user/profile.js.map

4
unpackage/dist/dev/mp-weixin/subPackages/user/profile.json

@ -0,0 +1,4 @@
{
"navigationBarTitleText": "个人信息",
"usingComponents": {}
}

1
unpackage/dist/dev/mp-weixin/subPackages/user/profile.wxml

@ -0,0 +1 @@
<block wx:if="{{info}}"><view class="data-v-88bf8616"><view class="user-other-info data-v-88bf8616"><view class="info-avatar-top _div data-v-88bf8616"><label class="_span data-v-88bf8616">头像</label><view data-event-opts="{{[['tap',[['uploadImg']]]]}}" bindtap="__e" class="data-v-88bf8616"><image style="width:80rpx;height:80rpx;border-radius:50%;" src="{{$root.m0}}" mode="aspectFill" class="data-v-88bf8616"></image></view></view><navigator class="userinfo-item data-v-88bf8616" url="/subPackages/user/changeNickname" tag="view"><label class="_span data-v-88bf8616">姓名</label><view class="data-v-88bf8616">{{nickname}}</view></navigator><view data-event-opts="{{[['tap',[['e0',['$event']]]]]}}" class="userinfo-item data-v-88bf8616" bindtap="__e"><label class="_span data-v-88bf8616">性别</label><radio-group data-event-opts="{{[['change',[['changesex',['$event']]]]]}}" bindchange="__e" class="data-v-88bf8616"><block wx:for="{{sexes}}" wx:for-item="item" wx:for-index="index" wx:key="index"><label style="margin-right:15rpx;" class="data-v-88bf8616"><radio color="#7FD491" value="{{item.value}}" checked="{{index===info.gender-1}}" class="data-v-88bf8616"></radio>{{item.text+''}}</label></block></radio-group></view><view class="userinfo-item data-v-88bf8616"><label class="_span data-v-88bf8616">手机号</label><view class="data-v-88bf8616">{{info.mobile}}</view></view><view class="userinfo-item data-v-88bf8616"><label class="_span data-v-88bf8616">生日</label><picker mode="date" value="{{date}}" start="{{startDate}}" end="{{endDate}}" data-event-opts="{{[['change',[['bindDateChange',['$event']]]]]}}" bindchange="__e" class="data-v-88bf8616"><view class="uni-input data-v-88bf8616">{{birthday}}</view></picker></view><view data-event-opts="{{[['tap',[['submit',['$event']]]]]}}" class="btn-tao data-v-88bf8616" bindtap="__e">保存</view></view></view></block>

116
unpackage/dist/dev/mp-weixin/subPackages/user/profile.wxss

@ -0,0 +1,116 @@
view.data-v-88bf8616 {
box-sizing: content-box;
}
.info-avatar-top.data-v-88bf8616 {
display: flex;
justify-content: space-between;
font-size: 30rpx;
border-bottom: 1rpx solid #D8D8D8;
padding: 40rpx 0;
height: 48rpx;
color: #333;
align-items: center;
}
.info-avatar-top view.data-v-88bf8616{
display: flex;
align-items: center;
}
.info-avatar-top view.data-v-88bf8616:after{
font-family: "iconfont";
content: "\e62e";
font-size: 26rpx;
font-weight: bold;
margin-left: 6rpx;
}
.info-avatar-top ._img.data-v-88bf8616 {
width: 80rpx;
height: 80rpx;
border-radius: 50%;
margin-right: 10rpx;
}
.change-avatar-btn.data-v-88bf8616 {
color: #FFF;
width: 220rpx;
margin: 0 auto;
line-height: 70rpx;
border-radius: 20rpx;
background: #4C93FF;
position: relative;
font-size: 34rpx;
}
.change-avatar-btn input.data-v-88bf8616 {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
opacity: 0;
}
.user-other-info.data-v-88bf8616 {
margin: 30rpx;
}
.userinfo-item.data-v-88bf8616 {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 30rpx;
border-bottom: 1rpx solid #D8D8D8;
padding: 40rpx 0;
height: 48rpx;
color: #333;
}
.info-avatar-top ._span.data-v-88bf8616 {
font-weight: 500;
font-size: 31rpx;
flex-shrink: 0;
}
.userinfo-item ._span.data-v-88bf8616 {
font-weight: 500;
font-size: 31rpx;
flex-shrink: 0;
}
.userinfo-item view.data-v-88bf8616:after,
.birthday-box.data-v-88bf8616:after {
font-family: "iconfont";
content: "\e62e";
font-size: 26rpx;
font-weight: bold;
margin-left: 6rpx;
}
.birthday-box.data-v-88bf8616 {
text-align: right;
}
.cropper.data-v-88bf8616 {
width: auto;
height: 100%;
}
.cropper-content.data-v-88bf8616 {
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 1000;
}
.dialog-footer .change-avatar-btn.data-v-88bf8616 {
position: fixed;
text-align: center;
bottom: 80rpx;
left: 50%;
margin-left: -110rpx;
}
.btn-tao.data-v-88bf8616 {
text-align: center;
font-size: 30rpx;
width: 697rpx;
height: 80rpx;
background: linear-gradient(90deg, #9EE4FE, #7FD491);
border-radius: 40rpx;
line-height: 80rpx;
color: #FFFFFF;
position: fixed;
left: 26rpx;
bottom: 100rpx;
}

2
unpackage/dist/dev/mp-weixin/subPackages/user/travelerList.js

@ -0,0 +1,2 @@
(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["subPackages/user/travelerList"],{115:function(t,e,n){"use strict";(function(t,e){var i=n(4);n(26);i(n(25));var r=i(n(116));t.__webpack_require_UNI_MP_PLUGIN__=n,e(r.default)}).call(this,n(1)["default"],n(2)["createPage"])},116:function(t,e,n){"use strict";n.r(e);var i=n(117),r=n(119);for(var s in r)["default"].indexOf(s)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(s);n(121);var u,o=n(32),a=Object(o["default"])(r["default"],i["render"],i["staticRenderFns"],!1,null,"7d9761e9",null,!1,i["components"],u);a.options.__file="subPackages/user/travelerList.vue",e["default"]=a.exports},117:function(t,e,n){"use strict";n.r(e);var i=n(118);n.d(e,"render",(function(){return i["render"]})),n.d(e,"staticRenderFns",(function(){return i["staticRenderFns"]})),n.d(e,"recyclableRender",(function(){return i["recyclableRender"]})),n.d(e,"components",(function(){return i["components"]}))},118:function(t,e,n){"use strict";var i;n.r(e),n.d(e,"render",(function(){return r})),n.d(e,"staticRenderFns",(function(){return u})),n.d(e,"recyclableRender",(function(){return s})),n.d(e,"components",(function(){return i}));var r=function(){var t=this,e=t.$createElement;t._self._c;t._isMounted||(t.e0=function(e){t.showType=0},t.e1=function(e){t.showType=1})},s=!1,u=[];r._withStripped=!0},119:function(t,e,n){"use strict";n.r(e);var i=n(120),r=n.n(i);for(var s in i)["default"].indexOf(s)<0&&function(t){n.d(e,t,(function(){return i[t]}))}(s);e["default"]=r.a},120:function(t,e,n){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n={name:"travelerList",data:function(){return{showType:0,travelList:[],addressList:[]}},onShow:function(){this.init()},methods:{init:function(){var t=this;this.Post({},"/api/user/contactList").then((function(e){e&&(t.travelList=e.data)})),this.Post({},"/api/user/consigneeList").then((function(e){e&&(t.addressList=e.data)}))},delet:function(e){var n=this;t.showModal({title:"提示",content:"确定要删除该出行人吗?",success:function(i){i.confirm?n.Post({id:e.id},"/api/user/delDetail").then((function(e){e&&t.showToast({icon:"none",title:e.msg}),n.init()})):i.cancel&&console.log("用户点击取消")}})},defaultC:function(t){var e=this;this.Post({id:t.id,is_default:1},"/api/user/editContact").then((function(n){1==n.code&&(e.travelList.forEach((function(t){return t.is_default=0})),t.is_default=!t.is_default)}))},edit:function(e){var n="";n=this.showType?"/subPackages/user/myAddressAdd?id="+e:"/subPackages/user/myContactsAdd?type=edit&id="+e,t.navigateTo({url:n})}}};e.default=n}).call(this,n(2)["default"])},121:function(t,e,n){"use strict";n.r(e);var i=n(122),r=n.n(i);for(var s in i)["default"].indexOf(s)<0&&function(t){n.d(e,t,(function(){return i[t]}))}(s);e["default"]=r.a},122:function(t,e,n){}},[[115,"common/runtime","common/vendor"]]]);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/subPackages/user/travelerList.js.map

4
unpackage/dist/dev/mp-weixin/subPackages/user/travelerList.json

@ -0,0 +1,4 @@
{
"navigationBarTitleText": "常用信息",
"usingComponents": {}
}

1
unpackage/dist/dev/mp-weixin/subPackages/user/travelerList.wxml

@ -0,0 +1 @@
<view class="bg data-v-7d9761e9"><view class="cancat-nav flex-around data-v-7d9761e9"><view data-event-opts="{{[['tap',[['e0',['$event']]]]]}}" class="{{['data-v-7d9761e9','concat-nav-item',showType===0?'active':'']}}" bindtap="__e"><view class="data-v-7d9761e9">出行人信息</view><block wx:if="{{showType===0}}"><view class="active-bar data-v-7d9761e9"></view></block></view><view data-event-opts="{{[['tap',[['e1',['$event']]]]]}}" class="{{['data-v-7d9761e9','concat-nav-item',showType===1?'active':'']}}" bindtap="__e"><view class="data-v-7d9761e9">收货地址</view><block wx:if="{{showType===1}}"><view class="active-bar data-v-7d9761e9"></view></block></view></view><block wx:if="{{showType===0}}"><view class="data-v-7d9761e9"><block wx:for="{{travelList}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view class="item data-v-7d9761e9"><view class="name data-v-7d9761e9"><view class="data-v-7d9761e9">{{''+item.name+''}}</view><view class="data-v-7d9761e9">{{''+item.tel+''}}</view></view><view class="idcard data-v-7d9761e9"><view class="data-v-7d9761e9">{{''+item.document_type_text+':'}}</view><view class="data-v-7d9761e9">{{''+item.id_number+''}}</view></view><view class="item-btn data-v-7d9761e9"><view class="choice data-v-7d9761e9"><block wx:if="{{item.is_default==1}}"><image src="https://static.ticket.sz-trip.com/yandu/images/user/dui.png" mode="aspectFill" class="data-v-7d9761e9"></image></block><block wx:else><view data-event-opts="{{[['tap',[['defaultC',['$0'],[[['travelList','',index]]]]]]]}}" class="yuan data-v-7d9761e9" catchtap="__e"></view></block><view class="data-v-7d9761e9">默认出行人</view></view><view class="btn-list data-v-7d9761e9"><view data-event-opts="{{[['tap',[['edit',['$0'],[[['travelList','',index,'id']]]]]]]}}" class="btn-item data-v-7d9761e9" catchtap="__e">修改</view><view data-event-opts="{{[['tap',[['delet',['$0'],[[['travelList','',index]]]]]]]}}" class="btn-item data-v-7d9761e9" catchtap="__e">删除</view></view></view></view></block></view></block><block wx:else><view class="data-v-7d9761e9"><block wx:for="{{addressList}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view class="item data-v-7d9761e9"><view class="name data-v-7d9761e9"><view class="data-v-7d9761e9">{{''+item.name+''}}</view><view class="data-v-7d9761e9">{{''+item.tel+''}}<block wx:if="{{item.is_default==1}}"><label class="_span data-v-7d9761e9">默认</label></block></view></view><view class="idcard data-v-7d9761e9"><view class="data-v-7d9761e9">收货地址:</view><view class="text-overflow data-v-7d9761e9">{{''+item.address+''}}</view></view><view class="item-btn data-v-7d9761e9" style="justify-content:flex-end;"><view class="btn-list data-v-7d9761e9"><view data-event-opts="{{[['tap',[['edit',['$0'],[[['addressList','',index,'id']]]]]]]}}" class="btn-item data-v-7d9761e9" catchtap="__e">修改</view><view data-event-opts="{{[['tap',[['delet',['$0'],[[['addressList','',index]]]]]]]}}" class="btn-item data-v-7d9761e9" catchtap="__e">删除</view></view></view></view></block></view></block><view class="btn-box data-v-7d9761e9"><navigator class="btn data-v-7d9761e9" url="{{showType?'/subPackages/user/myAddressAdd':'/subPackages/user/myContactsAdd'}}">{{''+(showType?'添加收货地址':'添加出行人')+''}}</navigator></view></view>

154
unpackage/dist/dev/mp-weixin/subPackages/user/travelerList.wxss

@ -0,0 +1,154 @@
@charset "UTF-8";
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.bg.data-v-7d9761e9 {
position: relative;
background: #F7F7F7;
height: 100vh;
overflow-x: hidden;
padding-bottom: 200rpx;
}
.cancat-nav.data-v-7d9761e9 {
width: 100%;
display: flex;
height: 112rpx;
flex-shrink: 0;
}
.cancat-nav .concat-nav-item.data-v-7d9761e9 {
ffont-weight: 500;
font-size: 35rpx;
color: #000000;
text-align: center;
}
.cancat-nav .concat-nav-item.active.data-v-7d9761e9 {
color: #000000;
}
.cancat-nav .active-bar.data-v-7d9761e9 {
width: 100%;
height: 11rpx;
background: #71B580;
}
.item.data-v-7d9761e9 {
width: 697rpx;
background: #FFFFFF;
border-radius: 13rpx;
margin: 0 auto;
margin-bottom: 28rpx;
padding: 26rpx;
}
.item .name.data-v-7d9761e9,
.item .idcard.data-v-7d9761e9 {
display: flex;
font-size: 31rpx;
font-weight: bold;
color: #333333;
}
.item .name view.data-v-7d9761e9:last-child {
margin-left: 40rpx;
}
.item .name ._span.data-v-7d9761e9 {
padding: 3rpx 9rpx;
background: #71B580;
border-radius: 7rpx;
font-weight: bold;
font-size: 24rpx;
color: #FFFFFF;
margin-left: 15rpx;
}
.item .idcard.data-v-7d9761e9 {
margin-top: 26rpx;
}
.item .idcard view.data-v-7d9761e9:last-child {
margin-left: 14rpx;
font-weight: 400;
max-width: 492rpx;
}
.item .item-btn.data-v-7d9761e9 {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 40rpx;
}
.item .item-btn .choice.data-v-7d9761e9 {
display: flex;
align-items: center;
}
.item .item-btn .choice view.data-v-7d9761e9:last-child {
margin-left: 20rpx;
font-size: 27rpx;
font-weight: 500;
color: #333333;
}
.item .item-btn .choice image.data-v-7d9761e9 {
width: 40rpx;
height: 40rpx;
}
.item .item-btn .choice .yuan.data-v-7d9761e9 {
width: 40rpx;
height: 40rpx;
background: rgba(255, 200, 37, 0);
border: 1rpx solid #999999;
border-radius: 20rpx;
}
.item .item-btn .btn-list.data-v-7d9761e9 {
display: flex;
align-items: center;
}
.item .item-btn .btn-list view.data-v-7d9761e9 {
width: 134rpx;
height: 54rpx;
background: #FFFFFF;
border: 1px solid #999999;
border-radius: 27rpx;
font-size: 27rpx;
font-weight: 500;
color: #333333;
line-height: 52rpx;
text-align: center;
}
.item .item-btn .btn-list view.data-v-7d9761e9:last-child {
margin-left: 14rpx;
}
.btn-box.data-v-7d9761e9 {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
height: 200rpx;
}
.btn-box .btn.data-v-7d9761e9 {
width: 697rpx;
line-height: 80rpx;
background: #00AEA0;
border-radius: 37rpx;
font-weight: 500;
font-size: 36rpx;
color: #FFFFFF;
text-align: center;
position: fixed;
bottom: 53rpx;
left: 26.67rpx;
}

11
unpackage/dist/dev/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.js

File diff suppressed because one or more lines are too long

6
unpackage/dist/dev/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.json

@ -0,0 +1,6 @@
{
"usingComponents": {
"uni-transition": "/uni_modules/uni-transition/components/uni-transition/uni-transition"
},
"component": true
}

1
unpackage/dist/dev/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.wxml

@ -0,0 +1 @@
<block wx:if="{{showPopup}}"><view class="{{['uni-popup',popupstyle,isDesktop?'fixforpc-z-index':'']}}"><view data-event-opts="{{[['touchstart',[['touchstart',['$event']]]]]}}" bindtouchstart="__e"><block wx:if="{{maskShow}}"><uni-transition vue-id="0c37304b-1" name="mask" mode-class="fade" styles="{{maskClass}}" duration="{{duration}}" show="{{showTrans}}" data-event-opts="{{[['^click',[['onTap']]]]}}" bind:click="__e" bind:__l="__l"></uni-transition></block><uni-transition vue-id="0c37304b-2" mode-class="{{ani}}" name="content" styles="{{transClass}}" duration="{{duration}}" show="{{showTrans}}" data-event-opts="{{[['^click',[['onTap']]]]}}" bind:click="__e" bind:__l="__l" vue-slots="{{['default']}}"><view data-event-opts="{{[['tap',[['clear',['$event']]]]]}}" class="{{['uni-popup__wrapper',popupstyle]}}" style="{{'background-color:'+(bg)+';'}}" bindtap="__e"><slot></slot></view></uni-transition></view></view></block>

48
unpackage/dist/dev/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.wxss

@ -0,0 +1,48 @@
@charset "UTF-8";
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.uni-popup {
position: fixed;
z-index: 99;
}
.uni-popup.top, .uni-popup.left, .uni-popup.right {
top: 0;
}
.uni-popup .uni-popup__wrapper {
display: block;
position: relative;
/* iphonex 等安全区设置,底部安全区适配 */
}
.uni-popup .uni-popup__wrapper.left, .uni-popup .uni-popup__wrapper.right {
padding-top: 0;
flex: 1;
}
.fixforpc-z-index {
z-index: 999;
}
.fixforpc-top {
top: 0;
}

11
unpackage/dist/dev/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.js

File diff suppressed because one or more lines are too long

4
unpackage/dist/dev/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.json

@ -0,0 +1,4 @@
{
"usingComponents": {},
"component": true
}

1
unpackage/dist/dev/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.wxml

@ -0,0 +1 @@
<block wx:if="{{isShow}}"><view class="{{['vue-ref',customClass]}}" style="{{(transformStyles)}}" animation="{{animationData}}" data-ref="ani" data-event-opts="{{[['tap',[['onClick',['$event']]]]]}}" bindtap="__e"><slot></slot></view></block>
Loading…
Cancel
Save