Browse Source

影响样式,对接接口,日历样式

master
396316021 1 year ago
parent
commit
7655e5d157
  1. 6
      components/MzButton/index.vue
  2. 13
      config/image.js
  3. 2
      pages/Addr/components/index.scss
  4. 21
      pages/Addr/index.vue
  5. 53
      pages/AddrDetail/index.vue
  6. 1
      pages/ChatDetail/components/index.scss
  7. 8
      pages/ChatDetail/index.vue
  8. 132
      pages/Index/components/HomePage/index.vue
  9. 33
      pages/Index/components/UserPage/index.vue
  10. 2
      pages/Index/index.vue
  11. 6
      pages/Login/index.vue
  12. 111
      pages/OrderPage/index.vue

6
components/MzButton/index.vue

@ -1,5 +1,5 @@
<template>
<view class="mz-button-container" :style="{width:buttonWidth}">
<view class="mz-button-container" :style="{width:buttonWidth}" @click="clickHandle">
<view class="mz-button-background">
<view class="mz-button-background-main" :style="{backgroundColor:buttonColor,color:fontColor}">
<view class="mz-button-content" :style="Object.assign(btnStyle,{
@ -65,7 +65,9 @@
},
methods: {
clickHandle(e){
this.$emit('click',e);
}
}
}
</script>

13
config/image.js

@ -9,6 +9,17 @@ const image = {
},
IndexPage(){
}
},
OrderPage:{
wallpaperBgImage:imghost +'/static/image/background.png',
addrBg:imghost+'/static/image/order-create-addr-bg.png',
addrAvatar:imghost+'/static/image/order-create-addr-avatar.png',
addrFw:imghost+'/static/image/order-create-addr-fw.png',
addrBook:imghost+'/static/image/order-create-addr-book.png',
tagClose:imghost+'/static/image/order-create-tag-close.png',
selectPet:imghost+'/static/image/order-create-select-pet.png',
selectService:imghost+'/static/image/order-create-select-service.png',
groupImg:imghost+'/static/image/order-create-group-1.png',
},
}
export default image;

2
pages/Addr/components/index.scss

