页面开发

This commit is contained in:
ChuShiZ 2024-08-22 19:34:47 +08:00
parent eddf8c04ba
commit 889b0e0b16
25 changed files with 1508 additions and 695 deletions

View File

@ -5,6 +5,9 @@
<view class="navigationBarTitle" :style="{ color: titleColor }">
{{ title }}
</view>
<view class="navigationBarBackExtra">
<slot name="extra"></slot?>
</view>
</view>
</template>
@ -66,6 +69,11 @@ export default {
position: absolute;
left: 20rpx;
}
.navigationBarBackExtra {
position: absolute;
right: 20rpx;
}
.navigationBarTitle {
font-size: 32rpx;
}

View File

@ -0,0 +1,265 @@
<template>
<view>
<view class="orderCard" @click="onShowDetail">
<view class="orderCardHeader">
<text class="orderCardType">{{orderData.rescueTypeStr}}</text>
<text class="orderCardTitle">{{ orderData.rescuePosition }}</text>
</view>
<view class="orderCardStatus">
<view class="orderCardStatusData">
<template v-if="orderData.rescueStatus > 2">
<image src="@/static/icons/homeOrderCard/dhjl.png" class="orderCardDistanceIcon" mode="aspectFit"></image>
<text class="orderCardDistanceValue">{{orderData.distance / 1000 || 0}}KM</text>
&nbsp;
<image src="@/static/icons/homeOrderCard/yjsj.png" class="orderCardPredictIcon"></image>
<text class="orderCardPredictDate">{{orderData.needTime || 0}}分钟</text>
到达
</template>
</view>
<text :class="{ toRescued: orderData.rescueStatus <= 2, inRescue: orderData.rescueStatus > 2 }"
class="orderCardFlag">
<template v-if="orderData.rescueStatus <= 2">{{orderData.rescueStatusStr}}</template>
<template v-if="orderData.rescueStatus > 2">{{orderData.rescueStatusStr}}</template>
</text>
</view>
<view class="orderCardProcess">
<view v-if="orderData.rescueStatus == 2" class="orderCardSendOrders">
系统正在派单中...
</view>
<view v-if="orderData.rescueStatus > 2">
<text class="orderCardDriver">先伟</text>
驾驶
<text class="orderCardCarNo">鲁A12345</text>
</view>
</view>
<view class="orderCardFooter">
<text class="orderCardDateTime">2024-08-18 10:33</text>
<view class="orderCardBtnGroup">
<template v-if="role == 'ddzx' && orderData.rescueStatus <= 2">
<view @click.stop="deleteId" class="orderCardBtnGroupItem" style="background-color: #fff;color: #317DFA">
删除订单</view>
<view @click.stop="getzhipai" class="orderCardBtnGroupItem">指派司机</view>
</template>
<template v-else-if="orderData.rescueStatus > 2">
<view @click.stop="gettel" class="orderCardBtnGroupItem">联系司机</view>
</template>
</view>
</view>
</view>
<u-picker :show="show" :columns="columns" @confirm="confirms" @cancel="cancels" keyName="realName"></u-picker>
<u-modal :show="showDelete" title="是否确认删除" :showCancelButton="true" @confirm="deleteOk"
@cancel="deleteCancel"></u-modal>
</view>
</template>
<script>
import request from '../../utils/request';
export default {
props: {
orderData: {
type: Object,
default: () => {
return {}
}
}
},
mounted() {
this.role = uni.getStorageSync('role')
},
data() {
return {
columns: [],
id: '',
show: false,
showDelete: false,
role: []
}
},
methods: {
onShowDetail() {
uni.navigateTo({
url: '/pages/details/details?id=' + this.orderData.id
})
},
// zhi
getzhipai() {
console.log('getzhipai: ', this.getzhipai);
this.getsjlist()
this.show = true
},
//
getsjlist() {
this.columns = []
//
request({
url: '/app/rescueInfo/driverInMap?searchValue=',
method: 'get',
}).then((res) => {
this.columns.push(res.data)
})
},
//
confirms(e) {
console.log(e);
let data = {
rescueId: this.orderData.id,
driverId: e.value[0].id
}
request({
url: '/system/rescueInfo/designateDriver',
method: 'post',
params: data
}).then((res) => {
console.log('确认司机', res);
if (res.code == 200) {
uni.showToast({
title: '指派成功'
})
this.$emit('refresh')
}
})
this.show = false
},
//
cancels() {
this.show = false
},
//
deleteId() {
this.showDelete = true
return
},
deleteOk() {
request({
url: "/app/rescueInfo/delRescueInfo?id=" + this.orderData.id,
method: 'post',
}).then(res => {
if (res.code == 200) {
uni.showToast({
title: "删除成功"
})
this.$emit('deleteOk')
}
})
this.showDelete = false
},
deleteCancel() {
console.log("取消");
this.showDelete = false
},
//
gettel() {
uni.makePhoneCall({
phoneNumber: this.orderData.driverPhoneNum //
});
},
}
}
</script>
<style lang="scss" scoped>
.orderCard {
background-color: #fff;
padding: 24rpx;
border-radius: 16rpx;
display: flex;
flex-direction: column;
row-gap: 22rpx;
box-shadow: 2rpx 4rpx 8rpx rgba(0, 0, 0, 0.1);
}
.orderCardHeader {
line-height: 1.5;
.orderCardType {
background-color: #EAF1FE;
color: #317DFA;
padding: 4rpx 16rpx;
border-radius: 16rpx 0 16rpx 0;
font-size: 24rpx;
margin-right: 12rpx;
}
.orderCardTitle {
color: #000;
font-weight: bold;
}
}
.orderCardStatus {
display: flex;
justify-content: space-between;
}
.orderCardStatusData {
display: flex;
align-items: center;
column-gap: 4rpx;
font-size: 24rpx;
}
.orderCardDistanceIcon,
.orderCardPredictIcon {
width: 36rpx;
height: 36rpx;
}
.orderCardDistanceValue {
color: #919191;
margin-right: 16rpx;
}
.orderCardPredictDate {
color: #317DFA;
}
.orderCardFlag {
font-size: 24rpx;
padding: 4rpx 16rpx;
border-radius: 4rpx;
&.inRescue {
background-color: #ECF8EA;
color: #2FB821;
}
&.toRescued {
background-color: #FAE9E9;
color: #D42424;
}
}
.orderCardProcess {
.orderCardSendOrders,
.orderCardDriver,
.orderCardCarNo {
color: #317DFA;
}
}
.orderCardFooter {
display: flex;
justify-content: space-between;
align-items: center;
.orderCardDateTime {
color: #919191;
font-size: 24rpx;
}
.orderCardBtnGroup {
display: flex;
align-items: center;
column-gap: 16rpx;
}
.orderCardBtnGroupItem {
background-color: #317DFA;
color: #fff;
border: 1px solid #317DFA;
padding: 8rpx 16rpx;
border-radius: 28rpx;
}
}
</style>

View File

