刘翔宇-旅管家 4 years ago
parent 37cd4278f2
commit f95efb52ef

@ -174,6 +174,24 @@
} }
} }
,{
"path" : "pages/guide/feedback",
"style" :
{
"navigationBarTitleText": "投诉建议",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/guide/contact",
"style" :
{
"navigationBarTitleText": "联系我们",
"enablePullDownRefresh": false
}
}
], ],
"globalStyle": { "globalStyle": {
"navigationBarTextStyle": "black", "navigationBarTextStyle": "black",

@ -0,0 +1,96 @@
<template>
<view class="box">
<view class="bgtop">
<image src="../../static/img/nav_top.png" style="width: 100%;height: 100%;"></image>
</view>
<view class="bgcenter">
<view class="box-content">
<scroll-view :scroll-y="true" :style="{height:height+'px'}">
<rich-text :nodes="info.value"></rich-text>
</scroll-view>
</view>
</view>
<view class="bgbottom">
<image src="../../static/img/nav_bottom.png" style="width: 100%;height: 100%;"></image>
</view>
</view>
</template>
<script>
export default {
data() {
return {
height: 0,
info: {},
}
},
onLoad() {
let that = this;
uni.getSystemInfo({
success: function(res) {
that.height = res.windowHeight - 80;
}
});
this.loadConfigInfo();
},
methods: {
loadConfigInfo() {
var that = this;
this.util.request({
api: '/api/mobile/other/config-show',
data: {
tag: "about"
},
utilSuccess: function(res) {
res.value=res.value.replace(/\<img/g,"<img style='width:100%;height:auto;display:block'")
that.info = res;
},
utilFail: function(res) {
uni.showToast({
icon: "none",
title: res,
duration: 2000
})
}
})
},
}
}
</script>
<style>
.box {
padding: 20rpx;
box-sizing: border-box;
}
.bgtop {
height: 40rpx;
}
.bgcenter {
background: url("../../static/img/nav_middle.png") repeat-y;
background-size: 100% 100%;
}
.box-content {
padding: 15rpx 20rpx;
color: #351C1B;
box-sizing: border-box;
}
.title {}
.time {
font-size: 24rpx;
}
.bgbottom {
height: 40rpx;
}
</style>

@ -0,0 +1,120 @@
<template>
<view class="box">
<view class="bgtop">
<image src="../../static/img/nav_top.png" style="width: 100%;height: 100%;"></image>
</view>
<view class="bgcenter" :style="{height:height+'px'}">
<view class="box-content">
<u--form labelPosition="top" :model="form">
<u-form-item label="手机号" prop="mobile" labelWidth="60px" required>
<u-input v-model="form.mobile" placeholder="请输入手机号"></u-input>
</u-form-item>
<u-form-item label="内容" prop="content" labelWidth="60px" required>
<u--textarea v-model="form.content" placeholder="请输入内容"></u--textarea>
</u-form-item>
</u--form>
<u-button type="primary" @click="tosubmit"></u-button>
</view>
</view>
<view class="bgbottom">
<image src="../../static/img/nav_bottom.png" style="width: 100%;height: 100%;"></image>
</view>
</view>
</template>
<script>
export default {
data() {
return {
height: 0,
form: {
mobile: "",
content: ""
}
}
},
onLoad() {
let that = this;
uni.getSystemInfo({
success: function(res) {
that.height = res.windowHeight - 60;
}
});
},
methods: {
tosubmit() {
let that = this;
if (this.util.isNull(that.form.mobile)) {
this.util.toast("请填写手机号!");
return false;
} else {
if (!uni.$u.test.mobile(that.form.mobile)) {
this.util.toast("请填写正确的手机号!");
return false;
}
}
if (this.util.isNull(that.form.content)) {
this.util.toast("请填写内容!");
return false;
}
this.util.request({
api: '/api/mobile/other/tip-store',
data: this.form,
utilSuccess: function(res) {
console.log(res)
uni.showToast({
icon: "none",
title: "投诉建议成功",
complete() {
uni.reLaunch({
url: "/pages/success/success?from=feed"
})
}
})
},
utilFail: function(res) {
that.util.toast(res);
}
})
}
}
}
</script>
<style>
.box {
padding: 20rpx;
box-sizing: border-box;
}
.u-input {
background-color: #fff;
}
.bgtop {
height: 40rpx;
}
.bgcenter {
background: url("../../static/img/nav_middle.png") repeat-y;
background-size: 100% 100%;
}
.box-content {
padding: 15rpx 40rpx;
color: #351C1B;
box-sizing: border-box;
}
.title {}
.time {
font-size: 24rpx;
}
.bgbottom {
height: 40rpx;
}
</style>

@ -1,8 +1,8 @@
<template> <template>
<view> <view>
<view> <view>
<view style="padding: 4%"> <view style="padding: 4%" v-if="list.length>0">
<u-swiper :list="listImg" @click="clickInfo"></u-swiper> <u-swiper :list="list" keyName="img" @click="clickInfo"></u-swiper>
</view> </view>
<view class="listbox flex-row"> <view class="listbox flex-row">
<view class="boxitem" @click="tolist(1)"> <view class="boxitem" @click="tolist(1)">
@ -38,20 +38,49 @@
export default { export default {
data() { data() {
return { return {
listImg: [ list: []
'https://cdn.uviewui.com/uview/swiper/swiper1.png',
'https://cdn.uviewui.com/uview/swiper/swiper2.png',
'https://cdn.uviewui.com/uview/swiper/swiper3.png',
]
} }
}, },
onLoad() {
this.loadActivity();
},
methods: { methods: {
tolist(type) { tolist(type) {
uni.navigateTo({ if (type == 5) {
url: "list" uni.navigateTo({
url: "contact"
})
} else if (type == 3) {
uni.navigateTo({
url: "feedback"
})
} else
uni.navigateTo({
url: "list?type=" + type
})
},
loadActivity() {
var that = this;
this.util.request({
api: '/api/mobile/activity/index',
utilSuccess: function(res) {
for (var m of res.data) {
m.img = m.cover_upload.url;
}
that.list = res.data;
},
utilFail: function(res) {
}
}) })
}, },
clickInfo() {} clickInfo(e) {
var obj = this.list[e];
uni.navigateTo({
url: "../activity/info?id=" + obj.id + "&latitude=" + obj.latitude + "&longitude=" + obj
.longitude
})
}
} }
} }
</script> </script>

@ -1,22 +1,109 @@
<template> <template>
<view> <view class="box">
<view class="bgtop">
</view> <image src="../../static/img/nav_top.png" style="width: 100%;height: 100%;"></image>
</template> </view>
<view class="bgcenter" :style="{height:height+'px'}">
<script> <view class="box-title">
export default { {{info.name||""}}
data() { </view>
return { <view class="time">
{{info.created_at||""}}
} </view>
}, <view class="box-content">
methods: { <rich-text :nodes="info.content"></rich-text>
</view>
} </view>
} <view class="bgbottom">
</script> <image src="../../static/img/nav_bottom.png" style="width: 100%;height: 100%;"></image>
</view>
<style> </view>
</template>
<script>
export default {
data() {
return {
height: 0,
urls: {
1: '/api/mobile/other/visit-notice-show',
2: '/api/mobile/other/traffic-notice-show',
4: '/api/mobile/other/ask-show'
},
info: {},
type: 1
}
},
onLoad(options) {
let that = this;
uni.getSystemInfo({
success: function(res) {
that.height = res.windowHeight - 60;
}
});
this.type = options.type;
that.loadInfo(options.id);
},
methods: {
loadInfo(id) {
var that = this;
this.util.request({
api: this.urls[this.type],
data: {
id: id
},
utilSuccess: function(res) {
res.content = res.content.replace(/\<img/g,
"<img style='width:100%;height:auto;display:block'")
that.info = res;
},
utilFail: function(res) {
uni.showToast({
icon: "none",
title: res,
duration: 2000
})
}
})
}
}
}
</script>
<style>
.box {
padding: 20rpx;
box-sizing: border-box;
}
.bgtop {
height: 40rpx;
}
.bgcenter {
background: url("../../static/img/nav_middle.png") repeat-y;
background-size: 100% 100%;
padding: 15rpx 20rpx;
}
.time {
padding: 20rpx 0;
}
.newbox {
padding: 15rpx 20rpx;
color: #351C1B;
box-sizing: border-box;
}
.title {}
.time {
font-size: 24rpx;
}
.bgbottom {
height: 40rpx;
}
</style> </style>

@ -1,22 +1,111 @@
<template> <template>
<view> <view class="box">
<view class="bgtop">
</view> <image src="../../static/img/nav_top.png" style="width: 100%;height: 100%;"></image>
</template> </view>
<view class="bgcenter" :style="{height:height+'px'}">
<script>
export default { <view class="listnews">
data() { <view class="newbox justify-between" v-for="(item,index) in list" :key="index" @click="toinfo(item.id)">
return { <view class="newboxleft flex-row">
<u-icon name="grid" color="#351C1B" size="24"></u-icon>
} <text class="title" style="margin-left: 10rpx;">{{item.name}}</text>
}, </view>
methods: { <view class="newboxright">
<text class="time">{{item.created_at}}</text>
} </view>
} </view>
</script> </view>
</view>
<style> <view class="bgbottom">
<image src="../../static/img/nav_bottom.png" style="width: 100%;height: 100%;"></image>
</view>
</view>
</template>
<script>
export default {
data() {
return {
height: 0,
urls: {
1: '/api/mobile/other/visit-notice-index',
2: '/api/mobile/other/traffic-notice-index',
4: '/api/mobile/other/ask-index'
},
type: 1,
list: [],
isloading: true
}
},
onLoad(options) {
let that = this;
uni.getSystemInfo({
success: function(res) {
that.height = res.windowHeight - 60;
}
});
this.type = options.type;
that.loadList();
},
methods: {
toinfo(id) {
uni.navigateTo({
url: "info?type=" + this.type + "&id=" + id
})
},
loadList(page) {
var that = this;
this.util.request({
api: this.urls[this.type],
data: {
page: page
},
utilSuccess: function(res) {
that.list = res.data;
this.isloading = false;
},
utilFail: function(res) {
uni.showToast({
icon: "none",
title: res
})
}
})
}
}
}
</script>
<style>
.box {
padding: 20rpx;
box-sizing: border-box;
}
.bgtop {
height: 40rpx;
}
.bgcenter {
background: url("../../static/img/nav_middle.png") repeat-y;
background-size: 100% 100%;
}
.newbox {
padding: 15rpx 20rpx;
color: #351C1B;
box-sizing: border-box;
}
.title {}
.time {
font-size: 24rpx;
}
.bgbottom {
height: 40rpx;
}
</style> </style>

@ -75,7 +75,7 @@
<view class="book-box-timerow"> <view class="book-box-timerow">
<view class="book-box-row-timeitem" v-for="(item,index) in currentDate.rules" <view class="book-box-row-timeitem" v-for="(item,index) in currentDate.rules"
:class="{'book-box-row-timeitem-on':item.checked}" @click="handleSelectTime(index)"> :class="{'book-box-row-timeitem-on':item.checked}" :key="index" @click="handleSelectTime(index)">
<view class="book-box-row-timeitem-status" v-if="item.checked"> <view class="book-box-row-timeitem-status" v-if="item.checked">
<u-icon name="checkmark" color="#fff" size="20rpx"></u-icon> <u-icon name="checkmark" color="#fff" size="20rpx"></u-icon>
</view> </view>

@ -1,7 +1,7 @@
<template> <template>
<view> <view>
<view class="formBox"> <view class="formBox">
<image class="codePic" mode="widthFix" src="../../static/img/code.jpg?v=1"></image> <image class="codePic" mode="widthFix" src="../../static/img/gh_83fed80a6144_258.jpg"></image>
<view class="codeInfo"> <view class="codeInfo">
<view>扫描二维码即可预约体验</view> <view>扫描二维码即可预约体验</view>
<view>您也可以点击右上角分享给好友</view> <view>您也可以点击右上角分享给好友</view>
@ -17,6 +17,9 @@
return { return {
} }
},
onShareAppMessage() {
}, },
methods: { methods: {

@ -4,32 +4,33 @@
<u-tabs lineWidth="50" lineHeight="2" :scrollable="false" :list="list" lineColor="#EF9525" <u-tabs lineWidth="50" lineHeight="2" :scrollable="false" :list="list" lineColor="#EF9525"
:is-scroll="false" :current="current" @change="handleChange"></u-tabs> :is-scroll="false" :current="current" @change="handleChange"></u-tabs>
</view> </view>
<view class="orderBoxList"> <u-empty mode="list" :marginTop="100" v-if="isloading&&listOrder.length==0" />
<view class="orderBoxList" v-else>
<block v-for="(item,index) in listOrder" :key="index"> <block v-for="(item,index) in listOrder" :key="index">
<view class="orderBox"> <view class="orderBox" @click="toinfo(item.id)">
<view class="orderBoxTitle flex-row"> <view class="orderBoxTitle flex-row">
<text class="orderBoxTitleTxt">苏E17CC6</text> <text class="orderBoxTitleTxt">苏E44444</text>
<view class="orderBoxStatus">待参观</view> <view class="orderBoxStatus">待参观</view>
</view> </view>
<view class="orderBoxInfo flex-col"> <view class="orderBoxInfo flex-col">
<view class="orderBoxInfoRow flex-row" style="margin-bottom: 20rpx;"> <view class="orderBoxInfoRow flex-row" style="margin-bottom: 20rpx;">
<text class="iconfont icon-youkexuzhi"></text> <text class="iconfont icon-youkexuzhi"></text>
<text class="orderBoxInfoRowTxt">预约时间5月06日 09:00-10:00</text> <text class="orderBoxInfoRowTxt">预约时间{{item.time}}</text>
</view> </view>
<view class="orderBoxInfoRow flex-row"> <view class="orderBoxInfoRow flex-row">
<text class="iconfont icon-iconfontgerenzhongxin"></text> <text class="iconfont icon-iconfontgerenzhongxin"></text>
<text class="orderBoxInfoRowTxt">联系人王小华 13355634563</text> <text class="orderBoxInfoRowTxt">联系人{{item.mobile}}</text>
</view> </view>
</view> </view>
<view class="orderBoxTime"> <view class="orderBoxTime">
<text>下单时间5月03日 09:30</text> <text>下单时间{{item.created_at}}</text>
</view> </view>
<view class="orderBoxFooter flex-row flex_end"> <view class="orderBoxFooter flex-row flex_end">
<view class="fbtn" @click="tobook()" style="margin-right: 23rpx;">查看详情</view> <view class="fbtn" @click="toinfo(item.id)" style="margin-right: 23rpx;">查看详情</view>
<view class="fbtn cancel">取消</view> <view class="fbtn cancel" @click.stop="tocancel(item.id)">取消</view>
</view> </view>
</view> </view>
</block> </block>
@ -46,31 +47,79 @@
flex: 1 flex: 1
}, },
list: [{ list: [{
name: '全部' name: '全部',
idx: ""
}, { }, {
name: '待停泊' name: '待完成',
idx: "1"
}, { }, {
name: '已停泊' name: '已完成',
idx: "2"
}], }],
current: 0, current: 0,
listOrder: [{ isloading: true,
isteam: true listOrder: []
},
{
isteam: false
}
]
} }
}, },
onShow() {
this.loadOrder();
},
methods: { methods: {
handleChange() { handleChange(e) {
this.current = e.index;
this.loadOrder();
}, },
tobook(){ toinfo(id) {
uni.navigateTo({ uni.navigateTo({
url: "/pages/order/visitorderinfo" url: "/pages/order/parkorderinfo?id=" + id
}) })
},
tocancel(id) {
var that = this;
uni.showModal({
title: '确认要取消预约?',
success: function(res) {
if (res.confirm) {
that.util.request({
api: '/api/mobile/carpark/cancel-order',
data: {
id: id
},
utilSuccess: function(res) {
that.loadOrder()
},
utilFail: function(res) {
uni.showToast({
icon: "none",
title: res
})
}
})
console.log('用户点击确定');
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
loadOrder() {
var that = this;
this.util.request({
api: '/api/mobile/user/my-carpark-order',
data: {
status: this.list[this.current].idx
},
utilSuccess: function(res) {
that.listOrder = res;
this.isloading = false;
},
utilFail: function(res) {
uni.showToast({
icon: "none",
title: res
})
}
})
} }
} }
} }

@ -1,22 +1,260 @@
<template> <template>
<view> <view>
<view class="orderBoxList">
</view> <view class="orderBox">
</template> <view class="orderBoxTitle flex-row">
<text class="orderBoxTitleTxt">预约信息</text>
<script> </view>
export default {
data() { <view class="orderBoxInfo flex-col">
return { <view class="orderBoxInfoRow flex-row" style="margin-bottom: 20rpx;">
<text class="iconfont icon-youkexuzhi"></text>
} <text class="orderBoxInfoRowTxt">预约时间{{info.time||""}}</text>
}, </view>
methods: { <view class="orderBoxInfoRow flex-row" style="margin-bottom: 20rpx;">
<text class="iconfont icon-iconfontgerenzhongxin"></text>
} <text class="orderBoxInfoRowTxt">车牌信息{{info.plate||""}}</text>
} </view>
</script> <view class="orderBoxInfoRow flex-row">
<text class="iconfont icon-iconfontgerenzhongxin"></text>
<style> <text class="orderBoxInfoRowTxt">联系电话{{info.mobile||""}}</text>
</view>
</view>
<view class="orderBoxTime">
<text>下单时间{{info.created_at||""}}</text>
</view>
</view>
</view>
<view class="orderBoxList p0">
<view class="orderBoxTitle flex-row">
<text class="stars orderBoxTitleTxt">*</text>
<text class="orderBoxTitleTxt">停车须知</text>
</view>
<view class="orderBoxTitle flex-row">
<rich-text :nodes="notice.value" class="orderBoxInfoRowTxt"></rich-text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
info: {},
notice: {}
}
},
onLoad(options) {
let that = this;
this.loadConfigInfo();
if (!this.util.isNull(options.id)) {
that.loadInfo(options.id);
}
},
methods: {
loadConfigInfo() {
var that = this;
this.util.request({
api: '/api/mobile/other/config-show',
data: {
tag: "car_park_notice"
},
utilSuccess: function(res) {
that.notice = res;
},
utilFail: function(res) {
uni.showToast({
icon: "none",
title: res,
duration: 2000
})
}
})
},
loadInfo(id) {
var that = this;
this.util.request({
api: '/api/mobile/user/my-carpark-order-show',
data: {
id: id
},
utilSuccess: function(res) {
that.info = res;
},
utilFail: function(res) {
uni.showToast({
icon: "none",
title: res,
duration: 2000
})
}
})
}
}
}
</script>
<style>
.orderBoxFooter {
padding: 20rpx 0 0 0;
}
.fbtn {
background: #EF9525;
border-radius: 8rpx;
font-size: 24rpx;
color: #FFFFFF;
padding: 7rpx 17rpx;
}
.cancel {
background: #F7F6F4;
color: #828282;
}
.iconfont {
color: #6EAC97;
margin-right: 20rpx;
font-size: 24rpx;
}
.infotop {
background: #FFFFFF;
box-shadow: 2rpx 3rpx 10rpx 0px rgba(107, 94, 77, 0.3);
}
page {
background-color: #f7f6f4;
}
.orderBoxList {
padding: 26rpx;
box-sizing: border-box;
}
.orderBox {
min-height: 393rpx;
background: #FFFFFF;
border-radius: 16rpx;
box-sizing: border-box;
padding: 29rpx 18rpx;
position: relative;
margin-bottom: 17rpx;
}
.orderBoxTitle {
padding: 0rpx 0rpx 25rpx 0rpx;
border-bottom: 2rpx solid #F7F6F4;
}
.orderBoxInfoRow {
align-items: center;
}
.orderBoxTitleTxt {
font-size: 32rpx;
color: #351C1B;
}
.orderBoxStatus {
background: #EF9525;
border-top-right-radius: 16rpx;
border-bottom-left-radius: 16rpx;
font-size: 24rpx;
padding: 19rpx 23rpx 17rpx 23rpx;
color: #FFFFFF;
position: absolute;
right: 0;
top: 0;
}
.orderBoxInfo {
padding: 29rpx 0rpx;
border-bottom: 2rpx solid #F7F6F4;
}
.orderBoxInfoRowTxt {
font-size: 24rpx;
font-family: PingFang SC;
color: #828282;
}
.orderBoxTime {
color: #CFCFCF;
padding: 23rpx 0;
border-bottom: 2rpx solid #F7F6F4;
font-size: 24rpx;
}
.p0 {
padding-top: 0
}
.ewmcode {
text-align: center;
font-size: 28rpx
}
.imgs {
width: 273rpx;
height: 273rpx;
margin: 30rpx 0 50rpx 0;
font-size: 0;
display: inline-block;
}
.imgs image {
width: 273rpx;
height: 273rpx;
}
.imgs.isuse {
background: url(../../static/img/used.png);
background-position: bottom right;
background-size: 161rpx;
background-repeat: no-repeat;
}
.imgs.isuse image {
opacity: .4;
}
.ewminfo {
color: #828282;
font-size: 24rpx;
}
.iconinfo {
font-size: 35rpx;
}
.usercard text {
display: block;
}
.share {
background: url(../../static/img/share.png) no-repeat left center;
background-size: 21rpx;
background-color: #EF9525;
background-position: 18rpx;
padding: 7rpx 20rpx;
padding-left: 46rpx;
border-radius: 10px;
color: #fff;
}
.shareuse {
background: url(../../static/img/share_used.png) no-repeat left center;
background-color: #F7F6F4;
color: #828282;
background-position: 18rpx;
background-size: 21rpx;
}
.stars {
color: #EF9525;
margin-right: 12rpx
}
</style> </style>

