小鹿骑行

This commit is contained in:
吴鹏 2025-10-25 15:52:11 +08:00
parent d64a1ad057
commit 81c5835879
20 changed files with 2045 additions and 4004 deletions

View File

@ -1,10 +1,11 @@
const install = (Vue, vm) => {
uni.setStorageSync('deptId', 100);
Vue.prototype.$u.http.setConfig({
// baseUrl: 'http://192.168.2.31:4101', //键辉本地
// baseUrl: 'http://192.168.0.102:4101', //景森本地
baseUrl: 'https://ele.ccttiot.com/prod-api', //线上
// baseUrl: 'http://192.168.1.2:4101', //键辉本地
// baseUrl: 'http://192.168.2.221:4101', //景森本地
baseUrl: 'https://ele.ccttiot.com/prod-api', //线上 小鹿appid wx8a05cf95418a6859
// baseUrl: 'https://cc.ccttiot.com/prod-api', //叉车线上
// baseUrl:'https://ysd.chuantewulian.cn/prod-api', //嵛山岛线上api 嵛山岛appidwx4d178f8c80348214
loadingText: '努力加载中~',
loadingTime: 10000,
// 设置自定义头部content-type
@ -14,41 +15,38 @@ const install = (Vue, vm) => {
})
// 请求拦截部分
Vue.prototype.$u.http.interceptor.request = (config) => {
const token = uni.getStorageSync('token');
config.header.Authorization = token;
const token = uni.getStorageSync('token')
config.header.Authorization = token
// config.header.Tenant-Id=1
// #ifdef H5
config.header.Authorization = 'Bearer ' + token;
config.header.Authorization = 'Bearer ' + token
// #endif
// 可以对某个url进行特别处理此url参数为this.$u.get(url)中的url值
if (config.url == '/user/login') config.header.noToken = true;
return config;
if (config.url == '/user/login') config.header.noToken = true
return config
}
// 响应拦截部分
Vue.prototype.$u.http.interceptor.response = (res) => {
return res;
return res
}
// 手动实现超时控制
const originalRequest = Vue.prototype.$u.http.request;
const originalRequest = Vue.prototype.$u.http.request
Vue.prototype.$u.http.request = (options) => {
return new Promise((resolve, reject) => {
const timeout = 20000; // 10秒超时
const timer = setTimeout(() => {
resolve( { code: 500, msg: '请求超时' } );
}, timeout);
resolve( { code: 500, msg: '请求超时',} )
}, timeout)
// 执行原始请求
originalRequest.call(Vue.prototype.$u.http, options).then(response => {
clearTimeout(timer);
resolve(response);
clearTimeout(timer)
resolve(response)
}).catch(error => {
clearTimeout(timer);
reject(error);
});
});
};
clearTimeout(timer)
reject(error)
})
})
}
}
export default {

View File

@ -96,6 +96,12 @@
'查看车辆': 'device:view',
'操作车辆': 'device:edit',
// '':'order:view:amount',
'查看广告': 'ad:view',
'操作广告': 'ad:edit',
'查看套餐': 'suit:view',
'操作套餐': 'suit:edit',
'查看车型': 'model:view',
'操作车型': 'model:edit',
'查看客服': 'customerService:view',
'操作客服': 'customerService:edit',
'查看卡券': 'vip:view',
@ -170,73 +176,113 @@
txt: 10
},
{
name: '查看客服',
name: '查看广告',
tit: '是否允许',
checked: false,
txt: 11
},
{
name: '操作客服',
name: '操作广告',
tit: '是否允许',
checked: false,
txt: 12
},
{
name: '查看卡券',
name: '查看套餐',
tit: '是否允许',
checked: false,
txt: 13
},{
name: '操作卡券',
},
{
name: '操作套餐',
tit: '是否允许',
checked: false,
txt: 14
},{
name: '查看卡券订单',
},
{
name: '查看车型',
tit: '是否允许',
checked: false,
txt: 15
},{
name: '操作卡券订单',
},
{
name: '操作车型',
tit: '是否允许',
checked: false,
txt: 16
},{
name: '查看用户卡券',
},
{
name: '查看客服',
tit: '是否允许',
checked: false,
txt: 17
}, {
name: '操作用户卡券',
},
{
name: '操作客服',
tit: '是否允许',
checked: false,
txt: 18
},
{
name: '查看投诉',
name: '查看卡券',
tit: '是否允许',
checked: false,
txt: 19
},
{
name: '操作投诉',
name: '操作卡券',
tit: '是否允许',
checked: false,
txt: 20
},
{
name: '查看协议',
name: '查看卡券订单',
tit: '是否允许',
checked: false,
txt: 21
},
{
name: '操作协议',
name: '操作卡券订单',
tit: '是否允许',
checked: false,
txt: 22
},
{
name: '查看用户卡券',
tit: '是否允许',
checked: false,
txt: 23
},
{
name: '操作用户卡券',
tit: '是否允许',
checked: false,
txt: 24
},
{
name: '查看投诉',
tit: '是否允许',
checked: false,
txt: 25
},
{
name: '操作投诉',
tit: '是否允许',
checked: false,
txt: 26
},
{
name: '查看协议',
tit: '是否允许',
checked: false,
txt: 27
},
{
name: '操作协议',
tit: '是否允许',
checked: false,
txt: 28
},
],
}
},
@ -281,18 +327,24 @@
'order:edit': 7,
'device:view': 8,
'device:edit': 9,
'customerService:view': 10,
'customerService:edit': 11,
'vip:view': 12,
'vip:edit': 13,
'vipOrder:view': 14,
'vipOrder:edit': 15,
'vipUser:view': 16,
'vipUser:edit': 17,
'complaint:view': 18,
'complaint:edit': 19,
'agreement:view': 20,
'agreement:edit': 21
'ad:view': 10,
'ad:edit': 11,
'suit:view': 12,
'suit:edit': 13,
'model:view': 14,
'model:edit': 15,
'customerService:view': 16,
'customerService:edit': 17,
'vip:view': 18,
'vip:edit': 19,
'vipOrder:view': 20,
'vipOrder:edit': 21,
'vipUser:view': 22,
'vipUser:edit': 23,
'complaint:view': 24,
'complaint:edit': 25,
'agreement:view': 26,
'agreement:edit': 27
}
permissions.forEach(permission => {

View File

@ -158,7 +158,7 @@
当前车辆未配置车型请管理员前往车辆详情页配置
</view>
<view v-if="taocanlist.length != 0" style="margin-top: 24rpx;color: #828282;font-size: 26rpx;">
<view class="" style="color: #828282;display: flex;align-items: center;">
<view class="" style="color: #828282;display: flex;align-items: center;" v-if="taocanlist[fanganindex].ridingRule == 1">
<text style="display: block;margin-top: 10rpx;margin-bottom: 10rpx;font-size: 24rpx;color: #3D3D3D;">超出计费</text><text style="color: #F17F37;">{{taocanlist[fanganindex].startRule.timeoutPrice}}</text>
<text style="margin-left: 10rpx;margin-right: 10rpx;">/</text>
<text style="color: #F17F37">{{taocanlist[fanganindex].startRule.timeoutTime}}</text>
@ -390,18 +390,40 @@
费用说明
</view>
<view style="margin-top: 24rpx;color: #828282;font-size: 26rpx;">
<view class="" style="color: #828282;text-align: center;display: flex;align-items: center;font-size: 32rpx;">
<text style="display: block;">起步计费:</text>
<text style="color: #F17F37;">{{taocanlist[fanganindex].startRule.startingPrice}}</text> <text style="margin-left: 10rpx;margin-right: 10rpx;">/</text>
<text style="color: #F17F37;">{{taocanlist[fanganindex].startRule.startingTime}}</text>
<text v-if="taocanlist[fanganindex].rentalUnit == 'hours'">小时</text><text v-if="taocanlist[fanganindex].rentalUnit == 'minutes'">分钟</text><text v-if="taocanlist[fanganindex].rentalUnit == 'day'"></text>
<view class="" v-if="taocanlist[fanganindex].ridingRule == 1">
<view class="" style="color: #828282;text-align: center;display: flex;align-items: center;font-size: 32rpx;">
<text style="display: block;">起步计费:</text>
<text style="color: #F17F37;">{{taocanlist[fanganindex].startRule.startingPrice}}</text> <text style="margin-left: 10rpx;margin-right: 10rpx;">/</text>
<text style="color: #F17F37;">{{taocanlist[fanganindex].startRule.startingTime}}</text>
<text v-if="taocanlist[fanganindex].rentalUnit == 'hours'">小时</text><text v-if="taocanlist[fanganindex].rentalUnit == 'minutes'">分钟</text><text v-if="taocanlist[fanganindex].rentalUnit == 'day'"></text>
</view>
<view class="" style="color: #828282;display: flex;align-items: center;font-size: 32rpx;">
<text style="display: block;margin-top: 10rpx;margin-bottom: 10rpx;">超出计费:</text><text style="color: #F17F37;">{{taocanlist[fanganindex].startRule.timeoutPrice}}</text>
<text style="margin-left: 10rpx;margin-right: 10rpx;">/</text>
<text style="color: #F17F37">{{taocanlist[fanganindex].startRule.timeoutTime}}</text>
<text v-if="taocanlist[fanganindex].rentalUnit == 'hours'">小时</text><text v-if="taocanlist[fanganindex].rentalUnit == 'minutes'">分钟</text><text v-if="taocanlist[fanganindex].rentalUnit == 'day'"></text>
</view>
</view>
<view class="" style="color: #828282;display: flex;align-items: center;font-size: 32rpx;">
<text style="display: block;margin-top: 10rpx;margin-bottom: 10rpx;">超出计费:</text><text style="color: #F17F37;">{{taocanlist[fanganindex].startRule.timeoutPrice}}</text>
<text style="margin-left: 10rpx;margin-right: 10rpx;">/</text>
<text style="color: #F17F37">{{taocanlist[fanganindex].startRule.timeoutTime}}</text>
<text v-if="taocanlist[fanganindex].rentalUnit == 'hours'">小时</text><text v-if="taocanlist[fanganindex].rentalUnit == 'minutes'">分钟</text><text v-if="taocanlist[fanganindex].rentalUnit == 'day'"></text>
<view v-else class="" style="margin-top: 10rpx;color: #828282;width: 300rpx;border-radius: 10rpx;background-color: #efefef;padding: 8rpx;">
<view class="interval-rules" style="height: 22vh;overflow: scroll;">
<view class="" style="font-size: 32rpx;color: #828282;">
区间计费:
</view>
<view class="rule-item" v-for="(rule, ruleIndex) in taocanlist[fanganindex].intervalRule" :key="ruleIndex">
<text style="color: #3D3D3D;font-size: 24rpx;margin-bottom: 10rpx;">{{rule.start == null ? '0' : rule.start}}-{{rule.end == null ? '不限' : rule.end}}
<text v-if="taocanlist[fanganindex].rentalUnit == 'hours'">小时</text><text v-if="taocanlist[fanganindex].rentalUnit == 'minutes'">分钟</text><text v-if="taocanlist[fanganindex].rentalUnit == 'day'"></text></text>
<text class="price" style="display: block;">
<text style="color: #F17F37;font-size: 36rpx;font-weight: 600;">{{rule.fee}}</text>
<text style="margin-left: 10rpx;margin-right: 10rpx;">/</text>
<text style="color: #F17F37;font-size: 36rpx;font-weight: 600;">{{rule.eachUnit}}</text>
<text v-if="taocanlist[fanganindex].rentalUnit == 'hours'">小时</text>
<text v-if="taocanlist[fanganindex].rentalUnit == 'minutes'">分钟</text>
<text v-if="taocanlist[fanganindex].rentalUnit == 'day'"></text></text>
</view>
</view>
</view>
<view class="" style="font-size: 32rpx;">
免费骑行<text style="color: #F17F37;">{{actiobj.freeRideTime == null ? '0' : actiobj.freeRideTime}}</text>分钟<text v-if="bikeobj.areaParkingReturn == true">需在停车点还车地图可查看停车点</text>
<text style="color: #4C97E7;margin-left: 10rpx;" @click="btntcd" v-if="bikeobj.areaParkingReturn == true">查看停车点</text> <image v-if="bikeobj.areaParkingReturn == true" style="width: 42rpx;height: 42rpx;vertical-align: bottom;" src="https://api.ccttiot.com/smartmeter/img/static/uWlTamz9dz67Oruebghw" mode=""></image>
@ -1664,8 +1686,8 @@
//
btnfa(index, item) {
this.actiobj = item
console.log(this.actiobj);
this.fanganindex = index
console.log(this.actiobj,this.taocanlist[this.fanganindex]);
this.instructions = item.instructions
this.suitId = item.id
this.getjisuan()

View File

@ -29,7 +29,7 @@
<view class="item"><text class="item-label">已退款金额</text><text class="item-value emphasis">¥ {{xqobj.refundAmount == null ? '0' : xqobj.refundAmount}}</text></view>
<view class="item"><text class="item-label">投诉类型</text><text class="item-value">{{xqobj.title == null ? '--' : xqobj.title}}</text></view>
<view class="item"><text class="item-label">投诉编号</text><text class="item-value">{{xqobj.no == null ? '' : xqobj.no}}</text></view>
<view class="item"><text class="item-label">投诉编号</text><text class="item-value">{{xqobj.orderNo == null ? '' : xqobj.orderNo}}</text></view>
<view class="item"><text class="item-label">订单编号</text><text class="item-value" style="color: #4C97E7;" @click="btntz">{{xqobj.orderNo == null ? '' : xqobj.orderNo}}</text></view>
<view class="item"><text class="item-label">投诉时间</text><text class="item-value">{{xqobj.createTime == null ? '--' : xqobj.createTime}}</text></view>
<view class="item"><text class="item-label" style="width: 480rpx;">投诉原因</text><text class="item-value">{{xqobj.content == null ? '暂无投诉原因' : xqobj.content}}</text></view>
<view class="item proof">
@ -152,7 +152,7 @@
</view>
<!-- 退款弹窗 -->
<view v-if="showRefund" class="modal-mask" @touchmove.stop.prevent>
<!-- <view v-if="showRefund" class="modal-mask" @touchmove.stop.prevent>
<view class="modal-panel">
<view class="popup-header">
<text class="popup-title">申请退款</text>
@ -173,7 +173,60 @@
<button class="primary" @tap="submitRefund">确定</button>
</view>
</view>
</view> -->
<view class="zengsong" v-if="showRefund">
<view class="tops">
退款
</view>
<view class="gai">
<view class="">
骑行费:
</view>
<text>{{orderxqobj.actualReceivedRidingFee}}</text>
<input type="text" v-model="qxfei" placeholder="请输入需退款骑行费" />
</view>
<view class="gai">
<view class="">
调度费:
</view>
<text>{{orderxqobj.actualReceivedDispatchFee}}</text>
<input type="text" v-model="ddfei" placeholder="请输入需退款调度费" />
</view>
<view class="gai">
<view class="">
管理费:
</view>
<text>{{orderxqobj.actualReceivedManageFee}}</text>
<input type="text" v-model="glfei" placeholder="请输入需退款管理费" />
</view>
<view class="gai">
<view class="">
车损费:
</view>
<text>{{orderxqobj.actualReceivedDeductionFee}}</text>
<input type="text" v-model="csfei" placeholder="请输入需退款车损费" />
</view>
<view class="gai">
<view class="" style="width: 156rpx;">
退款原因
</view>
<input type="text" style="width:420rpx;" v-model="yuanyin" placeholder="请输入退款原因" />
</view>
<view class="" style="margin-top: 20rpx;">
当前操作总退款为<text style="color: #FF4444;font-size: 600;">{{ totalRefund }}</text>
</view>
<view class="anniu">
<view class="qx" @click="qxqx">
取消
</view>
<view class="qd" @click="btntuikuan">
确定
</view>
</view>
</view>
<view style="background-color: rgba(0, 0, 0, .5);width: 100%;height: 100vh;position: fixed;top: 0;left: 0;" v-if="showRefund"></view>
</view>
</view>
</template>
@ -194,7 +247,14 @@
zsimg:[],
msgList:[],
showRefund: false,
refundAmount: ''
refundAmount: '',
orderxqobj:{},
qxfei: '',
ddfei: '',
glfei: '',
csfei:'',
yuanyin:'',
tkje:true
}
},
onLoad(option) {
@ -202,7 +262,81 @@
this.getxq()
this.getqiniuyun()
},
computed:{
totalRefund() {
return (
Number(this.qxfei) +
Number(this.ddfei) +
Number(this.glfei) +
Number(this.csfei)
).toFixed(2); //
},
},
methods: {
qxqx(){
this.showRefund = false
},
// 退
btntuikuan() {
uni.showLoading({
title: '加载中...',
mask: true
})
if (this.tkje == true) {
this.tkje = false
let refund = {
orderId: this.xqobj.orderId,
ridingRefund:this.qxfei == '' ? 0 : this.qxfei,
dispatchRefund:this.ddfei == '' ? 0 : this.ddfei,
manageRefund:this.glfei == '' ? 0 : this.glfei,
deductionRefund:this.csfei == '' ? 0 : this.csfei,
reason:this.yuanyin
}
let data = {
complaintId: this.id,
refund:refund
}
this.$u.post(`/bst/complaint/refund`, data).then(res => {
if (res.code == 200) {
uni.hideLoading()
uni.showToast({
title: '退款成功',
icon: 'success',
duration: 2000
})
this.qxfei = ''
this.ddfei = ''
this.glfei = ''
this.csfei = ''
this.yuanyin = ''
this.showRefund = false
setTimeout(() => {
this.tkje = true
this.getxq()
}, 2000)
} else {
uni.hideLoading()
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
setTimeout(() => {
this.tkje = true
}, 1000)
}
})
} else {
console.log(11);
}
},
//
btntz(){
uni.navigateTo({
url:'/page_shanghu/guanli/order_detail?orid=' + this.xqobj.orderId
})
},
//
isRight(msg){
return String(msg.type) == '2' || String(msg.type) == '5'
@ -278,6 +412,7 @@
this.$u.get(`/bst/complaint/${this.id}?showMsg=true&showOrder=true`).then((res) => {
if (res.code == 200) {
this.xqobj = res.data || {}
this.getorderxq()
this.zsimg = res.data && res.data.picture ? res.data.picture.split(',').filter(Boolean) : []
let list = (res.data && res.data.msgList) ? res.data.msgList : []
if (!Array.isArray(list) || list.length == 0) {
@ -292,6 +427,13 @@
}
})
},
getorderxq() {
this.$u.get(`/bst/order/${this.xqobj.orderId}?assembleOrderDeviceList=true`).then(res => {
if (res.code == 200) {
this.orderxqobj = res.data
}
})
},
toggleExpand(){
this.expanded = !this.expanded
@ -357,45 +499,126 @@
})
},
// 退
submitRefund(){
if (!this.refundAmount || this.refundAmount <= 0) {
uni.showToast({ title:'请输入有效的退款金额', icon:'none',duration:3000})
return
}
const amount = parseFloat(this.refundAmount)
const maxAmount = this.getMaxRefundAmount()
if (amount > maxAmount) {
uni.showToast({ title:'退款金额不能超过可退款金额', icon:'none',duration:3000})
return
}
let that = this
uni.showModal({
title: '确认退款',
content: `确定要申请退款 ¥${amount} 吗?`,
success: function(res) {
if (res.confirm) {
that.$u.put(`/bst/complaint/refund`, {
complaintId: that.id,
refundAmount: amount
}).then((res) => {
if (res.code == 200) {
uni.showToast({ title:'退款申请成功', icon:'success',duration:3000})
that.getxq()
that.showRefund = false
}else{
uni.showToast({ title:res.msg, icon:'none',duration:3000});
}
})
that.showRefund = false
}
}
})
}
// submitRefund(){
// if (!this.refundAmount || this.refundAmount <= 0) {
// uni.showToast({ title:'退', icon:'none',duration:3000})
// return
// }
// const amount = parseFloat(this.refundAmount)
// const maxAmount = this.getMaxRefundAmount()
// if (amount > maxAmount) {
// uni.showToast({ title:'退退', icon:'none',duration:3000})
// return
// }
// let that = this
// uni.showModal({
// title: '退',
// content: `退 ¥${amount} `,
// success: function(res) {
// if (res.confirm) {
// that.$u.put(`/bst/complaint/refund`, {
// complaintId: that.id,
// refundAmount: amount
// }).then((res) => {
// if (res.code == 200) {
// uni.showToast({ title:'退', icon:'success',duration:3000})
// that.getxq()
// that.showRefund = false
// }else{
// uni.showToast({ title:res.msg, icon:'none',duration:3000});
// }
// })
// that.showRefund = false
// }
// }
// })
// }
}
}
</script>
<style lang="scss">
.zengsong {
position: fixed;
top: 420rpx;
left: 50%;
transform: translateX(-50%);
width: 656rpx;
max-height: 1092rpx;
background: #fff;
border-radius: 20rpx 20rpx 20rpx 20rpx;
z-index: 99;
padding: 0 30rpx;
box-sizing: border-box;
.tops {
font-size: 36rpx;
color: #000;
width: 100%;
text-align: center;
margin-top: 40rpx;
}
.gai {
display: flex;
align-items: center;
// justify-content: space-between;
margin-top: 28rpx;
}
.cen {
font-size: 28rpx;
color: #D8D8D8;
margin-left: 50rpx;
margin-top: 22rpx;
}
text{
margin-right: 50rpx;
}
input {
// margin: auto;
height: 80rpx;
color: #000;
box-sizing: border-box;
width: 420rpx;
border: 1px solid #ccc;
border-radius: 10rpx;
text-align: center;
}
.anniu {
display: flex;
justify-content: space-between;
text-align: center;
margin-top: 50rpx;
border-top: 1px solid #ccc;
.qd {
font-size: 36rpx;
color: #4C97E7;
border-left: 1px solid #ccc;
}
view {
width: 50%;
height: 104rpx;
line-height: 104rpx;
font-size: 36rpx;
color: #808080;
}
}
}
.mask {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100vh;
z-index: 1;
background-color: #000;
opacity: .5;
}
.page{ max-height: 99999rpx;
padding-bottom: 20vh;}
.card{ background:#fff; border-radius:0 0 16rpx 16rpx; padding: 20rpx 24rpx;box-shadow: 0 4rpx 12rpx rgba(0,0,0,0.04); }

View File

@ -94,6 +94,12 @@
'查看车辆': 'device:view',
'操作车辆': 'device:edit',
// '': 'order:view:amount',
'查看广告': 'ad:view',
'操作广告': 'ad:edit',
'查看套餐': 'suit:view',
'操作套餐': 'suit:edit',
'查看车型': 'model:view',
'操作车型': 'model:edit',
'查看客服': 'customerService:view',
'操作客服': 'customerService:edit',
'查看卡券': 'vip:view',
@ -168,79 +174,119 @@
txt: 10
},
{
name: '查看订单金额',
name: '查看广告',
tit: '是否允许',
checked: false,
txt: 11
},
{
name: '查看客服',
name: '操作广告',
tit: '是否允许',
checked: false,
txt: 12
},
{
name: '操作客服',
name: '查看套餐',
tit: '是否允许',
checked: false,
txt: 13
},
{
name: '查看卡券',
name: '操作套餐',
tit: '是否允许',
checked: false,
txt: 14
},{
name: '操作卡券',
},
{
name: '查看车型',
tit: '是否允许',
checked: false,
txt: 15
},{
name: '查看卡券订单',
},
{
name: '操作车型',
tit: '是否允许',
checked: false,
txt: 16
},{
name: '操作卡券订单',
tit: '是否允许',
checked: false,
txt: 17
},{
name: '查看用户卡券',
},
// {
// name: '',
// tit: '',
// checked: false,
// txt: 17
// },
{
name: '查看客服',
tit: '是否允许',
checked: false,
txt: 18
}, {
name: '操作用户卡券',
},
{
name: '操作客服',
tit: '是否允许',
checked: false,
txt: 19
},
{
name: '查看投诉',
name: '查看卡券',
tit: '是否允许',
checked: false,
txt: 20
},
{
name: '操作投诉',
name: '操作卡券',
tit: '是否允许',
checked: false,
txt: 21
},
{
name: '查看协议',
name: '查看卡券订单',
tit: '是否允许',
checked: false,
txt: 22
},
{
name: '操作协议',
name: '操作卡券订单',
tit: '是否允许',
checked: false,
txt: 23
},
{
name: '查看用户卡券',
tit: '是否允许',
checked: false,
txt: 24
},
{
name: '操作用户卡券',
tit: '是否允许',
checked: false,
txt: 25
},
{
name: '查看投诉',
tit: '是否允许',
checked: false,
txt: 26
},
{
name: '操作投诉',
tit: '是否允许',
checked: false,
txt: 27
},
{
name: '查看协议',
tit: '是否允许',
checked: false,
txt: 28
},
{
name: '操作协议',
tit: '是否允许',
checked: false,
txt: 29
},
],
}
},
@ -284,19 +330,25 @@
'order:edit': 7,
'device:view': 8,
'device:edit': 9,
// 'order:view:amount': 10,
'customerService:view': 11,
'customerService:edit': 12,
'vip:view': 13,
'vip:edit': 14,
'vipOrder:view': 15,
'vipOrder:edit': 16,
'vipUser:view': 17,
'vipUser:edit': 18,
'complaint:view': 19,
'complaint:edit': 20,
'agreement:view': 21,
'agreement:edit': 22
'ad:view': 10,
'ad:edit': 11,
'suit:view': 12,
'suit:edit': 13,
'model:view': 14,
'model:edit': 15,
// 'order:view:amount': 16,
'customerService:view': 16,
'customerService:edit': 17,
'vip:view': 18,
'vip:edit': 19,
'vipOrder:view': 20,
'vipOrder:edit': 21,
'vipUser:view': 22,
'vipUser:edit': 23,
'complaint:view': 24,
'complaint:edit': 25,
'agreement:view': 26,
'agreement:edit': 27
}
permissions.forEach(permission => {

View File

@ -221,15 +221,17 @@
车型模版
</view>
<view class="card_right">
<span v-if="!lists.suitIds || !lists.suitIds.length" style="margin-right: 12rpx;color: #999;">未选择</span>
<view class="iconfont icon-xiangyou1 " style="color: #CBCBCB;">
</view>
</view>
</view>
<view class="taocan" v-if="lists.suitIds">
<view v-for="(name, index) in getAccessoryNames()" :key="index"
<view class="taocan" v-if="lists.suitIds && lists.suitIds.length">
<view v-for="id in lists.suitIds" :key="id"
style="width: 100%; display: flex;margin-top: 10rpx;">
<view class="tc_li">
{{ name }}
{{ getAccessoryNameById(id) }}
<text class="del" @click.stop="removeSuitId(id)">×</text>
</view>
</view>
</view>
@ -365,6 +367,16 @@
},
methods: {
getAccessoryNameById(id) {
const item = this.Accessorylist.find(accessory => accessory.id == id)
return item ? item.name : ''
},
removeSuitId(id) {
const index = this.lists.suitIds.indexOf(id)
if (index > -1) {
this.lists.suitIds.splice(index, 1)
}
},
toggleUseLimits(e) {
this.data.depositDeduction = e.detail.value;
},
@ -729,6 +741,15 @@
font-weight: 400;
font-size: 26rpx;
color: #4297F3;
position: relative;
.del {
display: inline-block;
margin-left: 12rpx;
color: #ff4d4f;
font-size: 26rpx;
padding: 0 8rpx;
line-height: 1;
}
}
}
.card_top {
@ -845,10 +866,11 @@
background: #f8f9fa;
border-radius: 8rpx;
border: 1rpx solid #e6e8eb;
width: 120rpx;
width: 80rpx;
text-align: center;
font-size: 28rpx;
color: #333;
margin: 0 10rpx;
}
}

