main
lion 2 years ago
parent 92348bed5b
commit d192cd8edf

@ -4,6 +4,7 @@ let apiApp = {
user: '/api/mobile/user/show',
saveUser: '/api/mobile/user/save',
getUserMobile: '/api/mobile/user/mobile',
getConfig: '/api/mobile/user/config',
getUserAddress: '/api/mobile/user/address',
saveUserAddress: '/api/mobile/user/address-update',
@ -12,7 +13,9 @@ let apiApp = {
saveFeedback: '/api/mobile/user/feedback-update',
getCard: '/api/mobile/user/get-card',
getDates: '/api/mobile/user/get-available-dates',
getDates: '/api/mobile/user/get-available-dates',
getExpress:'/api/mobile/user/express-type',
getUserOrder: '/api/mobile/user/delivery',
addUserOrder: '/api/mobile/user/confirm',
@ -32,13 +35,17 @@ const install = (Vue, vm) => {
let login = (params = {}) => vm.$u.get(apiApp.login, params);
let user = (params = {}) => vm.$u.get(apiApp.user, params);
let getUserMobile = (params = {}) => vm.$u.get(apiApp.getUserMobile, params);
let getConfig = (params = {}) => vm.$u.get(apiApp.getConfig, params);
let saveUser = (params = {}) => vm.$u.post(apiApp.saveUser, params);
let getUserAddress = (params = {}) => vm.$u.get(apiApp.getUserAddress, params);
let saveUserAddress = (params = {}) => vm.$u.post(apiApp.saveUserAddress, params);
let delUserAddress = (params = {}) => vm.$u.get(apiApp.delUserAddress, params);
let saveFeedback = (params = {}) => vm.$u.post(apiApp.saveFeedback, params);
let getCard = (params = {}) => vm.$u.get(apiApp.getCard, params);
let getDates = (params = {}) => vm.$u.get(apiApp.getDates, params);
let getDates = (params = {}) => vm.$u.get(apiApp.getDates, params);
let getExpress = (params = {}) => vm.$u.get(apiApp.getExpress, params);
let getUserOrder = (params = {}) => vm.$u.get(apiApp.getUserOrder, params);
let addUserOrder = (params = {}) => vm.$u.post(apiApp.addUserOrder, params);
@ -50,14 +57,16 @@ const install = (Vue, vm) => {
vm.$u.api = {
login,
user,
getUserMobile,
getUserMobile,
getConfig,
saveUser,
getUserAddress,
saveUserAddress,
delUserAddress,
saveFeedback,
getCard,
getDates,
getCard,
getDates,
getExpress,
getUserOrder,
addUserOrder,
saveUserOrder,

@ -12,7 +12,7 @@
<view v-for="(item,index) in express">
<view @click="chooseExpress(index,item)"
:class="{'date-express-item':true,'date-express-item_active':expressIndex==index}"
v-if="item.value">{{item.value}}</view>
v-if="item.name">{{item.name}}</view>
</view>
</view>
<view class="date-stitle">送货时间</view>
@ -26,11 +26,13 @@
</view>
</view>
<view class="date-list-right">
<view class="lunarData">
<view class="lunarData" v-if="dateObj.lunarData">
{{dateObj.lunarData?dateObj.lunarData:''}}
<view>今日剩余可提货量{{dateObj.canUse.quantity - dateObj.canUse.booked}}</view>
</view>
<view class="hh">
<view @click="chooseHh(index,item)" :class="{'hh-item':true,'hh-item_active':hhIndex==index}"
<view @click="chooseHh(index,item)"
:class="{'hh-item':true,'hh-item_active':hhIndex==index}"
v-for="(item,index) in hhList">
{{item}}
</view>
@ -45,8 +47,12 @@
</view>
</template>
<script>
import {isEmptyObject,isNull,toast} from"@/common/util.js"
<script>
import {
isEmptyObject,
isNull,
toast
} from "@/common/util.js"
export default {
props: {
//
@ -68,17 +74,17 @@
data() {
return {
show: false,
expressIndex: -1,
expressObj:{},
expressIndex: -1,
expressObj: {},
dateIndex: -1,
dateObj: {},
hhList: ['09:00-15:00', '15:00-21:00'],
hhIndex: -1,
hhIndex: -1,
}
},
methods: {
chooseExpress(index,item) {
chooseExpress(index, item) {
this.expressObj = item
this.expressIndex = index
},
@ -86,37 +92,37 @@
this.dateIndex = index
this.dateObj = item
},
chooseHh(index,item) {
chooseHh(index, item) {
this.hhTime = item
this.hhIndex = index
},
closePop(){
this.show = false
},
confirmPop(){
if(isEmptyObject(this.dateObj)){
toast('请选择日期')
return
}
if(isEmptyObject(this.expressObj)){
toast('请选择快递')
return
}
if(isNull(this.hhTime)){
toast('请选择时间')
return
}
// AB
for (const key in this.expressObj) {
if (this.expressObj.hasOwnProperty(key)) {
this.dateObj[`express${key}`] = this.expressObj[key];
}
}
this.dateObj.hhtime = this.hhTime
this.$emit('refresh',this.dateObj)
this.show = false
console.log("this.dateObj",this.dateObj)
},
closePop() {
this.show = false
},
confirmPop() {
if (isEmptyObject(this.dateObj)) {
toast('请选择日期')
return
}
if (isEmptyObject(this.expressObj)) {
toast('请选择快递')
return
}
if (isNull(this.hhTime)) {
toast('请选择时间')
return
}
// AB
for (const key in this.expressObj) {
if (this.expressObj.hasOwnProperty(key)) {
this.dateObj[`express${key}`] = this.expressObj[key];
}
}
this.dateObj.hhtime = this.hhTime
this.$emit('refresh', this.dateObj)
this.show = false
console.log("this.dateObj", this.dateObj)
},
}
}
@ -212,8 +218,8 @@
color: #000;
.lunarData {
height: 60rpx;
line-height: 60rpx;
line-height: 45rpx;
margin-bottom: 20rpx;
}
.hh {

@ -80,7 +80,8 @@
},
exitMiniProgram() {
this.$emit('reject-privacy'); //
wx.exitMiniProgram();
// wx.exitMiniProgram();
this.showPrivacy = false;
},
handleAgreePrivacyAuthorization() {
@ -189,7 +190,7 @@
.btns .agree {
width: 320rpx;
background: #07c160;
background: #ba8b45;
color: #fff;
font-size: 16px;

@ -62,7 +62,7 @@
"desc" : "你的位置信息将用于小程序位置接口的效果展示"
}
},
"requiredPrivateInfos" : [ "getLocation","chooseLocation","chooseAddress"]
"requiredPrivateInfos" : [ "getLocation", "chooseLocation", "chooseAddress" ]
},
"mp-alipay" : {
"usingComponents" : true

@ -1,8 +1,17 @@
<template>
<view class="changecontainer">
<view class="cardcontent">
<view class="myswiper">
<image src="../../static/cardimg1.jpg" mode="widthFix"></image>
<view class="myswiper">
<swiper class="swiper" circular :indicator-dots="true" :indicator-color="indicatorColor"
:indicator-active-color="indicatorActiveColor" :autoplay="autoplay" :interval="interval"
:duration="duration" :current="currentSwiperIndex" @change="onSwiperChange">
<swiper-item v-for="item in banner3">
<view class="swiper-item">
<image :src="item.image" mode="widthFix"></image>
</view>
</swiper-item>
</swiper>
<view class="cardtitle">卡片信息</view>
</view>
<view class="cardinfobox">
@ -15,7 +24,7 @@
<view class="listitem">
<view>卡片有效期</view>
<text>卡片至2025年10月31日有效</text>
</view>
</view>
</view>
</view>
<view class="cardbtn" @click="saveImg"></view>
@ -32,25 +41,32 @@
components: {},
data() {
return {
autoplay: true,
interval: 3000,
duration: 500,
indicatorColor: 'rgba(204,204,203,.5)',
indicatorActiveColor: '#b98b44',
currentSwiperIndex: 0,
banner3:[]
}
},
onLoad() {
console.log(wx.env.USER_DATA_PATH)
},
methods: {
onLoad() {
this.banner3 = uni.getStorageSync("banner3") ? uni.getStorageSync("banner3") : []
},
methods: {
saveImg() {
let _this = this
let fileName = new Date().valueOf()
let _this = this
let fileName = new Date().valueOf()
let filePath = wx.env.USER_DATA_PATH + '/' + fileName + '.jpg'
uni.authorize({
scope: 'scope.writePhotosAlbum',
success: (res) => {
uni.downloadFile({
url: '../../static/cardimg1.jpg',
filePath:filePath,
success(res) {
url: '../../static/cardimg1.jpg',
filePath: filePath,
success(res) {
console.log(res)
uni.saveImageToPhotosAlbum({
filePath: filePath,
@ -69,8 +85,8 @@
},
fail(res) {
console.log("user", res)
console.log("user", res)
}
})
@ -80,41 +96,49 @@
</script>
<style lang="scss" scoped>
.changecontainer{
.changecontainer {
width: 100%;
background-image: url(../../static/bg-change.jpg);
background-position: center top;
background-size: cover;
padding-top: 195rpx;
padding-bottom: 310rpx;
height: 100vh;
display: flex;
align-items: center;
}
.cardcontent{
.cardcontent {
width: 87.33%;
margin: 0 auto;
background: #fff;
border-radius: 10rpx;
overflow: hidden;
}
.myswiper{
.myswiper {
padding: 55rpx 44rpx 45rpx;
}
.myswiper image{
.myswiper image {
width: 100%;
height: auto;
border-radius: 10rpx;
}
.cardtitle{
.cardtitle {
margin-top: 54rpx;
font-size: 36rpx;
text-align: center;
color: #b98b44;
}
.cardinfobox{
.cardinfobox {
position: relative;
border-top: 1rpx dashed #a4a5a4;
padding: 82rpx 25rpx;
}
.cardinfobox::before,.cardinfobox::after{
.cardinfobox::before,
.cardinfobox::after {
content: " ";
position: absolute;
display: inline-block;
@ -124,34 +148,41 @@
background: #4a4b4a;
top: -14rpx;
}
.cardinfobox::before{
.cardinfobox::before {
left: -14rpx;
}
.cardinfobox::after{
.cardinfobox::after {
right: -14rpx;
}
.cardlist{
.cardlist {
border-radius: 10rpx;
width: 100%;
overflow: hidden;
box-shadow: 0 5rpx 16rpx rgba(0,0,0,.32);
box-shadow: 0 5rpx 16rpx rgba(0, 0, 0, .32);
position: relative;
background-image: url(../../static/cardbg.jpg);
background-position: center top;
background-size: cover;
margin-bottom: 78rpx;
}
.cardinfolist{
.cardinfolist {
padding: 16rpx 38rpx;
}
.cardinfolist .listitem{
.cardinfolist .listitem {
display: flex;
border-bottom: 1rpx solid #f6d9b6;
}
.listitem:last-child{
.listitem:last-child {
border-bottom: none;
}
.listitem view{
.listitem view {
padding-left: 6rpx;
width: 140rpx;
line-height: 80rpx;
@ -159,13 +190,15 @@
font-size: 24rpx;
border-right: 1rpx solid #f6d9b6;
}
.listitem text{
.listitem text {
font-size: 24rpx;
line-height: 80rpx;
color: #f6d9b6;
padding-left: 20rpx;
}
.cardbtn{
.cardbtn {
width: 450rpx;
height: 74rpx;
line-height: 74rpx;

@ -2,35 +2,36 @@
<view class="changecontainer">
<view class="cardindexbox">
<view class="myswiper">
<swiper class="swiper" circular :indicator-dots="true" :indicator-color="indicatorColor" :indicator-active-color="indicatorActiveColor" :autoplay="autoplay" :interval="interval" :duration="duration" :current="currentSwiperIndex" @change="onSwiperChange">
<swiper-item>
<swiper class="swiper" circular :indicator-dots="true" :indicator-color="indicatorColor"
:indicator-active-color="indicatorActiveColor" :autoplay="autoplay" :interval="interval"
:duration="duration" :current="currentSwiperIndex" @change="onSwiperChange">
<swiper-item v-for="item in banner3">
<view class="swiper-item">
<image src="../../static/cardimg1.jpg" mode="widthFix"></image>
<image :src="item.image" mode="widthFix"></image>
</view>
</swiper-item>
<swiper-item>
<view class="swiper-item">
<image src="../../static/cardimg2.jpg" mode="widthFix"></image>
</view>
</swiper-item>
</swiper>
</view>
<view class="formChange">
<u-form :model="form" ref="uForm">
<u-form-item class="formitem card_number" prop="card_number" :border-bottom="false">
<u-input type="text" v-model="form.card_number" placeholder="请输入卡号"/>
<u-input type="text" v-model="form.card_number" placeholder="请输入卡号" />
</u-form-item>
</u-form>
<u-button class="formitem submitform" form-type="submit" :plain="true" @click="goSubmit"></u-button>
</view>
</view>
</view>
</view>
</template>
<script>
<script>
import {
toast,
isNull
} from '@/common/util.js'
export default {
components: {},
data() {
@ -38,14 +39,19 @@
autoplay: true,
interval: 3000,
duration: 500,
indicatorColor: 'rgba(204,204,203,.5)',
indicatorColor: 'rgba(204,204,203,.5)',
indicatorActiveColor: '#b98b44',
currentSwiperIndex:0,
currentSwiperIndex: 0,
form: {
code: '',
},
},
banner3:[]
}
},
onLoad(option) {
this.banner3 = uni.getStorageSync("banner3") ? uni.getStorageSync("banner3") : []
},
methods: {
onSwiperChange(e) {
@ -74,27 +80,60 @@
// })
},
goSubmit() {
uni.navigateTo({
url: '/packages/card/detail'
if (isNull(this.form.card_number)) {
toast('请填写卡号')
return
}
this.$u.api.getDates(this.form).then(res => {
switch (res.card.status){
case -1:
toast('已销卡')
break;
case 0:
toast('末出库')
break;
case 1:
toast('待激活')
break;
case 2:
uni.setStorageSync('vuex_card_state', {
card_number: this.form.card_number,
card: res.card
})
uni.navigateTo({
url: '/packages/card/detail'
})
break;
case 3:
toast('已使用')
break;
default:
break;
}
}).then(res => {
// console.log("ressssss",res)
// toast(res)
})
}
}
}
</script>
<style scoped lang="scss">
.changecontainer{
.changecontainer {
width: 100%;
background-image: url(../../static/bg-change.jpg);
background-position: center top;
background-size: cover;
padding-top: 195rpx;
padding-bottom: 520rpx;
// padding-top: 195rpx;
// padding-bottom: 520rpx;
height: 100vh;
display: flex;
align-items: center;
}
.cardindexbox{
.cardindexbox {
width: 87.33%;
margin: 0 auto;
background: #fff;
@ -102,43 +141,52 @@
overflow: hidden;
padding: 54rpx 46rpx;
}
.myswiper{
.myswiper {
position: relative;
}
.swiper{
.swiper {
padding-bottom: 48rpx;
overflow: hidden;
}
/deep/ swiper-item{
/deep/ swiper-item {
border-radius: 10rpx;
overflow: hidden;
}
//
/deep/ .uni-swiper-dots{
bottom: -48rpx!important;
/deep/ .uni-swiper-dots {
bottom: -48rpx !important;
}
/deep/ .uni-swiper-wrapper {
overflow: initial;
overflow: initial;
}
/deep/ .wx-swiper-wrapper {
overflow: initial !important;
}
/deep/ .wx-swiper-wrapper{
overflow: initial !important;
/deep/ .wx-swiper-dots {
bottom: -48rpx !important;
}
/deep/ .wx-swiper-dots {
bottom: -48rpx!important;
}
/deep/ .swiper-item image{
/deep/ .swiper-item image {
width: 100%;
height: auto;
// border-radius: 10rpx;
}
.formChange{
.formChange {
width: 450rpx;
margin: 0 auto;
margin-top: 104rpx;
}
/deep/ .u-form-item{
/deep/ .u-form-item {
margin-bottom: 40rpx;
height: 74rpx;
width: 100%;
@ -151,14 +199,16 @@
font-size: 20rpx;
color: #676767;
}
/deep/ .u-form-item.password{
/deep/ .u-form-item.password {
background-image: url(../../static/icon-change2.png);
}
/deep/ .u-input{
/deep/ .u-input {
padding: 0 10rpx !important;
}
/deep/ .u-form-item .u-input__input{
/deep/ .u-form-item .u-input__input {
display: block;
border: none;
width: 100%;
@ -172,13 +222,16 @@
background-size: 38rpx auto;
background-repeat: no-repeat;
}
/deep/ .card_number .u-input__input{
/deep/ .card_number .u-input__input {
background-image: url(../../static/icon-change1.png) !important;
}
/deep/ .password .u-input__input{
/deep/ .password .u-input__input {
background-image: url(../../static/icon-change2.png) !important;
}
/deep/ .u-btn{
/deep/ .u-btn {
color: #b98b44 !important;
font-size: 24rpx !important;
font-weight: bold;
@ -189,7 +242,8 @@
border-radius: 50rpx;
background-color: #f4f3f2 !important;
}
/deep/ .u-btn::after{
/deep/ .u-btn::after {
display: none;
}
</style>

@ -1,36 +1,52 @@
<template>
<view class="cotainer">
<view class="orderForm">
<view class="orderForm-wx" @click="getAddress"></view>
<u-form :model="form" ref="uForm" :error-type="['toast']">
<u-form-item label="联系人" label-width="150" required prop="contact" label-position="left">
<u-input v-model="form.contact" placeholder="请填写联系人" />
</u-form-item>
<u-form-item label="联系电话" label-width="150" required prop="mobile" label-position="left">
<u-input v-model="form.mobile" placeholder="请填写联系电话" />
</u-form-item>
<view class="orderForm-address">
<text><text>*</text>地区</text>
<u-button @click="changeLocation" size="mini">获取位置</u-button>
</view>
<u-form-item label=" " prop="area" label-position="top">
<u-input v-model="form.area" placeholder="请选择地区" @click="openArea" type="select" />
</u-form-item>
<u-form-item label="详细地址" required prop="address" label-position="top">
<u-input v-model="form.address" placeholder="请填写详细地址" type="textarea" />
</u-form-item>
<u-form-item label="默认地址" label-width="150" :border-bottom="false" prop="defalut" label-position="left">
<u-switch slot="right" v-model="form.defalut" active-color="#ba8b45" inactive-color="#adadac"
size="40"></u-switch>
</u-form-item>
</u-form>
<view class="orderForm-btn">
<view class="orderForm">
<view class="orderForm-form">
<u-form :model="form" ref="uForm" label-width="150" :error-type="['toast']">
<u-form-item label="联系人" required prop="contact" label-position="left">
<u-input v-model="form.contact" placeholder="请填写联系人" />
</u-form-item>
<u-form-item label="联系电话" required prop="mobile" label-position="left">
<u-input v-model="form.mobile" placeholder="请填写联系电话" />
</u-form-item>
<!-- <view class="orderForm-address"> -->
<u-form-item label="所在地区" required prop="area" label-position="left">
<u-input v-model="form.area" placeholder="请选择所在地区" @click="openArea" />
<view slot="right" class="arearight" @click="changeLocation">
<u-icon name="map"></u-icon>
定位
</view>
</u-form-item>
<!-- </view> -->
<!-- <u-form-item label=" " prop="area" label-position="top">
<u-input v-model="form.area" placeholder="请选择地区" @click="openArea" type="select" />
</u-form-item> -->
<u-form-item label="详细地址" required prop="address" label-position="left">
<u-input v-model="form.address" placeholder="请填写详细地址" />
</u-form-item>
<u-form-item label="设置默认地址" label-width="180" :border-bottom="false" prop="defalut"
label-position="left">
<u-switch slot="right" v-model="form.defalut" active-color="#ba8b45" inactive-color="#adadac"
size="40"></u-switch>
</u-form-item>
</u-form>
</view>
<view class="orderForm-wx" @click="getAddress">
<u-icon name="weixin-circle-fill" color="#3fc14d" size="48"></u-icon>
<view>获取微信地址</view>
<u-icon name="arrow-right" size="32"></u-icon>
</view>
<view class="orderForm-btn">
<view @click="submit"></view>
</view>
</view>
<!-- <u-picker mode="region" v-model="showArea" @confirm="changeArea"></u-picker> -->
<aui-picker ref="pickers" :title="'地区选择'" :data="listArea" @callback="changeArea"></aui-picker>
<!-- <u-picker mode="region" v-model="showArea" @confirm="changeArea"></u-picker> -->
<aui-picker ref="pickers" :title="'地区选择'" :data="listArea" @callback="changeArea"></aui-picker>
</view>
</template>
@ -39,7 +55,7 @@
toast,
isMobile,
isNull
} from '@/common/util.js'
} from '@/common/util.js'
import auiPicker from '@/components/aui-picker.vue';
export default {
components: {
@ -47,14 +63,15 @@
},
data() {
return {
itemtype: 'add',
form: {
area: '',
address: '',
contact: '',
mobile: '',
defalut:false
},
listArea:[],
mobile: '',
defalut: false
},
listArea: [],
showArea: false,
rules: {
area: [{
@ -90,73 +107,80 @@
this.$refs.uForm.setRules(this.rules);
},
onLoad(option) {
if(uni.getStorageSync('vuex_address')){
this.form = uni.getStorageSync('vuex_address')
uni.removeStorageSync('vuex_address')
}
onLoad(option) {
this.itemtype = option.type ? option.type : ''
if (uni.getStorageSync('vuex_address')) {
this.form = uni.getStorageSync('vuex_address')
if (this.itemtype === 'copy') {
this.form.id = ''
this.form.defalut = 0
}
uni.removeStorageSync('vuex_address')
}
this.getArea()
},
methods: {
async getArea() {
const res = await this.$u.api.getRegion()
this.listArea = res.regions
},
openArea() {
this.$refs.pickers.open().then(function() {
console.log('picker打开');
});
},
changeArea(e) {
console.log(e)
// return
if (e) {
let data = e.data
let _this = this
_this.form.area=''
data.forEach(function(item, index) {
_this.form.area += item.value + '';
});
this.form.province_id = data[0] ? data[0].id : ''
this.form.city_id = data[1] ? data[1].id : ''
this.form.district_id = data[2] ? data[2].id : ''
}
},
getAddress(){
let _this = this
uni.authorize({
scope: 'scope.address',
success: (res) => {
console.log("authorize", res)
uni.chooseAddress({
success(res){
console.log(res)
_this.form.contact = res.userName
_this.form.mobile = res.telNumber
_this.form.area = res.provinceName+res.cityName+res.countyName
_this.form.address = res.detailInfo
_this.$u.api.matchRegion({
province: res.provinceName,
city: res.cityName,
district: res.countyName
}).then(res1 => {
_this.form.province_id = res1.province_id ? res1.province_id.id : ''
_this.form.city_id = res1.city_id ? res1.city_id.id : ''
_this.form.district_id = res1.district_id ? res1.district_id.id : ''
})
console.log("_this",_this.form)
},
fail(res){
console.log(res)
}
})
},
fail(res) {
console.log("authorize-fail", res)
}
})
methods: {
async getArea() {
const res = await this.$u.api.getRegion()
this.listArea = res.regions
},
openArea() {
this.$refs.pickers.open().then(function() {
console.log('picker打开');
});
},
changeArea(e) {
console.log(e)
// return
if (e) {
let data = e.data
let _this = this
_this.form.area = ''
data.forEach(function(item, index) {
_this.form.area += item.value + '';
});
this.form.province_id = data[0] ? data[0].id : ''
this.form.city_id = data[1] ? data[1].id : ''
this.form.district_id = data[2] ? data[2].id : ''
}
},
getAddress() {
let _this = this
uni.authorize({
scope: 'scope.address',
success: (res) => {
console.log("authorize", res)
uni.chooseAddress({
success(res) {
console.log(res)
_this.form.contact = res.userName
_this.form.mobile = res.telNumber
_this.form.area = res.provinceName + res.cityName + res.countyName
_this.form.address = res.detailInfo
_this.$u.api.matchRegion({
province: res.provinceName,
city: res.cityName,
district: res.countyName
}).then(res1 => {
_this.form.province_id = res1.province_id ? res1
.province_id.id : ''
_this.form.city_id = res1.city_id ? res1.city_id.id : ''
_this.form.district_id = res1.district_id ? res1
.district_id.id : ''
})
console.log("_this", _this.form)
},
fail(res) {
console.log(res)
}
})
},
fail(res) {
console.log("authorize-fail", res)
}
})
},
changeLocation() {
let _this = this
@ -180,23 +204,23 @@
}
})
},
submit() {
console.log(this.form)
submit() {
console.log(this.form)
// return
this.$refs.uForm.validate(valid => {
if (valid) {
if(this.form.defalut){
this.form.defalut = 1
}
this.$u.api.saveUserAddress(this.form).then(res=>{
toast('提交成功',1000,function(){
setTimeout(function(){
uni.navigateBack(-1)
},500)
})
if (valid) {
if (this.form.defalut) {
this.form.defalut = 1
}
this.$u.api.saveUserAddress(this.form).then(res => {
toast('提交成功', 1000, function() {
setTimeout(function() {
uni.navigateBack(-1)
}, 500)
})
})
} else {
console.log('验证失败');
@ -211,43 +235,48 @@
<style lang="scss">
.cotainer {
padding: 40rpx;
background-color: #f0efed;
height: 100vh;
overflow: scroll;
.orderForm {
&-wx{
color:#ba8b45;
margin-bottom:20rpx;
font-size: 32rpx;
}
&-address {
height: 72rpx;
&-wx {
color: #000;
margin-bottom: 20rpx;
font-size: 32rpx;
display: flex;
justify-content: space-between;
align-items: center;
line-height: 72rpx;
padding-top: 20rpx;
position: relative;
text {
text {
position: absolute;
left: -16rpx;
vertical-align: middle;
color: #fa3534;
padding-top: 6rpx;
}
align-items: center;
margin-top:35rpx;
>view{
margin:0 20rpx;
}
}
&-form {
background-color: #fff;
padding: 30rpx;
padding-left: 40rpx;
border-radius: 10rpx;
}
&-btn {
margin: 40rpx;
>view{
background-color: #ba8b45;
color: #fff;
border-radius: 40rpx;
width: 100%;
margin: 0 auto;
height: 75rpx;
text-align: center;
line-height: 75rpx;
background: #fff;
position: fixed;
bottom: 0;
left: 0;
width: 100%;
padding: 40rpx;
z-index: 9;
>view {
background-color: #ba8b45;
color: #fff;
border-radius: 40rpx;
width: 60%;
margin: 0 auto;
height: 75rpx;
text-align: center;
line-height: 75rpx;
}
}
}

@ -1,158 +1,229 @@
<template>
<view class="cotainer">
<view class="list">
<u-swipe-action :show="item.show" :index="index" v-for="(item, index) in list" :key="item.id"
@click="clickDel"
@close = "closeDel"
@open="openDel"
@content-click="clickItem"
:options="options">
<view class="list-item u-border-bottom">
<view class="list-item-title">
<view class="list-item-name">
<text>{{item.contact}}</text>
<text>{{item.mobile}}</text>
</view>
<view class="list-item-address">
{{item.area}}{{item.address}}
</view>
<view class="list-item" v-for="item in list">
<view class="list-item-title u-border-bottom">
<view class="list-item-name">
<text>{{item.contact}}</text>
<text>{{item.mobile}}</text>
</view>
<view class="list-item-address">
{{item.area}}{{item.address}}
</view>
</view>
<view class="list-item-btm">
<view>
<u-checkbox @change="e=>{return checkboxChange(item)}" active-color="#ba8b45"
v-model="item.defalut" :name="item.defalutName">
{{item.defalutName}}
</u-checkbox>
</view>
<view class="list-item-btm-btn">
<text @click="delAddress(item.id)"></text>
<text @click="toAdd('copy',item)"></text>
<text @click="toAdd('editor',item)"></text>
</view>
</view>
</u-swipe-action>
<view class="list-add" @click="toAdd">
<u-icon name="plus-circle" color="#ba8b45"></u-icon>
新增地址
</view>
<view class="list-add" @click="toAdd">
<view>新增地址</view>
</view>
</view>
</view>
</template>
<script>
import {toast} from '@/common/util.js'
<script>
import {
toast
} from '@/common/util.js'
export default {
data() {
return {
list: [],
firstDel:false,
options: [{
text: '删除',
style: {
backgroundColor: '#dd524d',
width:'200rpx'
}
}],
showinfo:false,
form:{
name:'',
mobile:'',
area:'',
address:'',
}
list: [],
form: {
name: '',
mobile: '',
area: '',
address: '',
}
}
},
onShow(){
this.getAddress()
},
onLoad() {
},
onShow() {
this.getAddress()
},
onLoad() {},
methods: {
clickDel(index, optionIndex) {
if(!this.firstDel){
this.options[optionIndex].text = "删除该地址"
this.firstDel = true
return
}else{
let id = this.list[index].id
this.$u.api.delUserAddress({
id:id
}).then(res=>{
toast('删除成功')
this.getAddress()
})
}
async getAddress() {
const res = await this.$u.api.getUserAddress()
res.address.map(item => {
item.defalutName = item.defalut ? '已设为默认地址' : '设为默认地址'
})
console.log("res.address", res.address)
this.list = res.address
},
delAddress(id) {
let that = this
uni.showModal({
title: '确认',
content: '是否删除该地址',
success: function(res) {
if (res.confirm) {
that.$u.api.delUserAddress({
id: id
}).then(res => {
toast('删除成功')
that.getAddress()
})
} else if (res.cancel) {
item.defalut = false
console.log('用户点击取消');
}
}
})
},
openDel(index){
this.list.map((item,index1)=>{
item.show = false
if(index===index1){
item.show = true
}
console.log("item",item.show)
})
},
closeDel(index){
this.list[index].show = false
this.options[0].text = "删除"
this.firstDel = false
},
clickItem(index){
if(this.list[index].show){
this.list[index].show = false
this.options[0].text = "删除"
this.firstDel = false
}else{
this.list.map(item=>{
item.show = false
})
this.options[0].text = "删除"
this.firstDel = false
uni.setStorageSync("vuex_address",this.list[index])
uni.navigateTo({
url:"/packages/my/addaddress"
})
}
},
async getAddress(){
const res = await this.$u.api.getUserAddress()
res.address.map(item=>{
item.show = false
})
this.list = res.address
},
toAdd(){
uni.navigateTo({
url:'/packages/my/addaddress'
})
copyAddress(){
},
toAdd(type,item) {
var itemtype = type?type:'add'
if(type){
uni.setStorageSync('vuex_address',item)
}
uni.navigateTo({
url: '/packages/my/addaddress?type='+itemtype
})
},
checkboxChange(item) {
let that = this
console.log("e", item.defalut)
if (!item.defalut) {
uni.showModal({
title: '确认',
content: '是否将该地址设为默认地址',
success: function(res) {
if (res.confirm) {
that.changeDefalut(item)
} else if (res.cancel) {
item.defalut = false
console.log('用户点击取消');
}
}
})
} else {
uni.showModal({
title: '确认',
content: '是否取消该地址为默认地址',
success: function(res) {
if (res.confirm) {
that.changeDefalut(item)
} else if (res.cancel) {
console.log('用户点击取消');
item.defalut = true
}
}
})
}
},
changeDefalut(item) {
let that = this
item.defalut = item.defalut ? 1 : 0
this.$u.api.saveUserAddress(item).then(res => {
toast('设置成功', 1000, function() {
that.getAddress()
})
})
}
}
}
</script>
<style lang="scss">
.cotainer{
::v-deep .u-btn-text{
width: 200rpx;
text-align: center;
}
.list{
padding:30rpx;
padding-bottom:80rpx;
&-item{
padding:20rpx 0;
&-name{
color:#333;
text{
margin-right:20rpx
}
}
&-address{
color:#ccc;
}
}
&-add{
color:#ba8b45;
margin: 20rpx 0;
font-size: 32rpx;
u-icon{
margin-right:20rpx
<style lang="scss">
.cotainer {
background-color: #f0efed;
height: 100vh;
overflow: scroll;
::v-deep .u-btn-text {
width: 200rpx;
text-align: center;
}
.list {
padding: 30rpx 50rpx;
padding-bottom: 200rpx;
&-item {
padding: 30rpx 25rpx;
background-color: #fff;
border-radius: 10rpx;
margin-bottom: 30rpx;
&-name {
color: #000;
font-size: 30rpx;
margin-bottom: 20rpx;
text {
margin-right: 20rpx
}
}
&-address {
color: #000;
font-size: 24rpx;
padding-bottom: 20rpx;
line-height: 1.5;
}
&-btm {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 20rpx;
font-size: 22rpx;
color: #adadac;
.u-checkbox__label {
font-size: 22rpx;
}
&-btn {
text {
padding: 0rpx 20rpx;
border-radius: 20rpx;
text-align: center;
border: 1px solid #adadac;
margin-left: 20rpx;
color: #000;
}
}
}
}
&-add {
background: #fff;
position: fixed;
bottom: 0;
left: 0;
width: 100%;
padding: 40rpx;
z-index: 9;
>view {
background-color: #ba8b45;
color: #fff;
border-radius: 40rpx;
width: 60%;
margin: 0 auto;
height: 75rpx;
text-align: center;
line-height: 75rpx;
}
}
}
}
}
}
</style>

@ -1,38 +1,38 @@
<template>
<view class='cotainer'>
<view>
<!-- <u-empty v-if="dataList.length==0" marginTop="250"></u-empty> -->
<view class="orderlist">
<!-- <u-empty v-if="dataList.length==0" marginTop="250"></u-empty> -->
<view class="ordertop">
<view>1580</view>
<view>
<text>积分规则</text>
<u-icon name="arrow-right" size="24"></u-icon>
</view>
</view>
<view class="orderlist">
<view class="orderlist-item">
<view>时间2023-11-02</view>
<view class="orderlist-item-date">
<view>
积分余额1000
</view>
<view>
<view>积分获取</view>
<view>
兑换记录123
</view>
<view>
兑换增减-1
<text>2024-06-27</text>
<text>09:10:10</text>
</view>
</view>
<view class="orderlist-item-btn">
<view>
+20
</view>
</view>
<view class="orderlist-item">
<view>时间2023-11-02</view>
<view class="orderlist-item-date">
<view>
<view>积分获取</view>
<view>
积分余额1000
</view>
<view>
兑换记录123
</view>
<view>
兑换增减-1
<text>2024-06-27</text>
<text>09:10:10</text>
</view>
</view>
<view class="orderlist-item-btn">
<view>
+20
</view>
</view>
</view>
@ -131,24 +131,57 @@
<style lang="scss">
.cotainer{
padding: 40rpx;
background-color: #f0efed;
height: 100vh;
overflow: scroll;
}
.ordertop{
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom:30rpx;
>view{
&:first-child{
font-size: 52rpx;
color:#ba8b45;
}
&:last-child{
font-size: 24rpx;
color:#666666;
}
}
}
.orderlist {
padding: 0 30rpx;
padding-bottom: 150rpx;
padding:30rpx;
// padding-bottom: 150rpx;
background-color: #fff;
border-radius: 10rpx;
&-item{
border:1px solid #ddd;
border-radius: 20rpx;
padding:30rpx;
margin:20rpx 0;
&-date{
padding-bottom:10rpx;
border-bottom:1px solid #ddd;
}
&-btn{
display: flex;
justify-content: space-between;
margin-top:30rpx;
border-bottom:1px solid #f3f3f3;
padding:20rpx;
display: flex;
justify-content: space-between;
align-items: center;
>view{
&:first-child{
font-size: 24rpx;
color:#000;
>view{
&:last-child{
font-size: 20rpx;
margin-top:10rpx;
color:#adadac;
text{
margin-right:20rpx;
}
}
}
}
&:last-child{
color:#ba8b45;
font-size: 36rpx;
}
}
}
}

@ -3,7 +3,7 @@
<view class="confirmbox">
<view class="confirmpicinfo">
<view class="imgbox">
<image src="../../static/confirmimg.jpg" mode="widthFix"></image>
<image :src="details.sku?(details.sku.image_url?details.sku.image_url:require('@/static/logo-xietaitai.png')):require('@/static/logo-xietaitai.png')" mode="widthFix"></image>
</view>
<view class="pictitle">{{details.sku?details.sku.name:''}}</view>
<text>{{details.sku?details.sku.specs:''}}</text>

@ -1,58 +1,77 @@
<template>
<view class='ordercontainer'>
<view class="tabsnav">
<u-tabs :list="list" :is-scroll="true" bg-color="#f0efed" bar-width="24" bar-height="24" gutter="53" font-size="24" inactive-color="#000" :active-item-style="{fontSize:'30rpx',color:'#ba8b45'}" :bar-style="{ right:'-36rpx',position:'relative',bottom:'32rpx',background:'#5b5b5a'}" :current="current" @change="change"></u-tabs>
<u-tabs :list="list" :is-scroll="true" bg-color="#f0efed" bar-width="24" bar-height="24" gutter="53"
font-size="24" inactive-color="#000" :active-item-style="{fontSize:'30rpx',color:'#ba8b45'}"
:bar-style="{ right:'-36rpx',position:'relative',bottom:'32rpx',background:'#5b5b5a'}"
:current="current" @change="change"></u-tabs>
</view>
<view class="orderlist">
<!-- 1条数据开始 -->
<view class="orderitem" v-for="(item,index) in orderList">
<view class="ordertop">
<text>运单号{{item.express_number?item.express_number:'-'}}</text>
<text>{{item.status==0?'待发货':'已发货'}}</text>
</view>
<view class="orderinfo">
<view class="orderbrief" @click="toDetail(item)">
<view class="orderimg">
<image src="../../static/orderimg1.jpg" mode="widthFix"></image>
<view v-if="showData" class="nodata">
<u-empty mode="data"></u-empty>
</view>
<block v-else>
<view class="orderitem" v-for="(item,index) in orderList">
<view class="ordertop">
<text>运单号{{item.express_number?item.express_number:'-'}}</text>
<text>{{item.status==0?'待发货':'已发货'}}</text>
</view>
<view class="orderinfo">
<view class="orderbrief" @click="toDetail(item)">
<view class="orderimg">
<image
:src="item.sku?(item.sku.image_url?item.sku.image_url:require('@/static/logo-xietaitai.png')):require('@/static/logo-xietaitai.png')"
mode="widthFix"></image>
</view>
<view class="orderright">
<view class="ordertitle">{{item.sku?item.sku.name:''}}</view>
<view class="ordersmalltext">{{item.sku?item.sku.specs:''}}</view>
</view>
</view>
<view class="orderright">
<view class="ordertitle">{{item.sku?item.sku.name:''}}</view>
<view class="ordersmalltext">{{item.sku?item.sku.specs:''}}</view>
<view class="ordertime" @click="toDetail(item)">
<text>预计送达时间</text>
<view>{{item.send_date?$moment(item.send_date).format("M月DD日"):''}}<text
class="orderweek">{{item.week?'['+item.week+']':''}}</text>{{item.hh?item.hh:''}}
</view>
</view>
<view class="ordertab">
<!-- -->
<text class="deleteorder" @click="edit(item)" v-if="item.can_update"></text>
<text class="orderinform">通知收件人</text>
</view>
</view>
<view class="ordertime" @click="toDetail(item)">
<text>预计送达时间</text>
<view>{{item.send_date?$moment(item.send_date).format("M月DD日"):''}}<text class="orderweek">{{item.week?'['+item.week+']':''}}</text>{{item.hh?item.hh:''}}</view>
</view>
<view class="ordertab">
<!-- <text class="deleteorder">删除订单</text> -->
<text class="orderinform">通知收件人</text>
</view>
</view>
</view>
</block>
<!-- 1条数据结束 -->
</view>
</view>
</template>
<script>
import {
isNull
} from '@/common/util.js'
export default {
data() {
return {
list: [{
name: '全部',
status:'',
name: '全部',
status: '',
}, {
name: '待发货',
status:0
name: '待发货',
status: 0
}, {
name: '已发货',
status:1
}],
status:'',
current: 0,
orderList:[]
name: '已发货',
status: 1
}],
status: '',
current: 0,
orderList: [],
showData: true
}
},
onLoad() {
@ -60,35 +79,53 @@
},
methods: {
change(index) {
this.current = index;
this.status = this.list[index].status
this.current = index;
this.status = this.list[index].status
this.getOrderList()
},
toDetail(item){
toDetail(item) {
uni.setStorageSync('order_detail', item)
uni.navigateTo({
url:'/packages/myorder/infoconfirm'
url: '/packages/myorder/infoconfirm'
})
},
getOrderList() {
if (this.status === '') {
this.$u.api.getUserOrder().then(res => {
this.orderList = res
this.showData = res.length > 0 ? false : true
})
console.log(this.orderList.length)
} else {
this.$u.api.getUserOrder({
status: this.status
}).then(res => {
this.orderList = res
this.showData = res.length > 0 ? false : true
})
}
// this.listArea = res.regions
},
async getOrderList(){
const res = await this.$u.api.getUserOrder({
status:this.status
edit(item){
uni.setStorageSync('vuex_update_card',item)
uni.redirectTo({
url:'/packages/order/order?hasCard=true&type=edit'
})
this.orderList = res
// this.listArea = res.regions
},
}
}
}
</script>
<style lang="scss">
.ordercontainer{
<style lang="scss">
.ordercontainer {
background: #f0efed;
width: 100%;
height: 100vh;
overflow-y: scroll;
overflow-y: scroll;
}
.tabsnav {
position: fixed;
top: 0;
@ -100,43 +137,51 @@
text-align: center;
// padding: 0 33rpx;
}
.tabsnav {
/deep/ .u-tab-item{
/deep/ .u-tab-item {
z-index: 2;
}
}
.orderlist {
padding: 82rpx 50rpx 56rpx;
}
.orderitem{
.orderitem {
overflow: hidden;
margin-bottom: 25rpx;
background: url(../../static/libg.jpg) no-repeat center center;
background-size: cover;
border-radius: 10rpx;
box-shadow: 0 5px 15px rgba(0,0,0,.47);
box-shadow: 0 5px 15px rgba(0, 0, 0, .47);
padding: 12rpx;
}
.ordertop{
.ordertop {
display: flex;
padding: 13rpx 20rpx 23rpx;
justify-content: space-between;
}
.ordertop text{
.ordertop text {
font-size: 24rpx;
color: #f2d6c1;
}
.orderinfo{
.orderinfo {
background: #fff;
padding: 24rpx;
border-radius: 10rpx;
}
.orderbrief{
.orderbrief {
display: flex;
padding-bottom: 24rpx;
}
.orderimg{
border: 1rpx solid rgba(186,139,69,.6);
.orderimg {
border: 1rpx solid rgba(186, 139, 69, .6);
border-radius: 10rpx;
overflow: hidden;
width: 150rpx;
@ -144,29 +189,34 @@
background: #fff;
text-align: center;
}
.orderimg image{
.orderimg image {
width: 100%;
height: auto;
vertical-align: middle;
}
.orderright{
.orderright {
padding-left: 32rpx;
width: 430rpx;
font-size: 24rpx;
color: #000;
padding-top: 20rpx;
}
.ordertitle{
.ordertitle {
height: 40rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
line-height: 40rpx;
}
.ordersmalltext{
.ordersmalltext {
text-align: justify;
}
.ordertime{
.ordertime {
display: flex;
justify-content: space-between;
line-height: 36rpx;
@ -176,19 +226,22 @@
border-bottom: 1rpx solid #ececec;
margin-bottom: 26rpx;
}
.ordertime view text.orderweek{
.ordertime view text.orderweek {
color: #b62828;
margin: 0 10rpx;
}
.ordertab{
.ordertab {
display: flex;
justify-content: flex-end;
}
.ordertab text{
.ordertab text {
display: inline-block;
width: 160rpx;
height: 50rpx;
margin: 0 22rpx;
margin-left:22rpx;
border-radius: 50rpx;
text-align: center;
line-height: 50rpx;
@ -196,8 +249,16 @@
font-size: 24rpx;
color: #000;
}
.ordertab text.orderinform{
.ordertab text.orderinform {
color: #ba8b45;
margin-right: 0;
}
.nodata {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
</style>

@ -1,5 +1,5 @@
<template>
<page-meta :page-style="'overflow:'+(showinfo?'hidden':'visible')"></page-meta>
<!-- <page-meta :page-style="'overflow:'+(showinfo?'hidden':'visible')"></page-meta> -->
<view class="cotainer">
<date-picker ref="datePickers" @refresh="backDate" :data="listDates" :express="listExpress"></date-picker>
@ -12,18 +12,20 @@
<view>{{cardInfo.sku?cardInfo.sku.name:''}}</view>
</view>
<view class="orderInfo-info">
<image :src="require('@/static/share.jpg')"></image>
<image
:src="cardInfo.sku?(cardInfo.sku.image_url?cardInfo.sku.image_url:require('@/static/logo-xietaitai.png')):require('@/static/logo-xietaitai.png')">
</image>
<view>
<view>
{{cardInfo.sku?cardInfo.sku.specs:''}}
</view>
<view>
<!-- <view>
<view>今日剩余可提货量</view>
<view>99</view>
</view>
</view> -->
<view>
<view>卡券状态</view>
<view class="status" v-html="cardInfo.status_label"></view>
<view class="status" v-html="type=='edit'?cardInfo.first_card.status_label:cardInfo.status_label"></view>
</view>
</view>
@ -93,7 +95,7 @@
</u-form>
<view class="orderForm-btn">
<view @click="submit"></view>
<view @click="submit">{{type=='edit'?'':''}}</view>
</view>
</view>
<aui-picker ref="pickers" :title="'地区选择'" :data="listArea" @callback="changeArea"></aui-picker>
@ -105,7 +107,7 @@
<view class="confirmbox">
<view class="confirmpicinfo">
<view class="imgbox">
<image src="../../static/confirmimg.jpg" mode="widthFix"></image>
<image :src="cardInfo.sku?(cardInfo.sku.image_url?cardInfo.sku.image_url:require('@/static/logo-xietaitai.png')):require('@/static/logo-xietaitai.png')" mode="widthFix"></image>
</view>
<view class="pictitle">{{cardInfo.sku?cardInfo.sku.name:''}}</view>
<text>{{cardInfo.sku?cardInfo.sku.specs:''}}</text>
@ -152,7 +154,7 @@
</view>
<view class="confirmbtn">
<text class="edit" @click="backShow"></text>
<text class="confirmtab" @click="submit"></text>
<text class="confirmtab" @click="submit">{{type=='edit'?'':''}}</text>
</view>
</view>
<!-- 选择地址 -->
@ -198,7 +200,8 @@
showAddress: false,
listAddress: [],
addressInfo: '',
cardInfo: {},
cardInfo: {},
type:'',
form: {
card_number: '',
password: '',
@ -282,28 +285,57 @@
this.$refs.uForm.setRules(this.rules);
},
onLoad(option) {
if (option.hasCard) {
this.cardInfo = uni.getStorageSync("vuex_card") ? uni.getStorageSync("vuex_card").card : {}
this.form.card_number = uni.getStorageSync("vuex_card") ? uni.getStorageSync("vuex_card").card_number : ''
this.form.password = uni.getStorageSync("vuex_card") ? uni.getStorageSync("vuex_card").password : ''
// uni.removeStorageSync("vuex_card")
onLoad(option) {
let that = this
if (option.hasCard) {
if(option.type=='edit'){
this.type = 'edit'
this.form = uni.getStorageSync("vuex_update_card") ? uni.getStorageSync("vuex_update_card") : {},
this.cardInfo = uni.getStorageSync("vuex_update_card") ? uni.getStorageSync("vuex_update_card") : {},
this.form.ymd = this.momentDay(this.form.send_date).ymd
uni.removeStorageSync("vuex_update_card")
uni.setNavigationBarTitle({
title: '修改订单',
success: function() {
console.log('标题设置成功');
that.showinfo = false
},
fail: function(err) {
console.error('标题设置失败', err);
}
});
console.log("this.form",this.form)
// uni.removeStorageSync("vuex_update_card")
}else{
this.cardInfo = uni.getStorageSync("vuex_card") ? uni.getStorageSync("vuex_card").card : {}
this.form.card_number = uni.getStorageSync("vuex_card") ? uni.getStorageSync("vuex_card").card_number : ''
this.form.password = uni.getStorageSync("vuex_card") ? uni.getStorageSync("vuex_card").password : ''
uni.removeStorageSync("vuex_card")
}
this.getAddress()
this.getDates()
this.getExpress()
this.getArea()
} else {
toast("未查询到卡券信息")
uni.removeStorageSync("vuex_card")
uni.redirectTo({
url: '/pages/change/change'
url: '/packages/change/change'
})
}
},
methods: {
async getAddress() {
const res = await this.$u.api.getUserAddress()
this.listAddress = res.address
this.showAddress = this.listAddress.length > 0 ? true : false
this.listAddress = res.address
if(!this.type == 'edit'){
this.showAddress = this.listAddress.length > 0 ? true : false
}
},
async getExpress() {
const res = await this.$u.api.getExpress()
this.listExpress = res
},
changeAddress(e) {
console.log("e", e)
@ -326,14 +358,18 @@
async getDates() {
await this.$u.api.getDates({
card_number: this.form.card_number,
password: this.form.password,
card_number: this.form.card_number
}).then(res => {
let data = res.card
if (data.open_dates) {
for (var k in data.open_dates) {
let _k = this.momentDay(k)
this.listDates.push(_k)
if (data.open_dates[k]['quantity'] - data.open_dates[k]['booked'] > 0) {
let _k = this.momentDay(k)
this.listDates.push({
canUse: data.open_dates[k],
..._k
})
}
}
}
}).then(res => {
@ -347,7 +383,7 @@
let ymd = this.$moment(date).format("M月DD日")
let week = weeks[this.$moment(date).day()]
const solar2lunarData = solarLunar.solar2lunar(dateArr[0], dateArr[1], dateArr[2]);
return {
date: date,
ymd: ymd,
@ -362,7 +398,8 @@
if (e) {
this.form.send_date = e.date
this.form.ymd = e.ymd
this.form.express = e.expressvalue
this.form.express = e.expressname
this.form.express_type_id = e.expressid
this.form.hh = e.hhtime
this.form.week = e.week
this.form.lunarData = e.lunarData
@ -465,19 +502,38 @@
city_id: this.form.city_id,
district_id: this.form.district_id,
defalut: 1
}).then(res => {
if(this.type=='edit'){
uni.redirectTo({
url: '/packages/myorder/myorder'
})
}else{
uni.redirectTo({
url: '/packages/product/public'
})
}
}).then(res => {
uni.redirectTo({
url: '/packages/myorder/myorder'
})
}).then(res => {
uni.redirectTo({
url: '/packages/myorder/myorder'
})
if(this.type=='edit'){
uni.redirectTo({
url: '/packages/myorder/myorder'
})
}else{
uni.redirectTo({
url: '/packages/product/public'
})
}
})
} else {
uni.redirectTo({
url: '/packages/myorder/myorder'
})
if(this.type=='edit'){
uni.redirectTo({
url: '/packages/myorder/myorder'
})
}else{
uni.redirectTo({
url: '/packages/product/public'
})
}
}
},
@ -509,21 +565,40 @@
}
});
} else {
this.form.show = 0
this.$u.api.addUserOrder(this.form).then(res => {
console.log("res", res)
uni.removeStorageSync('vuex_card')
toast(res.msg, 1000, function() {
setTimeout(function() {
that.saveDefalutAddress()
}, 500)
})
}).then(res => {
console.log('res1', res)
})
this.form.show = 0
if(this.type=='edit'){
console.log("this.form",this.form)
// return
this.$u.api.saveUserOrder(this.form).then(res => {
uni.removeStorageSync('vuex_update_card')
toast(res.msg, 1000, function() {
setTimeout(function() {
that.saveDefalutAddress()
}, 500)
})
}).then(res => {
console.log('res1', res)
})
}else{
this.$u.api.addUserOrder(this.form).then(res => {
console.log("res", res)
uni.removeStorageSync('vuex_card')
toast(res.msg, 1000, function() {
setTimeout(function() {
that.saveDefalutAddress()
}, 500)
})
}).then(res => {
console.log('res1', res)
})
}
}
} else {
@ -539,7 +614,7 @@
<style lang="scss">
.cotainer {
padding: 29rpx 54rpx;
padding: 30rpx;
background-color: #f0efed;
padding-bottom: 200rpx;
@ -568,15 +643,15 @@
overflow: scroll;
width: 100%;
height: 650rpx;
padding: 40rpx;
padding-top:0;
padding: 40rpx;
padding-top: 0;
}
&-title {
text-align: center;
padding: 30rpx;
font-size: 32rpx;
font-size: 32rpx;
}
.u-radio {

@ -9,7 +9,7 @@
</view>
<view>问题处理专属通道</view>
<view>
<u-image :src="require('@/static/share.jpg')" width="450" height="450"></u-image>
<!-- <u-image :src="require('@/static/share.jpg')" width="450" height="450"></u-image> -->
<view class="">
扫码添加企业微信
</view>

@ -7,7 +7,7 @@
</view>
<view>客服专属通道</view>
<view>
<u-image :src="require('@/static/share.jpg')" width="450" height="450"></u-image>
<!-- <u-image :src="require('@/static/share.jpg')" width="450" height="450"></u-image> -->
<view class="">
扫码添加企业微信
</view>

@ -9,7 +9,7 @@
</view>
<view>问题处理专属通道</view>
<view>
<u-image :src="require('@/static/share.jpg')" width="450" height="450"></u-image>
<!-- <u-image :src="require('@/static/share.jpg')" width="450" height="450"></u-image> -->
<view class="">
扫码添加企业微信
</view>

@ -1,174 +1,213 @@
<template>
<view class="changecontainer">
<view class="exchangebox">
<view class="exchange-top">
<image src="../../static/exchangeword.png" mode="widthFix"></image>
</view>
<view class="exchange-content">
<view class="exchange-tit">
<image src="../../static/icon-xie.png" mode="widthFix"></image>
<view class="exchange-ftit">
<text>添加客服</text>
<text>领取2024版大闸蟹食用指南</text>
</view>
</view>
<view class="exchange-brief">
<view class="qrCodebox">
<view class="codeimg">
<image src="../../static/ewmimg.jpg" mode="widthFix"></image>
</view>
</view>
<text class="taphold">长按扫码即可关注</text>
<view class="exchange-bottom">
<text class="whattext">客服能做什么</text>
<view class="exchangelist">
<view class="textitem">
<image src="../../static/icon-exchange1.png" mode="widthFix"></image>
<text>物流查询</text>
</view>
<view class="textitem">
<image src="../../static/icon-exchange2.png" mode="widthFix"></image>
<text>积分兑换</text>
</view>
</view>
</view>
<view class="returnhome">返回首</view>
</view>
</view>
</view>
</view>
</template>
<template>
<view class="changecontainer">
<view class="exchangebox">
<view class="exchange-top">
<image src="../../static/exchangeword.png" mode="widthFix"></image>
</view>
<view class="exchange-content">
<view class="exchange-tit">
<image src="../../static/icon-xie.png" mode="widthFix"></image>
<view class="exchange-ftit">
<text>添加客服</text>
<text>领取2024版大闸蟹食用指南</text>
</view>
</view>
<view class="exchange-brief">
<view class="qrCodebox">
<view class="codeimg">
<image show-menu-by-longpress src="../../static/ewmimg.jpg" mode="widthFix"></image>
</view>
</view>
<text class="taphold">长按扫码即可关注</text>
<view class="exchange-bottom">
<text class="whattext">客服能做什么</text>
<view class="exchangelist">
<view class="textitem">
<image src="../../static/icon-exchange1.png" mode="widthFix"></image>
<text>物流查询</text>
</view>
<view class="textitem">
<image src="../../static/icon-exchange2.png" mode="widthFix"></image>
<text>积分兑换</text>
</view>
</view>
</view>
<view class="returnhome" @click="toHome"></view>
</view>
</view>
</view>
</view>
</template>
<script>
</script>
<style type="text/css" scoped>
.changecontainer{
width: 100%;
background-image: url(../../static/bg-change.jpg);
background-position: center top;
background-size: cover;
padding-top: 142rpx;
padding-bottom: 270rpx;
}
.exchangebox{
width: 87.33%;
margin: 0 auto;
}
.exchange-top{
text-align: center;
margin-bottom: 28rpx;
}
.exchange-top image{
width: 438rpx;
height: auto;
}
.exchange-content{
background: url(../../static/bg-exchange.png) no-repeat center top #fff;
background-size: 100% auto;
border-radius: 30rpx;
overflow: hidden;
}
.exchange-content .exchange-tit{
display: flex;
justify-content: center;
padding-top: 46rpx;
padding-bottom: 46rpx;
}
.exchange-tit image{
width: 68rpx;
height: auto;
}
.exchange-tit .exchange-ftit{
padding-left: 22rpx;
}
.exchange-ftit text{
display: block;
font-size: 24rpx;
line-height: 38rpx;
font-weight: bold;
color: #000;
}
.exchange-brief{
border-radius: 30rpx 30rpx 0 0;
background: #fff;
padding-top: 45rpx;
padding-bottom: 45rpx;
}
.qrCodebox{
width: 380rpx;
margin: 0 auto;
border-radius: 30rpx;
overflow: hidden;
padding: 18rpx;
box-sizing: border-box;
background: #ededed;
text-align: center;
margin-bottom:20rpx;
}
.codeimg{
width: 345rpx;
height: 345rpx;
margin: 0 auto;
background: url(../../static/ewmbg.png) center center no-repeat;
background-size: cover;
padding: 12rpx;
}
.codeimg image{
width: 320rpx;
height: auto;
border-radius: 20rpx;
}
.taphold{
display: block;
text-align: center;
font-size: 24rpx;
color: #000;
}
.exchange-bottom{
margin-top: 86rpx;
}
.whattext{
display: block;
text-align: center;
font-size: 24rpx;
color:#000;
font-weight: bold;
}
.exchangelist{
display: flex;
justify-content: center;
margin-top: 44rpx;
margin-bottom: 75rpx;
}
.textitem{
display: flex;
flex-direction: column;
align-items: center;
padding: 0 58rpx 5rpx;
}
.textitem:first-child{
border-right: 1rpx solid #f6d9b6;
}
.textitem image{
width: 56rpx;
height: auto;
margin-bottom: 16rpx;
}
.textitem text{
font-size: 24rpx;
color: #323232;
}
.returnhome{
width: 450rpx;
height: 74rpx;
line-height: 74rpx;
text-align: center;
color: #fff;
font-size: 29rpx;
margin: 0 auto;
border-radius: 74rpx;
background: #ba8b45;
}
export default{
data(){
return{
}
},
methods:{
toHome(){
uni.switchTab({
url:'/pages/home/home'
})
}
}
}
</script>
<style type="text/css" scoped>
.changecontainer {
width: 100%;
padding: 100rpx 0;
min-height: 100vh;
display: flex;
align-items: center;
background-image: url(../../static/bg-change.jpg);
background-position: center top;
background-size: cover;
/* padding-top: 142rpx;
padding-bottom: 270rpx; */
}
.exchangebox {
width: 87.33%;
margin: 0 auto;
}
.exchange-top {
text-align: center;
margin-bottom: 28rpx;
}
.exchange-top image {
width: 438rpx;
height: auto;
}
.exchange-content {
background: url(../../static/bg-exchange.png) no-repeat center top #fff;
background-size: 100% auto;
border-radius: 30rpx;
overflow: hidden;
}
.exchange-content .exchange-tit {
display: flex;
justify-content: center;
padding-top: 46rpx;
padding-bottom: 46rpx;
}
.exchange-tit image {
width: 68rpx;
height: auto;
}
.exchange-tit .exchange-ftit {
padding-left: 22rpx;
}
.exchange-ftit text {
display: block;
font-size: 24rpx;
line-height: 38rpx;
font-weight: bold;
color: #000;
}
.exchange-brief {
border-radius: 30rpx 30rpx 0 0;
background: #fff;
padding-top: 45rpx;
padding-bottom: 45rpx;
}
.qrCodebox {
width: 380rpx;
margin: 0 auto;
border-radius: 30rpx;
overflow: hidden;
padding: 18rpx;
box-sizing: border-box;
background: #ededed;
text-align: center;
margin-bottom: 20rpx;
}
.codeimg {
width: 345rpx;
height: 345rpx;
margin: 0 auto;
background: url(../../static/ewmbg.png) center center no-repeat;
background-size: cover;
padding: 12rpx;
}
.codeimg image {
width: 320rpx;
height: auto;
border-radius: 20rpx;
}
.taphold {
display: block;
text-align: center;
font-size: 24rpx;
color: #000;
}
.exchange-bottom {
margin-top: 86rpx;
}
.whattext {
display: block;
text-align: center;
font-size: 24rpx;
color: #000;
font-weight: bold;
}
.exchangelist {
display: flex;
justify-content: center;
margin-top: 44rpx;
margin-bottom: 75rpx;
}
.textitem {
display: flex;
flex-direction: column;
align-items: center;
padding: 0 58rpx 5rpx;
}
.textitem:first-child {
border-right: 1rpx solid #f6d9b6;
}
.textitem image {
width: 56rpx;
height: auto;
margin-bottom: 16rpx;
}
.textitem text {
font-size: 24rpx;
color: #323232;
}
.returnhome {
width: 450rpx;
height: 74rpx;
line-height: 74rpx;
text-align: center;
color: #fff;
font-size: 29rpx;
margin: 0 auto;
border-radius: 74rpx;
background: #ba8b45;
}
</style>

@ -12,86 +12,87 @@
"style": {
"navigationStyle": "custom"
}
},{
}, {
"path": "pages/talk/talk",
"style": {
"navigationBarTitleText": "客服"
}
}, {
"path": "pages/change/change",
"style": {
"navigationBarTitleText": "兑换"
}
}],
"subPackages": [{
"root": "packages",
"pages": [{
"path": "order/order",
"style": {
"navigationBarTitleText": "填写订单"
}
}, {
"path": "myorder/myorder",
"style": {
"navigationBarTitleText": "我的订单"
}
},
{
"path" : "myorder/infoconfirm",
"style": {
"navigationBarTitleText": "订单详情"
}
},{
"path": "card/index",
"style": {
"navigationBarTitleText": "卡券查询"
}
}, {
"path": "card/detail",
"style": {
"navigationBarTitleText": "卡券详情"
}
}, {
"path": "product/index",
"style": {
"navigationBarTitleText": "铂金商品"
}
}, {
"path": "product/offline",
"style": {
"navigationBarTitleText": "线下商品"
}
}, {
"path": "product/fresh",
"style": {
"navigationBarTitleText": "生鲜商品"
}
}, {
"path": "product/public",
"style": {
"navigationBarTitleText": "领取积分"
}
}, {
"path": "my/address",
"style": {
"navigationBarTitleText": "我的地址"
}
}, {
"path": "my/addaddress",
"style": {
"navigationBarTitleText": "我的地址"
}
}, {
"path": "my/score",
"style": {
"navigationBarTitleText": "我的积分"
}
}, {
"path": "my/feedback",
"style": {
"navigationBarTitleText": "我的积分"
"path": "change/change",
"style": {
"navigationBarTitleText": "兑换"
}
}, {
"path": "order/order",
"style": {
"navigationBarTitleText": "填写订单"
}
}, {
"path": "myorder/myorder",
"style": {
"navigationBarTitleText": "我的订单"
}
},
{
"path": "myorder/infoconfirm",
"style": {
"navigationBarTitleText": "订单详情"
}
}, {
"path": "card/index",
"style": {
"navigationBarTitleText": "卡券查询"
}
}, {
"path": "card/detail",
"style": {
"navigationBarTitleText": "卡券详情"
}
}, {
"path": "product/index",
"style": {
"navigationBarTitleText": "铂金商品"
}
}, {
"path": "product/offline",
"style": {
"navigationBarTitleText": "线下商品"
}
}, {
"path": "product/fresh",
"style": {
"navigationBarTitleText": "生鲜商品"
}
}, {
"path": "product/public",
"style": {
"navigationBarTitleText": "领取积分"
}
}, {
"path": "my/address",
"style": {
"navigationBarTitleText": "我的地址"
}
}, {
"path": "my/addaddress",
"style": {
"navigationBarTitleText": "填写地址"
}
}, {
"path": "my/score",
"style": {
"navigationBarTitleText": "我的积分"
}
}, {
"path": "my/feedback",
"style": {
"navigationBarTitleText": "我的积分"
}
}
}]
]
}],
"preloadRule": {

@ -31,7 +31,7 @@
</view>
<view class="menu-right">
<view class="menu-right-top">
<view class="menu-right-top" @click="toUrl(2)">
<view>
<image src="../../static/index_icon5.png"></image>
</view>
@ -47,13 +47,13 @@
</view>
</view>
<view class="menu-right-bottom">
<view @click="toUrl(2)">
<view @click="toUrl(3)">
<view>
<image src="../../static/index_icon6.png" mode=""></image>
</view>
<view>更改预约</view>
</view>
<view @click="toUrl(3)">
<view @click="toUrl(4)">
<view>
<image src="../../static/index_icon7.png" mode=""></image>
</view>
@ -61,13 +61,8 @@
</view>
</view>
</view>
<!-- <view>进入兑换</view>
<view >更改预约</view>
<view class="width100" >物流查询</view>
<view @click="toUrl(4)">线</view>
<view @click="toUrl(5)"></view> -->
</view>
<view class="contact" @click="toUrl(4)">
<view class="contact" @click="toUrl(5)">
<image src="../../static/index_icon8.png"></image>
<view>
<view>蟹太太官方旗舰店</view>
@ -86,12 +81,12 @@
<view class="ad">
<image src="../../static/index_title.png"></image>
<view class="ad-wrap">
<view>
<image class="img1" src="../../static/index_img1.png" mode=""></image>
<view @click="toAd(1)">
<image class="img1" :src="banner2[0]['upfile_url']"></image>
</view>
<view>
<image class="img2" src="../../static/index_img2.png" mode=""></image>
<image class="img3" src="../../static/index_img3.png" mode=""></image>
<image @click="toAd(2)" class="img2" :src="banner2[1]['upfile_url']"></image>
<image @click="toAd(3)" class="img3" :src="banner2[2]['upfile_url']"></image>
</view>
</view>
</view>
@ -113,10 +108,9 @@
},
data() {
return {
list: [{
image: require("@/static/index_banner.png")
}],
tags: ['品牌自营', '品质保障', '顺丰包邮', '售后无忧']
list: [],
tags: ['品牌自营', '品质保障', '顺丰包邮', '售后无忧'],
banner2:[]
}
},
@ -126,13 +120,14 @@
onShareTimeline() {
// return shareInfo
},
onLoad(option) {
onLoad(option) {
this.getBanner()
if (isNull(this.vuex_token)) {
this.getToken()
}
},
onShow() {
},
onHide() {
@ -146,8 +141,36 @@
},
onRejectPrivacy() {
//
//
//
// wx.exitMiniProgram();
console.log('User rejected the privacy policy');
},
async getBanner(){
const res = await this.$u.api.getConfig()
// banner1
let arr = []
if(res.banner1.length>0){
res.banner1.map(item=>{
arr.push({
image:item.upfile_url
})
})
this.list = arr
}
// banner2
if(res.banner2.length>0){
this.banner2 = res.banner2
}
// banner3
let _arr = []
if(res.banner3.length>0){
res.banner3.map(item=>{
_arr.push({
image:item.upfile_url
})
})
uni.setStorageSync('banner3',_arr)
}
},
async getToken() {
await uni.login({
@ -171,25 +194,61 @@
},
toUrl(index) {
var url = ''
console.log("index",index)
if (index == 1) {
url = '/pages/change/change'
} else if (index == 2) {
url = '/packages/card/index'
url = '/packages/change/change'
}else if(index == 2){
uni.navigateToMiniProgram({
appId: 'wx28874f0da33453ab', // appid
path: '', //
extraData: {
//
},
success(res) {
//
},
fail(err) {
//
}
})
return
} else if (index == 3) {
url = '/packages/myorder/myorder'
} else if (index == 4) {
url = '/packages/product/public'
url = '/packages/myorder/myorder'
} else if (index == 5) {
uni.switchTab({
url:'/pages/talk/talk'
})
} else if (index == 6) {
url = '/packages/product/fresh'
}
console.log("index",index,url)
if (!isNull(url)) {
uni.navigateTo({
url: url
})
}
},
toAd(index){
let item = this.banner2[index]
if(item.upfile_url){
uni.navigateToMiniProgram({
appId: item.appid?item.appid:'wx28874f0da33453ab', // appid
path: item.url?item.url:'', //
extraData: {
//
},
success(res) {
//
},
fail(err) {
//
}
})
}
},
}

@ -1,11 +1,19 @@
<template>
<view class="wrap">
<!-- <image class="bg" :src="require('@/static/qus-bg.jpg')" mode=""></image> -->
<view class="me" :style="{paddingTop: navBarTop+'px'}">
<image class="bg" :src="require('@/static/me-bg.png')" mode="widthFix"></image>
<view>
<u-navbar :is-back="false" :is-fixed='false' title-color="#f6d9b6" :border-bottom="false" title="我的"
:background="{'background':'transparent'}">
</u-navbar>
</view>
<view class="me">
<view class="me-avatar" @click="showform = true,maskClose=true">
<image :src="info.headimgurl?info.headimgurl:headReplace" mode=""></image>
<view class="">
{{info.nickname?info.nickname:''}}
<view>
<image :src="info.headimgurl?info.headimgurl:headReplace" mode=""></image>
<view class="">
{{info.nickname?info.nickname:''}}
</view>
</view>
</view>
<view class="me-list">
@ -14,7 +22,7 @@
<button hover-class="none" open-type="feedback">
<view class="me-list-item-left">
<view class="">
<u-icon :name="item.icon" size="40"></u-icon>
<image :src="item.icon"></image>
</view>
<view>{{item.title}}</view>
</view>
@ -22,11 +30,23 @@
<u-icon name="arrow-right" size="40" color="#e0e0e0"></u-icon>
</view>
</button>
</block>
<block v-else-if="item.id==='search'">
<view class="me-list-item-left">
<view class="">
<u-icon :name="item.icon" size="40" color="#ba8b45"></u-icon>
</view>
<view>{{item.title}}</view>
</view>
<view class="">
<u-icon name="arrow-right" size="40" color="#e0e0e0"></u-icon>
</view>
</block>
<block v-else>
<view class="me-list-item-left">
<view class="">
<u-icon :name="item.icon" size="40"></u-icon>
<view class="">
<image :src="item.icon"></image>
<!-- <u-icon :name="item.icon" size="40"></u-icon> -->
</view>
<view>{{item.title}}</view>
</view>
@ -97,7 +117,7 @@
navBarTop: 0,
showPhone: false,
info: {},
headReplace: require('@/static/share.jpg'),
headReplace: require('@/static/logo-xietaitai.png'),
showform: false,
maskClose: false,
imgurl: '',
@ -107,26 +127,27 @@
},
list: [{
title: '我的订单',
icon: 'order',
icon: require('@/static/me-icon1.png'),
url: '/packages/myorder/myorder',
}, {
title: '我的积分',
icon: 'coupon',
icon: require('@/static/me-icon2.png'),
url: '/packages/my/score',
},
// {
// title: '',
// icon:'search',
// url: '/packages/card/index',
// },
{
id:'search',
title: '卡劵查询',
icon:'search',
url: '/packages/card/index',
},
{
title: '我的地址',
icon: 'map',
icon: require('@/static/me-icon3.png'),
url: '/packages/my/address',
}, {
id: 'feedback',
title: '意见反馈',
icon: 'info-circle',
icon: require('@/static/me-icon4.png'),
// url: '/packages/my/feedback',
}
]
@ -232,38 +253,49 @@
width: 100vw;
height: 100vh;
// overflow: scroll;
overflow: scroll;
.bg {
height: 100vh;
width: 100vw;
position: absolute;
width: 100%;
position: fixed;
top: 0;
left: 0;
}
.me {
position: relative;
height: 100vh;
overflow: scroll;
// height: 100vh;
// overflow: scroll;
top: 0;
padding-bottom: 140rpx;
padding-top: 30rpx;
&-avatar {
width: 100%;
background: url(../../static/me-ibg.png) no-repeat left center;
background-size: 100% 100%;
width: 711rpx;
height: 377rpx;
text-align: center;
color: #960909;
color: #000;
font-size: 36rpx;
margin: 0 auto;
margin-left: 34rpx;
display: flex;
align-items: center;
padding-left: 70rpx;
>view {
display: flex;
align-items: center;
}
// width:173rpx;
// height:173rpx;
// border-radius: 173rpx;
// margin:0 auto;
image {
border: 10rpx solid #dfc9b1;
width: 173rpx;
height: 173rpx;
border-radius: 173rpx;
margin-bottom: 20rpx;
border: 10rpx solid #ffecdd;
width: 166rpx;
height: 166rpx;
border-radius: 166rpx;
margin-bottom: 20rpx;
margin-right:30rpx;
}
}
@ -271,10 +303,10 @@
border-radius: 15rpx;
background-color: #fff;
box-shadow: -2px -3rpx 12px rgba(0, 0, 0, 0.1);
margin: 70rpx 35rpx;
margin: 70rpx 45rpx;
padding: 30rpx;
min-height: 750rpx;
margin-top:20rpx;
&-item {
display: flex;
align-items: center;
@ -291,9 +323,9 @@
width: 100%;
background: transparent;
display: flex;
justify-content: space-between;
font-size: 28rpx;
color: #666666;
justify-content: space-between;
font-size: 28rpx;
color: #666666;
line-height: 1.5;
}
@ -315,7 +347,12 @@
&:first-child {
// width: 76rpx;
text-align: center;
// margin-right: 20rpx
// margin-right: 20rpx
image{
width:47rpx;
height:51rpx;
margin-right:20rpx
}
}

@ -1,108 +1,128 @@
<template>
<view class="changecontainer">
<view class="logobox">
<image src="../../static/logo-xietaitai.png" mode="widthFix"></image>
</view>
<view class="customerService">
<view class="customerTit">
<text class="bigtitle">铂金款产品</text>
<text>专属管家通道</text>
</view>
<view class="qrCodebox">
<view class="codeimg">
<image show-menu-by-longpress src="../../static/ewmimg.jpg" mode="widthFix"></image>
</view>
</view>
<view class="textbottom">长按扫码添加企业微信</view>
</view>
<tabbar :currentPage="1"></tabbar>
</view>
</template>
<script>
import tabbar from '@/components/tabbar/tabbar.vue';
export default{
components:{
tabbar
}
}
</script>
<style type="text/css" scoped>
.changecontainer{
width: 100%;
background-image: url(../../static/bg-change.jpg);
background-position: center top;
background-size: cover;
padding-top: 114rpx;
padding-bottom: 300rpx;
}
.logobox{
width: 162rpx;
height: 162rpx;
border-radius: 50%;
overflow: hidden;
margin: 0 auto;
background: #fff;
margin-bottom: 80rpx;
box-shadow: 0 22rpx 32rpx rgba(53,53,53,.6);
}
.logobox image{
width: 100%;
height: auto;
}
.customerService{
width: 87.33%;
margin: 0 auto;
background: #fff;
border-radius: 10rpx;
overflow: hidden;
}
.customerTit{
text-align: center;
padding-top: 80rpx;
padding-bottom: 62rpx;
}
.customerTit text{
display: block;
font-size: 20rpx;
color: #000;
}
.customerTit text.bigtitle{
color:#b98b44;
font-size: 36rpx;
margin-bottom: 26rpx;
}
.qrCodebox{
width: 510rpx;
margin: 0 auto;
border-radius: 30rpx;
overflow: hidden;
padding: 22rpx;
box-sizing: border-box;
background: #ededed;
text-align: center;
margin-bottom: 98rpx;
}
.codeimg{
width: 466rpx;
height: 466rpx;
margin: 0 auto;
background: url(../../static/ewmbg.png) center center no-repeat;
background-size: cover;
padding: 19rpx;
}
.codeimg image{
width: 428rpx;
height: auto;
border-radius: 20rpx;
}
.textbottom{
width: 100%;
height: 60rpx;
line-height: 60rpx;
text-align: center;
background: #f4f4f4;
font-size: 20rpx;
color: #000;
}
<template>
<view class="changecontainer">
<view>
<view class="logobox">
<image src="../../static/logo-xietaitai.png" mode="widthFix"></image>
</view>
<view class="customerService">
<view class="customerTit">
<text class="bigtitle">铂金款产品</text>
<text>专属管家通道</text>
</view>
<view class="qrCodebox">
<view class="codeimg">
<image show-menu-by-longpress src="../../static/ewmimg.jpg" mode="widthFix"></image>
</view>
</view>
<view class="textbottom">长按扫码添加企业微信</view>
</view>
</view>
<tabbar :currentPage="1"></tabbar>
</view>
</template>
<script>
import tabbar from '@/components/tabbar/tabbar.vue';
export default {
components: {
tabbar
}
}
</script>
<style type="text/css" scoped>
.changecontainer {
width: 100%;
padding-bottom: 200rpx;
padding-top: 60rpx;
min-height: 100vh;
display: flex;
align-items: center;
background-image: url(../../static/bg-change.jpg);
background-position: center top;
background-size: cover;
}
.changecontainer>view {
width: 100%
}
.logobox {
width: 162rpx;
height: 162rpx;
border-radius: 50%;
overflow: hidden;
margin: 0 auto;
background: #fff;
margin-bottom: 60rpx;
box-shadow: 0 22rpx 32rpx rgba(53, 53, 53, .6);
}
.logobox image {
width: 100%;
height: auto;
}
.customerService {
width: 87.33%;
margin: 0 auto;
background: #fff;
border-radius: 10rpx;
overflow: hidden;
}
.customerTit {
text-align: center;
padding-top: 80rpx;
padding-bottom: 62rpx;
}
.customerTit text {
display: block;
font-size: 20rpx;
color: #000;
}
.customerTit text.bigtitle {
color: #b98b44;
font-size: 36rpx;
margin-bottom: 26rpx;
}
.qrCodebox {
width: 510rpx;
margin: 0 auto;
border-radius: 30rpx;
overflow: hidden;
padding: 22rpx;
box-sizing: border-box;
background: #ededed;
text-align: center;
margin-bottom: 98rpx;
}
.codeimg {
width: 466rpx;
height: 466rpx;
margin: 0 auto;
background: url(../../static/ewmbg.png) center center no-repeat;
background-size: cover;
padding: 19rpx;
}
.codeimg image {
width: 428rpx;
height: auto;
border-radius: 20rpx;
}
.textbottom {
width: 100%;
height: 60rpx;
line-height: 60rpx;
text-align: center;
background: #f4f4f4;
font-size: 20rpx;
color: #000;
}
</style>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 749 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Loading…
Cancel
Save