@ -9,8 +9,7 @@
<view class="orderBoxInfo flex-col"> <view class="orderBoxInfo flex-col">
<view class="orderBoxInfoRow flex-row" style="margin-bottom: 20rpx;"> <view class="orderBoxInfoRow flex-row" style="margin-bottom: 20rpx;">
<text class="iconfont icon-youkexuzhi"></text> <text class="iconfont icon-youkexuzhi"></text>
<text class="orderBoxInfoRowTxt">订单信息{{$u.timeFormat(new Date(info.date), 'mm月dd日')}} <text class="orderBoxInfoRowTxt">订单信息{{$u.timeFormat(new Date(info.date), 'mm月dd日')}}{{info.time||""}}{{info.total}} 位观众</text></text>
{{info.time||""}}{{info.total}} 位观众</text></text>
</view> </view>
<view class="orderBoxInfoRow flex-row"> <view class="orderBoxInfoRow flex-row">
<text class="iconfont icon-iconfontgerenzhongxin"></text> <text class="iconfont icon-iconfontgerenzhongxin"></text>

@ -29,13 +29,21 @@
} else if (options.from == "park") { } else if (options.from == "park") {
this.tips = "车位预约"; this.tips = "车位预约";
url = "/pages/order/parkorderinfo?id=" + options.id url = "/pages/order/parkorderinfo?id=" + options.id
} else if (options.from == "feed") {
this.tips = "首页";
url = ""
} }
setTimeout(function() {
uni.navigateTo({ if (url == "") {
url: url this.goHome();
}) } else {
}, 5000) setTimeout(function() {
uni.navigateTo({
url: url
})
}, 5000)
}
} }
}, },

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

@ -185,7 +185,8 @@ const request = options => {
} }
} }
} else { } else {
if (!isNull(res.data.errcode)) {
if (res.data.hasOwnProperty("errcode")) {
if (options.utilFail != undefined) { if (options.utilFail != undefined) {
options.utilFail(res.data.errmsg || '接口发生未知错误'); options.utilFail(res.data.errmsg || '接口发生未知错误');
} else { } else {

Loading…
Cancel
Save