@ -1,22 +1,22 @@
<template>
<view class="bottoms">
<view class="box" @click="getgogo(1)" v-if="role == 'user' ">
<view class="box" :class="{active: aindex == 1}" @click="getgogo(1)" v-if="role == 'user' ">
<view class="imgs">
<image src="../../static/home.png" v-show="aindex == 1"></image>
<image src="../../static/homex.png" v-show="aindex != 1"></image>
<image src="@/static/icons/tabbar/home.png" v-show="aindex != 1"></image>
<image src="@/static/icons/tabbar/home-checked.png" v-show="aindex == 1"></image>
</view>
<view class="">首页</view>
</view>
<view class="box" @click="getgogo(8)" v-if="role == 'police' ">
<view class="box" :class="{active: aindex == 8}" @click="getgogo(8)" v-if="role == 'police' ">
<view class="imgs">
<image src="../../static/home.png" v-show="aindex == 8"></image>
<image src="../../static/homex.png" v-show="aindex != 8"></image>
<image src="@/static/icons/tabbar/home.png" v-show="aindex != 8"></image>
<image src="@/static/icons/tabbar/home-checked.png" v-show="aindex == 8"></image>
</view>
<view class="">首页</view>
</view>
<view class="box" @click="getgogo(2)">
<!-- <view class="box" @click="getgogo(2)">
<view class="imgs" style="position: relative;">
<view class="hongdian" v-if=" msgNum && msgNum != 0 ">
{{msgNum || ""}}
@ -27,21 +27,21 @@
</view>
</view>
<view class="">消息</view>
</view>
</view> -->
<!-- #ifdef APP-PLUS || H5 -->
<view class="box" @click="getgogo(3)">
<view class="box" :class="{active: aindex == 3}" @click="getgogo(3)">
<view class="imgs">
<image src="../../static/ycar.png" v-show="aindex == 3"></image>
<image src="../../static/ycarx.png" v-show="aindex != 3"></image>
<image src="@/static/icons/tabbar/car.png" v-show="aindex != 3"></image>
<image src="@/static/icons/tabbar/car-checked.png" v-show="aindex == 3"></image>
</view>
<view class="">运力</view>
</view>
<!-- #endif -->
<view class="box" @click="getgogo(4)">
<view class="box" :class="{active: aindex == 4}" @click="getgogo(4)">
<view class="imgs">
<image src="../../static/my.png" v-show="aindex == 4"></image>
<image src="../../static/myx.png" v-show="aindex != 4"></image>
<image src="@/static/icons/tabbar/my.png" v-show="aindex != 4"></image>
<image src="@/static/icons/tabbar/my-checked.png" v-show="aindex == 4"></image>
</view>
<view class="">个人中心</view>
</view>
@ -218,28 +218,38 @@
<style scoped lang="scss">
.bottoms {
width: 100%;
height: 50px;
position: fixed;
bottom: 0px;
background: #242A38;
background: #fff;
display: flex;
justify-content: space-between;
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
padding: 12rpx 40rpx;
box-sizing: border-box;
box-shadow: 4rpx 2rpx 12rpx 0 #c3c3c3;
}
.box {
width: 25%;
text-align: center;
flex: 1;
width: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: 12px;
color: #929292;
&.active {
color: #327DFB;
}
}
.imgs {
margin: 0 auto;
margin-top: 10px;
width: 18px;
height: 16px;
width: 50rpx;
height: 50rpx;
image {
width: 100%;

View File

@ -10,15 +10,15 @@
<view class="" v-if="!detailsinfo.driverInfo">
<map style="width: 100%;height: 250px;" :layer-style='5' :latitude="detailsinfo.rescueInfo.rescueLatitude"
:longitude="detailsinfo.rescueInfo.rescueLongitude" :markers="marker" :scale="scale"
@markertap="markertap" @callouttap='callouttap' @tap="tap">
:longitude="detailsinfo.rescueInfo.rescueLongitude" :markers="marker" :scale="scale" @markertap="markertap"
@callouttap='callouttap' @tap="tap">
</map>
</view>
<view class="" v-if="detailsinfo.driverInfo">
<map style="width: 100%;height: 250px;" :layer-style='5' :latitude="detailsinfo.driverInfo.driverLatitude"
:longitude="detailsinfo.driverInfo.driverLongitude" :markers="marker" :scale="scale"
@markertap="markertap" @callouttap='callouttap' @tap="tap">
:longitude="detailsinfo.driverInfo.driverLongitude" :markers="marker" :scale="scale" @markertap="markertap"
@callouttap='callouttap' @tap="tap">
</map>
</view>
@ -26,57 +26,91 @@
<view class="zzhui">
<view class="c-box">
<view class="box-title" v-if="detailsinfo.rescueInfo.rescueStatus == 1">您的订单还未开始请耐心等待</view>
<view class="box-title" v-if="detailsinfo.rescueInfo.rescueStatus == 2">您的订单处于待开始请耐心等待</view>
<view class="box-title" v-if="detailsinfo.rescueInfo.rescueStatus == 3">救援人员仍在赶来的路上请耐心等待</view>
<view class="box-title" v-if="detailsinfo.rescueInfo.rescueStatus == 5">您的订单已经完成</view>
<view class="box-title" v-if="detailsinfo.rescueInfo.rescueStatus == 6">待取车</view>
<view class="box-title" v-if="detailsinfo.rescueInfo.rescueStatus == 7">您的订单已取消</view>
<view class="box-title" v-else-if="detailsinfo.rescueInfo.rescueStatus == 7">您的订单已取消</view>
<view class="box-title" v-else-if="detailsinfo.rescueInfo.rescueStatus == 2">您的订单处于待开始请耐心等待</view>
<view v-else class="box-title" style="display: flex;column-gap: 2px;align-items: center;">
<text>{{detailsinfo.rescueInfo.driverCarNum}}</text>
<text>|</text>
<text></text>
<text>|</text>
<text></text>
</view>
<!-- <view class="box-title" style="display: flex;column-gap: 2px;align-items: center;"
v-if="detailsinfo.rescueInfo.rescueStatus == 3">
<text>{{detailsinfo.rescueInfo.driverCarNum}}</text>
<text>|</text>
<text></text>
<text>|</text>
<text></text>
</view> -->
<!-- <view class="box" v-if="detailsinfo.rescueInfo.rescueStatus == 3">
救援人员仍在赶来的路上请耐心等待
</view> -->
<!-- <view class="box-title" v-if="detailsinfo.rescueInfo.rescueStatus == 3"></view> -->
<!-- <view class="box-title" v-if="detailsinfo.rescueInfo.rescueStatus == 5">您的订单已经完成</view>
<view class="box-title" v-if="detailsinfo.rescueInfo.rescueStatus == 6">待取车</view> -->
<view class="touxiang">
<image :src=" baseUrl + detailsinfo.driverInfo.avatar " mode=""></image>
</view>
<view class="box-bs" v-if="detailsinfo.driverInfo != '' ">
<view class="orderCardStatusData" v-if="detailsinfo.rescueInfo.rescueStatus > 2">
<image src="@/static/icons/homeOrderCard/dhjl.png" class="orderCardDistanceIcon" mode="aspectFit"></image>
<text class="orderCardDistanceValue">{{detailsinfo.rescueInfo.distance / 1000 || 0}}KM</text>
&nbsp;
<image src="@/static/icons/homeOrderCard/yjsj.png" class="orderCardPredictIcon"></image>
<text class="orderCardPredictDate">{{detailsinfo.rescueInfo.needTime || 0}}分钟</text>
到达
</view>
<view class="bs-lsft">
<view class="box-dtitle">{{detailsinfo.rescueInfo.licenseNum || ''}} </view>
<view class="dix" style="margin-top: 15px; font-size: 12px;">
<text style="margin-right: 10px;">{{detailsinfo.driverInfo.realName || '司机'}}</text>
<view style="margin-right: 10px;">
<uni-icons type="star-filled" color="#FFA632" size="12"></uni-icons>
<text>{{detailsinfo.driverInfo.avgScore || 0}}</text>
<!-- <view class="box-dtitle">{{detailsinfo.rescueInfo.licenseNum || ''}} </view> -->
<view class="dix">
<text>{{detailsinfo.driverInfo.realName || '司机'}}</text>
<view>
<uni-icons type="star-filled" color="#FFA632" size="14"></uni-icons>
<text>{{(detailsinfo.driverInfo.avgScore || 0).toFixed(1)}}</text>
</view>
<text>{{detailsinfo.driverInfo.rescueNum || 0}}次救援</text>
<text>{{detailsinfo.driverInfo.rescueNum || 0}}</text>
</view>
</view>
<view class="touxiang">
<image :src=" baseUrl + avatar " mode=""></image>
<view class="box-bs-footer">
<view class="box-bs-footer-btn cancelOrderBtn">取消订单</view>
<view class="box-bs-footer-btn callDriverBtn" @click="gettel(detailsinfo.driverInfo.phonenumber)">联系司机
</view>
</view>
</view>
<view class="lanniu" v-if="detailsinfo.driverInfo != '' "
<!-- <view class="lanniu" v-if="detailsinfo.driverInfo != '' "
@click="gettel(detailsinfo.driverInfo.phonenumber)">
<uni-icons type="phone-filled" color="#ffffff" size="16"></uni-icons>
<text>拨打电话</text>
</view>
</view> -->
</view>
<view class="cont-bs" v-if="detailsinfo.setMoney != '' ">
<view class="dix">
<text>订单金额: </text>
<text style="color: #FF522A;">{{detailsinfo.setMoney / 100}}</text>
<text style="color: #000000;font-size: 32rpx;">订单金额: </text>
<text style="color: #FF522A;font-size: 32rpx;">{{detailsinfo.setMoney / 100}}</text>
<text></text>
</view>
<view class="dix">
<uni-icons type="right" size="16"></uni-icons>
<uni-icons type="right" size="16" color="#C7C7CC"></uni-icons>
</view>
</view>
<view class="c-box" style="margin-bottom: 15px;"
v-if="detailsinfo.rescueInfo.orderStatus == 3 ||detailsinfo.rescueInfo.orderStatus == 2 ">
<view class="">评价</view>
<view style="margin-top: 10px ; margin-left: 5px; ">
<u-rate :count="count" v-model="value" active-color="#ffff00" inactive-color="#b2b2b2"></u-rate>
<view style="font-size: 32rpx;color: #000;font-weight: bold" class="">评价内容</view>
<view style="margin: 20rpx 0 20rpx 0;">
<u-rate :count="count" v-model="value" active-color="#FFA632" inactive-color="#D7D7D7"></u-rate>
</view>
<u--textarea v-model="value5" v-if="detailsinfo.rescueInfo.orderStatus == 2 " placeholder="请输入内容"
<u--textarea style="background: rgba(0,0,0,0.05);border-radius: 12rpx;" v-model="value5" v-if="detailsinfo.rescueInfo.orderStatus == 2 " placeholder="请输入内容"
border="bottom"></u--textarea>
<u--textarea v-model="value5" disabled v-if="detailsinfo.rescueInfo.orderStatus == 3 " placeholder="请输入内容"
border="bottom"></u--textarea>
<u--textarea v-model="value5" disabled v-if="detailsinfo.rescueInfo.orderStatus == 3 "
placeholder="请输入内容" border="bottom"></u--textarea>
<view class="anniua" @click="pinglun()" v-if="detailsinfo.rescueInfo.orderStatus == 2 ">
<text>提交</text>
<text>提交评价</text>
</view>
</view>
<view class="cont-bs" v-if="detailsinfo.setMoney == '' ">
@ -90,14 +124,16 @@
<view class="c-box">
<view class="lan-ga" v-for="(item,index) in detailsinfo.detail" :key="index">
<view class="ga-top">
<view class="gain">{{index + 1}}</view>
<view class="">{{item.title}}</view>
<view class="ga-top-box">
<view class="ga-top">
<view class="gain">{{ String(index + 1).padStart(2, '0') }}</view>
<view class="">{{item.title}}</view>
</view>
<view class="xhui">
{{item.createTime}}
</view>
</view>
<view class="xhui" style="margin-left: 20px;">
{{item.createTime}}
</view>
<view class="beizh" style="margin-left: 20px;">
<view class="beizh" style="margin-left: 60rpx;font-size: 14px;">
{{item.remark}}
</view>
<view class="wrap-box" style="margin-left: 20px;" v-if="item.images">
@ -227,7 +263,7 @@
callout.borderWidth = '0'
callout.bgColor = 'transparent'
callout.display = 'ALWAYS'
console.log(obj);
// console.log(obj);
obj.callout = callout
arrcopy.push(obj)
if (this.detailsinfo.driverInfo) {
@ -244,7 +280,7 @@
arrcopy.push(driverPosition)
}
this.marker = arrcopy;
console.log(this.marker, "marker")
// console.log(this.marker, "marker")
})
},
async pinglun() {
@ -345,6 +381,7 @@
border-radius: 10px;
padding: 15px;
background: white;
position: relative;
}
.cont-bs {
@ -397,20 +434,21 @@
.anniua {
width: 100%;
height: 88rpx;
background: #327DFB;
border-radius: 12rpx;
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
padding: 5px 10px;
color: white;
background: #2D81FF;
border-radius: 10px;
margin-top: 10px;
margin-top: 20rpx;
}
.dix {
display: flex;
align-items: center;
column-gap: 6px;
}
.hezi-ga {
@ -471,19 +509,81 @@
.box-bs {
width: 100%;
}
.orderCardStatusData {
margin: 32rpx 0;
display: flex;
align-items: center;
justify-content: space-between;
margin: 10px auto;
column-gap: 4rpx;
font-size: 24rpx;
}
.orderCardDistanceIcon,
.orderCardPredictIcon {
width: 36rpx;
height: 36rpx;
}
.orderCardDistanceValue {
color: #919191;
margin-right: 16rpx;
}
.orderCardPredictDate {
color: #317DFA;
}
.bs-lsft {
margin: 32rpx 0;
font-weight: 400;
font-size: 28rpx;
color: #000000;
}
.box-bs-footer {
margin: 32rpx 0 0;
display: flex;
align-items: center;
justify-content: flex-end;
column-gap: 24rpx;
.box-bs-footer-btn {
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
}
&>.cancelOrderBtn {
width: 160rpx;
height: 52rpx;
border-radius: 24rpx;
border: 2rpx solid #327DFB;
color: #327DFB;
}
&>.callDriverBtn {
width: 160rpx;
height: 52rpx;
background: #327DFB;
border-radius: 24rpx;
color: #fff;
}
}
.touxiang {
width: 50px;
height: 50px;
position: absolute;
right: 20rpx;
top: 40%;
transform: translateY(-50%);
width: 90rpx;
height: 90rpx;
background: #B9B9B9;
border: 3px solid #FF924A;
border: 2px solid #fff;
border-radius: 50%;
overflow: hidden;
box-shadow: 0rpx 0rpx 8rpx 4rpx rgba(0, 0, 0, 0.2);
image {
width: 100%;
@ -576,11 +676,18 @@
border-bottom: 1px solid #EEEEEE;
}
.ga-top-box {
display: flex;
align-items: center;
justify-content: space-between;
}
.ga-top {
display: flex;
align-items: center;
color: #0D2E8D;
color: #000;
font-weight: bold;
font-size: 16px;
}
.img-box {
@ -610,9 +717,10 @@
}
.gain {
font-style: 18px;
box-sizing: border-box;
width: 60rpx;
font-size: 32rpx;
font-weight: bold;
margin-right: 10px;
color: #0D2E8D;
color: #327DFB;
}
</style>

View File

@ -50,8 +50,8 @@
}else{
uni.navigateTo({
// url:'/pages/login/login'
url: '/pages/rescue/rescue'
url:'/pages/login/login'
// url: '/pages/rescue/rescue'
// url: '/pages/rescue/trafficPolice'
})
}

View File

@ -1,39 +1,40 @@
<template>
<view class="content">
<view class="head-top">
<view class=""></view>
<view class="">消息</view>
<view class=""></view>
</view>
<view class="mubu">
<VNavigationBarVue title="消息通知"></VNavigationBarVue>
<scroll-view scroll-y @scrolltolower="scrolltolower" class="mubu">
<view class="jsy" v-if="listArr.length == 0">
<image src="http://www.nuoyunr.com/lananRsc/detection/qs.png" mode=""></image>
</view>
<!-- <view class="" @click="dianyidain()">测试方法</view> -->
<view class="bao-box" v-for="(item,index) in listArr" :key="index">
<view class="icon-lv">
<view class="hongdi" v-if="item.isRead == '0' "></view>
<image src="../../static/jiejin.png" mode=""></image>
</view>
<view class="you">
<view class="box-top">
<text class="numone">{{item.title || ''}}</text>
<text class="numthree">{{item.createTime.slice(0, -3) || ''}}</text>
<view class="noticeGroup" v-for="group in groupArr" :key="group.date">
<view class="noticeDate">{{ group.date }}</view>
<!-- <view class="" @click="dianyidain()">测试方法</view> -->
<view class="bao-box" v-for="(item,index) in group.noticeList" :key="index">
<view class="icon-lv">
<view class="hongdi" v-if="item.isRead == '0' "></view>
<image src="@/static/icons/message/notice.png" mode="aspectFit"></image>
</view>
<view class="you">
<view class="box-top">
<text class="numone">{{item.title || ''}}</text>
<!-- <text class="numthree">{{item.createTime.slice(10, -3) || ''}}</text> -->
</view>
<view class="numtwo">{{item.content || ''}}</view>
</view>
<view class="numtwo">{{item.content || ''}}</view>
</view>
</view>
</view>
</scroll-view>
<view style="width: 100%; height: 50px;"></view>
<tabBar :msg="msg"></tabBar>
<view style="width: 100%; height: 100rpx;"></view>
<tabBar msg="1"></tabBar>
</view>
</template>
<script>
import request from '../../utils/request';
import tabBar from '../../components/tabBar/tabBar.vue'
import VNavigationBarVue from '../../components/VNavigationBar.vue';
import dayjs from '../../uni_modules/uview-ui/libs/util/dayjs';
const innerAudioContext = uni.createInnerAudioContext();
export default {
@ -44,29 +45,31 @@
pageNum: 1, //
pageSize: 10, //
totalPages: 0, //
listArr: []
listArr: [],
groupArr: []
}
},
onShow() {
this.driverRescuePage()
this.getlooklook()
},
onReachBottom() {
if (this.pageNum >= this.totalPages) {
uni.showToast({
title: '没有下一页数据',
icon: 'none'
})
} else {
this.pageNum++
this.driverRescuePage()
}
},
components: {
tabBar,
VNavigationBarVue
},
methods: {
scrolltolower() {
if (this.pageNum >= this.totalPages) {
uni.showToast({
title: '没有下一页数据',
icon: 'none'
})
} else {
this.pageNum++
this.driverRescuePage()
}
},
dianyidain() {
console.log('执行了');
@ -90,8 +93,11 @@
if (res.code == 200) {
if (this.pageNum != 1) {
this.listArr = this.listArr.concat(res.rows)
this.noticeGroupByCreateTime(res.rows)
} else {
this.listArr = res.rows
this.groupArr = []
this.noticeGroupByCreateTime(this.listArr)
}
let total = res.total
@ -99,6 +105,26 @@
}
})
},
/**
* 消息通过日期分组
*/
noticeGroupByCreateTime(list) {
if (list && list.length > 0) {
list.forEach((item) => {
const day = dayjs(item.createTime).format('MM-DD HH:mm')
const find = this.groupArr.find(f => f.date === day)
if (find) {
find.noticeList.push(item)
} else {
this.groupArr.push({
date: day,
noticeList: [item]
})
}
})
}
console.log('this.groupArr: ',this.groupArr);
},
async getlooklook() {
let res = await request({
url: '/announcement/announcement/setAllRead',
@ -114,43 +140,46 @@
.content {
width: 100%;
height: calc(100vh);
background-color: #F6F6F6;
background: #F7F8FC;
box-sizing: border-box;
padding-top: 40px;
}
.head-top {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
flex-direction: column;
}
.mubu {
flex: 1;
height: 0;
width: 100%;
background-color: #F6F6F6;
background: #F7F8FC;
box-sizing: border-box;
padding: 10px;
padding: 20rpx 32rpx;
}
.noticeGroup {
display: flex;
flex-direction: column;
row-gap: 24rpx;
padding-bottom: 30rpx;
.noticeDate {
color: #929292;
font-size: 24rpx;
text-align: center;
}
}
.bao-box {
width: 100%;
background: white;
box-sizing: border-box;
padding: 15px;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
align-items: flex-start;
column-gap: 20rpx;
}
.icon-lv {
width: 40px;
height: 40px;
flex-shrink: 0;
width: 88rpx;
height: 88rpx;
border-radius: 50%;
background: #CBF0D0;
box-sizing: border-box;
padding: 10px;
position: relative;
image {
@ -163,10 +192,11 @@
position: absolute;
right: 2px;
top: 2px;
width: 6px;
height: 6px;
width: 20rpx;
height: 20rpx;
background: #FF3829;
border-radius: 50%;
z-index: 1;
}
.ddx {
@ -176,6 +206,11 @@
.you {
width: 80%;
background: #FFFFFF;
box-shadow: 0rpx 4rpx 8rpx 0rpx rgba(0,0,0,0.06);
border-radius: 16rpx;
border: 2rpx solid rgba(50,125,251,0.05);
padding: 26rpx 34rpx;
}
.box-top {
@ -186,25 +221,22 @@
}
.numone {
font-size: 14px;
font-size: 32rpx;
font-family: Microsoft YaHei;
font-weight: 400;
color: #000000;
}
.numtwo {
font-size: 16px;
color: #666666;
margin-top: 10px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
font-size: 28rpx;
color: #929292;
margin-top: 4rpx;
}
.numthree {
font-size: 14px;
font-weight: 400;
color: #999999;
font-size: 24rpx;
color: #929292;
}
.jsy {

View File

@ -1,17 +1,12 @@
<template>
<view class="centenr">
<view class="c-top">
<view class="top-icon" @click="getback()">
<uni-icons type="left" size="18"></uni-icons>
<view class="">返回</view>
</view>
<view class="">数据统计</view>
<view style="width: 10%; height: 100%; "></view>
</view>
<view class="distap">
<view class="tapbox" :class="{'act' : tapindex == index }" v-for="(item,index) in typeList" :key="index"
@click="gettapindex(index,item.type)">
{{item.name}}
<v-navigation-bar-vue title="数据统计"></v-navigation-bar-vue>
<view class="queryDate">
<text>日期</text>
<view class="dateForm" @click="() => dateModalVisible = true">
<text v-if="!startDate" class="placeholder">开始日期</text>
<text v-else>{{ startDate }}</text>
<image class="dateFormIcon" src="../../static/icons/statisticsinfo/rili@2x.png" mode="aspectFit"></image>
</view>
</view>
<view class="ail">
@ -30,12 +25,23 @@
</view>
</view>
</view>
<tab-bar msg="1"></tab-bar>
<view>
<u-calendar show-confirm @close="dateClose" @confirm="dateChange" :show="dateModalVisible" mode="single"></u-calendar>
</view>
</view>
</template>
<script>
import request from '../../utils/request';
import tabBar from '../../components/tabBar/tabBar.vue'
import VNavigationBarVue from '../../components/VNavigationBar.vue';
export default {
components: {
tabBar,
VNavigationBarVue
},
data() {
return {
dataList: [],
@ -54,13 +60,25 @@
},
],
type: 'day'
type: 'day',
dateModalVisible: false,
startDate: ''
}
},
onShow() {
this.getDataList()
},
methods: {
dateChange(e) {
if (e && e.length > 0) {
this.startDate = e[0]
}
console.log('e: ',e);
this.dateModalVisible = false
},
dateClose() {
this.dateModalVisible = false
},
getback() {
uni.navigateBack()
},
@ -87,42 +105,62 @@
<style scoped lang="scss">
.centenr {
background-color: #f7f7f7;
height: 100vh;
display: flex;
flex-direction: column;
height: 100%;
}
.c-top {
width: 100%;
height: 88px;
display: flex;
align-items: center;
justify-content: space-between;
background-color: white;
}
.top-icon {
.queryDate {
padding: 26rpx 32rpx;
background-color: #317DFA;
color: #fff;
display: flex;
align-items: center;
column-gap: 30rpx;
.dateForm {
flex: 1;
width: 0;
background: #FFFFFF;
border-radius: 12rpx;
padding: 14rpx 20rpx;
display: flex;
align-items: center;
justify-content: space-between;
color: #000;
.placeholder {
color: #C0C4CD;
font-size: 24rpx;
}
.dateFormIcon {
width: 36rpx;
height: 36rpx;
}
}
}
.ail {
flex: 1;
height: 0;
overflow: auto;
width: 100%;
box-sizing: border-box;
padding: 10px;
padding: 10rpx 34rpx 120rpx;
background-color: #f7f7f7;
}
.san_ {
width: 100%;
box-sizing: border-box;
padding: 10px;
display: flex;
align-items: center;
justify-content: space-around;
background-color: white;
border-radius: 8px;
margin: 10px 0px;
background: #F7F8FC;
box-shadow: 0rpx 4rpx 8rpx 0rpx rgba(0,0,0,0.05);
border-radius: 16rpx;
border: 2rpx solid rgba(50,125,251,0.05);
backdrop-filter: blur(20px);
}
.s_box {
@ -130,15 +168,18 @@
}
.title_ {
font-size: 16px;
padding: 16rpx;
text-align: center;
background: #fff;
color: #333;
}
.nums {
padding: 26rpx;
font-size: 16px;
text-align: center;
font-weight: bold;
color: #003bbc;
// font-weight: bold;
color: #327DFB;
}
.distap {

View File

@ -1,53 +1,61 @@
<template>
<view>
<view class="c-top">
<view class="top-icon" @click="getback()">
<uni-icons type="left" size="18"></uni-icons>
<view class="">返回</view>
</view>
<view class="">车辆管理</view>
<view style="width: 10%; height: 100%; "></view>
</view>
<view class="ail">
<view class="_box" v-for="(item,index) in carList" :key="index" @click="goupdata(item.id)">
<view class="img_">
<image :src="baseUrl+item.carImage" mode=""></image>
</view>
<view class="right_">
<view class="right-top" style="justify-content: space-between;">
<view class="cph">{{item.rescueCarNum}}</view>
<!-- <view class="title_">{{item.rescueCarTypeStr}}</view> -->
<u-tag type="success" :text="item.rescueCarTypeStr"></u-tag>
<u-tag :text="item.rescueCarBrand"></u-tag>
<!-- <view class="size_">{{item.rescueCarBrand}}</view> -->
<view class="carManageContent">
<VNavigationBar class="navigationBar" title="车辆管理">
<template v-slot:extra>
<uni-icons size="28" type="plus" color="#fff" @click="goupdata('')"></uni-icons>
</template>
</VNavigationBar>
<scroll-view class="carManangeScrollView" scroll-y @scrolltolower="scrolltolower">
<view class="ail">
<view class="_box" v-for="(item,index) in carList" :key="index" @click="goupdata(item.id)">
<view class="_box-content">
<view class="img_">
<image :src="baseUrl+item.carImage" mode="aspectFill"></image>
</view>
<view class="right_">
<view class="cphInfo" style="">
<image class="cphIcon" src="../../static/icons/carManage/carNumIcon.png" mode="aspectFit"></image>
<view class="cph">{{item.rescueCarNum}}</view>
</view>
<view class="right-top">
<view class="timesize">保养到期时间:</view>
<view class="time">{{item.carKeepTime}}</view>
</view>
<view class="right-top">
<view class="timesize">保险到期时间:</view>
<view class="time">{{item.carInsuranceTime}}</view>
</view>
<view class="right-top">
<view class="timesize">年检到期时间:</view>
<view class="time">{{item.carCheckTime}}</view>
</view>
</view>
</view>
<view class="right-top">
<view class="timesize">保养到期时间:</view>
<view class="time">{{item.carKeepTime}}</view>
</view>
<view class="right-top">
<view class="timesize">保险到期时间:</view>
<view class="time">{{item.carInsuranceTime}}</view>
</view>
<view class="right-top">
<view class="timesize">年检到期时间:</view>
<view class="time">{{item.carCheckTime}}</view>
<view class="_box-footer">
<view class="tag">{{item.rescueCarTypeStr}}</view>
<view class="tag">{{item.rescueCarBrand}}</view>
</view>
</view>
</view>
</view>
<view class="anniu" @click="goupdata('')">
</scroll-view>
<tabBar msg="1"></tabBar>
<!-- <view class="anniu" @click="goupdata('')">
<u-icon name="plus" color="#fff" size="34"></u-icon>
</view>
</view> -->
</view>
</template>
<script>
import request from '../../utils/request'
import VNavigationBar from '@/components/VNavigationBar.vue'
import tabBarVue from '../../components/tabBar/tabBar.vue'
export default {
components: {
VNavigationBar,
tabBarVue
},
data() {
return {
baseUrl: this.$baseUrl,
@ -61,18 +69,18 @@
onShow() {
this.getCarList()
},
onReachBottom() {
if (this.carList.length >= this.totalNum) {
uni.showToast({
title: '没有下一页数据',
icon: 'none'
})
} else {
this.pageNum++
this.getCarList()
}
},
methods: {
scrolltolower() {
if (this.carList.length >= this.totalNum) {
uni.showToast({
title: '没有下一页数据',
icon: 'none'
})
} else {
this.pageNum++
this.getCarList()
}
},
getback() {
uni.navigateBack()
},
@ -107,13 +115,16 @@
</script>
<style scoped lang="scss">
.c-top {
width: 100%;
height: 88px;
.carManageContent {
height: 100%;
display: flex;
align-items: center;
justify-content: space-between;
flex-direction: column;
background-color: #F7F8FC;
}
.carManangeScrollView {
flex: 1;
height: 0;
}
.top-icon {
@ -129,17 +140,28 @@
._box {
width: 100%;
border-bottom: 1px solid #d8d8d8;
box-sizing: border-box;
padding: 10px 0px;
display: flex;
padding: 50rpx 46rpx;
background: #FFFFFF;
box-shadow: 0rpx 4rpx 8rpx 0rpx rgba(0, 0, 0, 0.06);
border-radius: 16rpx;
margin: 24rpx 0;
}
._box-content {
display: flex;
align-items: center;
justify-content: space-between;
column-gap: 32rpx;
}
.img_ {
width: 100px;
height: 100px;
width: 196rpx;
height: 196rpx;
background: #D8D8D8;
border-radius: 16rpx;
overflow: hidden;
// border: 2rpx solid #979797;
image {
width: 100%;
@ -152,35 +174,53 @@
}
.cphInfo {
display: flex;
align-items: center;
column-gap: 10rpx;
margin-bottom: 18rpx;
}
.cphIcon {
width: 100rpx;
height: 44rpx;
}
.cph {
font-weight: 500;
font-size: 32rpx;
color: #000000;
line-height: 1.5;
}
.right-top {
width: 100%;
display: flex;
align-items: center;
margin-bottom: 5px;
font-size: 28rpx;
color: #000000;
margin: 10rpx 0 0;
}
.title_ {
font-size: 16px;
font-weight: bold;
._box-footer {
display: flex;
align-items: center;
justify-content: flex-end;
column-gap: 40rpx;
padding-top: 22rpx;
}
.cph {
font-size: 16px;
color: #0796ef;
}
.size_ {
font-size: 16px;
}
.timesize {
font-size: 16px;
margin-right: 5px;
color: #a6a6a6;
}
.time {
font-size: 16px;
.tag {
width: 104rpx;
height: 48rpx;
display: flex;
align-items: center;
justify-content: center;
background: rgba(70, 190, 55, 0.1);
border-radius: 4rpx;
font-size: 24rpx;
color: #30B922;
line-height: 1;
}
.anniu {

View File

@ -1,88 +1,102 @@
<template>
<view>
<view class="c-top">
<view class="top-icon" @click="getback()">
<uni-icons type="left" size="18"></uni-icons>
<view class="">返回</view>
<view class="carManageFormContent">
<v-navigation-bar title="新增车辆"></v-navigation-bar>
<view class="body">
<view class="ail">
<view class="dis_">
<view class="">车辆类型</view>
<view class="right_" @click="show= true">{{carInfo.rescueCarTypeStr||'请选择'}}</view>
</view>
<view class="dis_">
<view class="">车牌号</view>
<view class="right_"> <input placeholder-class="inputPlaceholder" type="text" placeholder="请输入"
v-model="carInfo.rescueCarNum" /> </view>
</view>
<view class="dis_">
<view class="">品牌型号</view>
<view class="right_"> <input placeholder-class="inputPlaceholder" placeholder="请输入" type="text"
v-model="carInfo.rescueCarBrand" /> </view>
</view>
<view class="dis_">
<view class="">车辆图片</view>
<view class="rightImg">
<u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic1" name="1" :maxCount="1">
<view class="uploadBtn">
<image class="uploadBtnIcon" src="/static/icons/carManage/image.png" mode="aspectFit"></image>
</view>
</u-upload>
</view>
</view>
<view class="dis_">
<view class="">行驶证</view>
<view class="rightImg">
<u-upload :fileList="fileList2" @afterRead="afterRead2" @delete="deletePic2" name="2" :maxCount="1">
<view class="uploadBtn">
<image class="uploadBtnIcon" src="/static/icons/carManage/image.png" mode="aspectFit"></image>
</view>
</u-upload>
</view>
</view>
<view class="dis_">
<view class="">购买时间</view>
<view class="right_" @click="seletTime('buy')">{{carInfo.carBuyTime||'请选择'}}
</view>
</view>
<view class="dis_">
<view class="">保养到期时间</view>
<view class="right_" @click="seletTime('by')"> {{carInfo.carKeepTime||'请选择'}}
</view>
</view>
<view class="dis_">
<view class="">保险到期时间</view>
<view class="right_" @click="seletTime('bx')"> {{carInfo.carInsuranceTime||'请选择'}}
</view>
</view>
<view class="dis_">
<view class="">年检到期时间</view>
<view class="right_" @click="seletTime('nj')">{{carInfo.carCheckTime||'请选择'}}
</view>
</view>
<view class="dis_">
<view class="">车牌颜色</view>
<view class="right_" @click="carColorShow = true">{{carInfo.carLicenseColorStr||'请选择'}}
</view>
</view>
<view class="dis_">
<view class="">车架号</view>
<view class="right_"> <input placeholder-class="inputPlaceholder" placeholder="请输入" type="text"
v-model="carInfo.frameNumber" />
</view>
</view>
<view class="bo_dis">
<!-- <u-button type="error" v-if="carId" @click="delItem()" text="删除"></u-button> -->
<view class="deleteBtn" v-if="carId" @click="delItem()">删除</view>
<view class="saveBtn" @click="saveOrUpdate" >保存</view>
</view>
</view>
</view>
<view class="">编辑</view>
<view style="width: 10%; height: 100%; "></view>
<tab-bar-vue msg="1"></tab-bar-vue>
<view>
<u-picker :show="show" :columns="jycType" keyName="dictLabel" @confirm="confirm" @cancel="cancel"></u-picker>
<u-picker :show="carColorShow" :columns="licenseColor" keyName="dictLabel" @confirm="confirmClor"
@cancel="cancel"></u-picker>
<u-datetime-picker :show="showtime" mode="date" @confirm="confirmtime"
@cancel="showtime = false"></u-datetime-picker>
</view>
<view class="ail">
<view class="dis_">
<view class="">车辆类型</view>
<view class="right_" @click="show= true">{{carInfo.rescueCarTypeStr||'请选择车辆类型'}}</view>
</view>
<view class="dis_">
<view class="">车牌号</view>
<view class="right_"> <input type="text" v-model="carInfo.rescueCarNum" /> </view>
</view>
<view class="dis_">
<view class="">品牌型号</view>
<view class="right_"> <input type="text" v-model="carInfo.rescueCarBrand" /> </view>
</view>
<view class="dis_">
<view class="">车辆图片</view>
<view class="rightImg">
<u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic1" name="1"
:maxCount="1"></u-upload>
</view>
</view>
<view class="dis_">
<view class="">行驶证</view>
<view class="rightImg">
<u-upload :fileList="fileList2" @afterRead="afterRead2" @delete="deletePic2" name="2"
:maxCount="1"></u-upload>
</view>
</view>
<view class="dis_">
<view class="">购买时间</view>
<view class="right_" @click="seletTime('buy')">{{carInfo.carBuyTime||'请选择购买时间'}}
</view>
</view>
<view class="dis_">
<view class="">保养到期时间</view>
<view class="right_" @click="seletTime('by')"> {{carInfo.carKeepTime||'请选择保养到期时间'}}
</view>
</view>
<view class="dis_">
<view class="">保险到期时间</view>
<view class="right_" @click="seletTime('bx')"> {{carInfo.carInsuranceTime||'请选择保险到期时间'}}
</view>
</view>
<view class="dis_">
<view class="">年检到期时间</view>
<view class="right_" @click="seletTime('nj')">{{carInfo.carCheckTime||'请选择年检到期时间'}}
</view>
</view>
<view class="dis_">
<view class="">车牌颜色</view>
<view class="right_" @click="carColorShow = true">{{carInfo.carLicenseColorStr||'请选择车牌颜色'}}
</view>
</view>
<view class="dis_">
<view class="">车架号</view>
<view class="right_"> <input type="text" v-model="carInfo.frameNumber" />
</view>
</view>
</view>
<view class="bo_dis">
<u-button type="error" v-if="carId" @click="delItem()" text="删除"></u-button>
<u-button type="primary" @click="saveOrUpdate" text="保存"></u-button>
</view>
<u-picker :show="show" :columns="jycType" keyName="dictLabel" @confirm="confirm" @cancel="cancel"></u-picker>
<u-picker :show="carColorShow" :columns="licenseColor" keyName="dictLabel" @confirm="confirmClor"
@cancel="cancel"></u-picker>
<u-datetime-picker :show="showtime" mode="date" @confirm="confirmtime"
@cancel="showtime = false"></u-datetime-picker>
</view>
</template>
<script>
import request from '../../utils/request';
import upload from '@/utils/upload.js'
import VNavigationBar from '@/components/VNavigationBar.vue'
import tabBarVue from '../../components/tabBar/tabBar.vue'
export default {
components: {
VNavigationBar,
tabBarVue
},
data() {
return {
show: false,
@ -286,14 +300,12 @@
},
async saveOrUpdate() {
if (this.imageList1.length > 0) {
this.carInfo.carImage = this.imageList1[0]
}
if (this.imageList2.length > 0) {
this.carInfo.driveLicenseImage = this.imageList2[0]
}
if (!this.carId) {
request({
url: "/system/rescueCar",
@ -316,6 +328,7 @@
method: 'put',
data: this.carInfo
}).then(res => {
console.log('res: ',res);
uni.showToast({
title: "保存成功"
@ -381,52 +394,76 @@
</script>
<style scoped lang="scss">
.c-top {
width: 100%;
height: 88px;
.carManageFormContent {
height: 100%;
display: flex;
align-items: center;
justify-content: space-between;
flex-direction: column;
background: #F7F8FC;
}
.top-icon {
display: flex;
align-items: center;
.body {
flex: 1;
height: 0;
padding-bottom: 100rpx;
overflow: auto;
}
.ail {
box-sizing: border-box;
padding: 10px;
padding: 32rpx;
}
.dis_ {
width: 100%;
background: #FFFFFF;
border-radius: 16rpx;
border: 2rpx solid rgba(0, 0, 0, 0.05);
display: flex;
align-items: center;
justify-content: space-between;
font-size: 16px;
margin: 10px auto;
border-bottom: 1px solid #e6e6e6;
box-sizing: border-box;
padding-bottom: 10px;
padding: 32rpx 38rpx;
color: #000;
font-size: 28rpx;
font-weight: 500;
}
.right_ {
color: #666;
font-weight: normal;
color: #929292;
font-size: 24rpx;
width: 55%;
text-align: right;
input {
width: 100%;
}
/deep/ .inputPlaceholder {
color: #929292;
font-size: 24rpx;
}
}
.uploadBtn {
width: 120rpx;
height: 120rpx;
background: #F7F8FC;
display: flex;
align-items: center;
justify-content: center;
}
.uploadBtnIcon {
width: 44rpx;
height: 44rpx;
}
.rightImg {
color: #666;
width: 25%;
// width: 25%;
text-align: right;
}
@ -436,6 +473,28 @@
align-items: center;
justify-content: space-around;
box-sizing: border-box;
padding: 10px;
column-gap: 20rpx;
}
.deleteBtn {
background: rgb(245,108,108);
width: 686rpx;
height: 88rpx;
border-radius: 12rpx;
color: #FFF;
font-size: 28rpx;
display: flex;
align-items: center;
justify-content: center;
}
.saveBtn {
width: 686rpx;
height: 88rpx;
background: #327DFB;
border-radius: 12rpx;
color: #FFF;
font-size: 28rpx;
display: flex;
align-items: center;
justify-content: center;
}
</style>

View File

@ -2,13 +2,16 @@
<template>
<view class="content">
<view class="top-icon">
<view class="h-text" @click="getback()">返回</view>
<view class="s-input">
<uni-icons type="search" color=" #999999" size="16"></uni-icons>
<input type="text" placeholder="搜索我的订单">
<view class="content-header">
<VNavigationBarVue title="我的订单"></VNavigationBarVue>
<view class="top-icon">
<view class="s-input">
<uni-icons type="search" color="#8E8E93" size="16"></uni-icons>
<input v-model="searchText" type="text" placeholder="搜索我的订单">
<uni-icons @click="searchText = ''" type="clear" color="#8E8E93"></uni-icons>
</view>
<view class="h-text">搜索</view>
</view>
<view class="h-text">搜索</view>
</view>
<view class="top-tap">
<view class="tap-box" :class="{'cc' : gindex == item.id }" v-for="(item,index) in arrtap" :key="index"
@ -22,7 +25,8 @@
<image src="../../static/quesheng.png" mode=""></image>
</view>
<view class="boxt" v-for="(item,index) in orderList" :key="index" @click="godetail(item.id)">
<order-card-vue v-for="(item,index) in orderList" :key="index" :orderData="item"></order-card-vue>
<!-- <view class="boxt" v-for="(item,index) in orderList" :key="index" @click="godetail(item.id)">
<view class="boxt-left">
<view class="left-lan">
<view class="">{{item.rescueTypeStr}}</view>
@ -57,33 +61,45 @@
<view class="">联系司机</view>
</view>
</view>
</view>
</view> -->
<view style="width: 100%; height: 60px;"></view>
</view>
<tabBar></tabBar>
<tabBar :msg="1"></tabBar>
</view>
</template>
<script>
import tabBar from '../../components/tabBar/tabBar.vue'
import VNavigationBarVue from '../../components/VNavigationBar.vue';
import OrderCardVue from '../../components/orderCard/OrderCard.vue';
import request from '../../utils/request';
export default {
data() {
return {
//
searchText: '',
gindex: 1,
orderList: [],
orderList: [
// {
// rescueTypeStr: '',
// rescuePosition: '18',
// rescueStatus: 2,
// rescueStatusStr: '',
// driverName: '',
// driverCarNum: 'E69752',
// distance: 12800,
// needTime: 26,
// rescueTime: '2024-08-12 08:42'
// }
],
total: 0,
pageNum: 1, //
pageSize: 10, //
totalPages: 0, //
arrtap: [{
text: '救援中',
id: 1
},
{
text: '待支付',
id: 2
},
@ -92,19 +108,26 @@
id: 3
},
{
text: '待评价',
id: 4
text: '救援中',
id: 1
},
{
text: '已完成',
id: 5
},
{
text: '待评价',
id: 4
}
],
arrbox: []
}
},
components: {
tabBar,
VNavigationBarVue,
OrderCardVue
},
onLoad(option) {
this.gindex = option.id
@ -155,11 +178,6 @@
})
},
getback() {
uni.navigateBack({
delta: 1,
})
},
getindex(index) {
this.orderList = []
this.gindex = index
@ -174,9 +192,12 @@
.content {
width: 100%;
height: calc(100vh);
background-color: #F6F6F6;
background-color: #F7F8FC;
box-sizing: border-box;
padding-top: 45px;
}
.content-header {
background-color: #327DFB;
}
.top-icon {
@ -184,7 +205,6 @@
width: 100%;
padding: 5px 14px;
background: white;
display: flex;
justify-content: space-between;
align-items: center;
@ -192,21 +212,30 @@
}
.dil {
background-color: #F6F6F6;
background-color: #F7F8FC;
box-sizing: border-box;
padding: 15px 12px;
display: flex;
flex-direction: column;
row-gap: 10px;
}
.h-text {
font-size: 14px;
font-weight: 400;
color: #999999;
width: 124rpx;
height: 56rpx;
background: rgba(255, 255, 255, 0.2);
border-radius: 28rpx;
font-size: 28rpx;
color: #FFFFFF;
display: flex;
align-items: center;
justify-content: center;
}
.s-input {
width: 78%;
height: 30px;
background: #F3F3F3;
height: 56rpx;
background: #fff;
border-radius: 50px;
box-sizing: border-box;
display: flex;
@ -215,35 +244,42 @@
input {
margin-left: 5px;
width: 80%;
flex: 1;
width: 0;
font-size: 14px;
color: #999999;
}
}
.top-tap {
width: 100%;
background: white;
background: #327DFB;
display: flex;
align-items: center;
box-sizing: border-box;
padding-top: 5px;
}
.tap-box {
width: 20%;
font-size: 15px;
font-size: 28rpx;
font-weight: 400;
color: #666666;
color: #fff;
text-align: center;
position: relative;
padding-top: 24rpx;
padding-bottom: 24rpx;
}
.gang {
width: 80%;
height: 5px;
margin: 0 auto;
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: 0;
width: 60%;
height: 6rpx;
border-radius: 12px;
background: linear-gradient(87deg, #B6E1FF 0%, #339DFF 100%);
background: linear-gradient(87deg, #fff 0%, #fff 100%);
}
.d-box {

View File

@ -1,82 +1,85 @@
<!-- 发起订单 -->
<template>
<view class="content">
<VNavigationBarVue :title="title"></VNavigationBarVue>
<view class="dil">
<view class="top-icon" @click="getback()">
<uni-icons type="left" size="18"></uni-icons>
</view>
<view style="color: #000;font-size: 34rpx;font-weight:bold;padding: 24rpx 0;">救援地址</view>
<!-- 发起救援 头部-->
<view class="top">
<!-- -->
<view class="top-box">
<view class="tb-left">
<view class="uicon" style="background:#2A96FE; ">
<text></text>
</view>
<view style="width: 100%;">
<view class="text1" v-show="four == ''" v-if="rescueType != 5">请选择救援地址</view>
<view class="text1" v-show="four == ''" v-if="rescueType == 5">请选择扣车地址</view>
<view class="text1" v-show="four != ''">{{province}}{{city}}{{area}}</view>
<view class="hong1" v-show="four == ''">*必填请填写详细地址</view>
<view class="hong2" v-show="four != ''">
<input type="text" style="width: 100%;" :placeholder="four">
<view style="flex: 1;width: 0;">
<!-- -->
<view class="top-box">
<view class="tb-left">
<image class="uicon" src="@/static/icons/initiate/start.png" mode="aspectFit"></image>
<view @click="getmap()" style="width: 100%;">
<view class="text1" v-show="four == ''" v-if="rescueType != 5">请选择救援地址</view>
<view class="text1" v-show="four == ''" v-if="rescueType == 5">请选择扣车地址</view>
<view class="text1" v-show="four != ''">{{province}}{{city}}{{area}}</view>
<view class="hong1" v-show="four == ''">*必填请填写详细地址</view>
<view class="hong2" v-show="four != ''">
<input type="text" style="width: 100%;" :placeholder="four">
</view>
</view>
</view>
<!-- <view class="tb-right" @click="getmap()">
<image src="../../static/dingwei.png" mode=""></image>
</view> -->
</view>
<view class="tb-right" @click="getmap()">
<image src="../../static/dingwei.png" mode=""></image>
</view>
</view>
<!-- -->
<view class="top-box" v-if="rescueType == 1" style="border-top:1px solid #EAEAEA;">
<view class="tb-left">
<view class="uicon">
<text></text>
</view>
<view style="width: 100%; overflow: hidden; ">
<view class="text1" v-show="four1 == ''">请选择终点地址</view>
<view class="text1" v-show="four1 != ''">{{province1}}{{city1}}{{area1}}</view>
<!-- <view class="hong1" v-show="four1 == ''">*必填请填写详细地址</view> -->
<view class="hong2" v-show="four1 != ''">
<input type="text" :placeholder="four1">
<!-- -->
<view class="top-box" v-if="rescueType == 1" style="border-top:1px solid #EAEAEA;">
<view class="tb-left">
<image class="uicon" src="@/static/icons/initiate/end.png" mode="aspectFit"></image>
<view @click="getmap1()" style="width: 100%; overflow: hidden; ">
<view class="text1" v-show="four1 == ''">请选择终点地址</view>
<view class="text1" v-show="four1 != ''">{{province1}}{{city1}}{{area1}}</view>
<view class="hong1" v-show="four1 == ''">*必填请填写详细地址</view>
<view class="hong2" v-show="four1 != ''">
<input type="text" :placeholder="four1">
</view>
</view>
</view>
</view>
<view class="tb-right" @click="getmap1()">
<image src="../../static/dingwei.png" mode=""></image>
<!-- <view class="tb-right" @click="getmap1()">
<image src="../../static/dingwei.png" mode=""></image>
</view> -->
</view>
</view>
<image class="start-end" src="@/static/icons/initiate/qiehuan.png" mode="aspectFit"></image>
</view>
<view style="color: #000;font-size: 34rpx;font-weight: bold;padding: 24rpx 0;">救援信息</view>
<!-- 填空 -->
<view class="tinput" @click="show = true" v-if="isAppointment == 1">
<view class="text1"> <text class="hong1">*</text> 预约时间</view>
<view class="you">
<text>{{rescueTime}}</text>
<view class="jyxx">
<view class="jyxx-tinput" @click="show = true" v-if="isAppointment == 1">
<view class="text1"> <text class="hong1">*</text> 预约时间</view>
<view class="you">
<text>{{rescueTime}}</text>
</view>
</view>
</view>
<view class="tinput">
<view class="text1"> 联系人</view>
<view class="you">
<input type="text" placeholder="请输入联系人" v-model="connectionName">
<view class="jyxx-tinput">
<view class="text1"><text class="hong1">*</text> 联系人</view>
<view class="you">
<input type="text" placeholder-style="color: #929292;font-size:24rpx" placeholder="请输入联系人"
v-model="connectionName">
</view>
</view>
</view>
<view class="tinput">
<view class="text1"> 手机号</view>
<view class="you">
<input type="text" placeholder="请输入手机号" v-model="connectionPhone">
<view class="jyxx-tinput">
<view class="text1"><text class="hong1">*</text> 手机号</view>
<view class="you">
<input type="text" placeholder-style="color: #929292;font-size:24rpx" placeholder="请输入手机号"
v-model="connectionPhone">
</view>
</view>
</view>
<view class="tinput">
<view class="text1"> 车牌号</view>
<view class="you">
<input type="text" placeholder="请输入车牌号" v-model="licenseNum">
<view class="jyxx-tinput">
<view class="text1"><text class="hong1">*</text> 车牌号</view>
<view class="you">
<input type="text" placeholder-style="color: #929292;font-size:24rpx" placeholder="请输入车牌号"
v-model="licenseNum">
</view>
</view>
</view>
<view class="tinput" @click="shows = true" v-if="rescueType == 5">
<view class="text1"> <text class="hong1">*</text> 扣车地点</view>
<view class="you">
<text>{{kcname || ''}}</text>
<view class="jyxx-tinput" @click="shows = true" v-if="rescueType == 5">
<view class="text1"> <text class="hong1">*</text> 扣车地点</view>
<view class="you">
<text>{{kcname || ''}}</text>
</view>
</view>
</view>
<view class="xinput">
@ -97,18 +100,18 @@
</view>
</view>
</view>
<view class="tinput">
<view class="text1"> 现场描述</view>
<view class="you">
<input type="text" placeholder="请输入备注" v-model="rescueDetail">
</view>
</view>
<view class="tinput">
<view class="text1"> 现场图片</view>
<view class="you">
<!-- <input type="text" placeholder="请输入现场图片"> -->
<text>请上传现场图片</text>
<text style="color: #929292;font-size: 24rpx">上传图片</text>
</view>
</view>
<view class="tinput">
<view class="text1"> 备注</view>
<view class="you">
<input type="text" placeholder-style="color: #929292;font-size: 24rpx" placeholder="添加备注" v-model="rescueDetail">
</view>
</view>
<!-- 上传图片 -->
@ -119,18 +122,21 @@
<view class="anniu" @click="postadd()">
<text>发起</text>
<text>发起救援</text>
</view>
<view style="width: 100%; height: 60px;"></view>
</view>
<u-picker :show="shows" :columns="columns" @confirm="confirmm" @cancel="cancelm" keyName="dictValue"></u-picker>
<view class="">
<u-picker :show="shows" :columns="columns" @confirm="confirmm" @cancel="cancelm" keyName="dictValue"></u-picker>
</view>
<tabBar></tabBar>
<tabBar msg="1"></tabBar>
</view>
</template>
<script>
import tabBar from '../../components/tabBar/tabBar.vue'
import VNavigationBarVue from '../../components/VNavigationBar.vue'
import request from '../../utils/request'
import config from '@/config'
import upload from '@/utils/upload.js'
@ -197,10 +203,30 @@
columns: [
],
title: '救援'
}
},
onLoad(option) {
this.rescueType = option.id
switch (option.id) {
case '1':
this.title = '拖车'
break;
case '2':
this.title = '送油'
break;
case '3':
this.title = '搭电'
break;
case '4':
this.title = '换胎'
break;
case '5':
this.title = '扣车'
break;
default:
break;
}
this.newtwo()
this.isAppointment = option.isAppointment
this.role = uni.getStorageSync('role')
@ -211,6 +237,7 @@
},
components: {
tabBar,
VNavigationBarVue
},
methods: {
newtwo() {
@ -499,17 +526,18 @@
<style scoped lang="scss">
.content {
width: 100%;
height: calc(100vh);
background-color: #F6F6F6;
height: 100%;
box-sizing: border-box;
padding-top: 45px;
}
.top-icon {
margin-bottom: 15px;
background: #F7F8FC;
display: flex;
flex-direction: column;
row-gap: 10rpx;
}
.dil {
flex: 1;
height: 0;
overflow: auto;
box-sizing: border-box;
background-color: #F6F6F6;
padding: 0px 12px;
@ -518,8 +546,17 @@
.top {
box-sizing: border-box;
padding: 0px 15px;
width: 100%;
background-color: white;
background: #FFFFFF;
border-radius: 16rpx;
border: 2rpx solid rgba(50, 125, 251, 0.05);
display: flex;
align-items: center;
column-gap: 28rpx;
.start-end {
width: 44rpx;
height: 44rpx;
}
}
.top-box {
@ -534,20 +571,12 @@
height: 100%;
width: 85%;
display: flex;
align-items: center;
align-items: flex-start;
}
.uicon {
width: 18px;
height: 18px;
border-radius: 4px;
color: white;
background: orangered;
display: flex;
justify-content: center;
align-items: center;
font-size: 12px;
font-weight: bold;
width: 44rpx;
height: 44rpx;
margin-right: 6px;
}
@ -562,16 +591,16 @@
}
.text1 {
font-size: 16px;
font-size: 28rpx;
color: #000;
font-weight: bold;
color: #363636;
}
.hong1 {
margin-top: 5px;
font-size: 12px;
font-weight: 400;
color: #FF5453;
color: #D42424;
}
.hong2 {
@ -586,6 +615,37 @@
}
}
.jyxx {
background: #FFFFFF;
border-radius: 16rpx;
border: 2rpx solid rgba(50, 125, 251, 0.05);
padding: 14rpx 38rpx;
}
.jyxx-tinput {
display: flex;
align-items: center;
justify-content: space-between;
column-gap: 12rpx;
padding: 24rpx 0;
border-bottom: 2rpx solid rgba(151, 151, 152, 0.20);
&:last-child {
border: none;
}
.text1 {
font-size: 28rpx;
color: #000;
font-weight: bold;
}
.you {
flex: 1;
width: 0;
}
}
.tinput {
width: 100%;
display: flex;
@ -599,10 +659,13 @@
.xinput {
width: 100%;
background: white;
box-sizing: border-box;
padding: 16px;
padding: 36rpx;
margin-top: 14px;
background: #FFFFFF;
border-radius: 16rpx;
border: 2rpx solid rgba(50,125,251,0.05);
}
.you {
@ -616,33 +679,35 @@
}
.kuang {
width: 38px;
height: 23px;
background: #ECECEC;
width: 92rpx;
height: 50rpx;
font-size: 24rpx;
color: #327DFB;
border-radius: 5px;
border: 2rpx solid #327DFB;
display: flex;
justify-content: center;
align-items: center;
color: #666666;
font-size: 14px;
margin-right: 15px;
margin-right: 24rpx;
border-radius: 24rpx;
}
.xlan {
background: #CDE7FF !important;
color: #1D62FF !important;
border: 1px solid #2A96FE;
background: #327DFB;
border: 2rpx solid #327DFB;
color: #fff;
}
.anniu {
width: 100%;
background: linear-gradient(105deg, #FFE3AC 0%, #F3BA60 98%);
height: 40px;
height: 88rpx;
display: flex;
justify-content: center;
align-items: center;
color: #542F0E;
border-radius: 4px;
margin-top: 20px;
color: #fff;
margin-top: 30rpx;
background: #327DFB;
border-radius: 12rpx;
}
</style>

View File

@ -1,124 +1,229 @@
<!-- 选择页 -->
<template>
<view class="content">
<v-navigation-bar-vue title="立即救援"></v-navigation-bar-vue>
<view class="bil">
<view class="top-icon" @click="getback()">
<uni-icons type="left" size="18"></uni-icons>
<view class="">返回</view>
</view>
<view class="top-white">
请选择您需要的业务
</view>
<view class="box">
<view class="xz-box" id="y1" @click="getsx(1)">
<template v-for="(item, index) in busiTypeList">
<view v-if="index !== 4 || role[0] == 'jjdd'" :key="index" class="xz-box" :class="{ checked: busiType === index + 1 }" @click="getsx(index + 1)">
<image class="xz-box-icon" :src="item.icon" mode="aspectFit"></image>
<view class="box-wenzi">{{item.label}}</view>
<view class="checkedFlag">
</view>
<!-- <uni-icons type="plus"></uni-icons> -->
<uni-icons class="checkedFlagIcon" type="checkmarkempty" size="22" color="#fff"></uni-icons>
</view>
</template>
<!-- <view class="xz-box" :class="{ checked: busiType === 1 }" id="y1" @click="getsx(1)">
<image class="xz-box-icon" src="@/static/icons/order/tuoche.png" mode="aspectFit"></image>
<view class="box-wenzi">拖车</view>
</view>
<view class="xz-box" id="y2" @click="getsx(2)">
</view> -->
<!-- <view class="xz-box" :class="{ checked: busiType === 2 }" id="y2" @click="getsx(2)">
<image class="xz-box-icon" src="@/static/icons/order/songyou.png" mode="aspectFit"></image>
<view class="box-wenzi">送油</view>
</view>
<view class="xz-box" id="y3" @click="getsx(3)">
<view class="xz-box" :class="{ checked: busiType === 3 }" id="y3" @click="getsx(3)">
<image class="xz-box-icon" src="@/static/icons/order/dadian.png" mode="aspectFit"></image>
<view class="box-wenzi">搭电</view>
</view>
<view class="xz-box" id="y4" @click="getsx(4)">
<view class="xz-box" :class="{ checked: busiType === 4 }" id="y4" @click="getsx(4)">
<image class="xz-box-icon" src="@/static/icons/order/huantai.png" mode="aspectFit"></image>
<view class="box-wenzi">换胎</view>
</view>
<view class="xz-box" v-if="role[0] == 'jjdd' " id="y5" @click="getsx(5)">
<view class="xz-box" :class="{ checked: busiType === 5 }" v-if="role[0] == 'jjdd' " id="y5" @click="getsx(5)">
<view class="box-wenzi">扣车</view>
</view>
</view> -->
</view>
<!-- <view class="anniu" @click="goindex()">
<!-- <view class="anniu" @click="goindex()">
<view class="">立即进入</view>
</view> -->
</view>
<tabBar></tabBar>
<view class="submitBtn" @click="hanleOkBusiType">下一步</view>
</view>
<tabBar msg="1"></tabBar>
</view>
</template>
<script>
import request from '../../utils/request';
import tabBar from'../../components/tabBar/tabBar.vue'
export default{
data(){
return{
sx1:true,
sx2:false,
isAppointment:'',
role:'',
import tabBar from '../../components/tabBar/tabBar.vue'
import VNavigationBarVue from '../../components/VNavigationBar.vue';
export default {
data() {
return {
sx1: true,
sx2: false,
isAppointment: '',
role: '',
busiType: '',
busiTypeList: [{
label: '拖车',
icon: require('@/static/icons/order/tuoche.png')
},
{
label: '送油',
icon: require('@/static/icons/order/songyou.png')
},
{
label: '搭电',
icon: require('@/static/icons/order/dadian.png')
},
{
label: '换胎',
icon: require('@/static/icons/order/huantai.png')
},
{
label: '扣车',
icon: require('@/static/icons/order/tuoche.png')
},
]
}
},
components:{
components: {
tabBar,
VNavigationBarVue
},
onLoad(option) {
this.isAppointment = option.isAppointment
this.role = uni.getStorageSync('role')
this.role = uni.getStorageSync('role')
},
methods:{
getback(){
uni.navigateBack({
delta:1,
})
},
getsx(id){
uni.navigateTo({
url:'/pages/rescue/initiate?id='+id+'&isAppointment='+this.isAppointment
methods: {
getback() {
uni.navigateBack({
delta: 1,
})
},
goindex(){
getsx(id) {
this.busiType = id
// uni.navigateTo({
// url: '/pages/rescue/initiate?id=' + id + '&isAppointment=' + this.isAppointment
// })
},
hanleOkBusiType() {
uni.navigateTo({
url:'/pages/index/index'
url: '/pages/rescue/initiate?id=' + this.busiType + '&isAppointment=' + this.isAppointment
})
},
goindex() {
uni.navigateTo({
url: '/pages/index/index'
})
}
}
}
</script>
<style scoped lang="scss">
.content{
.content {
width: 100%;
height: calc(100vh);
background: white;
background: #F7F8FC;
display: flex;
flex-direction: column;
}
.bil{
.bil {
flex: 1;
height: 0;
box-sizing: border-box;
padding: 18px;
padding-top: 50px;
padding: 30rpx 36rpx;
overflow: auto;
padding-bottom: 120rpx;
}
.top-icon{
.top-icon {
display: flex;
color: #999999;
margin-bottom: 25px;
}
.top-white{
.top-white {
color: #333333;
font-size: 19px;
font-weight: bold;
// margin-top: 40px;
}
.box{
.box {
box-sizing: border-box;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.xz-box{
height: 80px;
width: 48%;
.xz-box {
width: 330rpx;
height: 396rpx;
background: #FFFFFF;
box-shadow: 0rpx 4rpx 8rpx 0rpx rgba(0, 0, 0, 0.06);
border-radius: 16rpx;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
font-size: 16px;
font-weight: 400;
color: #FFFFFF;
background-size: cover;
background-position: center;
margin-top: 20px;
margin-top: 36rpx;
transition: all ease 400ms;
overflow: hidden;
.checkedFlagIcon {
display: none;
}
&.checked {
box-sizing: border-box;
position: relative;
border: 2rpx solid #478AFA;
.checkedFlag {
background-color: #478AFA;
width: 120rpx;
height: 120rpx;
position: absolute;
right: -60rpx;
bottom: -60rpx;
transform: rotate(45deg);
z-index: 1;
}
.checkedFlagIcon {
display: inline-block;
position: absolute;
z-index: 2;
bottom: 0;
right: 0;
}
}
.xz-box-icon {
width: 130rpx;
height: 130rpx;
margin-bottom: 26rpx;
}
.box-wenzi {
font-size: 28rpx;
color: #000000;
}
}
.anniu{
.submitBtn {
margin-top: 30rpx;
background: #327DFB;
border-radius: 12rpx;
padding: 24rpx;
text-align: center;
color: #fff;
font-size: 32rpx;
}
.anniu {
background: linear-gradient(105deg, #FFE3AC 0%, #F3BA60 98%);
display: flex;
justify-content: center;
@ -131,19 +236,24 @@
height: 45px;
margin-top: 40px;
}
#y1{
background-image: url('../../static/tc.png');
}
#y2{
background-image: url('../../static/sy.png');
}
#y3{
background-image: url('../../static/dd.png');
}
#y4{
background-image: url('../../static/ht.png');
}
#y5{
background-image: url('../../static/kc.png');
}
// #y1 {
// background-image: url('../../static/tc.png');
// }
// #y2 {
// background-image: url('../../static/sy.png');
// }
// #y3 {
// background-image: url('../../static/dd.png');
// }
// #y4 {
// background-image: url('../../static/ht.png');
// }
// #y5 {
// background-image: url('../../static/kc.png');
// }
</style>

View File

@ -1,8 +1,8 @@
<!-- 道路救援 首页-->
<template>
<view class="content">
<view class="dil">
<!-- 顶部 -->
<!-- 顶部 -->
<view class="content-top">
<view class="top-two">
<view class="top-left">
<view class="left1">
@ -15,31 +15,59 @@
<!-- #ifdef APP-PLUS || H5 -->
<view class="top-right">
<view class="">
<uni-icons type="location-filled" color="#4282D8" size="16"></uni-icons>
<uni-icons type="location-filled" color="#fff" size="16"></uni-icons>
</view>
<view class="">{{positionInfo}}</view>
</view>
<!-- #endif -->
</view>
<view class="top-menu">
<view class="top-menu-item" :key="index" v-for="(item, index) in topMenuList" @click="goToMenuPage(item)">
<image class="top-menu-item-icon" :src="item.icon" mode="aspectFit"></image>
<text>{{ item.title }}</text>
</view>
</view>
</view>
<view class="dil">
<!-- 四个选项 -->
<!-- #ifdef APP-PLUS || H5 -->
<view class="four-box-header">
<text class="four-box-header-title">我的订单</text>
<view class="four-box-header-extra">
<text style="color: #929292;">待评价</text>
<uni-icons type="right" color="#929292"></uni-icons>
</view>
</view>
<view class="four-box">
<view class="boxf" @click="goToOrder(2)">
<view class="zi1">待支付</view>
<view class="zi2">{{dzfNum}}</view>
<view class="zi1">
<image class="zi1-icon" src="@/static/icons/homeOrderCard/dzf.png" mode="aspectFit"></image>
<text>待支付</text>
</view>
</view>
<view class="boxf1" @click="goToOrder(3)">
<view class="zi1">待取车</view>
<view class="zi2">{{dqcNum }}</view>
<view class="zi1">
<image class="zi1-icon" src="@/static/icons/homeOrderCard/dqc.png" mode="aspectFit"></image>
<text>待取车</text>
</view>
</view>
<view class="boxf2" @click="goToOrder(1)">
<view class="zi1">救援中</view>
<view class="zi2">{{jyzNum}}</view>
<view class="zi1">
<image class="zi1-icon" src="@/static/icons/homeOrderCard/jyz.png" mode="aspectFit"></image>
<text>救援中</text>
</view>
</view>
<view class="boxf3" @click="goToOrder(5)">
<view class="zi1">已完成</view>
<view class="zi2">{{ywcNum }}</view>
<view class="zi1">
<image class="zi1-icon" src="@/static/icons/homeOrderCard/ywc.png" mode="aspectFit"></image>
<text>已完成</text>
</view>
</view>
</view>
<view class="yijian">
@ -75,14 +103,14 @@
<!-- 标签切换 -->
<view class="box-tap">
<!-- <view class="box-tap">
<view class="tap-left">
<view class="left-img1" @click="getone()" v-if="one == true">
<image src="../../static/jyz.png" mode=""></image>
<view class="gang"></view>
</view>
<view class="zi3" style="margin-right: 20px;" v-if="one == false" @click="getone()">救援中</view>
<view class="zi3" style="margin-right: 20px;" v-if="one == false" @click="getone()">救援中</view> -->
<!-- <view class="left-img1" v-if="one == false" @click="getone()">
<image src="../../static/jyls.png" mode=""></image>
@ -90,7 +118,7 @@
</view> -->
<!-- <view class="zi3" @click="getone()" v-if="one == true">救援历史</view> -->
</view>
<!-- </view>
<view class="tap-right" @click="gohistory()">
<view class="zi3">
历史订单
@ -99,12 +127,23 @@
<uni-icons color: #666666; type="right" size="18"></uni-icons>
</view>
</view>
</view> -->
<view class="four-box-header">
<text class="four-box-header-title">救援推荐</text>
<view class="four-box-header-extra" @click="gohistory()">
<text style="color: #929292;">历史订单</text>
<uni-icons type="right" color="#929292"></uni-icons>
</view>
</view>
<view class="tap-box">
<view class="ques" v-if="orderList.length== 0 ">
<image src="../../static/quesheng.png" mode=""></image>
</view>
<view class="boxt" v-for="(item,index) in orderList" :key="index">
<view style="display: flex;flex-direction: column;row-gap: 10px;" v-else>
<order-card @deleteOk="deleteOrderHandle" @refresh="getlist" v-for="(item, index) in orderList" :key="index" :orderData="item"></order-card>
</view>
<!-- <view class="boxt" v-for="(item,index) in orderList" :key="index">
<view class="boxt-left" @click="godetail(item.id)">
<view class="left-lan">
<view class="">{{item.rescueTypeStr}}</view>
@ -133,8 +172,6 @@
<view class="zhtai">
<view class="">{{item.rescueStatusStr}}</view>
</view>
<!-- v-if="role[0] == 'ddzx'" -->
<view class="dianhua" v-if="role == 'ddzx' && item.rescueStatus <= 2 ">
<view>
<view @click="getzhipai(item.id)" style="margin-bottom: 20px;" class="">指派司机</view>
@ -150,9 +187,8 @@
</view>
<view class="">联系司机</view>
</view>
</view>
</view>
</view> -->
</view>
<!-- 一键救援 -->
@ -162,7 +198,6 @@
</view>
<u-modal :show="showDelete" :title="title" :showCancelButton="true" @confirm="confirm"
@cancel="cancel"></u-modal>
<u-picker :show="show" :columns="columns" @confirm="confirms" @cancel="cancels" keyName="realName"></u-picker>
<u-popup :show="showp" @close="close" @open="open" mode="center" :round="10">
<scroll-view scroll-y style="height: 200px;">
<view class="box_">
@ -185,19 +220,41 @@
import {
getToken
} from '@/utils/auth'
// #ifdef APP
const keepAlivePlugin = uni.requireNativePlugin('Ba-KeepAlive')
const jyJPush = uni.requireNativePlugin('JY-JPush');
// #endif
import OrderCard from '@/components/orderCard/OrderCard.vue'
// import { getWeather } from'../../utils/Weather'
export default {
data() {
return {
topMenuList: [
{
title: '我的订单',
path: '/pages/rescue/historylist?id=1',
icon: require('@/static/icons/homeTopMenu/icon_tenement.png')
},
{
title: '车辆管理',
path: '/pages/my/carManage',
icon: require('@/static/icons/homeTopMenu/icon_clean.png')
},
{
title: '数据统计',
path: '/pages/my/StatisticsInfo',
icon: require('@/static/icons/homeTopMenu/icon_maintain.png')
},
{
title: '消息通知',
path: '/pages/message/message',
icon: require('@/static/icons/homeTopMenu/icon_fitment.png')
}
],
msgSocket: this.$msgSocket,
showp: false,
title: '是否确认删除',
content: '是否确认删除',
show: false,
id: '',
did: '',
dqcNum: 0,
dzfNum: 0,
jyzNum: 0,
@ -211,7 +268,19 @@
pageNum: 1, //
pageSize: 10, //
totalPages: 0, //
orderList: [],
orderList: [
// {
// rescueTypeStr: '',
// rescuePosition: '18',
// rescueStatus: 2,
// rescueStatusStr: '',
// driverName: '',
// driverCarNum: 'E69752',
// distance: 12800,
// needTime: 26,
// rescueTime: '2024-08-12 08:42'
// }
],
sjlist: [],
showDelete: false,
arrbox: [
@ -226,7 +295,6 @@
dataResult: "",
type: undefined
},
columns: [],
one: true,
warnList: []
@ -237,6 +305,7 @@
this.$startMsgSocket(uni.getStorageSync('userId'))
this.register()
this.jyPushStart()
console.log(require('@/static/icons/homeTopMenu/icon_tenement.png'), "require");
},
onShow() {
this.timeWeekFormat()
@ -261,6 +330,7 @@
},
components: {
tabBar,
OrderCard
},
methods: {
jyPushStart() {
@ -322,6 +392,14 @@
})
}
},
/**
* 导航菜单跳转
*/
goToMenuPage(item) {
uni.navigateTo({
url: item.path
})
},
isRunning() { //
keepAlive.isRunning((res) => {
console.log('保活服务验证', res);
@ -346,6 +424,11 @@
console.log('保活注册', res);
});
},
deleteOrderHandle() {
this.pageNum = 1
this.orderList = []
this.getlist()
},
getWarnList() {
this.warnList = []
request({
@ -358,37 +441,6 @@
}
})
},
deleteId(id) {
this.showDelete = true
this.did = id
return
},
confirm() {
request({
url: "/app/rescueInfo/delRescueInfo?id=" + this.did,
method: 'post',
}).then(res => {
if (res.code == 200) {
uni.showToast({
title: "删除成功"
})
this.pageNum = 1
this.orderList = []
this.getlist()
}
})
this.showDelete = false
},
cancel() {
console.log("取消");
this.showDelete = false
},
goToOrder(type) {
uni.navigateTo({
url: '/pages/rescue/historylist?id=' + type
@ -404,46 +456,6 @@
url: '/pages/rescue/initiate?id=' + id + '&isAppointment=' + this.isAppointment
})
},
getsjlist() {
this.columns = []
//
request({
url: '/app/rescueInfo/driverInMap?searchValue=',
method: 'get',
}).then((res) => {
this.columns.push(res.data)
})
},
getzhipai(id) {
this.getsjlist()
this.id = id
this.show = true
},
confirms(e) {
console.log(e);
let data = {
rescueId: this.id,
driverId: e.value[0].id
}
request({
url: '/system/rescueInfo/designateDriver',
method: 'post',
params: data
}).then((res) => {
console.log('确认司机', res);
if (res.code == 200) {
uni.showToast({
title: '指派成功'
})
this.orderList = []
this.getlist()
}
})
this.show = false
},
cancels() {
this.show = false
},
Fourhammers() {
request({
@ -565,14 +577,19 @@
.content {
width: 100%;
height: calc(100vh);
background-color: #F6F6F6;
background-color: #F7F8FC;
}
.dil {
background-color: #F6F6F6;
background-color: #F7F8FC;
box-sizing: border-box;
padding: 45px 12px;
padding: 0 40rpx;
}
.content-top {
padding: 90rpx 40rpx 0;
background-color: #327DFB;
}
.top-two {
@ -622,22 +639,49 @@
align-items: center;
font-size: 14px;
font-weight: 400;
color: #4282D8;
color: #fff;
}
.four-box {
margin-top: 15px;
width: 100%;
.top-menu {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
padding: 42rpx 0 32rpx;
}
.top-menu-item {
color: #fff;
display: flex;
flex-direction: column;
align-items: center;
row-gap: 12rpx;
}
.top-menu-item-icon {
width: 60rpx;
height: 60rpx;
}
.four-box-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 34rpx 0;
}
.four-box-header-title {
font-weight: bold;
}
.four-box-header-extra {
font-size: 24rpx;
}
.four-box {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 24rpx;
// margin-top: 15px;
width: 100%;
}
.ques {
width: 80%;
margin: 10px auto;
margin: 0 auto;
image {
width: 100%;
@ -645,69 +689,66 @@
}
.boxf {
margin-top: 6px;
height: 84px;
width: 49%;
height: 140rpx;
overflow: hidden;
box-sizing: border-box;
border-radius: 6px;
padding: 12px;
background-image: url('../../static/dzf.png');
background-image: url('~@/static/images/homeOrderCard/dzf.png');
background-size: cover;
background-position: center;
}
.boxf1 {
margin-top: 6px;
height: 84px;
width: 49%;
overflow: hidden;
box-sizing: border-box;
border-radius: 6px;
padding: 12px;
background-image: url('../../static/dpq.png');
background-image: url('~@/static/images/homeOrderCard/dqc.png');
background-size: cover;
background-position: center;
}
.boxf2 {
margin-top: 6px;
height: 84px;
width: 49%;
overflow: hidden;
box-sizing: border-box;
border-radius: 6px;
padding: 12px;
background-image: url('../../static/zxz.png');
background-image: url('~@/static/images/homeOrderCard/jyz.png');
background-size: cover;
background-position: center;
}
.boxf3 {
margin-top: 6px;
height: 84px;
width: 49%;
overflow: hidden;
box-sizing: border-box;
border-radius: 6px;
padding: 12px;
background-image: url('../../static/yyd.png');
background-image: url('~@/static/images/homeOrderCard/ywc.png');
background-size: cover;
background-position: center;
}
.zi1 {
font-size: 16px;
font-weight: bold;
color: #FFFFFF;
font-size: 24rpx;
color: #333;
display: flex;
align-items: center;
column-gap: 10rpx;
.zi1-icon {
width: 38rpx;
height: 38rpx;
}
}
.zi2 {
width: 100%;
text-align: center;
font-size: 26px;
font-size: 40rpx;
font-weight: bold;
color: #FFFFFF;
color: #000;
}
.box-tap {
@ -755,8 +796,6 @@
}
.tap-box {
margin-top: 24px;
background-color: #F6F6F6;
}
.boxt {
@ -894,9 +933,9 @@
border-radius: 10px;
height: 40px;
font-size: 16px;
background: #F3BA60;
color: #542F0E;
margin-top: 22px;
background: #327DFB;
color: #fff;
margin-top: 30rpx;
}
.y-left {
@ -906,7 +945,7 @@
width: 100%;
height: 100%;
border-radius: 10px;
background: #FFE3AC;
background: #327DFB;
}
.y-right {

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 954 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 857 B