@ -19,7 +19,7 @@
position: relative;
z-index: 2;
width:100%;
margin-right:30rpx;
//margin-right:30rpx;
.addr-move-container{
height:231rpx;
width:100%;

21
pages/Addr/index.vue

@ -7,11 +7,11 @@
<view class="addr-list-container row">
<!-- <view @touchstart="touchstart" @touchend="touchend" @touchmove="touchmove" v-for="item in addrList" class="addr-list-item row" :style="{backgroundImage:'url('+staticImage.addrBg+')'}">-->
<uni-swipe-action v-for="item in addrList">
<uni-swipe-action-item :right-options="options1">
<view class="addr-list-item-container">
<uni-swipe-action v-for="item in addrList" style="width:100%;">
<uni-swipe-action-item :right-options="options1" style="width:100%;">
<view class="addr-list-item-container" @click="(type === 'select')?navBack(item):''">
<view class="addr-list-item row" :style="{backgroundImage:'url('+staticImage.addrBg+')'}">
<view class="addr-list-content">
<view class="addr-list-content row">
<view class="addr-title-group row">
<view class="addr-title">{{item.name}}</view>
<view class="addr-phone">{{item.phone}}</view>
@ -87,6 +87,7 @@
import MzButton from '@/components/MzButton/Index.vue';
import {delAddress, getAddressList} from "@/api/address";
import functions from "@/utils/functions";
import log from "@/utils/log";
export default {
components: {
HeaderNav,
@ -126,16 +127,22 @@
isTop: false,
pagePadding: 100,
petImage: imghost + '/static/image/pet_avatar1.jpeg',
addrList: []
addrList: [],
type:'',
}
},
onLoad() {
onLoad(option) {
this.type = option.type||'lists'
},
onShow() {
this.getAddressList();
},
methods: {
navBack(item) {
item.select = true;
uni.setStorageSync('address',item)
uni.navigateBack();
},
touchstart(e) {
console.log(e)

53
pages/AddrDetail/index.vue

@ -7,12 +7,16 @@
<view class="container-background-group">
<view class="container-background-content">
<image :src="staticImage.addrDetailTitle" class="img" mode="widthFix"/>
<u--form labelWidth="auto" labelPosition="left" :model="address" ref="form1">
<u-form labelWidth="auto" labelPosition="left" :model="address" ref="form1">
<u-form-item label="家长姓名" prop="address.name" borderBottom ref="item1">
<u--input v-model="address.name" border="none" inputAlign="right" placeholder="请填写家长姓名"></u--input>
<u-input v-model="address.name" border="none" inputAlign="right" placeholder="请填写家长姓名"></u-input>
</u-form-item>
<u-form-item label="家长电话" prop="address.phone" borderBottom ref="item1">
<u--input v-model="address.phone" border="none" inputAlign="right" placeholder="请填写联系电话"></u--input>
<u-input v-model="address.phone" border="none" inputAlign="right" placeholder="请填写联系电话"></u-input>
</u-form-item>
<u-form-item label="所在位置" prop="address.position" borderBottom ref="item1">
<!-- <view class="" @click="selectAddress">{{ address.position||'请选择位置' }}</view>-->
<u-text suffix-icon="arrow-right" icon-style="align-items:center;font-size:28rpx;" line-height="28" :text="address.position||'请选择位置'" size="28" :color="address.position?'#636363':'#636363'" align="right" @click="selectAddress"></u-text>
</u-form-item>
<!-- <u-form-item label="省市区" prop="userInfo.sex" borderBottom @click="showSex = true; hideKeyboard()"-->
<!-- ref="item1">-->
@ -64,7 +68,7 @@
></MzButton>
</view>
</u-form-item>
</u--form>
</u-form>
<u-action-sheet :show="showSex" :actions="actions" title="请选择性别" description="如果选择保密会报错"
@close="showSex = false" @select="sexSelect">
</u-action-sheet>
@ -89,6 +93,7 @@
import log from "@/utils/log";
import {getDetail, saveAddress} from "@/api/address";
import functions from "@/utils/functions";
import api from "@/utils/functions";
export default {
components: {
HeaderNav,
@ -202,6 +207,46 @@
getDetail(id).then(data => {
this.address = data.data;
})
},
selectAddress() {
let that = this;
uni.getLocation({
type: 'gcj02',
success: function (res1) {
uni.chooseLocation({
latitude:res1.latitude||'',
longitude:res1.longitude||'',
success: (res) => {
// that.lat = res.latitude;
// that.lng = res.longitude;
// that.model.line.coordinate = res.latitude+','+res.longitude;
// that.model.line.address = res.name+res.address;
// this.getRegionFn(res);
api.getloction({activedeta:{
city:'',
address:res.address
}}).then(data => {
let address = data.address_components;
console.log('address',address)
that.address.province = address.province;
that.address.city = address.city;
that.address.district = address.district;
that.address.position = res.address;
that.address.info = res.name;
});
},
fail: (err) => {
console.log(err)
}
});
},
fail: (err) => {
console.log(err)
}
});
},
submit(){
log(this.address);

1
pages/ChatDetail/components/index.scss

@ -134,7 +134,6 @@
border-radius: 45rpx;
z-index: 1;
.detail-input{
flex:1;
background: #FFFFFF;
box-shadow: 0rpx 5rpx 10rpx 0rpx rgba(179,181,181,0.1);
border-radius: 45rpx;

8
pages/ChatDetail/index.vue

@ -48,19 +48,21 @@
<view class="detail-input-group-container">
<view class="detail-input-group row">
<view class="col">
<input class="detail-input" v-model="message" type="text"/>
<view @click="sendMessage">
</view>
<MzButton
title="发送"
font-color="#fff"
button-color="#4DC3B8"
button-width="auto"
class="detail-input-button">
class="detail-input-button"
@click="sendMessage"
>
</MzButton>
</view>
</view>
</view>
</view>
<view class="detail-background-container">
<view class="detail-background"></view>
</view>

132
pages/Index/components/HomePage/index.vue

@ -4,7 +4,7 @@
}">
<view class="index-banner">
<view class="index-banner-container">
<image class="img" v-for="item in indexBanner" mode="widthFix" :src="item.image" alt="" />
<image class="img" v-for="item in indexBanner" mode="widthFix" :src="item.image" alt=""/>
</view>
</view>
<view class="index-user-detail">
@ -13,23 +13,25 @@
<img mode="widthFix" class="img" :src="user.avatar" alt="">
</view>
<view class="user-content">
<view class="user-title-top">
<view class="user-title-top row">
<image class="img" mode="widthFix"
:src="staticImage.hiImage" alt="" />
<text class="user-title-text">{{user.nickname}}</text>
:src="staticImage.hiImage" alt=""/>
<view class="user-title-text">
<u-text :text="user.nickname" color="#131313" size="30" custom-style="display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;overflow: hidden;max-width:200rpx;"></u-text>
</view>
</view>
<view class="user-title-bottom">
<image class="img" mode="aspectFit"
:src="staticImage.dogImage" alt="" />
:src="staticImage.dogImage" alt=""/>
<text class="user-title-idcard">
会员编号{{user.id}}
会员编号{{ user.id }}
</text>
</view>
</view>
<view class="user-coupons" :style="{backgroundImage:'url('+staticImage.couponsImage+')'}">
<view class="user-coupons-number" @click="userCouponsPage()">
<view class="user-coupons-number-container">
{{user.coupon_count}}
{{ userExtends.coupon_count }}
</view>
</view>
</view>
@ -55,104 +57,106 @@
</template>
<script>
import {
import {
imghost
} from '@/config/host.js'
import api from '@/utils/functions.js';
import log from "@/utils/log";
export default {
} from '@/config/host.js'
import api from '@/utils/functions.js';
import log from "@/utils/log";
import {userExtends} from "@/api/user";
export default {
data: {
title: 'Hello',
loading: true,
staticImage:{
hiImage:imghost+'/static/image/index-user-title-hi.png',
dogImage:imghost+'/static/image/index-user-title-dog.png',
couponsImage:imghost+'/static/image/index-user-coupons-background.png',
indexButtonGroup:[
staticImage: {
hiImage: imghost + '/static/image/index-user-title-hi.png',
dogImage: imghost + '/static/image/index-user-title-dog.png',
couponsImage: imghost + '/static/image/index-user-coupons-background.png',
indexButtonGroup: [
{
backgroundImage:imghost+'/static/image/index-button-one.png',
serviceImage:imghost+'/static/image/index-button-bg-one.png',
buttonImage:imghost+'/static/image/index-button-bg-btn-one.png',
url:'/pages/OrderPage/index'
},{
backgroundImage:imghost+'/static/image/index-button-two.png',
serviceImage:imghost+'/static/image/index-button-bg-two.png',
buttonImage:imghost+'/static/image/index-button-bg-btn-two.png',
url:'/pages/Card/index'
},{
backgroundImage:imghost+'/static/image/index-button-three.png',
serviceImage:imghost+'/static/image/index-button-bg-three.png',
buttonImage:imghost+'/static/image/index-button-bg-btn-three.png',
url:'/pages/UserCoupons/index'
},{
backgroundImage:imghost+'/static/image/index-button-four.png',
serviceImage:imghost+'/static/image/index-button-bg-four.png',
buttonImage:imghost+'/static/image/index-button-bg-btn-four.png',
url:'/pages/Draw/index'
backgroundImage: imghost + '/static/image/index-button-one.png',
serviceImage: imghost + '/static/image/index-button-bg-one.png',
buttonImage: imghost + '/static/image/index-button-bg-btn-one.png',
url: '/pages/OrderPage/index'
}, {
backgroundImage: imghost + '/static/image/index-button-two.png',
serviceImage: imghost + '/static/image/index-button-bg-two.png',
buttonImage: imghost + '/static/image/index-button-bg-btn-two.png',
url: '/pages/Card/index'
}, {
backgroundImage: imghost + '/static/image/index-button-three.png',
serviceImage: imghost + '/static/image/index-button-bg-three.png',
buttonImage: imghost + '/static/image/index-button-bg-btn-three.png',
url: '/pages/UserCoupons/index'
}, {
backgroundImage: imghost + '/static/image/index-button-four.png',
serviceImage: imghost + '/static/image/index-button-bg-four.png',
buttonImage: imghost + '/static/image/index-button-bg-btn-four.png',
url: '/pages/Draw/index'
},
],
wallpaperBgImage:imghost+'/static/image/background.png'
wallpaperBgImage: imghost + '/static/image/background.png'
},
indexBanner:[
indexBanner: [
{
image:imghost+'/static/image/banner.png',
url:'',
image: imghost + '/static/image/banner.png',
url: '',
}
],
user:{
avatar:imghost+'/static/image/banner.png',
nickname:'清晨的风',
coupon_count:221,
id:88685
user: {
avatar: imghost + '/static/image/banner.png',
nickname: '清晨的风',
coupon_count: 221,
id: 88685
},
isTop:false,
pagePadding:100,
userInfo:{},
isTop: false,
pagePadding: 100,
userInfo: {},
userExtends: {},
},
onLoad() {
},
methods: {
userCouponsPage(){
userCouponsPage() {
uni.navigateTo({
url:'/pages/UserCoupons/index'
url: '/pages/UserCoupons/index'
})
},
navTo(url){
navTo(url) {
uni.navigateTo({
url:url
url: url
})
},
updateUserInfo(){
if(this.userInfo){
updateUserInfo() {
if (this.userInfo) {
this.user.id = this.userInfo.id
this.user.nickname = this.userInfo.name
this.user.avatar = this.userInfo.avatar
this.user.coupon_count = this.userInfo.coupon_count
this.user.coupon_count = this.userExtends.coupon_count
}
}
},
onPageScroll(res) {
if(res.scrollTop <= 20){
if (res.scrollTop <= 20) {
uni.$emit('isTop', true);
}else{
} else {
uni.$emit('isTop', false);
}
},
created() {
this.pagePadding = (api.navHeight().navPaddingTop+
api.navHeight().navHeight + (api.navHeight().headerPadding *2))
this.pagePadding = (api.navHeight().navPaddingTop +
api.navHeight().navHeight + (api.navHeight().headerPadding * 2))
},
mounted() {
this.userInfo = this.$store.state.userInfo;
log(this.userInfo);
log(this.$store.state);
this.userExtends = this.$store.state.userExtends;
},
updated() {
},
watch:{
watch: {
"$store.state.userInfo": {
handler(newVal, oldVal) {
this.userInfo = newVal;
@ -166,9 +170,9 @@
}
}
}
}
}
</script>
<style lang="scss">
@import './components/index.scss';
@import './components/index.scss';
</style>

33
pages/Index/components/UserPage/index.vue

@ -151,7 +151,7 @@
import FooterNav from '@/components/FooterNav/Index.vue';
import RightNav from '@/components/RightNav/Index.vue';
import api from '@/utils/functions.js';
import {userExtends} from "@/api/user";
import {userDetail, userExtends} from "@/api/user";
import log from "@/utils/log";
export default {
components: {
@ -196,19 +196,17 @@
}
},
user:{
avatar:imghost+'/static/image/banner.png',
nickname:'清晨的风',
coupon_count:221,
id:88685
avatar:'',
nickname:'',
coupon_count:0,
id:0,
feed_count:0
},
isTop:false,
pagePadding:100,
userInfo:{},
userExtends:{},
}
},
onLoad() {
},
methods: {
navTo(url){
@ -228,7 +226,9 @@
userExtends().then(data => {
log(data);
this.userExtends = data.data;
})
uni.setStorageSync('userExtends',data.data);
this.$store.commit('userExtends',data.data);
});
},
userCouponsPage(){
uni.navigateTo({
@ -240,19 +240,18 @@
this.user.id = this.userInfo.id
this.user.nickname = this.userInfo.name
this.user.avatar = this.userInfo.avatar
this.user.coupon_count = this.userInfo.coupon_count
}
this.user.coupon_count = this.userExtends.coupon_count
}
},
onPageScroll(res) {
if(res.scrollTop <= 20){
uni.$emit('isTop', true);
}else{
uni.$emit('isTop', false);
showUserInfo(){
userDetail().then(res => {
uni.setStorageSync('user',res.data);
this.$store.commit('userInfo',res.data);
})
}
},
mounted() {
this.showUserInfo();
this.showNumber();
},
created() {

2
pages/Index/index.vue

@ -108,6 +108,8 @@
}else{
let user = uni.getStorageSync('user');
this.$store.commit('userInfo', user);
let userExtends = uni.getStorageSync('userExtends');
this.$store.commit('userExtends', userExtends);
}
},
watch: {

6
pages/Login/index.vue

@ -108,7 +108,7 @@ import {
imghost
} from '@/config/host.js'
import api from '@/utils/functions.js';
import {appletLogin, testLogin, userDetail} from "@/api/user";
import {appletLogin, testLogin, userDetail, userExtends} from "@/api/user";
export default {
data() {
@ -144,6 +144,10 @@ export default {
uni.setStorageSync('user',res.data);
this.$store.commit('userInfo',res.data);
});
userExtends().then((res) => {
uni.setStorageSync('userExtends',res.data);
this.$store.commit('userExtends',res.data);
});
});
},
wxLogin(phoneCode) {

111
pages/OrderPage/index.vue

@ -15,8 +15,8 @@
</view>
<view class="main-content">
<image mode="heightFix" class="img" :src="staticImage.addrFw"/>
<view class="main-content-text">
请输入具体地址
<view class="main-content-text" style="max-width:300rpx;">
<u-text :text="address.info || '请输入具体地址'" color="#131313" size="30"></u-text>
</view>
</view>
<view class="main-select-btn ">
@ -46,21 +46,16 @@
服务日期
</view>
<view class="item-content row col">
<view class="item-content-tag">
<view class="item-content-tag" v-for="(item,index) in timeList" v-if="timeList.length !== 0">
<view class="tag-text">
2023/5/25
{{ item }}
</view>
<view class="tag-close">
<view class="tag-close" @click="delTime(index)">
<image mode="heightFix" class="img" :src="staticImage.tagClose"/>
</view>
</view>
<view class="item-content-tag">
<view class="tag-text">
2023/5/25
</view>
<view class="tag-close">
<image mode="heightFix" class="img" :src="staticImage.tagClose"/>
</view>
<view class="" v-else @click="showCalendar">
<u-text text="请选择服务日期" size="28" color="#636363"></u-text>
</view>
</view>
<view class="item-icon" @click="showCalendar">
@ -93,7 +88,7 @@
<u-icon name="arrow-right"></u-icon>
</view>
</view>
<view class="order-item row">
<view class="order-item row" @click="navTo('/pages/UserCoupons/index?type=select')">
<view class="item-title">
选择优惠
</view>
@ -195,7 +190,7 @@
<view class="foot-menu-checkbox-group row col">
<view class="foot-menu-checkbox"></view>
<view class="foot-menu-title">
<text>阅读并同意</text><text class="foot-menu-url">上门喂养协议</text>
<text>阅读并同意</text><text class="foot-menu-url" @click="showAgreement">上门喂养协议</text>
</view>
</view>
</view>
@ -209,7 +204,27 @@
</MzButton>
</view>
</view>
<uv-calendar ref="calendar" mode="multiple" title="选择服务日期" @confirm="confirm" color="#4DC3B8" round="40rpx"></uv-calendar>
<uv-calendar ref="calendar" mode="multiple" title="选择服务日期" @confirm="timeSelect" color="#4DC3B8" round="40rpx">
<template #footer>
<MzButton button-color="#4DC3B8" button-width="90%" font-color="#fff" class="row" style="justify-content: center" @click="timeSelect">确定</MzButton>
</template>
</uv-calendar>
<uv-popup ref="agreement" mode="bottom" round="20rpx" closeable safeAreaInsetTop safeAreaInsetBottom custom-style="position:relative;">
<view class="title row" style="position:absolute;justify-content: center;width:100%;top:20rpx;left:0;">
<view class="value col" style="position: relative;text-align: center;">
<!-- <u-text text="协议内容" size="38" color="#191919"></u-text>-->
<view class="" style="position: relative;display:inline-block;">
<view style="color:#191919;font-size:38rpx;display:inline-block;position: relative;z-index: 2;">协议内容</view>
<view class="background" style="width:100%;height:50%;position: absolute;bottom:0;left:0;background-color:rgba(227, 191, 119, 0.6);display:inline-block;z-index:1;"></view>
</view>
</view>
</view>
<view style="padding:30rpx;">
1文字占位文字占位文字占位文字占位文字占位文字占位文字占位 2文字占位文字占位文字占位文字占位文字占位文字占位文
</view>
</uv-popup>
<!-- <RightNav></RightNav> -->
</template>
@ -223,7 +238,9 @@
import MzButton from '../../components/MzButton/Index.vue';
import PetPage from '../../components/PetPage/Index.vue';
import api from '@/utils/functions.js';
import {cardDetail} from "../../api/card";
import {cardDetail} from "@/api/card";
import {getAddressList} from "@/api/address";
import image from "@/config/image";
export default {
components: {
HeaderNav,
@ -240,35 +257,10 @@
id:'',
title: 'Hello',
loading: true,
staticImage: {
screenActiveImg: imghost + '/static/image/screen-active.png',
cardBackground: imghost + '/static/image/order-card-background.png',
wallpaperBgImage:imghost +'/static/image/background.png',
dogImage:imghost+'/static/image/index-user-title-dog.png',
cardDetailCard:imghost+'/static/image/card-detail-card.png',
couponsBackground:imghost+'/static/image/card-detail-coupons.png',
addrBg:imghost+'/static/image/order-create-addr-bg.png',
addrAvatar:imghost+'/static/image/order-create-addr-avatar.png',
addrFw:imghost+'/static/image/order-create-addr-fw.png',
addrBook:imghost+'/static/image/order-create-addr-book.png',
tagClose:imghost+'/static/image/order-create-tag-close.png',
selectPet:imghost+'/static/image/order-create-select-pet.png',
selectService:imghost+'/static/image/order-create-select-service.png',
groupImg:imghost+'/static/image/order-create-group-1.png',
},
indexBanner: [{
image: imghost + '/static/image/banner.png',
url: '',
}],
user: {
avatar: imghost + '/static/image/banner.png',
nickname: '清晨的风',
coupons: 221,
id: 88685
},
timeList:[],
staticImage: image.OrderPage,
isTop: false,
pagePadding: 100,
petImage: imghost + '/static/image/pet_avatar1.jpeg',
orderCardList:[
{
title:'成都市武侯区丰德国际4栋...',
@ -290,14 +282,45 @@
coupons_number:10,
time: '满0.01元使用仅限线上预约下单使用',
is_timeout: false,
}]
}],
address:{},
}
},
onLoad(options) {
this.id = options.id;
this.getCardDetail();
},
onShow(){
this.getDefaultAddress();
},
methods: {
getDefaultAddress() {
let cacheAddress = uni.getStorageSync('address');
if (cacheAddress) {
console.log('hasCacheAddress')
console.log(cacheAddress)
this.address = cacheAddress;
} else {
getAddressList({}).then(res => {
res.data.forEach(item => {
if (item.is_default === 1) {
this.address = item;
}
});
})
console.log(this.address)
}
},
delTime(index){
this.timeList.splice(index,1);
},
timeSelect(e){
this.timeList = this.$refs.calendar.selected;
this.$refs.calendar.close();
},
showAgreement(){
this.$refs.agreement.open();
},
navTo(url){
uni.navigateTo({
url:url

Loading…
Cancel
Save