小鹿骑行

This commit is contained in:
吴鹏 2026-01-15 14:40:00 +08:00
parent bd16e1bb2e
commit ac65dc4046
35 changed files with 977 additions and 606 deletions

View File

@ -193,6 +193,21 @@
} }
}) })
} }
}else if(res.code == 401){
uni.showModal({
title: '提示',
content: '您当前未登录,是否前去登录?',
showCancel: true,
success: function (res) {
if (res.confirm) {
uni.reLaunch({
url:'/pages/login/login'
})
} else if (res.cancel) {
}
}
})
} }
}) })
} }

View File

@ -153,7 +153,9 @@
</view> </view>
<view v-if="taocanlist.length != 0" style="margin-top: 24rpx;color: #828282;font-size: 26rpx;"> <view v-if="taocanlist.length != 0" style="margin-top: 24rpx;color: #828282;font-size: 26rpx;">
<view class=""> <view class="">
免费骑行<text style="color: #F17F37;">{{actiobj.freeRideTime == null ? '0' : actiobj.freeRideTime}}</text>分钟<text v-if="bikeobj.areaParkingReturn == true">需在还车点还车地图可查看还车点</text> 免费骑行<text style="color: #F17F37;">{{actiobj.freeRideTime == null ? '0' : actiobj.freeRideTime}}</text>分钟
<text v-if="bikeobj.areaParkingReturn == true" style="color: #4C97E7;" @click="btntcd"> 需在还车点还车查看还车点</text>
<text v-else style="color: #4C97E7;" @click="btntcd"> 查看还车点</text>
</view> </view>
<view class="" style="color: #828282;display: flex;align-items: center;" v-if="taocanlist[fanganindex].ridingRule == 1"> <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="display: block;margin-top: 10rpx;margin-bottom: 10rpx;font-size: 24rpx;color: #3D3D3D;">超出计费</text><text style="color: #F17F37;">{{taocanlist[fanganindex].startRule.timeoutPrice}}</text>
@ -437,7 +439,7 @@
</view> </view>
</view> </view>
<view class="btn" @click="btnzhifu"> <view class="btn" @click="btnzhifu">
同意并继续({{yucun == 0 ? '免押金' : '预支付'}} <text style="display: inline-block;font-size: 32rpx;margin-left:2rpx;">{{yucun}}</text>) 同意并继续({{yucun == 0 ? '免押金' : '押金'}} <text style="display: inline-block;font-size: 32rpx;margin-left:2rpx;">{{yucun}}</text>)
</view> </view>
<view class="cha" @click="mxflag = true">×</view> <view class="cha" @click="mxflag = true">×</view>
</view> </view>
@ -769,6 +771,7 @@
this.modelId = res.data.modelId this.modelId = res.data.modelId
this.areaNeedCheckVideo = res.data.areaNeedCheckVideo this.areaNeedCheckVideo = res.data.areaNeedCheckVideo
this.mac = res.data.mac this.mac = res.data.mac
this.getzaixian() //线
this.gettaocan() this.gettaocan()
this.getcheliang() this.getcheliang()
this.getQiniuToken() this.getQiniuToken()
@ -846,6 +849,8 @@
this.$u.put(`/app/device/iot/uploadData?sn=${this.sn}`).then(res =>{ this.$u.put(`/app/device/iot/uploadData?sn=${this.sn}`).then(res =>{
if(res.code == 200){ if(res.code == 200){
this.zaixianflag = true this.zaixianflag = true
}else if(res.code == 20003){
this.zaixianflag = true
} }
}) })
let that = this let that = this
@ -1024,18 +1029,36 @@
}, },
recordVideo() { recordVideo() {
// API // API
const minVideoDuration = 10;
const maxVideoDuration = 60;
uni.chooseVideo({ uni.chooseVideo({
sourceType: ['camera'], // 使 sourceType: ['camera'], // 使
camera: 'back', // 使frontback camera: 'back', //
maxDuration: 15, // maxDuration: maxVideoDuration, // 15
success: (res) => { success: (res) => {
// // 1. res.duration
const actualDuration = res.duration;
console.log('视频实际录制时长:', actualDuration, '秒');
// 2.
if (actualDuration < minVideoDuration) {
uni.showToast({
title: `视频时长不能少于${minVideoDuration}秒,请重新录制`,
icon: 'none',
duration: 5000
});
return; //
}
// 3.
this.videoPath = res.tempFilePath; this.videoPath = res.tempFilePath;
console.log(res.tempFilePath); console.log('视频临时路径:', res.tempFilePath);
this.upload() this.upload(); //
}, },
fail: (err) => { fail: (err) => {
console.log('录像失败:', err); console.log('录像失败:', err);
uni.showToast({
title: '录像失败,请重试',
icon: 'none'
});
} }
}) })
}, },
@ -1294,7 +1317,7 @@
uni.showModal({ uni.showModal({
title: '提示', title: '提示',
content: '当前车辆不可用', content: '当前车辆不可用',
showCancel: true, showCancel: false,
success: function(res) { success: function(res) {
if (res.confirm) { if (res.confirm) {

View File

@ -16,6 +16,7 @@
<text></text> <text></text>
</view> </view>
</view> </view>
<scroll-view scroll-y="true" style="height: 72vh;overflow: scroll;">
<view class="" v-if="tabindex == 0"> <view class="" v-if="tabindex == 0">
<view class="card"> <view class="card">
<view class="card_li"> <view class="card_li">
@ -275,7 +276,7 @@
</view> </view>
</view> </view>
<view class="" v-if="tabindex === 1"> <view class="" v-if="tabindex == 1 || tabindex == 0">
<view class="card"> <view class="card">
<view class="biaoti"> <view class="biaoti">
骑行设置 骑行设置
@ -364,7 +365,7 @@
</view> </view>
</view> </view>
<view class="" v-if="tabindex == 2"> <view class="" v-if="tabindex == 2 || tabindex == 0">
<view class="card"> <view class="card">
<view class="biaoti"> <view class="biaoti">
还车设置 还车设置
@ -466,6 +467,7 @@
</view> --> </view> -->
</view> </view>
</view> </view>
</scroll-view>
<!-- 时间选择器 --> <!-- 时间选择器 -->
@ -835,7 +837,7 @@
align-items: center; align-items: center;
gap: 82rpx; gap: 82rpx;
padding-left: 42rpx; padding-left: 42rpx;
font-size: 36rpx;
view { view {
text-align: center; text-align: center;
color: #808080; color: #808080;
@ -1091,8 +1093,6 @@
} }
.page { .page {
padding-bottom: 300rpx;
.choose_part { .choose_part {
position: fixed; position: fixed;
top: 530rpx; top: 530rpx;

View File

@ -161,7 +161,6 @@
// 0? 0 // 0? 0
this.price = 0; this.price = 0;
} }
uni.showLoading({ uni.showLoading({
title:'提交中...' title:'提交中...'
}) })
@ -173,10 +172,17 @@
this.$u.put('/bst/order/verify', data).then((res) => { this.$u.put('/bst/order/verify', data).then((res) => {
uni.hideLoading() uni.hideLoading()
if (res.code === 200) { if (res.code === 200) {
uni.showToast({ uni.showModal({
title: '审核成功', title: '提示',
icon: 'success', content: '审核成功',
duration: 2000 showCancel: false,
success: function(res) {
if (res.confirm) {
} else if (res.cancel) {
}
}
}) })
this.pageNum = 1 this.pageNum = 1
this.list = [] this.list = []
@ -188,7 +194,7 @@
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,
icon: 'none', icon: 'none',
duration: 2000 duration: 5000
}) })
} }
}).catch(() => { }).catch(() => {

View File

@ -24,7 +24,7 @@
} }
}, },
onLoad() { onLoad() {
this.http = 'https://ele.ccttiot.com/ext?url=' + encodeURIComponent('https://player.bilibili.com/player.html?isOutside=true&aid=114369123849636&bvid=BV1CuLczFEe2&cid=29515777844&p=1') this.http = 'https://weixin.qq.com/sph/AV48NNirw'
// this.http = 'https://weixin.qq.com/sph/AclK6wcxT' // this.http = 'https://weixin.qq.com/sph/AclK6wcxT'
console.log(this.http); console.log(this.http);
}, },

View File

@ -4,6 +4,25 @@
title-size='34' height='36' id="navbar"></u-navbar> title-size='34' height='36' id="navbar"></u-navbar>
<view class="container"> <view class="container">
<!-- 实名信息展示 -->
<view class="section-card real-info-card">
<view class="section-title">实名信息</view>
<view class="real-info-content">
<view class="info-item">
<text class="info-label">姓名</text>
<text class="info-value">{{realName || '--'}}</text>
</view>
<view class="info-item">
<text class="info-label">身份证号</text>
<text class="info-value">{{realIdCard || '--'}}</text>
</view>
</view>
<view class="info-tip">
<u-icon name="info-circle" size="28" color="#909399" style="margin-right: 8rpx;"></u-icon>
<text class="tip-text">收款账户信息需与实名信息一致请仔细核对</text>
</view>
</view>
<!-- 账户类型选择 --> <!-- 账户类型选择 -->
<!-- <view class="section-card"> <!-- <view class="section-card">
<view class="section-title">选择收款方式</view> <view class="section-title">选择收款方式</view>
@ -28,7 +47,7 @@
<!-- 开户行输入仅对公银行卡显示 --> <!-- 开户行输入仅对公银行卡显示 -->
<view class="form-item" v-if="activeType == 'PUBLIC_BANK'"> <view class="form-item" v-if="activeType == 'PUBLIC_BANK'">
<view class="form-label">开户行名称</view> <view class="form-label">开户行名称</view>
<u-input v-model="bankForm.bankName" placeholder="请输入开户行名称" border="none" class="custom-input"></u-input> <u-input v-model="bankForm.bankName" placeholder="请输入开户行名称" border="none" class="custom-input" @input="handleInput('bankName', $event)"></u-input>
</view> </view>
<!-- <view class="form-item"> <!-- <view class="form-item">
@ -38,7 +57,7 @@
<view class="form-item"> <view class="form-item">
<view class="form-label">银行卡号</view> <view class="form-label">银行卡号</view>
<u-input v-model="bankForm.no" placeholder="请输入银行卡号" border="none" type="number" class="custom-input"></u-input> <u-input v-model="bankForm.no" placeholder="请输入银行卡号" border="none" type="number" class="custom-input" @input="handleInput('no', $event)"></u-input>
</view> </view>
<!-- <view class="form-item"> <!-- <view class="form-item">
@ -48,7 +67,10 @@
<view class="form-item" v-if="activeType != 'PUBLIC_BANK'" style="border-bottom: none;"> <view class="form-item" v-if="activeType != 'PUBLIC_BANK'" style="border-bottom: none;">
<view class="form-label">手机号</view> <view class="form-label">手机号</view>
<u-input v-model="bankForm.mobile" placeholder="请输入手机号" border="none" class="custom-input"></u-input> <u-input v-model="bankForm.mobile" placeholder="请输入手机号" border="none" class="custom-input" @input="handleInput('mobile', $event)"></u-input>
<view class="" style="color: #E6A23C;margin-top: 30rpx;">
该手机号必须是该银行卡预留的手机号
</view>
</view> </view>
</view> </view>
@ -57,15 +79,15 @@
<view class="section-title">绑定银行卡信息</view> <view class="section-title">绑定银行卡信息</view>
<view class="form-item"> <view class="form-item">
<view class="form-label">银行卡号</view> <view class="form-label">银行卡号</view>
<u-input v-model="bankForm.no" placeholder="请输入银行卡号" border="none" type="number" class="custom-input"></u-input> <u-input v-model="bankForm.no" placeholder="请输入银行卡号" border="none" type="number" class="custom-input" @input="handleInput('no', $event)"></u-input>
</view> </view>
<view class="form-item"> <view class="form-item">
<view class="form-label">开户行名称</view> <view class="form-label">开户行名称</view>
<u-input v-model="bankForm.bankName" placeholder="请输入开户行名称" border="none" class="custom-input"></u-input> <u-input v-model="bankForm.bankName" placeholder="请输入开户行名称" border="none" class="custom-input" @input="handleInput('bankName', $event)"></u-input>
</view> </view>
<view class="form-item" style="border-bottom: none;"> <view class="form-item" style="border-bottom: none;">
<view class="form-label">联行号</view> <view class="form-label">联行号</view>
<u-input v-model="bankForm.contactLine" placeholder="请输入联行号" border="none" class="custom-input"></u-input> <u-input v-model="bankForm.contactLine" placeholder="请输入联行号" border="none" class="custom-input" @input="handleInput('contactLine', $event)"></u-input>
</view> </view>
</view> </view>
@ -101,7 +123,7 @@
</view> --> </view> -->
<view class="form-item"> <view class="form-item">
<view class="form-label">银行卡号</view> <view class="form-label">银行卡号</view>
<u-input v-model="bankForm.no" placeholder="请输入银行卡号" border="none" type="number" class="custom-input"></u-input> <u-input v-model="bankForm.no" placeholder="请输入银行卡号" border="none" type="number" class="custom-input" @input="handleInput('no', $event)"></u-input>
</view> </view>
<!-- <view class="form-item"> <!-- <view class="form-item">
<view class="form-label">身份证号</view> <view class="form-label">身份证号</view>
@ -109,7 +131,10 @@
</view> --> </view> -->
<view class="form-item" style="border-bottom: none;"> <view class="form-item" style="border-bottom: none;">
<view class="form-label">手机号</view> <view class="form-label">手机号</view>
<u-input v-model="bankForm.mobile" placeholder="请输入手机号" border="none" class="custom-input"></u-input> <u-input v-model="bankForm.mobile" placeholder="请输入手机号" border="none" class="custom-input" @input="handleInput('mobile', $event)"></u-input>
<view class="" style="color: #E6A23C;margin-top: 30rpx;">
该手机号必须是该银行卡预留的手机号
</view>
</view> </view>
</view> </view>
@ -149,19 +174,53 @@ export default {
token: '', // token token: '', // token
upurl: 'https://api.ccttiot.com', // upurl: 'https://api.ccttiot.com', //
zhanghulist:[], zhanghulist:[],
activeTypeid:'' activeTypeid:'',
realName: '', //
realIdCard: '' //
} }
}, },
onShow() { onShow() {
this.getUserInfo()
}, },
onLoad(e) { onLoad(e) {
this.activeType = e.activeType this.activeType = e.activeType
this.activeTypeid = e.id this.activeTypeid = e.id
// this.getqudao() // this.getqudao()
this.getQiniuToken() this.getQiniuToken()
this.getUserInfo()
}, },
methods: { methods: {
//
getUserInfo() {
this.$u.get("/getInfo").then(res => {
if (res.code == 200 && res.user) {
this.realName = res.user.realName || ''
this.realIdCard = res.user.realIdCard || ''
}
})
},
//
handleInput(field, value) {
//
let inputValue = ''
if (typeof value === 'string') {
inputValue = value
} else if (value && value.detail && typeof value.detail.value === 'string') {
// uView u-input detail.value
inputValue = value.detail.value
} else if (value && value.target) {
//
inputValue = value.target.value || ''
} else {
return
}
//
const trimmedValue = inputValue.replace(/\s/g, '')
// 使 $nextTick
this.$nextTick(() => {
this.bankForm[field] = trimmedValue
})
},
btnxz(item){ btnxz(item){
this.activeType = item.apiType this.activeType = item.apiType
this.activeTypeid = item.id this.activeTypeid = item.id
@ -490,4 +549,54 @@ page {
box-shadow: none; box-shadow: none;
transform: none; transform: none;
} }
/* 实名信息卡片样式 */
.real-info-card {
background: linear-gradient(135deg, #EEF5FF 0%, #F7F9FC 100%);
border: 1rpx solid #E1F0FF;
}
.real-info-content {
margin-bottom: 24rpx;
}
.info-item {
display: flex;
align-items: center;
margin-bottom: 16rpx;
font-size: 28rpx;
}
.info-item:last-child {
margin-bottom: 0;
}
.info-label {
color: #606266;
font-weight: 500;
min-width: 140rpx;
}
.info-value {
color: #303133;
font-weight: 600;
flex: 1;
}
.info-tip {
display: flex;
align-items: flex-start;
padding: 16rpx 20rpx;
background: #FFF7E6;
border-radius: 12rpx;
border-left: 4rpx solid #FFA940;
align-items: center;
}
.tip-text {
font-size: 24rpx;
color: #8C6A00;
line-height: 1.6;
flex: 1;
}
</style> </style>

View File

@ -8,7 +8,7 @@
</map> </map>
<view class="jiaoyi"> <view class="jiaoyi">
<view class="pic"> <view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/uiXte3LpSV30jyvTUR2R" mode=""></image> <image src="/static/image/icon18.png" mode=""></image>
<text v-if="info.status == 'PROCESSING'">进行中</text> <text v-if="info.status == 'PROCESSING'">进行中</text>
<text v-if="info.status == 'WAIT_PAY'">待支付</text> <text v-if="info.status == 'WAIT_PAY'">待支付</text>
<text v-if="info.status == 'CANCELED'">已取消</text> <text v-if="info.status == 'CANCELED'">已取消</text>
@ -37,7 +37,7 @@
订单编号 订单编号
</view> </view>
<view class="shen"> <view class="shen">
{{info.no == null ? '--' : info.no}} <image src="https://api.ccttiot.com/smartmeter/img/static/uimYURcxkn9ItLquwPpM" mode=""></image> {{info.no == null ? '--' : info.no}} <image src="/static/image/icon19.png" mode=""></image>
</view> </view>
</view> </view>
<view class="one"> <view class="one">
@ -298,7 +298,7 @@
</view> </view>
<view class="mask" v-if="kefuflag"></view> <view class="mask" v-if="kefuflag"></view>
<view class="kfrens"> <view class="kfrens">
<image class="kfren" @click="btntel" src="https://api.ccttiot.com/smartmeter/img/static/uJd9ccJt76zc7r2Nlpb8" mode=""></image> <image class="kfren" @click="btntel" src="/static/image/20.png"></image>
联系客服 联系客服
</view> </view>
</view> </view>
@ -369,7 +369,6 @@
else if (row.type == 2) type2Data.push(row); else if (row.type == 2) type2Data.push(row);
else if (row.type == 3) type3Data.push(row); else if (row.type == 3) type3Data.push(row);
}); });
// type1 // type1
const validBoundaries = type1Data.map(row => row.boundaryStr).filter(boundary => const validBoundaries = type1Data.map(row => row.boundaryStr).filter(boundary =>
typeof boundary === 'string' && boundary.trim() !== ''); typeof boundary === 'string' && boundary.trim() !== '');
@ -377,7 +376,6 @@
if (polygons && polygons.length > 0) { if (polygons && polygons.length > 0) {
this.polygon = this.polygon.concat(polygons); this.polygon = this.polygon.concat(polygons);
} }
// type2 // type2
const validBoundaries1 = type2Data.map(row => row.boundaryStr).filter(boundary => const validBoundaries1 = type2Data.map(row => row.boundaryStr).filter(boundary =>
typeof boundary === 'string' && boundary.trim() !== ''); typeof boundary === 'string' && boundary.trim() !== '');
@ -385,7 +383,6 @@
if (polygons1 && polygons1.length > 0) { if (polygons1 && polygons1.length > 0) {
this.polygon = this.polygon.concat(polygons1); this.polygon = this.polygon.concat(polygons1);
} }
// type3 // type3
const validBoundaries2 = type3Data.map(row => row.boundaryStr).filter(boundary => const validBoundaries2 = type3Data.map(row => row.boundaryStr).filter(boundary =>
typeof boundary === 'string' && boundary.trim() !== ''); typeof boundary === 'string' && boundary.trim() !== '');
@ -393,7 +390,6 @@
if (polygons2 && polygons2.length > 0) { if (polygons2 && polygons2.length > 0) {
this.polygon = this.polygon.concat(polygons2); this.polygon = this.polygon.concat(polygons2);
} }
this.parkingList = filteredData this.parkingList = filteredData
this.$forceUpdate() this.$forceUpdate()
this.toggleIconAndCallout() this.toggleIconAndCallout()

View File

@ -92,10 +92,10 @@
<!-- 平台客服弹窗 --> <!-- 平台客服弹窗 -->
<view class="kefutc" v-if="kefuflag"> <view class="kefutc" v-if="kefuflag">
<image src="https://api.ccttiot.com/smartmeter/img/static/umtjJg2CJLiOS6hfAEzo" mode="" <image src="https://api.ccttiot.com/smartmeter/img/static/umtjJg2CJLiOS6hfAEzo" mode="aspectFill"
@click="kefuflag = false"></image> @click="kefuflag = false"></image>
<view class="box" > <view class="box" >
<view class="" style="max-height: 170rpx;overflow: scroll;"> <view class="" style="max-height: 268rpx;overflow: scroll;">
<view class="top" v-for="(item,index) in kefulist" :key="index"> <view class="top" v-for="(item,index) in kefulist" :key="index">
<view class="dianhua"> <view class="dianhua">
{{item.name == null ? '--' : item.name}}{{item.contact == null ? '--' : item.contact}} {{item.name == null ? '--' : item.name}}{{item.contact == null ? '--' : item.contact}}
@ -107,12 +107,12 @@
</view> </view>
</view> </view>
<view class="bot"> <view class="bot">
<view class="wz"> <!-- <view class="wz">
在线客服 在线客服
</view> </view>
<view class="wz"> <view class="wz">
温馨提示 温馨提示
</view> </view> -->
<view class="wzs"> <view class="wzs">
客服电话高峰期可能遇忙请耐心等待 客服电话高峰期可能遇忙请耐心等待
</view> </view>
@ -1281,13 +1281,7 @@
longitude: parseFloat(item.longitude), longitude: parseFloat(item.longitude),
width: 18, width: 18,
height: 26, height: 26,
iconPath: item.type == 1 ? iconPath: item.type == 1 ? 'https://lxnapi.ccttiot.com/bike/img/static/up2xXqAgwCX5iER600k3' : item.type == 2 ? 'https://lxnapi.ccttiot.com/bike/img/static/uDNY5Q4zOiZTCBTA2Jdq' : item.type == 3 ? 'https://lxnapi.ccttiot.com/bike/img/static/u53BAQcFIX3vxsCzEZ7t' : 'https://api.ccttiot.com/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20250829161752_210_17-1756455764351.png',
'https://lxnapi.ccttiot.com/bike/img/static/up2xXqAgwCX5iER600k3' :
item.type == 2 ?
'https://lxnapi.ccttiot.com/bike/img/static/uDNY5Q4zOiZTCBTA2Jdq' :
item.type == 3 ?
'https://lxnapi.ccttiot.com/bike/img/static/u53BAQcFIX3vxsCzEZ7t' :
'https://api.ccttiot.com/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20250829161752_210_17-1756455764351.png',
callout: { callout: {
content: item.name, content: item.name,
color: '#ffffff', color: '#ffffff',
@ -2219,8 +2213,7 @@
latitude: that.lslat, latitude: that.lslat,
result: '成功' result: '成功'
} }
that.$u.post(`/app/commandLog/bluetooth`, data).then( that.$u.post(`/app/commandLog/bluetooth`, data).then(res => {
res => {
console.log(res, '蓝牙') console.log(res, '蓝牙')
}) })
let datas = { let datas = {
@ -2275,8 +2268,7 @@
} else { } else {
if (that.shibainum < 3) { if (that.shibainum < 3) {
that.shibainum++ that.shibainum++
that.findDeviceTimer = setTimeout(findDevice.bind(that), that.findDeviceTimer = setTimeout(findDevice.bind(that),1000) // 使 bind this
1000) // 使 bind this
} else { } else {
uni.getLocation({ uni.getLocation({
type: 'gcj02', // type: 'gcj02', //

View File

@ -30,25 +30,25 @@
<view class="lt"> <view class="lt">
<image :src="appimg.mineVip" mode=""></image> 我的会员 <image :src="appimg.mineVip" mode=""></image> 我的会员
</view> </view>
<image src="https://api.ccttiot.com/smartmeter/img/static/ugxCHoezYra6gtrZPJ4F" mode=""></image> <image src="/static/image/jt.png" mode=""></image>
</view> </view>
<view class="li" @click="btnpage(5)"> <view class="li" @click="btnpage(5)">
<view class="lt"> <view class="lt">
<image :src="appimg.mineFaultReport" mode=""></image> 故障上报 <image :src="appimg.mineFaultReport" mode=""></image> 故障上报
</view> </view>
<image src="https://api.ccttiot.com/smartmeter/img/static/ugxCHoezYra6gtrZPJ4F" mode=""></image> <image src="/static/image/jt.png" mode=""></image>
</view> </view>
<view class="li" @click="btnpage(7)"> <view class="li" @click="btnpage(7)">
<view class="lt"> <view class="lt">
<image :src="appimg.mineOrderComplaint" mode=""></image> 订单投诉 <image :src="appimg.mineOrderComplaint" mode=""></image> 订单投诉
</view> </view>
<image src="https://api.ccttiot.com/smartmeter/img/static/ugxCHoezYra6gtrZPJ4F" mode=""></image> <image src="/static/image/jt.png" mode=""></image>
</view> </view>
<view class="li" @click="btnpage(9)"> <view class="li" @click="btnpage(9)">
<view class="lt"> <view class="lt">
<image :src="appimg.mineHelp" mode=""></image> 帮助中心 <image :src="appimg.mineHelp" mode=""></image> 帮助中心
</view> </view>
<image src="https://api.ccttiot.com/smartmeter/img/static/ugxCHoezYra6gtrZPJ4F" mode=""></image> <image src="/static/image/jt.png" mode=""></image>
</view> </view>
</view> </view>
<view class="ul" v-if="guanliflag || adminflag"> <view class="ul" v-if="guanliflag || adminflag">
@ -56,13 +56,13 @@
<view class="lt"> <view class="lt">
<image :src="appimg.mineAdmin" mode=""></image> 管理后台 <image :src="appimg.mineAdmin" mode=""></image> 管理后台
</view> </view>
<image src="https://api.ccttiot.com/smartmeter/img/static/ugxCHoezYra6gtrZPJ4F" mode=""></image> <image src="/static/image/jt.png" mode=""></image>
</view> </view>
<view class="li" @click="btnpage(13)" v-if="adminflag"> <view class="li" @click="btnpage(13)" v-if="adminflag">
<view class="lt"> <view class="lt">
<image :src="appimg.mineDeviceInput" mode=""></image> 设备录入 <image :src="appimg.mineDeviceInput" mode=""></image> 设备录入
</view> </view>
<image src="https://api.ccttiot.com/smartmeter/img/static/ugxCHoezYra6gtrZPJ4F" mode=""></image> <image src="/static/image/jt.png" mode=""></image>
</view> </view>
</view> </view>
<view class="ul" style="padding: 0 56rpx;"> <view class="ul" style="padding: 0 56rpx;">
@ -70,13 +70,13 @@
<view class="lt"> <view class="lt">
<image :src="appimg.mineLogout" mode=""></image> 退出登录 <image :src="appimg.mineLogout" mode=""></image> 退出登录
</view> </view>
<image src="https://api.ccttiot.com/smartmeter/img/static/ugxCHoezYra6gtrZPJ4F" mode=""></image> <image src="/static/image/jt.png" mode=""></image>
</view> </view>
<view class="li" @click="btnpage(15)" v-else> <view class="li" @click="btnpage(15)" v-else>
<view class="lt"> <view class="lt">
<image :src="appimg.mineLogout" mode=""></image> 立即登录 <image :src="appimg.mineLogout" mode=""></image> 立即登录
</view> </view>
<image src="https://api.ccttiot.com/smartmeter/img/static/ugxCHoezYra6gtrZPJ4F" mode=""></image> <image src="/static/image/jt.png" mode=""></image>
</view> </view>
</view> </view>
<view class="" style="width: 100%;text-align: center;margin-top: 20rpx;color: #ccc;"> <view class="" style="width: 100%;text-align: center;margin-top: 20rpx;color: #ccc;">
@ -85,7 +85,7 @@
</view> </view>
<!-- 平台客服弹窗 --> <!-- 平台客服弹窗 -->
<view class="kefutc" v-if="kefuflag"> <view class="kefutc" v-if="kefuflag">
<image src="https://api.ccttiot.com/smartmeter/img/static/umtjJg2CJLiOS6hfAEzo" mode="" @click="btmnyc"> <image src="/static/image/icon16.png" mode="" @click="btmnyc">
</image> </image>
<view class="box"> <view class="box">
<view class="" style="max-height: 170rpx;overflow: scroll;"> <view class="" style="max-height: 170rpx;overflow: scroll;">
@ -383,6 +383,7 @@
this.show = true this.show = true
} }
} else if (num == 11) { // } else if (num == 11) { //
if(uni.getStorageSync('user').authTypes.includes('1')){
if(uni.getStorageSync('wzid')){ if(uni.getStorageSync('wzid')){
if (this.list.length < 2) { if (this.list.length < 2) {
uni.setStorageSync('adminAreaid', this.list[0].value); uni.setStorageSync('adminAreaid', this.list[0].value);
@ -398,7 +399,11 @@
url:'/pages/xiqian' url:'/pages/xiqian'
}) })
} }
}else{
uni.navigateTo({
url:'/page_user/shiming'
})
}
// this.$u.get(`/app/contract/checkSigned?type=1`).then(res => { // this.$u.get(`/app/contract/checkSigned?type=1`).then(res => {
// if (res.code == 200) { // if (res.code == 200) {
// if (res.data == false) { // if (res.data == false) {

View File

@ -70,7 +70,7 @@
<view class="qixinglist_item" v-for="(item,index) in qixinglist" :key="index" @click="btnxqqx(item.id)"> <view class="qixinglist_item" v-for="(item,index) in qixinglist" :key="index" @click="btnxqqx(item.id)">
<view class="top"> <view class="top">
<view class="lt"> <view class="lt">
<image :src="iconobj.orderlistimg" mode=""></image> {{item.deviceVehicleNum == null ? '--' : item.deviceVehicleNum}} <image src="/static/image/icon17.png" mode=""></image> {{item.deviceVehicleNum == null ? '--' : item.deviceVehicleNum}}
</view> </view>
<view class="rt" v-if="item.status == 'WAIT_PAY'"> <view class="rt" v-if="item.status == 'WAIT_PAY'">
待支付 <u-icon name="arrow-right" color="#808080" size="28"></u-icon> 待支付 <u-icon name="arrow-right" color="#808080" size="28"></u-icon>

View File

@ -3,7 +3,7 @@
<u-navbar title=" " :border-bottom="false" :background="bgc" back-icon-color="#262B37" title-color='#262B37' <u-navbar title=" " :border-bottom="false" :background="bgc" back-icon-color="#262B37" title-color='#262B37'
title-size='36' height='36' id="navbar"> title-size='36' height='36' id="navbar">
</u-navbar> </u-navbar>
<map class='map' id="map" :latitude="latitude" :longitude="longitude" :markers="covers" @markertap="handleMarkerClick" :polyline="mappolyline" :show-location="true"/> <map class='map' id="map" :latitude="latitude" :longitude="longitude" :markers="covers" @markertap="handleMarkerClick" :polyline="mappolyline" :polygons="areaPolylines" :show-location="true"/>
<view class="daohang" v-if="daohangflag"> <view class="daohang" v-if="daohangflag">
<view class="name"> <view class="name">
@ -36,6 +36,7 @@
latitude:'', latitude:'',
longitude:'', longitude:'',
mappolyline:[], mappolyline:[],
areaPolylines:[], //
qqmapsdk: null, qqmapsdk: null,
validBoundaries:{}, validBoundaries:{},
daohangflag:false, daohangflag:false,
@ -52,7 +53,6 @@
}, },
onShow() { onShow() {
this.getMyLocation() this.getMyLocation()
this.convertBoundaryToPolylines(this.validBoundaries, 1)
}, },
methods: { methods: {
// //
@ -74,15 +74,29 @@
}, },
handleMarkerClick(e){ handleMarkerClick(e){
// 线 // 线
console.log(e); console.log(e);
this.getcha(e.markerId)
const clickedMarker = this.covers.find(marker => marker.id == e.markerId); const clickedMarker = this.covers.find(marker => marker.id == e.markerId);
if (clickedMarker) { if (clickedMarker) {
// ID
let originalId = e.markerId.toString()
if (originalId.endsWith('4')) {
originalId = originalId.slice(0, -1) //
} else if (originalId.endsWith('5')) {
originalId = originalId.slice(0, -1) //
} else if (originalId.endsWith('6')) {
originalId = originalId.slice(0, -1) //
} else if (originalId.endsWith('7')) {
originalId = originalId.slice(0, -1) //
}
this.getcha(originalId)
// 线
if (clickedMarker.isParkingArea && clickedMarker.id.toString().endsWith('4')) {
const { latitude, longitude } = clickedMarker; const { latitude, longitude } = clickedMarker;
this.routePlanning(latitude, longitude); this.routePlanning(latitude, longitude);
}
this.daohangflag = true this.daohangflag = true
}
}
}, },
routePlanning(end_lat, end_long) { routePlanning(end_lat, end_long) {
let that = this let that = this
@ -115,22 +129,19 @@
}) })
} }
// console.log('', pl) // console.log('', pl)
// polyline线 // 线polyline
that.mappolyline = [{ const routePolyline = {
points: pl, points: pl,
color: '#367EEF', // 线 color: '#367EEF', // 线
width: 3, // width: 8, //
borderWidth: 2, // 线 borderWidth: 2, // 线
borderColor: '#5B98FD', // 线 borderColor: '#5B98FD', // 线
lineCap: 'square', // 线 lineCap: 'square', // 线
showArrow: true, // 沿线 showArrow: true, // 沿线
width: 8,
arrowLine: true, arrowLine: true,
// color: '#00AF99', }
// strokeWidth: 2, // 线:polygons
// strokeColor: '#00AF99', that.mappolyline = [routePolyline]
// fillColor: '#00AF99'
}]
}, },
fail(res) { fail(res) {
console.log('resresresresresresres', res) console.log('resresresresresresres', res)
@ -145,56 +156,265 @@
this.latitude = res.latitude this.latitude = res.latitude
this.longitude = res.longitude this.longitude = res.longitude
this.setMapScale() this.setMapScale()
this.$u.get(`/app/areaSub/listByArea?areaId=${this.areaId}`).then((res) => { this.getArea()
if (res.code == 200) {
res.data.forEach(item =>{
if(item.type == 1){
const shopCover = {
id: parseInt(item.id),
latitude: item.latitude,
longitude:item.longitude,
width: 25,
height: 40,
iconPath:'https://api.ccttiot.com/bike/img/static/uUgkSmtcyyM7hQc5Dtmf',
label: {
content: item.name,
anchorX: this.calculateAnchorX(item.name),
fontWeight: 700,
color: '#0D75E5',
borderColor: '#fff',
borderRadius: 5,
bgColor: '#fff',
padding:1,
}
}
this.covers.push(shopCover)
}
})
}
})
}, },
fail: (err) => { fail: (err) => {
console.error('获取位置失败:', err) console.error('获取位置失败:', err)
} }
}) })
}, },
// //
convertBoundaryToPolylines(boundaries, num) { getArea() {
let boundary = [27.324194, 120.216742, 25, 162, 0, 0, 79, 515, 0, 0, -277, 139, -34, 28, 0, 0, -104, 119, 0, 0, -133] this.areaPolylines = []
if (!boundary) return null; this.$u.get(`/app/area/detail?id=${this.areaId}`).then((res) => {
const points = boundary.map(coord => ({ if (res.code == 200) {
//
if (res.data && res.data.boundaryStr) {
const operationPolyline = this.convertBoundaryToPolyline(res.data.boundaryStr)
if (operationPolyline) {
this.areaPolylines.push(operationPolyline)
}
}
//
this.getParking()
}
})
},
//
getParking() {
this.$u.get(`/app/areaSub/listByArea?areaId=${this.areaId}`).then((res) => {
if (res.code === 200 && Array.isArray(res.data)) {
// 1
const filteredData = res.data.filter(item => item.status != 1)
//
const type1Data = [] //
const type2Data = [] //
const type3Data = [] //
const type4Data = [] //
filteredData.forEach(row => {
if (row.type == 1) type1Data.push(row)
else if (row.type == 2) type2Data.push(row)
else if (row.type == 3) type3Data.push(row)
else if (row.type == 4) type4Data.push(row)
})
//
//
type1Data.forEach(item => {
const marker = {
id: parseInt(item.id + "4"),
latitude: parseFloat(item.latitude),
longitude: parseFloat(item.longitude),
width: 18,
height: 26,
iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/up2xXqAgwCX5iER600k3',
callout: {
content: item.name,
color: '#ffffff',
fontSize: 12,
borderRadius: 8,
bgColor: '#3A7EDB',
padding: 4,
display: 'ALWAYS'
},
isParkingArea: true
}
this.covers.push(marker)
})
//
type2Data.forEach(item => {
const marker = {
id: parseInt(item.id + "5"),
latitude: parseFloat(item.latitude),
longitude: parseFloat(item.longitude),
width: 18,
height: 26,
iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/uDNY5Q4zOiZTCBTA2Jdq',
callout: {
content: item.name,
color: '#ffffff',
fontSize: 12,
borderRadius: 8,
bgColor: '#FF473E',
padding: 4,
display: 'ALWAYS'
},
isParkingArea: true
}
this.covers.push(marker)
})
//
type3Data.forEach(item => {
const marker = {
id: parseInt(item.id + "6"),
latitude: parseFloat(item.latitude),
longitude: parseFloat(item.longitude),
width: 18,
height: 26,
iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/u53BAQcFIX3vxsCzEZ7t',
callout: {
content: item.name,
color: '#ffffff',
fontSize: 12,
borderRadius: 8,
bgColor: '#FFC107',
padding: 4,
display: 'ALWAYS'
},
isParkingArea: true
}
this.covers.push(marker)
})
//
type4Data.forEach(item => {
const marker = {
id: parseInt(item.id + "7"),
latitude: parseFloat(item.latitude),
longitude: parseFloat(item.longitude),
width: 18,
height: 26,
iconPath: 'https://api.ccttiot.com/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20250829161752_210_17-1756455764351.png',
callout: {
content: item.name,
color: '#ffffff',
fontSize: 12,
borderRadius: 8,
bgColor: '#3bbd55',
padding: 4,
display: 'ALWAYS'
},
isParkingArea: true
}
this.covers.push(marker)
})
//
const processBoundaries = (data, type) => {
const validBoundaries = data.map(row => row.boundaryStr).filter(boundary =>
boundary && typeof boundary === 'string' && boundary.trim() !== ''
)
if (validBoundaries.length > 0) {
const polylines = this.convertBoundaryToPolylines(validBoundaries, type)
if (polylines && polylines.length > 0) {
return polylines
}
}
return []
}
//
const type1Polylines = processBoundaries(type1Data, 1)
const type2Polylines = processBoundaries(type2Data, 2)
const type3Polylines = processBoundaries(type3Data, 3)
const type4Polylines = processBoundaries(type4Data, 4)
//
const operationAreaPolylines = this.areaPolylines.filter(p => p.isOperationArea)
//
const allPolylines = [
...operationAreaPolylines,
...type1Polylines,
...type2Polylines,
...type3Polylines,
...type4Polylines
]
//
this.areaPolylines = allPolylines
}
})
},
// polyline
convertBoundaryToPolyline(boundary) {
if (!boundary) return null
const points = JSON.parse(boundary).map(coord => ({
latitude: coord[1], latitude: coord[1],
longitude: coord[0] longitude: coord[0]
})) }))
const polyline = { const polyline = {
points: points, points: points,
fillColor: "#55888840", // fillColor: "#55888820",
strokeColor: "red", // strokeColor: "#22FF00",
strokeWidth: 2, // strokeWidth: 1,
zIndex: 1, // zIndex: 1,
isOperationArea: true
} }
return polyline return polyline
}, },
// polyline
convertBoundaryToPolylines(boundaries, num) {
if (!Array.isArray(boundaries)) {
console.error('边界数据不是数组:', boundaries)
return []
}
const polylines = boundaries.map(boundary => {
if (!boundary) {
console.warn('边界数据为空')
return null
}
let coords
try {
coords = JSON.parse(boundary)
} catch (error) {
console.error('解析边界JSON失败:', error)
return null
}
if (!Array.isArray(coords)) {
console.error('解析后的边界数据不是数组:', coords)
return null
}
const points = coords.map(coord => {
if (!Array.isArray(coord) || coord.length < 2) {
console.warn('坐标数据格式错误:', coord)
return null
}
return {
latitude: parseFloat(coord[1]),
longitude: parseFloat(coord[0])
}
}).filter(point => point !== null)
if (points.length < 3) {
console.warn('有效坐标点不足3个无法构成多边形')
return null
}
//
let style = {}
if (num == 1) { //
style = {
fillColor: "#88888850",
strokeColor: "#88888850",
strokeWidth: 1,
zIndex: 1,
isOperationArea: false
}
} else if (num == 2) { //
style = {
fillColor: "#FF473E40",
strokeColor: "#FF473E",
strokeWidth: 2,
zIndex: 1,
isOperationArea: false
}
} else if (num == 3) { //
style = {
fillColor: "#FFC10740",
strokeColor: "#FFC107",
strokeWidth: 2,
zIndex: 1,
isOperationArea: false
}
} else if (num == 4) { //
style = {
fillColor: "#4abd2040",
strokeColor: "#4abd20",
strokeWidth: 2,
zIndex: 1,
isOperationArea: false
}
}
return {
points: points,
...style
}
}).filter(polyline => polyline !== null)
return polylines
},
// //
async setMapScale(e, val) { async setMapScale(e, val) {
let mapContext = uni.createMapContext('map', this); let mapContext = uni.createMapContext('map', this);

View File

@ -1,6 +1,6 @@
<template> <template>
<view class="page"> <view class="page">
<image class="topimg" @click="btnmy" src="https://api.ccttiot.com/smartmeter/img/static/uFaWRkPQOMH42IkfFyFM" mode=""></image> <image class="topimg" @click="btnmy" src="/static/image/icon11.png" mode=""></image>
<!-- 地图 --> <!-- 地图 -->
<view class=""> <view class="">
<image class="picimg" v-if="iconflag" src="https://api.ccttiot.com/smartmeter/img/static/uU4DEpKYqBND0oXDiqod" <image class="picimg" v-if="iconflag" src="https://api.ccttiot.com/smartmeter/img/static/uU4DEpKYqBND0oXDiqod"
@ -27,13 +27,13 @@
<image v-if="rtindex == 3" src="https://api.ccttiot.com/smartmeter/img/static/uEWVQFGBf10XJn8aTlaZ" <image v-if="rtindex == 3" src="https://api.ccttiot.com/smartmeter/img/static/uEWVQFGBf10XJn8aTlaZ"
@click="btntap(3)" mode=""></image> --> @click="btntap(3)" mode=""></image> -->
<image style="width: 80rpx;height: 80rpx;" @click="toggleIconAndCallout(2)" <image style="width: 80rpx;height: 80rpx;" @click="toggleIconAndCallout(2)"
src="https://api.ccttiot.com/smartmeter/img/static/u6r5tQVe2VO6bvxTLeFT" mode=""></image> src="/static/image/icon7.png" mode=""></image>
<image style="width: 80rpx;height: 80rpx;" src="https://api.ccttiot.com/smartmeter/img/static/ug1ExhYsZmdWWjVvjjuk" @click="btnhuiz" mode=""></image> <image style="width: 80rpx;height: 80rpx;" src="/static/image/icon8.png" @click="btnhuiz" mode=""></image>
<image style="width: 80rpx;height: 90rpx;" src="https://api.ccttiot.com/smartmeter/img/static/unaFMV8lmyqWVyY2uOhR" <image style="width: 80rpx;height: 90rpx;" src="/static/image/icon9.png"
@click="btntap(3)" mode=""></image> @click="btntap(3)" mode=""></image>
</view> </view>
<!-- 点击地图门店弹窗 --> <!-- 点击地图门店弹窗 -->
<view class="shoptc" v-if="shoptcflag" @click="btnmendain"> <!-- <view class="shoptc" v-if="shoptcflag" @click="btnmendain">
<view class="top"> <view class="top">
<view class="name"> <view class="name">
云行租车汇丰公寓 云行租车汇丰公寓
@ -62,12 +62,12 @@
</view> </view>
</view> </view>
</view> </view>
</view> </view> -->
<!-- 车辆弹窗 --> <!-- 车辆弹窗 -->
<view class="biketc" v-if="taocanflag"> <view class="biketc" v-if="taocanflag">
<view class="topfor"> <view class="topfor">
<image src="https://api.ccttiot.com/smartmeter/img/static/uc5JSRyb7S6TUCbOiWb3" v-if="huiyuanlist.length > 0" class="qixing" mode="" @click="btnhuiyuan"></image> <image src="/static/image/icon12.png" v-if="huiyuanlist.length > 0" class="qixing" mode="" @click="btnhuiyuan"></image>
<view class="bikesy"> <view class="bikesy">
<view class="bikert"> <view class="bikert">
<view class="bikegongli" style="color: #16BC32;"> <view class="bikegongli" style="color: #16BC32;">
@ -91,7 +91,7 @@
</view> </view>
</view> </view>
<view class="anniuks"> <view class="anniuks">
<image src="https://api.ccttiot.com/smartmeter/img/static/uYk2NdudtWdF6lvJCbSW" @click="btnxlxc" mode=""></image> <text @click="btndetaxq">解锁骑行</text> <image src="/static/image/icon13.png" @click="btnxlxc" mode=""></image> <text @click="btndetaxq">解锁骑行</text>
</view> </view>
<view class="" style="color: #7C7C7C;font-size: 24rpx;margin-top: 30rpx;width: 100%;text-align: center;"> <view class="" style="color: #7C7C7C;font-size: 24rpx;margin-top: 30rpx;width: 100%;text-align: center;">
车牌{{cheobj.vehicleNum == null ? '--' : cheobj.vehicleNum}} <text style="margin-left: 40rpx;">SN{{cheobj.sn == null ? '--' : cheobj.sn}}</text> 车牌{{cheobj.vehicleNum == null ? '--' : cheobj.vehicleNum}} <text style="margin-left: 40rpx;">SN{{cheobj.sn == null ? '--' : cheobj.sn}}</text>
@ -112,7 +112,7 @@
<u-icon name="arrow-right" color="#333" style="position: absolute;right: 10rpx;" size="32"></u-icon> <u-icon name="arrow-right" color="#333" style="position: absolute;right: 10rpx;" size="32"></u-icon>
</view> </view>
<!-- 商户中心入口 --> <!-- 商户中心入口 -->
<image v-if="guanliflag || adminflag" @click="btngl" class="rukou" src="https://api.ccttiot.com/smartmeter/img/static/utNYsXfdVWHsJBFV6eMV" mode=""></image> <image v-if="guanliflag || adminflag" @click="btngl" class="rukou" src="/static/image/icon10.png" mode=""></image>
<!-- 公告弹窗 --> <!-- 公告弹窗 -->
<view class="noticetc" v-if="gonggaoflag"> <view class="noticetc" v-if="gonggaoflag">
<view class="name"> <view class="name">
@ -137,7 +137,7 @@
您有正在进行中订单 <u-icon name="arrow-right" color="#fff" style="margin-left: 20rpx;" size="32"></u-icon> 您有正在进行中订单 <u-icon name="arrow-right" color="#fff" style="margin-left: 20rpx;" size="32"></u-icon>
</view> </view>
<view class="saoma" @click="btnsaoma" v-else> <view class="saoma" @click="btnsaoma" v-else>
<image src="https://api.ccttiot.com/smartmeter/img/static/u9WDcr9fAKNdZtew3NMZ" mode=""></image> 扫码开锁 <image src="/static/image/icon6.png" mode=""></image> 扫码开锁
</view> </view>
</view> </view>
<view class="kuaijie"> <view class="kuaijie">
@ -163,11 +163,11 @@
</view> </view>
</view> </view>
<view class="xuanfu" v-if="orderflag == true" @click="btnorder"> <view class="xuanfu" v-if="orderflag == true" @click="btnorder">
<image src="https://api.ccttiot.com/smartmeter/img/static/u9WDcr9fAKNdZtew3NMZ" mode=""></image> <image src="/static/image/icon6.png" mode=""></image>
</view> </view>
<!-- 平台客服弹窗 --> <!-- 平台客服弹窗 -->
<view class="kefutc" v-if="kefuflag"> <view class="kefutc" v-if="kefuflag">
<image class="bj" src="https://api.ccttiot.com/smartmeter/img/static/uTSMnIgvw7eS13LxZjvt" mode="" @click="kefuflag = false"></image> <image class="bj" src="/static/image/icon14.png" mode="" @click="kefuflag = false"></image>
<view class="box"> <view class="box">
<view class="" style="max-height: 640rpx;overflow: scroll;"> <view class="" style="max-height: 640rpx;overflow: scroll;">
<view class="" style="font-weight: 600;color: #3D3D3D;"> <view class="" style="font-weight: 600;color: #3D3D3D;">
@ -181,7 +181,7 @@
</view> </view>
</view> </view>
<view class="boda" @click.stop="btnptkf(item.contact)"> <view class="boda" @click.stop="btnptkf(item.contact)">
<image src="https://api.ccttiot.com/smartmeter/img/static/uwTYS0nZBsoaiY8EFlQA" mode=""></image> <image src="/static/image/icon15.png" mode=""></image>
<text>拨打</text> <text>拨打</text>
</view> </view>
</view> </view>
@ -196,7 +196,7 @@
</view> </view>
</view> </view>
<view class="boda" @click.stop="btnptkf(item.contact)"> <view class="boda" @click.stop="btnptkf(item.contact)">
<image src="https://api.ccttiot.com/smartmeter/img/static/uwTYS0nZBsoaiY8EFlQA" mode=""></image> <image src="/static/image/icon15.png" mode=""></image>
<text>拨打</text> <text>拨打</text>
</view> </view>
</view> </view>
@ -973,6 +973,7 @@
// //
btngl(){ btngl(){
if(this.user.authTypes.includes('1')){
if(uni.getStorageSync('wzid')){ if(uni.getStorageSync('wzid')){
if (this.list.length < 2) { if (this.list.length < 2) {
uni.setStorageSync('adminAreaid', this.list[0].value); uni.setStorageSync('adminAreaid', this.list[0].value);
@ -988,7 +989,11 @@
url:'/pages/xiqian' url:'/pages/xiqian'
}) })
} }
}else{
uni.navigateTo({
url:'/page_user/shiming'
})
}
// this.$u.get(`/app/contract/checkSigned?type=1`).then(res =>{ // this.$u.get(`/app/contract/checkSigned?type=1`).then(res =>{
// if(res.code == 200){ // if(res.code == 200){
// if(res.data == false){ // if(res.data == false){

BIN
static/image/20.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
static/image/21.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
static/image/icon1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
static/image/icon10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
static/image/icon11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
static/image/icon12.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

BIN
static/image/icon13.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
static/image/icon14.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

BIN
static/image/icon15.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 B

BIN
static/image/icon16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

BIN
static/image/icon17.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
static/image/icon18.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
static/image/icon19.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 B

BIN
static/image/icon2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
static/image/icon3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
static/image/icon4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
static/image/icon5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
static/image/icon6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 812 B

BIN
static/image/icon7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1004 B

BIN
static/image/icon8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
static/image/icon9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
static/image/jt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B