View File

@ -2,7 +2,10 @@
<view class="page">
<u-navbar title="二维码生成" :border-bottom="false" :background="bgc" title-color='#000'
title-size='36' height='45'></u-navbar>
<view class="ewm" style="margin-top: 300rpx;width: 750rpx;display: flex;justify-content: center;">
<view class="" style="width: 100%;text-align: center;margin-top: 50rpx;">
此二维码为运营区二维码,用户扫码可输入车牌开锁
</view>
<view class="ewm" style="margin-top: 200rpx;width: 750rpx;display: flex;justify-content: center;">
<canvas id="qrcode" canvas-id="qrcode" style="width: 600rpx;height:700rpx;" />
</view>
<view class="saveQr" @click="saveQrcode()">

View File

@ -47,7 +47,7 @@
:default-time='pickertime'></u-picker>
<scroll-view class="warp_box" @scrolltolower="handqixing" scroll-y refresher-enabled @refresherrefresh="onRefresh" :refresher-triggered="isRefreshing" refresher-default-style="black">
<view class="swiper-item">
<view class="card" v-for="(item,index) in allList" :key="index" @click="toOrderDetail(item.deviceSn,item.id)">
<view class="card" v-for="(item,index) in allList" :key="index" @click="toOrderDetail(item.deviceSn,item.id,item)">
<view class="line"></view>
<view class="top_info">
<view class="top_info_left">
@ -196,7 +196,8 @@
isback: false,
zhuangtai:'',
total:'',
wateringListone:[]
wateringListone:[],
pageSize:20
}
},
onLoad() {
@ -213,7 +214,7 @@
},
computed: {
userId() {
return this.$store.getters.userId;
return this.$store.getters.userId
},
},
computed: {
@ -240,7 +241,6 @@
this.isRefreshing = false
}, 1000)
},
formatPayedAmount(payedAmount, payRefunded, payRefunding) {
if (!payedAmount) return '0.00元'
const amount = parseFloat(payedAmount) || 0
@ -298,9 +298,9 @@
this.typeidx = e[0].value
this.tit = e[0].label
},
toOrderDetail(id,orid) {
toOrderDetail(id,orid,item) {
uni.navigateTo({
url: '/page_shanghu/guanli/order_detail?id=' + id + '&orid=' + orid
url: '/page_shanghu/guanli/order_detail?id=' + id + '&orid=' + orid + '&ksitem=' + item.startTime + '&endtime=' + item.endTime
})
},
checkAndUpdate(key) {
@ -350,7 +350,7 @@
status: this.zhuangtai,
createDateRange:this.firsTime == '' ? '' : this.lasTime == '' ? '' : this.firsTime + ',' + this.lasTime,
areaId: this.areaId,
pageSize: 20,
pageSize: ths.pageSize,
pageNum: this.pageNum,
isAsc:'desc',
orderByColumn:'createTime'
@ -362,7 +362,7 @@
status:this.zhuangtai,
createDateRange:this.firsTime == '' ? '' : this.lasTime == '' ? '' : this.firsTime + ',' + this.lasTime,
areaId: this.areaId,
pageSize: 20,
pageSize: this.pageSize,
pageNum: this.pageNum,
isAsc:'desc',
orderByColumn:'createTime'
@ -508,39 +508,31 @@
font-weight: 500;
font-size: 32rpx;
}
}
}
.warp_box {
height: 61vh;
overflow: scroll;
background: #f5f5f5;
.swiper-item {
padding: 16rpx;
.card {
margin: 0 auto 16rpx;
width: 100%;
background: #fff;
border-radius: 12rpx;
// box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.06);
overflow: hidden;
border-radius: 24rpx;
transition: all 0.3s ease;
&:active {
transform: scale(0.98);
}
.btn_box {
display: flex;
flex-wrap: nowrap;
align-items: center;
width: 100%;
height: 96rpx;
.btn {
display: flex;
align-items: center;
@ -550,7 +542,6 @@
color: #333;
width: 49%;
}
.btn_line {
width: 0rpx;
height: 51rpx;
@ -562,7 +553,6 @@
display: flex;
flex-direction: column;
margin-top: 10rpx;
.info_li {
display: flex;
justify-content: space-between;
@ -572,47 +562,39 @@
font-size: 28rpx;
color: #808080;
margin-bottom: 12rpx;
.half_info_li {
// flex: 1;
display: flex;
align-items: center;
font-weight: 400;
font-size: 28rpx;
color: #808080;
span {
color: #000;
font-weight: 500;
margin-left: 8rpx;
}
}
.half_info_li:last-child {
text-align: right;
justify-content: flex-end;
}
}
}
.line {
width: 100%;
height: 12rpx;
background: #F6F6F6;
}
.lines {
width: 100%;
height: 1rpx;
background: #f7f7f7;
}
.top_info {
padding: 24rpx 32rpx;
display: flex;
flex-wrap: nowrap;
align-items: center;
.top_info_left {
width: 70%;
font-weight: 400;
@ -623,7 +605,6 @@
overflow: hidden;
text-overflow: ellipsis;
}
.top_info_right {
display: flex;
flex-wrap: nowrap;
@ -633,44 +614,37 @@
border-radius: 16rpx;
font-weight: 500;
font-size: 24rpx;
.yuan {
margin-right: 8rpx;
border-radius: 50%;
width: 12rpx;
height: 12rpx;
}
&.status-processing {
background: rgba(76, 151, 231, 0.1);
color: #4C97E7;
.yuan { background: #4C97E7; }
}
&.status-wait-pay {
background: rgba(255, 69, 0, 0.1);
color: #ff4500;
.yuan { background: #ff4500; }
}
&.status-finished {
background: rgba(34, 139, 34, 0.1);
color: #228b22;
.yuan { background: #228b22; }
}
&.status-canceled {
background: rgba(128, 128, 128, 0.1);
color: #808080;
.yuan { background: #808080; }
}
&.status-ride-wait-pay {
background: rgba(255, 165, 0, 0.1);
color: #ffa500;
.yuan { background: #ffa500; }
}
&.status-wait-verify {
background: rgba(128, 128, 128, 0.1);
color: #808080;
@ -680,7 +654,6 @@
}
}
}
.no-more-orders {
width: 100%;
text-align: center;
@ -690,7 +663,6 @@
padding: 20rpx;
}
}
.tap {
margin-top: 24rpx;
width: 750rpx;
@ -698,7 +670,6 @@
flex-wrap: nowrap;
align-items: center;
justify-content: space-around;
.tap_cont {
text-align: center;
padding-bottom: 15rpx;
@ -708,28 +679,22 @@
color: #3D3D3D;
border-bottom: 6rpx solid #fff;
}
.act1 {
border-bottom: 6rpx solid #4C97E7;
color: #4C97E7;
}
}
.top_box {
display: flex;
flex-wrap: nowrap;
align-items: center;
padding: 28rpx 30rpx;
// padding: 20rpx 0;
margin: 0 auto;
width: 672rpx;
height: 100rpx;
background: #FFFFFF;
box-shadow: 0rpx 4rpx 22rpx 0rpx rgba(0, 0, 0, 0.07);
border-radius: 10rpx 10rpx 10rpx 10rpx;
.left_text {
display: flex;
flex-wrap: nowrap;
@ -738,19 +703,16 @@
font-weight: 400;
font-size: 32rpx;
color: #3D3D3D;
.icon-xiangxia1 {
font-size: 26rpx;
}
}
.timebox {
width: 75%;
display: flex;
flex-wrap: nowrap;
align-items: center;
margin-left: 34rpx;
.left_time {
text-align: center;
margin-right: 6rpx;
@ -762,7 +724,6 @@
font-size: 32rpx;
color: #979797;
}
.right_time {
text-align: center;
margin-left: 6rpx;
@ -776,7 +737,5 @@
}
}
}
}
</style>

View File

@ -519,8 +519,7 @@
</view>
</view>
</view>
<view style="background-color: rgba(0, 0, 0, .5);width: 100%;height: 100vh;position: fixed;top: 0;left: 0;"
v-if="tkflag"></view>
<view style="background-color: rgba(0, 0, 0, .5);width: 100%;height: 100vh;position: fixed;top: 0;left: 0;" v-if="tkflag"></view>
@ -710,13 +709,19 @@
ddflag: false,
fuzhuobj: {},
price:0,
youhuiobj:{}
youhuiobj:{},
kstime:'',
endtime:''
}
},
onLoad(e) {
this.sn = e.id
if(e.id){
this.sn = e.id
}
this.kstime = e.ksitem
this.endtime = e.endTime == null ? this.formatCurrentTime() : e.endTime
console.log(e);
this.orid = e.orid
this.deviceInfo()
this.getorderxq()
this.deptId = uni.getStorageSync('deptId')
this.getyouhui()
@ -792,6 +797,16 @@
}
},
methods: {
formatCurrentTimes() {
const date = new Date();
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0'); // 00
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
},
getyouhui(){
let data = {
orderId:this.orid,
@ -980,7 +995,7 @@
const formattedStartTime = this.orderxqobj.startTime;
const formattedEndTime = this.orderxqobj.endTime || this.formatCurrentTime();
// this.$u.get('/bst/locationLog/listByTime?sn=' + this.sn + '&startTime=' + formattedStartTime + '&endTime=' + formattedEndTime).then((res) => {
this.$u.get('/bst/locationLog/listAll?orderId=' + this.orid).then((res) => {
this.$u.get('/bst/locationLog/listAll?orderId=' + this.orid + '&timeRange=' + this.kstime + ',' + this.endtime).then((res) => {
if (res.code === 200) {
if (!res.data || res.data.length === 0) {
uni.showToast({
@ -1255,6 +1270,8 @@
getorderxq() {
this.$u.get(`/bst/order/${this.orid}?assembleOrderDeviceList=true`).then(res => {
if (res.code == 200) {
this.sn = res.data.deviceSn
this.deviceInfo()
this.orderxqobj = res.data
this.updateTrackData()
this.suitSeconds = res.data.suitSeconds == null ? '--' : Math.ceil(res.data.suitSeconds / 3600)

View File

@ -66,13 +66,16 @@
fajinobj:{},
orderAreaId:'',
flag:'',
mac:''
mac:'',
scdevlist:[]
}
},
onLoad(e) {
this.orderId = e.orderid
this.orderAreaId = e.orderAreaId
this.flag = e.flag
this.scdevlist = e.macList.split(',')
console.log(e)
if(e.mac){
this.mac = e.mac
}
@ -80,7 +83,6 @@
},
onShow() {
this.getQiniuToken()
// this.getuserInfo()
},
methods: {
//
@ -130,9 +132,7 @@
if(res.data.manageFee > 0 || res.data.dispatchFee > 0){
uni.hideLoading()
this.fjflag = true
// this.gethc()
}else{
// this.fjflag = true
this.gethc()
}
}else{
@ -156,7 +156,8 @@
picture:this.videoUrl,
lon:this.lon,
lat:this.lat,
requiredIot: this.flag
requiredIot: this.flag,
macList:this.scdevlist
}
this.$u.put(`/app/order/end`,data).then(res =>{
if (res.code == 200) {
@ -197,7 +198,8 @@
picture:this.videoUrl,
lon:this.lon,
lat:this.lat,
requiredIot: this.flag
requiredIot: this.flag,
macList:this.scdevlist
}
this.$u.put(`/app/order/end`,data).then(res =>{
if (res.code == 200) {
@ -245,26 +247,20 @@
},
getisInOrder() {
// uni.showLoading({
// })
this.orderinfo = {}
if (this.userId) {
this.$u.post('/app/user/isInOrder?userId=' + this.userId, ).then((res) => {
// uni.hideLoading()
if (res.code === 200) {
// this.freList=res.rows
this.orderinfo=res.data[0]
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
})
}
})
}
},
getuserInfo() {
this.$u.get("/getAppInfo").then((res) => {
@ -275,27 +271,16 @@
this.getisInOrder()
} else {
}
})
},
getQiniuToken() {
console.log('diaou');
this.$u.get("/common/qiniuToken").then((res) => {
if (res.code == 200) {
this.token=res.data
// console.log(res,'resres');
// this.upurl=res.domain
}
});
// this.$u.get('https://v2.ielts.langsi.online/file/getToken').then(res => {
// console.log(res.data);
// this.token = res.data.token
// }).catch(err => {
// console.log(err)
// })
console.log('diaou')
this.$u.get("/common/qiniuToken").then((res) => {
if (res.code == 200) {
this.token = res.data
}
})
},
recordVideo() {
// API
@ -305,14 +290,14 @@
maxDuration: 15, //
success: (res) => {
//
this.videoPath = res.tempFilePath;
console.log(res.tempFilePath);
this.videoPath = res.tempFilePath
console.log(res.tempFilePath)
this.upload()
},
fail: (err) => {
console.log('录像失败:', err);
console.log('录像失败:', err)
}
});
})
},
upload(){
uni.showLoading({
@ -335,9 +320,8 @@
console.log(str.key)
_this.videoUrl = 'https://api.ccttiot.com/' + str.key
console.log(_this.userImgs)
// _this.imglist.push(_this.userImgs)
}
});
})
}
}
}
@ -424,7 +408,6 @@
.page {
width: 750rpx;
border-radius: 0rpx 0rpx 0rpx 0rpx;
.tip_box {
padding: 44rpx 36rpx;
font-weight: 400;
@ -437,10 +420,8 @@
height: 370rpx;
margin-top: 30rpx;
.backimg{
width: 672rpx;
height: 370rpx;
}
.tip_img{
position: absolute;
@ -464,14 +445,10 @@
height: 370rpx;
background: rgba(255, 255, 255, 0.2);
border-radius: 40rpx;
// box-shadow: 0 rgba(0, 0, 0, 0.1);
backdrop-filter: blur(10rpx);
-webkit-backdrop-filter: blur(10rpx); /* For Safari */
// border: 1rpx solid rgba(255, 255, 255, 0.3);
z-index: 10;
}
}
.cont {
width: 100%;
@ -482,21 +459,17 @@
font-size: 28rpx;
color: #3D3D3D;
}
.vadio_png {
margin-top: 52rpx;
image {
width: 672rpx;
height: 370rpx;
}
}
.btn {
position: fixed;
bottom: 100rpx;
left: 38rpx;
// margin-top: 128rpx;
display: flex;
align-items: center;
justify-content: center;

View File

@ -87,14 +87,6 @@
<image src="https://lxnapi.ccttiot.com/bike/img/static/uByIrgaV23PDGZWReKHW" mode=""></image>
请对车辆部位拍摄视频
</view>
<!-- <view class="icon">
<view class="imgbox" v-for="(item, index) in imglist " :key="index">
<image :src="item" mode=""></image>
</view>
<view class="imgbox" @click="btn">
<image src="https://api.ccttiot.com/smartmeter/img/static/uY8CPw9YE6JxPzcHUaqf" mode=""></image>
</view>
</view> -->
<view class="vadio_png1">
<image @click="recordVideo" class="backimg" src="https://api.ccttiot.com/smartmeter/img/static/uTwV4aH6HbxqmM1ssvTs" mode="" v-if="videoUrl==''"></image>
<video class="vad" :src="videoUrl" controls="controls" style="width: 100%;" v-if="videoUrl!=''"></video>
@ -103,7 +95,6 @@
保持车辆录像的完整清晰,不要随意拍摄确保视频中车辆出境并且出现车牌号
</view>
</view>
<view class="btns" @click="subs()">
提交
</view>
@ -119,10 +110,7 @@ export default {
backgroundColor: "#fff",
},
textValue: '',
currentCount: 0,
imglist: [],
token: '',
upurl: '',
checkIdx: 1,
videoUrl: '',
ordersn:'',
@ -135,7 +123,8 @@ export default {
longitude:'',
videoPath:'',
deviceid:'',
devicename:''
devicename:'',
scdevlist:[]
}
},
onLoad(e) {
@ -147,6 +136,7 @@ export default {
this.getfeiyong()
this.deviceid = e.deviceid
this.devicename = e.devicename
this.scdevlist = e.macList.split(',')
},
onShow() {
uni.getLocation({
@ -169,6 +159,7 @@ export default {
},
methods: {
//
recordVideo() {
// API
uni.chooseVideo({
@ -184,14 +175,14 @@ export default {
fail: (err) => {
console.log('录像失败:', err);
}
});
})
},
upload(){
uni.showLoading({
title:'上传中'
})
let _this=this
let math='static/'+_this.$u.guid(20)
let _this = this
let math = 'static/'+_this.$u.guid(20)
wx.uploadFile({
url: 'https://up-z2.qiniup.com',
name: 'file',
@ -207,7 +198,7 @@ export default {
console.log(str.key)
_this.videoUrl = 'https://api.ccttiot.com/' + str.key
}
});
})
},
//
subs(){
@ -228,7 +219,8 @@ export default {
faultDetail:this.textValue,
faultPicture:this.videoUrl,
lat:this.latitude,
lon:this.longitude
lon:this.longitude,
macList:this.scdevlist
}
this.$u.put(`/app/order/changeDevice`,data).then(res =>{
if(res.code == 200){
@ -267,7 +259,7 @@ export default {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 1000
duration: 3000
})
}
})
@ -278,13 +270,14 @@ export default {
if(res.code == 200){
if(res.data){
this.orderobj = res.data
if(res.data.startTime){
if(res.data.startTime){ //
this.timeRemaining = this.calculateTimeRemaining()
}
}
}
})
},
//
calculateTimeRemaining() {
const targetDate = new Date(this.orderobj.startTime)
const now = new Date()
@ -305,6 +298,7 @@ export default {
}
})
},
// token
getQiniuToken() {
this.$u.get("/common/qiniuToken").then((res) => {
if (res.code == 200) {
@ -312,32 +306,7 @@ export default {
}
})
},
btn() {
let _this = this
let math = 'static/' + _this.$u.guid(20)
uni.chooseImage({
count: 9,
type: 'all',
success(res) {
const tempFilePaths = res.tempFiles
wx.uploadFile({
url: 'https://up-z2.qiniup.com',
name: 'file',
filePath: tempFilePaths[0].path,
formData: {
token: _this.token, //token
key: 'smartmeter/img/' + math
},
success: function (res) {
let str = JSON.parse(res.data)
_this.userImgs = 'https://api.ccttiot.com/' + str.key
_this.imglist.push(_this.userImgs)
}
})
}
})
},
//
qrcode() {
uni.scanCode({
onlyFromCamera: true,
@ -357,7 +326,8 @@ export default {
console.error('扫描失败:', err)
uni.showToast({
title: '扫描失败',
icon: 'none'
icon: 'none',
duration:3000
})
}
})
@ -372,10 +342,7 @@ page {
.page {
padding-bottom: 100rpx;
// width: 750rpx;
width: 750rpx;
// height: 530rpx;
// background: linear-gradient( 180deg, #4297F3 0%, rgba(255,255,255,0) 100%), #FFFFFF;
border-radius: 0rpx 0rpx 0rpx 0rpx;
padding-bottom: 200rpx;
@ -522,10 +489,8 @@ page {
.tipsimg {
margin-top: 60rpx;
display: flex;
// align-items: center;
justify-content: center;
width: 100%;
image {
width: 554rpx;
height: 262rpx;
@ -533,27 +498,23 @@ page {
}
}
}
.maskpage1 {
.top_info {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
image {
margin-right: 16rpx;
width: 50rpx;
height: 50rpx;
}
.masktxt {
font-weight: 500;
font-size: 44rpx;
color: #3D3D3D;
}
}
.masktips {
margin-top: 20rpx;
width: 100%;
@ -562,21 +523,17 @@ page {
font-size: 32rpx;
color: #3D3D3D;
}
.tipsimg {
margin-top: 60rpx;
display: flex;
// align-items: center;
justify-content: center;
width: 100%;
image {
width: 554rpx;
height: 262rpx;
}
}
.btn_box {
width: 750rpx;
padding: 0 36rpx;
@ -586,9 +543,7 @@ page {
display: flex;
justify-content: space-between;
align-items: center;
.btn3 {
// margin-right: 16rpx;
display: flex;
align-items: center;
justify-content: center;
@ -596,12 +551,10 @@ page {
height: 90rpx;
background: #4C97E7;
border-radius: 45rpx 45rpx 45rpx 45rpx;
font-weight: 500;
font-size: 40rpx;
color: #FFFFFF;
}
.btn4 {
display: flex;
align-items: center;
@ -610,17 +563,13 @@ page {
height: 90rpx;
border-radius: 45rpx 45rpx 45rpx 45rpx;
border: 2rpx solid #808080;
font-weight: 500;
font-size: 40rpx;
color: #808080;
}
}
}
}
.btns {
position: fixed;
bottom: 70rpx;
@ -637,7 +586,6 @@ page {
border-radius: 54rpx 54rpx 54rpx 54rpx;
z-index: 100;
}
.iptbox {
display: flex;
align-items: center;
@ -649,34 +597,27 @@ page {
background: #FFFFFF;
box-shadow: 0rpx 0rpx 8rpx 0rpx rgba(0, 0, 0, 0.15);
border-radius: 20rpx 20rpx 20rpx 20rpx;
.qrcode {
padding-right: 20rpx;
border-right: 2rpx solid #D8D8D8;
image {
width: 54rpx;
height: 54rpx;
}
}
.ips {
width: 630rpx;
}
image {
width: 18rpx;
height: 32rpx;
}
.my-placeholder {
font-weight: 400;
font-size: 32rpx;
color: #808080;
}
}
.conts_box {
width: 680rpx;
margin: 0 auto;
@ -689,7 +630,6 @@ page {
box-shadow: 0rpx 10rpx 64rpx 0rpx rgba(0, 0, 0, 0.08);
border-radius: 20rpx 20rpx 20rpx 20rpx;
padding-bottom: 20rpx;
.txtss {
margin-top: 18rpx;
padding-left: 20rpx;
@ -698,14 +638,12 @@ page {
font-size: 28rpx;
color: #808080;
}
.cont_li {
width: 100%;
display: flex;
flex-wrap: nowrap;
align-items: center;
justify-content: space-between;
.left {
padding-left: 20rpx;
display: flex;
@ -713,28 +651,23 @@ page {
font-weight: 600;
font-size: 36rpx;
color: #3D3D3D;
.km {
font-weight: 400;
font-size: 28rpx;
color: #3D3D3D;
}
.speed {
margin-top: 18rpx;
width: 226rpx;
height: 22rpx;
background: #ccc;
border-radius: 16rpx 16rpx 16rpx 16rpx;
.speeds {
// width: 90%;
height: 100%;
background: #4297F3;
border-radius: 16rpx 16rpx 16rpx 16rpx;
}
}
.NO {
width: 100%;
font-weight: 400;
@ -743,22 +676,18 @@ page {
margin-top: 18rpx;
}
}
.right {
padding-right: 20rpx;
font-weight: 600;
font-size: 36rpx;
color: #3D3D3D;
image {
width: 244rpx;
height: 196rpx;
}
}
}
}
.tits {
width: 680rpx;
margin: 0 auto;
@ -774,9 +703,7 @@ page {
height: 24rpx;
}
}
.cont_box {
margin: 0 auto;
padding: 24rpx 32rpx;
width: 680rpx;
@ -790,7 +717,6 @@ page {
height: 340rpx;
margin-top: 30rpx;
.backimg{
width: 100%;
height: 340rpx;
@ -817,42 +743,32 @@ page {
height: 340rpx;
background: rgba(255, 255, 255, 0.2);
border-radius: 40rpx;
// box-shadow: 0 rgba(0, 0, 0, 0.1);
backdrop-filter: blur(10rpx);
-webkit-backdrop-filter: blur(10rpx); /* For Safari */
// border: 1rpx solid rgba(255, 255, 255, 0.3);
z-index: 10;
}
}
.tit {
width: 100%;
display: flex;
flex-wrap: nowrap;
align-items: center;
image {
margin-right: 12rpx;
width: 24rpx;
height: 24rpx;
}
}
.choose_li {
margin-top: 34rpx;
width: 100%;
display: flex;
flex-wrap: nowrap;
align-items: center;
// justify-content: space-between;
.li_cont {
width: 50%;
display: flex;
flex-wrap: nowrap;
.img_box {
margin-right: 30rpx;
width: 38rpx;
@ -862,25 +778,20 @@ page {
}
}
}
.tip {
display: flex;
flex-wrap: nowrap;
// align-items: center;
font-weight: 700;
font-size: 32rpx;
color: #3D3D3D;
line-height: 44rpx;
.ipnt {
margin-top: 10rpx;
margin-right: 12rpx;
color: #FF4444;
font-size: 48rpx;
}
}
.iptbox {
display: flex;
align-items: center;
@ -889,12 +800,10 @@ page {
height: 80rpx;
border-radius: 20rpx 20rpx 20rpx 20rpx;
border: 2rpx solid #979797;
.ips {
margin-left: 30rpx;
width: 80%;
}
.iptbtn {
display: flex;
align-items: center;
@ -903,42 +812,34 @@ page {
height: 80rpx;
background: #4297F3;
border-radius: 20rpx 20rpx 20rpx 20rpx;
image {
width: 37rpx;
height: 37rpx;
}
}
}
.txt {
margin-top: 18rpx;
font-weight: 400;
font-size: 28rpx;
color: #3D3D3D;
}
.icon {
display: flex;
flex-wrap: wrap;
align-items: center;
margin-top: 40rpx;
.imgbox {
width: 33%;
image {
width: 142rpx;
height: 142rpx;
}
}
}
.checkbox {
display: flex;
flex-wrap: wrap;
.check_li {
position: relative;
margin-right: 10rpx;
@ -950,7 +851,6 @@ page {
height: 65rpx;
border-radius: 20rpx 20rpx 20rpx 20rpx;
border: 2rpx solid #C7C7C7;
image {
position: absolute;
right: 0;
@ -959,21 +859,15 @@ page {
height: 20rpx;
}
}
.check_li:nth-child(4n) {
margin-right: 0;
}
.act1 {
// background-image: url(https://api.ccttiot.com/smartmeter/img/static/uaqN5qdoGNCs7Dumzr3F);
width: 142rpx;
height: 65rpx;
// background-size: cover;
border: 2rpx solid #1E807A;
// background: #4C97E7;
}
}
.input-container {
position: relative;
width: 612rpx;
@ -987,17 +881,13 @@ page {
box-sizing: border-box;
border: 2rpx solid #C7C7C7;
}
.placeholder {
position: absolute;
top: 18rpx;
left: 38rpx;
color: #999;
/* placeholder颜色 */
pointer-events: none;
/* 确保点击事件可以穿透到textarea上 */
}
.custom-textarea {
width: 100%;
height: 100%;
@ -1008,7 +898,6 @@ page {
box-sizing: border-box;
border: 1px solid #ccc;
}
.word-count {
position: absolute;
right: 10px;
@ -1017,6 +906,5 @@ page {
color: #999;
}
}
}
</style>

View File

@ -16,7 +16,7 @@
车牌号<span>{{item.deviceVehicleNum == null ? '--' : item.deviceVehicleNum}}</span>
</view>
<view class="time">
还车时间<span>{{item.createTime}}</span>
还车时间<span>{{item.endTime}}</span>
</view>
</view>
<view class="txt"></view>

View File

@ -24,7 +24,7 @@
<text v-if="info.status == 'RIDE_WAIT_PAY'">订单待支付</text>
</view>
<view class="" @click="btntx" style="margin-top: 10rpx;color: #4C97E7;display: flex;align-items: center;width: 100%;justify-content: center;">
订单投诉 <u-icon name="arrow-right" color="#4C97E7" size="28"></u-icon>
订单疑问 <u-icon name="arrow-right" color="#4C97E7" size="28"></u-icon>
</view>
</view>
<view class="ordermx">
@ -58,7 +58,7 @@
</view>
</view>
<view class="xuxian">
<view class="one">
<view class="one" v-if="info.ridingFee != null && info.ridingFee != 0">
<view class="qian">
骑行费
</view>
@ -66,7 +66,7 @@
{{info.ridingFee == null ? '0.00' : info.ridingFee.toFixed(2)}}
</view>
</view>
<view class="one">
<view class="one" v-if="info.manageFee != null && info.manageFee != 0">
<view class="qian">
停车点外调度费
</view>
@ -74,7 +74,7 @@
{{info.manageFee == null ? '0.00' : info.manageFee.toFixed(2)}}
</view>
</view>
<view class="one">
<view class="one" v-if="info.dispatchFee != null && info.dispatchFee != 0">
<view class="qian">
运营区外调度费
</view>
@ -82,7 +82,7 @@
{{info.dispatchFee == null ? '0.00' : info.dispatchFee.toFixed(2)}}
</view>
</view>
<view class="one">
<view class="one" v-if="info.totalFee != null && info.totalFee != 0">
<view class="qian">
合计
</view>
@ -92,7 +92,7 @@
</view>
</view>
<view class="xuxian">
<view class="one">
<view class="one" v-if="info.depositFee != null && info.depositFee != 0">
<view class="qian">
预存金额
</view>
@ -100,7 +100,7 @@
{{info.depositFee == null ? '0.00' : info.depositFee.toFixed(2)}}
</view>
</view>
<view class="one">
<view class="one" v-if="info.ridePayAmount != null && info.ridePayAmount != 0">
<view class="qian">
结算支付
</view>
@ -108,7 +108,7 @@
{{info.ridePayAmount == null ? '0.00' : info.ridePayAmount.toFixed(2)}}
</view>
</view>
<view class="one">
<view class="one" v-if="info.payRefunded != null && info.payRefunded != 0">
<view class="qian">
退款总额
</view>
@ -117,7 +117,7 @@
</view>
</view>
</view>
<view class="xuxian">
<view class="xuxian" v-if="info.totalDiscountAmount != null && info.totalDiscountAmount != 0">
<view class="one">
<view class="qian">
优惠券
@ -358,7 +358,7 @@
let data = {
areaId: this.info.areaId
};
this.$u.get('/bst/areaSub/listByAreaId', data).then((res) => {
this.$u.get(`/app/areaSub/listByArea?areaId=${this.info.areaId}`).then((res) => {
if (res.code === 200) {
const filteredData = res.data.filter(item => item.status != 1);
const type1Data = [];
@ -438,7 +438,7 @@
console.error("Area ID is missing");
return;
}
this.$u.get(`/bst/area/${id}`).then((res) => {
this.$u.get(`/app/area/detail?id=${id}`).then((res) => {
if(res.code == 200){
this.latitude = res.data.latitude
this.longitude = res.data.longitude
@ -595,13 +595,9 @@
},
//
getyugu() {
let data = {
orderId:this.id,
checkLocation:false
}
this.$u.post(`/app/order/calcFee`,data).then((res) => {
this.$u.get(`/app/order/calcPreRideFee?orderId=${this.id}`).then((res) => {
if (res.code == 200) {
this.yugumoney = res.data.ridingFee
this.yugumoney = res.data.rideFee
}
})
},
@ -869,7 +865,7 @@
.map {
position: relative;
width: 750rpx;
height: 752rpx;
height: 500rpx;
.track {
position: absolute;
display: flex;

View File

@ -47,13 +47,6 @@
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
},{
"path": "pages/myorder/returned/index",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
},{
"path": "pages/myorder/returned/tingche",
"style": {
@ -671,13 +664,7 @@
"iconPath": "/static/tabbar/map.png",
"pagePath": "pages/index/index",
"text": "预约"
},
{
"selectedIconPath": "/static/tabbar/map.png",
"iconPath": "/static/tabbar/map.png",
"pagePath": "pages/myorder/returned/index",
"text": "订单"
}, {
},{
"selectedIconPath": "/static/tabbar/map.png",
"iconPath": "/static/tabbar/map.png",
"pagePath": "pages/nearbystores/index",

View File

@ -19,12 +19,6 @@
同意
</view>
</view>
<!-- <view class="bottom" v-if="!showbot">
<view class="btn" @click="back()" style="width: 80%;">
返回
</view>
</view> -->
</view>
</template>
@ -76,10 +70,9 @@
},
methods: {
back(){
uni.navigateBack({
delta: 1 // delta1
});
})
},
ok() {
if(this.isread==false){
@ -93,7 +86,7 @@
title: '请勾选同意',
icon: 'none',
duration: 1000
});
})
} else if(this.isread&&this.showxy){
uni.setStorageSync('xieyi',true)
if(this.type == 1){
@ -106,9 +99,9 @@
})
}
}
},
quit() {
// 退
uni.exitMiniProgram({
success: function() {
console.log('退出小程序成功');
@ -122,20 +115,19 @@
getagree() {
this.$u.get(`/app/article/detail?id=${this.startArticleId}`).then((res) => {
if (res.code === 200) {
this.info = res.data;
this.insertPhoneNumberAndDate();
this.info = res.data
this.insertPhoneNumberAndDate()
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
})
}
});
})
},
insertPhoneNumberAndDate() {
// &nbsp; \u00A0
this.info.content = this.info.content.replace(/&nbsp;/g, '\u00A0');
}
@ -148,7 +140,6 @@
page {
background-color: #fff;
}
.page {
width: 750rpx;
padding-bottom: 250rpx;
@ -159,7 +150,6 @@
flex-wrap: nowrap;
align-items: center;
justify-content: center;
.yuans {
margin-top: 2rpx;
display: flex;
@ -169,26 +159,21 @@
height: 27rpx;
border-radius: 50%;
border: #808080 solid 2rpx;
image {
width: 100%;
height: 100%;
border-radius: 50%;
}
}
.txt {
margin-left: 10rpx;
font-weight: 400;
font-size: 24rpx;
color: #979797;
span {
color: #3D3D3D;
}
}
}
.bottom {
position: fixed;
@ -200,7 +185,6 @@
flex-wrap: nowrap;
align-items: center;
justify-content: space-around;
// box-shadow: 12rpx 16rpx 40rpx 0rpx rgba(42,130,228,0.1);
.act1{
background: #64B6A7 !important;
}
@ -211,7 +195,6 @@
flex-wrap: nowrap;
align-items: center;
justify-content: center;
// border: 2rpx solid #000;
border-radius: 40rpx;
background: #ccc;
color: #fff;
@ -225,21 +208,17 @@
flex-wrap: nowrap;
align-items: center;
justify-content: center;
// border: 2rpx solid #000;
border-radius: 40rpx;
background: #ccc;
color: #fff;
font-size: 28rpx;
font-weight: 600;
}
}
.cont {
margin-top: 34rpx;
margin: 0 auto;
width: 634rpx;
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -85,12 +85,6 @@
<image src="https://api.ccttiot.com/smartmeter/img/static/ugxCHoezYra6gtrZPJ4F" mode=""></image>
</view>
</view>
<!-- <view class="tuichu">
<image src="https://api.ccttiot.com/smartmeter/img/static/u2sCV0mQTo1xZpj6d1ps" mode=""></image> 退出登录
</view>
<view class="tuichu" @click="btnpage(15)" v-else>
<image src="https://api.ccttiot.com/smartmeter/img/static/u2sCV0mQTo1xZpj6d1ps" mode=""></image> 立即登录
</view> -->
</view>
<!-- 平台客服弹窗 -->
@ -179,8 +173,6 @@
},
onShow() {
this.getareaList()
// this.getkefu()
// this.getlunbo()
},
methods: {
btnguanli(){
@ -252,21 +244,20 @@
})
},
handleSearch(e) {
const value = e.detail.value;
console.log(e,value);
const value = e.detail.value
console.log(e,value)
if (!value) {
//
this.displayList = this.list;
this.displayList = this.list
} else {
//
this.displayList = this.list.filter(item => {
const label = String(item.label || '').toLowerCase();
const deptName = String(item.deptName || '').toLowerCase();
const searchValue = String(value || '').toLowerCase();
return label.includes(searchValue) || deptName.includes(searchValue);
});
const label = String(item.label || '').toLowerCase()
const deptName = String(item.deptName || '').toLowerCase()
const searchValue = String(value || '').toLowerCase()
return label.includes(searchValue) || deptName.includes(searchValue)
})
}
},
selectItem(item) {
@ -391,7 +382,7 @@
}else if(num == 10){ //
this.totype = 1
if (this.list.length < 2) {
uni.setStorageSync('adminAreaid', this.list[0].value);
uni.setStorageSync('adminAreaid', this.list[0].value)
uni.navigateTo({
url: '/page_shanghu/fix_index'
})
@ -400,15 +391,15 @@
}
}else if(num == 11){ //
this.totype = 2
console.log(this.list.length,this.list);
console.log(this.list.length,this.list)
if (this.list.length < 2) {
console.log(111);
uni.setStorageSync('adminAreaid', this.list[0].value);
console.log(111)
uni.setStorageSync('adminAreaid', this.list[0].value)
uni.navigateTo({
url: `/page_shanghu/guanli/admin_worke?id=${this.list[0].value}`
})
} else {
console.log(222);
console.log(222)
this.show = true
}
}else if(num == 12){
@ -421,13 +412,13 @@
try {
uni.clearStorageSync() //
console.log('所有缓存已清除')
uni.showToast({ title: '缓存已清除', icon: 'success' })
uni.showToast({ title: '缓存已清除', icon: 'success',duration:3000})
uni.reLaunch({
url:'/pages/login/login'
})
} catch (e) {
console.error('清除失败:', e)
uni.showToast({ title: '清除失败', icon: 'none' })
uni.showToast({ title: '清除失败', icon: 'none',duration:3000})
}
} else if (res.cancel) {
console.log('取消'); //

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ const store = new Vuex.Store({
isLogin: false,
userInfo: null,
token:"",
appid:'1',//1小鹿 6创享
appid:'1',//1小鹿 6创享 2嵛山岛
// 电动车图标
iconobj:{
tabcion:'https://api.ccttiot.com/smartmeter/img/static/uIiSizdNVb65ATEXvxfT', //底部导航栏图标