first commit

This commit is contained in:
编码猿
2024-09-27 01:32:49 +08:00
commit 28ebe05a64
7399 changed files with 1174529 additions and 0 deletions

View File

@@ -0,0 +1 @@
86ca9e1b-50f8-49c1-b175-c3fb37ae22d5

View File

@@ -0,0 +1 @@
192dd0ec-36dc-4a1d-ad84-db32568e1472

View File

@@ -0,0 +1 @@
deb33626-7f7d-43df-9a4d-19e721e9f683

View File

@@ -0,0 +1,261 @@
// view/logistics/appLogistics/appLogistics.js
const app = getApp();
const util = app.loadUtils("util")
const regeneratorRuntime = app.loadAsync()
const model = app.loadModel("index")
const http = app.loadHttp()
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "申请加入小马哥", //头部标题
isBack: true,//显示返回
sex: 0,//性别
updateImg: [],//图片
dateAdd: [],//省市区数据
dateName: '',//显示选择的省市区
dateValue: [0, 0, 0],//省市区下表
},
// 性别选择
onChange(e) {
if (e.detail.key === this.key) {
return wx.showModal({
title: 'No switching is allowed',
showCancel: !1,
})
}
this.setData({
sex: e.detail.key,
})
},
// 选择图片
ChooseImage(e) {
let type = e.currentTarget.dataset.type
let arr = this.data.updateImg
wx.chooseImage({
count: 1, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album'], //从相册选择
success: (res) => {
const tempFilePaths = res.tempFilePaths
http.http.uploadFile(tempFilePaths[0])
.then(res => {
let rel = JSON.parse(res.data)
arr[type] = rel.data
this.setData({
updateImg: arr
})
})
}
});
},
// 联动的列发生改变
bindMultiPickerColumnChange: function (e) {
let column = e.detail.column,
value = e.detail.value,
dateAdd = this.data.dateAdd,
dateValue = this.data.dateValue;
switch (column) {
case 0:
dateValue[0] = value
dateValue[1] = 0
dateValue[2] = 0
this.getDistrict({ pid: dateAdd[column][value].id, level: 'city' })
break;
case 1:
dateValue[1] = value
dateValue[2] = 0
this.getDistrict({ pid: dateAdd[column][value].id, level: 'district' })
break;
case 2:
dateValue[2] = value
break;
default:
break;
}
this.setData({
dateValue: dateValue
})
},
// 选择省市区
bindDateChange: function (e) {
let dateAdd = this.data.dateAdd, value = e.detail.value;
this.setData({
dateName: dateAdd[0][value[0]].name + dateAdd[1][value[1]].name + dateAdd[2][value[2]].name + '',
dateValue: value
})
},
// 获取联动
async getDistrict(parameter = {}) {
let dateAdd = this.data.dateAdd;
if (!parameter.level) {
parameter = {
pid: 1,
level: 'province'
}
}
let res = await http.http.request2({ url: `${http.api.getDistrict}`, method: 'POST', data: parameter })
if (res.data.status == 1) {
let rel = res.data.data
switch (parameter.level) {
case 'province':
dateAdd[0] = rel
this.getDistrict({ pid: rel[0].id, level: 'city' })
break;
case 'city':
dateAdd[1] = rel
this.getDistrict({ pid: rel[0].id, level: 'district' })
break;
case 'district':
dateAdd[2] = rel
break;
default:
break;
}
this.setData({
dateAdd: dateAdd
})
}
},
// 提交from
async submit(e) {
let value = e.detail.value,
sex = this.data.sex,
updateImg = this.data.updateImg,
dateName = this.data.dateName,
dateAdd = this.data.dateAdd,
dateValue = this.data.dateValue;
if (value.name == '') {
model.msg.dataMsg({
content: "请输入姓名",
type: "warning"
})
return
} else if (value.id == '') {
model.msg.dataMsg({
content: "请输入身份证",
type: "warning"
})
return
} else if (value.age == '') {
model.msg.dataMsg({
content: "请输入年龄",
type: "warning"
})
return
} else if (!(/^[1]([3-9])[0-9]{9}$/.test(parseInt(value.tel)))) {
model.msg.dataMsg({
content: "请输入正确的手机号",
type: "warning"
})
return
} else if (value.id == '') {
model.msg.dataMsg({
content: "请输入身份证",
type: "warning"
})
return
} else if (dateName == '') {
model.msg.dataMsg({
content: "请选择区域",
type: "warning"
})
return
} else if (value.detail == '') {
model.msg.dataMsg({
content: "请输入街道或社区",
type: "warning"
})
return
} else if (!updateImg[0]) {
model.msg.dataMsg({
content: "请上传身份证正面照",
type: "warning"
})
return
} else if (!updateImg[1]) {
model.msg.dataMsg({
content: "请上传身份证反面照",
type: "warning"
})
return
}
let data = {
cardId: value.id,
proviceId: dateAdd[0][dateValue[0]].id,
cityId: dateAdd[1][dateValue[1]].id,
areaId: dateAdd[2][dateValue[2]].id,
villageId: 0,
sex: sex + 1,
realname: value.name,
zmImg: updateImg[0],
fmImg: updateImg[1],
age: 0,
phone: value.tel,
}
let res = await http.http.request2({ url: `${http.api.apply}`, method: "POST", data: data })
if (res.data.status == 1) {
wx.redirectTo({
url: '/view/logistics/appLogistics/inApplication/inApplication'
})
}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.getDistrict()
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,5 @@
{
"usingComponents": {
"wux-segmented-control": "../../../extend/wux/dist/segmented-control/index"
}
}

View File

@@ -0,0 +1,95 @@
<!-- 头部 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}"></nav-bar>
<!-- view/logistics/appLogistics/appLogistics.wxml -->
<view class="appLogistics">
<view class="applog-bac">
<image class="applog-bac-img" mode="widthFix" src="http://cdn.yishaxiyi.com/afe349ecd5a329573547637704c703f1.png" />
</view>
<form bindsubmit="submit">
<view class="list_text pd30 mt20">
<view class="text_row">
<view class="text_row1 flex-con2">姓名</view>
<view class="text_row2 flex-con2">
<input placeholder-style="color:#cccccc;" maxlength="16" name="name" type="text" value="" placeholder="请输入您的真实姓名" />
</view>
<view class="text_row3 flex-con3"></view>
</view>
<view class="text_row">
<view class="text_row1 flex-con2">身份证</view>
<view class="text_row2 flex-con2">
<input placeholder-style="color:#cccccc;" maxlength="18" name="id" type="idcard" value="" placeholder="请输入您的身份证号" />
</view>
<view class="text_row3 flex-con3"></view>
</view>
<view class="text_row">
<view class="text_row1 flex-con2">年龄</view>
<view class="text_row2 flex-con2">
<input placeholder-style="color:#cccccc;" maxlength="2" name="age" type="number" value="" placeholder="请输入您的真实年龄" />
</view>
<view class="text_row3 flex-con3"></view>
</view>
<view class="text_row">
<view class="text_row1 flex-con2">手机</view>
<view class="text_row2 flex-con2">
<input placeholder-style="color:#cccccc;" maxlength="11" name="tel" type="number" value="" placeholder="请输入您的手机号" />
</view>
<view class="text_row3 flex-con3"></view>
</view>
<view class="text_row">
<view class="text_row1 flex-con2">性别</view>
<view class="text_row2 flex-con2">
<wux-segmented-control style="width:260rpx;" current="{{ sex }}" theme="balanced" values="{{ ['男', '女'] }}" bind:change="onChange" />
</view>
<view class="text_row3 flex-con3"></view>
</view>
<picker mode="multiSelector" value="{{dateValue}}" range-key="name" range="{{dateAdd}}" bindchange="bindDateChange" bindcolumnchange="bindMultiPickerColumnChange">
<view class="text_row">
<view class="text_row1 flex-con2">区域</view>
<view class="text_row2 flex-con2">
<input placeholder-style="color:#cccccc;" type="text" value="{{dateName}}" placeholder="请选择您所在的区域" disabled="{{true}}" />
</view>
<view class="text_row3 flex-con3">
<image src="/static/img/icon/rthyrthertherth.png" />
</view>
</view>
</picker>
<view class="text_row">
<view class="text_row1 flex-con2">详情</view>
<view class="text_row2 flex-con2">
<input placeholder-style="color:#cccccc;" name="detail" type="text" value="" placeholder="输入街道或社区" />
</view>
<view class="text_row3 flex-con3"></view>
</view>
</view>
<view class="list_text_p">
<view class="list_text_tit">上传身份证照片</view>
<view class="list_text_tit_img">
<view class="pr10 dis-flex flex1" data-type="0" bind:tap="ChooseImage">
<view wx:if="{{!!updateImg[0]}}" class="dis-flex flex1 updateImg">
<image class="flex1" src="{{updateImg[0]}}" />
</view>
<view wx:else class="flex-con3 flex1 update-all">
<view class="update">
<image class="update-icon" src="/static/img/icon/update-icon.png" />
<view class="update-text">上传身份证正面照</view>
</view>
</view>
</view>
<view class="pr10 dis-flex flex1" data-type="1" bind:tap="ChooseImage">
<view wx:if="{{!!updateImg[1]}}" class="dis-flex flex1 updateImg">
<image class="flex1" src="{{updateImg[1]}}" />
</view>
<view wx:else class="flex-con3 flex1 update-all">
<view class="update">
<image class="update-icon" src="/static/img/icon/update-icon.png" />
<view class="update-text">上传身份证反面照</view>
</view>
</view>
</view>
</view>
</view>
<button class="sub" form-type="submit">提交申请</button>
</form>
</view>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,169 @@
/* view/logistics/appLogistics/appLogistics.wxss */
page {
background-color: #fff !important;
}
.applog-bac-img {
width: 100%;
}
.list_text {
background-color: #fff;
}
.text_row {
display: flex;
height: 100rpx;
width: 100%;
border-bottom: 2rpx solid #ebebeb;
}
.text_row1 {
flex: 2;
font-size: 30rpx;
font-weight: 400;
font-stretch: normal;
letter-spacing: 0px;
color: #333;
}
.text_row2 {
/* padding-left: 40rpx; */
flex: 7;
font-size: 32rpx;
font-weight: normal;
font-stretch: normal;
letter-spacing: 0px;
color: #666;
}
.text_row2 span {
font-family: PingFang-SC-Medium;
font-size: 32rpx;
font-weight: normal;
font-stretch: normal;
letter-spacing: 0px;
color: #ccc;
display: -webkit-box !important;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
}
.text_row3 {
flex: 1;
}
.text_row3 image {
width: 15rpx;
height: 33rpx;
}
/* .text_row:last-child {
border: 0;
} */
.label-1__text, .label-2__text {
display: inline-block;
vertical-align: middle;
height: 100%;
width: 50%;
}
.label-1__icon {
position: relative;
margin-right: 10px;
display: inline-block;
vertical-align: middle;
width: 18px;
height: 18px;
background: #fcfff4;
}
.label-1__icon-checked {
position: absolute;
top: 3px;
left: 3px;
width: 12px;
height: 12px;
background: #1aad19;
}
.label-2__icon {
position: relative;
display: inline-block;
vertical-align: middle;
margin-right: 10px;
width: 18px;
height: 18px;
border: #ebebeb solid 2rpx;
background: #fff;
border-radius: 50px;
}
.label-2__icon-checked {
position: absolute;
left: 50%;
top: 50%;
margin: -6px 0 0 -6px;
width: 12px;
height: 12px;
background: #1aad19;
border-radius: 50%;
}
.label-4_text {
text-align: center;
margin-top: 15px;
}
.list_text_tit{
margin-top: 35rpx;
font-size: 30rpx;
font-weight: 700;
font-stretch: normal;
letter-spacing: 0px;
color: #333;
padding-left: 30rpx;
}
.list_text_tit_img{
margin-top: 60rpx;
padding: 0 30rpx;
width: 100%;
display: flex;
height: 214rpx;
}
.update-all{
background-color: #f2f2f2;
border-radius: 10rpx;
}
.update{
text-align: center;
}
.update-icon{
width: 50rpx;
height: 50rpx;
}
.update-text{
font-family: PingFang-SC-Regular;
font-size: 26rpx;
font-weight: 400;
font-stretch: normal;
color: #999999;
}
.updateImg{
max-width: 100%;
height: 100%;
}
.updateImg image{
width: 100%;
height: 214rpx;
}
.sub{
margin-bottom: 50rpx;
}

View File

@@ -0,0 +1 @@
c34e0b29-b1ea-4989-8ea8-5bf3fa718a48

View File

@@ -0,0 +1,69 @@
// view/logistics/appLogistics/inApplication/inApplication.js
const app = getApp();
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "申请中", //头部标题
isBack: true,//显示返回
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,12 @@
<!-- 头部 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}"></nav-bar>
<!-- view/logistics/appLogistics/inApplication/inApplication.wxml -->
<view class="wardrobeInfo">
<view class="wardrobeInfo_suo">
<image src="/static/img/success-icon.png" />
</view>
<view class="wardrobeInfo_tit">申请成功</view>
<view class="wardrobeInfo_tit1">正在审核中,我们会在3个工作日内给您来电,请耐心等待...</view>
</view>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,34 @@
/* view/logistics/appLogistics/inApplication/inApplication.wxss */
page{
background-color: #ffffff !important;
height: 100%;
}
.wardrobeInfo{
width: 660rpx;
margin: 130rpx auto 0;
}
.wardrobeInfo_suo{
display: block;
text-align: center;
}
.wardrobeInfo_suo image{
width: 231rpx;
height: 231rpx;
}
.wardrobeInfo_tit{
margin-top: 70rpx;
font-family: PingFang-SC-Medium;
font-size: 45rpx;
color: #333333;
font-weight: 400;
text-align: center;
}
.wardrobeInfo_tit1{
width: 511rpx;
margin: 0 auto;
margin-top: 40rpx;
font-family: PingFang-SC-Regular;
font-size: 32rpx;
text-align: center;
color: #666666;
}

View File

@@ -0,0 +1 @@
b8798211-bba6-4ffb-91bc-52627ab94469

View File

@@ -0,0 +1,183 @@
// view/logistics/logistics/logistics.js
const app = getApp();
const regeneratorRuntime = app.loadAsync()
const model = app.loadModel("index")
const http = app.loadHttp()
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "物流中心", //头部标题
isBack: true,//显示返回
isLoading: true,//加载显示关闭
topTab: false,//物流状态
orderList: [//物流状态列表数据
{
type: 0,
img: "/static/img/wl-djd.png",
name: "待接单",
num: 0,
status: 1
}, {
type: 1,
img: "/static/img/wl-yjd.png",
name: "已接单",
num: 0,
status: 3
}, {
type: 2,
img: "/static/img/wl-sh.png",
name: "待送回",
num: 0,
status: 7
}, {
type: 2,
img: "/static/img/wl-ysd.png",
name: "已送达",
num: 0,
status: 10
}, {
type: 3,
img: "/static/img/wl-wc.png",
name: "已完成",
num: 0,
status: 8
}
],
logPerInfo: {},//物流个人信息
tabStatus: "",//物流人员当日的状态
},
// 显示和关闭
_topTab() {
this.setData({
topTab: !this.data.topTab
})
},
// 跳转到订单列表
goOrderList(e) {
let item = e.currentTarget.dataset.item
if (!!item) {
wx.navigateTo({
url: "/view/logistics/orderList/orderList?stateId=" + JSON.stringify(item)
})
} else {
wx.navigateTo({
url: "/view/logistics/orderList/orderList"
})
}
},
// 获取物流人员的信息
async logisticsOrderTong() {
let orderList = this.data.orderList
let res = await http.http.request2({ url: `${http.api.logisticsOrderTong}`, method: "POST" })
let rel = res.data.data
orderList.map((v, i) => {
switch (i) {
case 0:
orderList[i].num = rel.count.onready
break;
case 1:
orderList[i].num = rel.count.ready
break;
case 2:
orderList[i].num = rel.count.onreturn
break;
case 3:
orderList[i].num = rel.count.over
break;
case 4:
orderList[i].num = rel.count.allover
break;
default:
break;
}
})
this.setData({
logPerInfo: rel,
orderList: orderList
})
},
// 物流人员状态查询和更改
async logisticsStatus(status = "") {
let data = {}
if (status != "") {
data.status = status
}
let res = await http.http.request2({ url: `${http.api.logisticsStatus}`, method: "POST", data: data })
let upData = {
isLoading: false
}
if (!!res.data.data.status) {
upData.tabStatus = res.data.data.status
}
this.setData(upData)
},
// 切换状态
tabStatus(e) {
let type = e.currentTarget.dataset.type
this.logisticsStatus(type)
this._topTab()
this.setData({
tabStatus: type
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.logisticsStatus()
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
this.logisticsOrderTong()
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,62 @@
<!-- 头部 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}" />
<!-- view/logistics/logistics/logistics.wxml -->
<view class="logCentre">
<view class="logCentre_top flex-con3">
<view class="top1">
<view class="mon_text">我的钱包(元)</view>
<view class="mon_p mt40">{{logPerInfo.money}}</view>
</view>
<view class="top_state dis-flex">
<view class="flex1 dis-flex top_a">
<view class="flex1 flex-con3" bind:tap="_topTab">
<image class="yes_icon" src="{{tabStatus==1?'/static/img/icon/wxPay2.png':'/static/img/icon/cancellation_icon.png'}}" />
<view wx:if="{{tabStatus==1}}" class="ml10 mr15">今日上班</view>
<view wx:if="{{tabStatus==2}}" class="ml10 mr15">今日休息</view>
<image class="Inverted_icon" src="/static/img/icon/Inverted_icon.png" />
</view>
<view wx:if="{{ topTab }}" class="top_tab">
<view class="top_tab_row dis-flex" data-type="1" bind:tap="tabStatus">
<view class="flex1 flex-con3">
<image class="yes_icon" src="/static/img/icon/wxPay2.png" />
<view class="ml10 mr15">今日上班</view>
</view>
</view>
<view class="top_tab_row dis-flex" data-type="2" bind:tap="tabStatus">
<view class="flex1 flex-con3">
<image class="yes_icon" src="/static/img/icon/cancellation_icon.png" />
<view class="ml10 mr15">今日休息</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="order_state pd30">
<view class="sur_tit dis-flex mt50">
<view class="flex1 tit_text">全部订单</view>
<view class="sur_tit_r flex-con3" bind:tap="goOrderList">
<span class="flex1 mr10">全部订单</span>
<image src="/static/img/icon/right-r.png" />
</view>
</view>
<view class="order_row">
<view wx:for="{{orderList}}" wx:key class="row_list mt30 flex-con3" data-item="{{item}}" bind:tap="goOrderList">
<view class="flex1 flex-con2">
<view class="order_img">
<image src="{{item.img}}" />
</view>
<view class="order_p1 ml40">{{item.name}}</view>
<view class="order_p2 ml30 {{item.type == 3 ?'order_p3':''}}">
{{item.num}}
</view>
</view>
<image class="right" src="/static/img/icon/rthyrthertherth.png" />
</view>
</view>
</view>
</view>
<!-- 加载动画 -->
<loading-prog isLoading="{{isLoading}}"></loading-prog>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,105 @@
/* view/logistics/logistics/logistics.wxss */
.logCentre_top{
/* display: block; */
height: 310rpx;
background-color: #36c164;
position: relative;
}
.top1{
text-align: center;
}
.mon_text{
font-family: PingFang-SC-Medium;
font-size: 28rpx;
color: #ffffff;
}
.mon_p{
font-family: PingFang-SC-Bold;
font-size: 80rpx;
color: #ffffff;
font-weight: 700;
}
.top_state{
position: absolute;
right: 0;
top: 30rpx;
width: 200rpx;
height: 50rpx;
background-color: #ffffff;
border-radius: 25rpx 0px 0px 25rpx;
}
.yes_icon{
width: 26rpx;
height: 26rpx;
}
.Inverted_icon{
width: 13rpx;
height: 8rpx;
}
.top_a{
position: relative;
}
.top_tab{
position: absolute;
top: 70rpx;
right: 20rpx;
width: 198rpx;
background-color: #ffffff;
box-shadow: 0px 0px 15rpx 0px rgba(0, 0, 0, 0.15);
border-radius: 10rpx 10rpx 5rpx 10rpx;
}
.top_tab_row{
height: 80rpx;
border-bottom: 2rpx solid #f4f4f4;
}
.top_tab_row:last-child{
border: 0;
}
/* 表头 */
.sur_tit_r{
font-family: PingFang-SC-Medium;
font-size: 28rpx;
color: #999999;
}
.sur_tit_r image{
width: 11rpx;
height: 22rpx;
}
.tit_text{
font-family: PingFang-SC-Bold;
font-size: 36rpx;
color: #333333;
font-weight: 600;
}
/* 订单列表 */
.row_list{
height: 120rpx;
background-color: #ffffff;
border-radius: 10rpx;
padding: 0 30rpx 0 24rpx;
}
.right{
width: 15rpx;
height: 33rpx;
}
.order_img image{
width: 80rpx;
height: 80rpx;
border-radius: 10rpx;
}
.order_p1{
font-family: PingFang-SC-Medium;
font-size: 36rpx;
color: #333333;
font-weight: 500;
}
.order_p2{
font-family: PingFang-SC-Bold;
font-size: 36rpx;
color: #ff4026;
font-weight: 600;
}
.order_p3{
color: #1dbf53;
}

View File

@@ -0,0 +1 @@
3348f776-19b9-470f-8ba9-dd6de065c944

View File

@@ -0,0 +1,681 @@
// view/logistics/orderList/orderList.js
const app = getApp();
const regeneratorRuntime = app.loadAsync()
const model = app.loadModel("index")
const http = app.loadHttp()
Page({
/**
* 页面的初始数据
*/
data: {
showViewInfo: false, // 是否展示详情的弹窗
showViewInfoData: [],
system: app.globalData.system, //设备相关信息
pageTitle: "线上订单", //头部标题
isBack: true,//显示返回
backColor: "fff",//返回颜色,这是图片
titleColor: { //头部背景和文字颜色
bColor: "#1dbf53",
tColor: "#ffffff"
},
tabs: ["普通订单", "商城订单", "衣柜订单", "返洗订单"],
current: '1',// 1普通订单 2商城订单 3衣柜订单
date: '2019-08',
isPopup: false,//弹窗窗口
area: [],//区信息
areaId: {},//选中的区信息
residen: [],//小区信息
residenId: {},//选中的小区信息
popupType: "",//弹出框类型
state: [
{
name: "待接单",
status: 1
},
{
name: "已接单",
status: 3
},
{
name: "待送回",
status: 7
},
{
name: "已送达",
status: 10
},
{
name: "已完成",
status: 8
}
],
shopState: [
{
name: "待接单",
status: 2
},
{
name: "已接单",
status: 3
},
{
name: "待送达",
status: 4
},
{
name: "已送达",
status: 5
},
{
name: "已完成",
status: 6
}
],
stateId: {},//选中的状态信息
orderList: [],//订单信息
page: 1,//当前页
isPage: false,//如果没列表数据变成true
remarks: "",//备注
orderId: {//当前转单的订单id 和formid
id: '',
formId: ''
},
isTips: false,//备注显示关闭
orderInfo: {},//选中的订单信息,暂时只有打开弹窗使用
isTips4: false,//选择数量弹窗
isShowSupplement: false, //是否显示补款弹窗
inputMoney: '', // 补款的价格
inputReason: '', // 补款的原因
SmallSupplementId: '' // 需要补款的id
},
// 小马哥 补款按钮 被点击
SmallSupplement(e) {
this.setData({
isShowSupplement: true,
SmallSupplementId: e.detail.target.dataset.id
})
console.log(this.data.SmallSupplementId)
},
inputReasonChange(e){
this.setData({ inputReason: e.detail.value })
},
inputMoneyChange(e) {
this.setData({ inputMoney: e.detail.value })
},
//弹窗 确定 按钮被点击
async submitSmallSupplement() {
if(this.data.inputMoney.length == 0 || this.data.inputReason.length == 0) {
wx.showToast({
title: '金额和原因不能为空',
icon: 'none',
duration: 1000
})
} else {
let data = {
extra_money: this.data.inputMoney,
order_id: this.data.SmallSupplementId,
extra_reason: this.data.inputReason
}
let status = await http.http.request2({ url: http.api.addExtraRecord, method: "POST", data: data });
if(status.data.status == 1) {
wx.showToast({
title: status.data.msg,
icon: 'success',
duration: 2000
});
// 清空输入框
this.setData({
inputReason: '',
inputMoney: ''
});
}else{
wx.showToast({
title: status.data.msg,
icon: 'none',
duration: 2000
})
}
}
},
onClear(e) {
this.setData({
error: true,
value: '',
})
},
// 关闭补款弹窗
ClosePopup() {
this.setData({ isShowSupplement: false })
},
// tab选中事件
handleChange(e) {
let index = e.currentTarget.dataset.index
this.setData({
current: index,
orderList: [],
areaId: {},
residenId: {},
stateId: {},
page: 1,
isPage: false
});
this.logicsOrderList()
},
// 打开日历
DateChange(e) {
this.setData({
date: e.detail.value,
orderList: [],
page: 1,
isPage: false
})
this.logicsOrderList()
},
// 获取当前系统时间
getTime() {
var timestamp = Date.parse(new Date());
var date = new Date(timestamp);
//获取年份  
var Y = date.getFullYear();
//获取月份  
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);
this.setData({
date: `${Y}-${M}`
})
},
// 打开弹出框
openPopup(e) {
let type = e.currentTarget.dataset.type
if (type == 0) {
wx.showToast({
title: '暂不支持其他市',
icon: 'none',
duration: 800
})
return
}
if (type == 2 && this.data.residen.length <= 0) {
wx.showToast({
title: '当前区没有小区',
icon: 'none',
duration: 800
})
return
}
this.setData({
isPopup: !this.data.isPopup,
popupType: type
})
},
// 关闭弹出框
closePopup() {
this.setData({
isPopup: false
})
},
async ViewInfo(e) {
let data = {
id: e.currentTarget.dataset.id
};
console.log("data: ", data)
let res = await http.http.request1({ url: `${http.api.getClothDetail}`, method: "GET", data: data });
console.log("res: ", res.data.data)
this.setData({
showViewInfoData: res.data.data
})
this.setData({ showViewInfo: true})
},
// 关闭详情的弹窗
CloseViewInfo() {
this.setData({
showViewInfo: false
})
},
// 获取区和小区接口
async getArea(area_id = "") {
let data = {}
if (area_id != "") {
data.area_id = area_id
}
let res = await http.http.request1({ url: `${http.api.getArea}`, method: "POST", data: data })
if (area_id != "") {
this.setData({
residen: res.data.data
})
return
}
this.setData({
area: res.data.data
})
},
// 弹出框里列表的选择
changePopup(e) {
let type = e.currentTarget.dataset.type
let item = e.currentTarget.dataset.item
if (type == 1) {
this.setData({
areaId: item,
residenId: {}
})
this.getArea(item.id)
} else if (type == 2) {
this.setData({
residenId: item
})
} else if (type == 3) {
this.setData({
stateId: item
})
}
this.setData({
orderList: [],
page: 1,
isPage: false
});
this.closePopup()
this.logicsOrderList()
},
// 返回订单列表
async logicsOrderList() {
wx.showLoading({
title: '加载中',
})
let time = this.data.date
let current = this.data.current
let areaId = this.data.areaId
let residenId = this.data.residenId//小区
let stateId = this.data.stateId
let orderList = this.data.orderList
let data = {
type: current,
cityName: "合肥市",
countryName: areaId.name,
villageName: residenId.name,
create_time: time,
status: stateId.status,
page: this.data.page,
limit: 5
}
let res = await http.http.request2({ url: `${http.api.logicsOrderList}`, method: "POST", data: data })
if (res.data.data.data.length < 5) {
this.setData({
isPage: true
})
}
this.setData({
orderList: [...orderList, ...res.data.data.data]
})
wx.hideLoading()
},
// 显示备注
openTips(e) {
let id = e.detail.target.dataset.id
let formId = e.detail.formId
let orderId = {
id: id,
formId: formId
}
this.setData({
isTips: true,
orderId: orderId
})
},
// 关闭备注
closeTips() {
this.setData({
isTips: false,
remarks: ''
})
},
// 备注
remarksInput(e) {
let val = e.detail.value
this.setData({
remarks: val
})
},
// 清空状态,如当前page,列表数据等
empty() {
this.setData({
orderList: [],
areaId: {},
residenId: {},
stateId: {},
page: 1,
isPage: false
});
},
// 确认接单
receipt(e) {
let that = this
let id = e.detail.target.dataset.id
let formId = e.detail.formId
let current = this.data.current;//当前的订单类型
wx.showModal({
title: '确认接单',
content: '接单后将无法取消订单',
confirmText: '接单',
cancelText: '取消',
success(res) {
if (res.confirm) {
that.empty()
if (current != 2) {
http.http.request2({ url: `${http.api.confirmOrder}`, method: "POST", data: { order_id: id, form_id: formId } })
.then(res => {
if (res.data.status == 1) {
that.logicsOrderList()
}
})
} else {
http.http.request2({ url: `${http.api.confirmExpressOrder}`, method: "POST", data: { order_id: id, status: 2, form_id: formId } })
.then(res => {
if (res.data.status == 1) {
that.logicsOrderList()
}
})
}
}
}
})
},
// 转单
changeOrder() {
let that = this
let id = this.data.orderId.id
let formId = this.data.orderId.formId
let current = this.data.current;//当前的订单类型
let data = {
order_id: id,
form_id: formId,
reason: that.data.remarks
}
wx.showModal({
title: '确认转单',
content: '转单后将分配给其他物流人员',
confirmText: '转单',
cancelText: '取消',
success(res) {
if (res.confirm) {
that.empty()
if (current != 2) {
http.http.request2({ url: `${http.api.LogisticsLogicChange}`, method: "POST", data: data })
.then(res => {
if (res.data.status == 1) {
that.closeTips()
that.logicsOrderList()
}
})
} else {
http.http.request2({ url: `${http.api.changeExpressOrder}`, method: "POST", data: data })
.then(res => {
if (res.data.status == 1) {
that.closeTips()
that.logicsOrderList()
}
})
}
}
}
})
},
// 普通洗衣订单取走物件确定衣物数量弹窗
open4(e) {
this.setData({
orderInfo: e,
isTips4: true
})
},
// 确定衣物数量
determineNum(e) {
if(e.detail['isTips']){
this.setData({
isTips4: false
})
return
}
this.setData({
'orderInfo.detail.target.dataset.num': e.detail.num
})
this.clothingCollection(this.data.orderInfo)
},
// 普通洗衣订单到客户哪取走物件
clothingCollection(e) {
let that = this;
let id = e.detail.target.dataset.id;
let aid = e.detail.target.dataset.aid;
let num = e.detail.target.dataset.num;
let current = this.data.current;//当前的订单类型
let formId = e.detail.formId
let data = {
order_id: id,
form_id: formId,
clothen_num: num
}
if (current == 4) {
data.aid = aid
}
if (num <= 0) {
wx.showToast({
title: '请确认衣服数量是否正确!!!',
icon: 'none',
duration: 2000
})
return
}
wx.showModal({
title: '确定取走衣物',
content: '点击确定取走衣物',
confirmText: '确定',
cancelText: '取消',
success(res) {
if (res.confirm) {
that.empty()
if (current != 2) {
http.http.request2({ url: `${http.api.pickOrder}`, method: "POST", data: data })
.then(res => {
if (res.data.status == 1) {
that.closePopup()
that.logicsOrderList()
// 关闭数量弹窗
that.setData({
isTips4: false
})
}
})
}
}
}
})
},
// 开柜取衣
takeClothes(e) {
let that = this
let id = e.detail.target.dataset.id
let aid = e.detail.target.dataset.aid
let formId = e.detail.formId
let data = {
order_id: id,
form_id: formId,
lat: "",
lng: ""
}
if (!!aid) {
data.aid = aid
}
wx.showModal({
title: '打开衣柜',
content: '点击确定打开衣柜',
confirmText: '确定',
cancelText: '取消',
success(res) {
if (res.confirm) {
wx.getLocation({
type: 'gcj02',
success(res) {
wx.showLoading({
title: '开柜中',
})
data.lat = res.latitude
data.lng = res.longitude
that.empty()
http.http.request2({ url: `${http.api.logisticsOpenCupboard}`, method: "POST", data: data })
.then(res => {
if (res.data.status == 1) {
wx.hideLoading()
that.logicsOrderList()
}
})
}
})
}
}
})
},
// 洗衣订单确认收衣 物流去工厂端收衣
factCloColl(e) {
let that = this
let id = e.currentTarget.dataset.id
let aid = e.currentTarget.dataset.aid
let current = this.data.current;//当前的订单类型
let data = {
order_id: id
}
if (current == 4) {
data.aid = aid
}
wx.showModal({
title: '衣物送回',
content: '点击确定取走衣物',
confirmText: '确定',
cancelText: '取消',
success(res) {
if (res.confirm) {
that.empty()
if (current != 2) {
http.http.request2({ url: `${http.api.logicGetClothes}`, method: "POST", data: data })
.then(res => {
if (res.data.status == 1) {
that.closePopup()
that.logicsOrderList()
}
})
}
}
}
})
},
// 确认送达 普通洗衣和商城订单
service(e) {
let that = this
let id = e.currentTarget.dataset.id
let aid = e.currentTarget.dataset.aid
let current = this.data.current;//当前的订单类型
let data = {
order_id: id
}
if (current == 4) {
data.aid = aid
}
wx.showModal({
title: '确认送达',
content: '确认已送达',
confirmText: '确定',
cancelText: '取消',
success(res) {
if (res.confirm) {
that.empty()
if (current != 2) {
http.http.request2({ url: `${http.api.served}`, method: "POST", data: data })
.then(res => {
if (res.data.status == 1) {
that.closePopup()
that.logicsOrderList()
}
})
} else {
http.http.request2({ url: `${http.api.confirmExpressOrder}`, method: "POST", data: { order_id: id, status: 4 } })
.then(res => {
if (res.data.status == 1) {
that.closePopup()
that.logicsOrderList()
}
})
}
}
}
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
if (!!options.stateId) {
this.setData({
stateId: JSON.parse(options.stateId)
})
}
this.getTime()
this.getArea()
this.logicsOrderList()
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
if (this.data.isPage) {
return
}
this.setData({
page: ++this.data.page
})
this.logicsOrderList()
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,11 @@
{
"usingComponents": {
"wux-popup": "../../../extend/wux/dist/popup/index",
"wux-calendar": "../../../extend/wux/dist/calendar/index",
"quantityClothes": "../../../component/quantityClothes/quantityClothes",
"wux-popup": "../../extend/wux/dist/popup/index",
"wux-input": "../../extend/wux/dist/input/index",
"wux-radio-group": "../../extend/wux/dist/radio-group/index",
"wux-radio": "../../extend/wux/dist/radio/index"
}
}

View File

@@ -0,0 +1,178 @@
<!-- 头部导航 -->
<nav-bar isBack="{{isBack}}" backColor="{{backColor}}" pageTitle="{{pageTitle}}" system="{{system}}" titleColor="{{titleColor}}"></nav-bar>
<!-- 日历 -->
<wux-calendar id="wux-calendar" />
<wux-popup closable visible="{{ isShowSupplement }}" bind:close="ClosePopup">
<wux-input label="金额:" value="{{ inputMoney }}" bind:change="inputMoneyChange" placeholder="输入补款金额" />
<view class="line"></view>
<wux-input label="原因:" value="{{ inputReason }}" bind:change="inputReasonChange" placeholder="输入补款原因" />
<view slot="footer" class="popup__button" bindtap="submitSmallSupplement">确定</view>
</wux-popup>
<view class="orderList" style="top:{{system.statusHeight+system.titleHeight+'px'}}" bind:tap="closePopup">
<view class="orderTab">
<view class="tabs">
<view wx:for="{{tabs}}" wx:key="{{index}}" bind:tap="handleChange" data-index="{{index+1}}" class="tab {{current == index+1?'tabActiv':''}}">
{{item}}
</view>
</view>
</view>
<view class="cond dis-flex">
<view class="flex1 flex-con3" data-type="0" catchtap="openPopup">
合肥市
<image class="Inverted_icon" src="/static/img/icon/Inverted_icon.png" />
</view>
<view class="flex1 flex-con3" data-type="1" catchtap="openPopup">
{{ !!areaId.name ? areaId.name : '选择区' }}
<image class="Inverted_icon" src="/static/img/icon/Inverted_icon.png" />
</view>
<!-- 只有衣柜订单有小区 -->
<view wx:if="{{ current == 3 }}" class="flex1 flex-con3" data-type="2" catchtap="openPopup">
{{!!residenId.name ? residenId.name : '选择小区'}}
<image class="Inverted_icon" src="/static/img/icon/Inverted_icon.png" />
</view>
<view class="flex1 flex-con3" data-type="3" catchtap="openPopup">
{{!!stateId.name ? stateId.name : '订单状态'}}
<image class="Inverted_icon" src="/static/img/icon/Inverted_icon.png" />
</view>
</view>
</view>
<!-- 列表 -->
<view class="order_list">
<!-- 日历选择 -->
<picker mode="date" value="{{date}}" start="2015-09-01" end="2020-09-01" fields="month" bindchange="DateChange">
<view class="calendar flex-con2 pd30">
<view class="flex-con2">
<image class="time_icon mr15" src="/static/img/icon/rl.png" />
<span class="mr15">{{date}}</span>
<image class="Inverted_icon" src="/static/img/icon/Inverted_icon_0.png" />
</view>
</view>
</picker>
<view>
<view class="order_row mt20" wx:for="{{orderList}}" wx:key>
<view class="order_title">
<view class="order_number">
<view class="order_icon">
<image src="/static/img/icon/order-3_03.png" />
</view>
<view class="order_num">订单号:{{item.shop_order_no}}</view>
</view>
<view class="order_state">{{item.china_status}}</view>
</view>
<view class="order_info">
<!-- <view wx:if="{{current != 2}}" class="info_p">
预计收入:<span class="text-style-2">{{item.money}}</span>
</view> -->
<view class="info_p mt10">
下单件数:{{item.total_count != 0?item.total_count+'件':'待确认'}}
<view class="view_info" data-id="{{item.id}}" bind:tap="ViewInfo">查看详情</view>
</view>
<view class="info_p mt10">下单时间:{{item.create_time}}</view>
<view class="info_p mt10">预约时间:{{item.accept_time}}</view>
<view class="info_p mt10">客户姓名:{{item.username}}</view>
<view class="info_p mt10">客户电话:{{item.telnum}}</view>
<view class="info_p mt10">客户地址:{{item.user_address}}</view>
</view>
<view class="order_sub flex-con2">
<form report-submit bindsubmit="receipt">
<button class="openInfo ml20" wx:if="{{ item.status == 1 || item.express_status == 2 }}" data-id="{{item.id}}" form-type="submit">
确认接单
</button>
</form>
<form report-submit bindsubmit="SmallSupplement">
<button class="cancel ml20" data-id="{{item.id}}" form-type="submit">
补款
</button>
</form>
<form report-submit bindsubmit="openTips">
<button wx:if="{{ item.status == 1 || item.express_status == 2 }}" class="cancel ml20" data-id="{{item.id}}" form-type="submit">
转让订单
</button>
</form>
<!-- 普通洗衣订单去用户哪取衣 -->
<form report-submit bindsubmit="open4">
<button wx:if="{{ (current == 1 || current == 4) && item.status == 3 && item.shop_id == 1}}" class="openInfo ml20" data-aid="{{item.aid}}" data-id="{{item.id}}" form-type="submit">
取走物件
</button>
</form>
<!-- 衣柜洗衣订单去用户哪取衣 -->
<form report-submit bindsubmit="takeClothes">
<button wx:if="{{ (current == 3 || current == 4) && item.status == 3 && item.shop_id == 2 }}" class="openInfo ml20" data-aid="{{item.aid}}" data-id="{{item.id}}" form-type="submit">
开柜取衣
</button>
</form>
<!-- 洗衣工厂洗好后,物流人员到工厂拿到衣物点击 -->
<view wx:if="{{ item.status == 7 && current != 2 }}" class="openInfo ml20" data-aid="{{item.aid}}" data-id="{{item.id}}" catchtap="factCloColl">
取衣送回
</view>
<!-- 普通洗衣订单和商城订单 -->
<view wx:if="{{ (item.status == 12 || item.express_status == 4) && current != 3 }}" data-aid="{{item.aid}}" data-id="{{item.id}}" class="openInfo ml20" catchtap="service">
确定送达
</view>
<!-- 衣柜订单到达用户家时开柜把洗好衣物放入 -->
<form report-submit bindsubmit="takeClothes">
<button wx:if="{{ item.shop_id == 2 && item.status == 12 && (current == 3 || current == 4) }}" class="openInfo ml20" data-id="{{item.id}}" form-type="submit">
开柜送达
</button>
</form>
</view>
</view>
</view>
</view>
<!-- 弹出层 -->
<wux-popup position="top" visible="{{isPopup}}" bind:tap="closePopup">
<scroll-view scroll-y class="popup" style="margin-top:{{system.statusHeight+system.titleHeight+94+'px'}}">
<view wx:if="{{popupType == 1}}" wx:for="{{area}}" wx:key class="popuo_row {{areaId.id==item.id?'popuo_row_active':''}}" data-type="1" data-item="{{item}}" catchtap="changePopup">
{{item.name}}
</view>
<view wx:if="{{popupType == 2}}" wx:for="{{residen}}" wx:key class="popuo_row {{residenId.id==item.id?'popuo_row_active':''}}" data-type="2" data-item="{{item}}" catchtap="changePopup">
{{item.name}}
</view>
<view wx:if="{{popupType == 3 && current != 2}}" wx:for="{{state}}" wx:key class="popuo_row {{stateId.status==item.status?'popuo_row_active':''}}" data-type="3" data-item="{{item}}" catchtap="changePopup">
{{item.name}}
</view>
<view wx:if="{{popupType == 3 && current == 2}}" wx:for="{{shopState}}" wx:key class="popuo_row {{stateId.status==item.status?'popuo_row_active':''}}" data-type="3" data-item="{{item}}" catchtap="changePopup">
{{item.name}}
</view>
</scroll-view>
</wux-popup>
<wux-popup closable visible="{{ showViewInfo }}" title="衣物信息" bind:tap="CloseViewInfo">
<scroll-view scroll-y="true" style="height: 370rpx;" scroll-top="0">
<view class="nolist" wx:if="{{ showViewInfoData.length == 0 }}">
没有衣物信息
</view>
<block wx:else>
<view class="info-item" wx:key="{{this}}" wx:for="{{showViewInfoData}}">
<text>{{item.mall_product_name}}</text>
<text>x{{item.count}}</text>
</view>
</block>
</scroll-view>
<view slot="footer" class="popup__button">确定</view>
</wux-popup>
<!-- 弹出层填写备注 -->
<view wx:if="{{isTips}}" class="tips flex-con3">
<view>
<view class="tips_cen">
<view class="tips_cen_tit">转让订单</view>
<view class="flex-con3 mt30">
<view class="tips_cen_text">
<textarea maxlength="50" placeholder="添加备注:如洗护要求、衣物特殊污渍等" bindinput="remarksInput" value="{{remarks}}"></textarea>
<span class="tips_text_span">{{remarks.length}}/50个字</span>
</view>
</view>
<view class="tips_cen_sub" catchtap="changeOrder">完成</view>
</view>
<view class="tips_img" catchtap="closeTips">
<image src="/static/img/icon/colse_tips.png" />
</view>
</view>
</view>
<quantityClothes isTips='{{isTips4}}' bind:chCount="determineNum"></quantityClothes>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,259 @@
/* view/logistics/orderList/orderList.wxss */
page{
background-color:#f6f6f6;
}
.popup__button {
display: block;
flex: 1;
color: #33cd5f;
position: relative;
}
.view_info {
display: inline-block;
margin-left: 20px;
color: #ff4737;
text-decoration: underline;
}
.info-item {
display: flex;
align-items: center;
height: 60px;
width: 100%;
justify-content: space-between;
border-bottom: 1px solid #f6f6f6;
}
.orderList{
position: fixed;
width: 100%;
z-index: 1001;
background-color: #f6f6f6;
}
.orderTab{
height: 50px;
background-color: #1dbf53;
}
.tabs{
width: 100%;
display: flex;
}
.tab{
line-height: 50px;
text-align: center;
flex: 2;
font-size: 28rpx;
color: #beffd4;
position: relative;
}
.tabActiv{
font-size: 32rpx;
color: #ffffff;
}
.tabActiv::before{
position: absolute;
content: "";
bottom: 10rpx;
left: 50%;
margin-left: -15rpx;
width: 30rpx;
height: 6rpx;
background-color: #beffd4;
border-radius: 3rpx;
}
/* */
.cond{
height: 44px;
background-color: #ffffff;
}
.Inverted_icon{
width: 13rpx;
height: 8rpx;
margin-left: 14rpx;
}
/* 弹出层 */
.popup{
background-color: #ffffff;
max-height: 600rpx;
}
.popuo_row{
line-height: 90rpx;
font-family: PingFang-SC-Medium;
font-size: 28rpx;
color: #666666;
padding-left: 68rpx;
text-align: left;
}
.popuo_row_active{
color: #1dbf53;
}
/* 日历选择 */
.calendar{
margin-top: 5px;
height: 20px;
}
.time_icon{
width: 30rpx;
height: 30rpx;
}
/* 列表 */
.order_list{
margin-top: 99px;
}
.order_row{
width: 100%;
background-color: #ffffff;
}
.order_row:last-child{
margin-bottom: 20rpx;
}
.order_title{
width: 100%;
height: 88rpx;
padding: 0 35rpx 0 70rpx;
border-bottom: 2rpx solid #f2f2f2;
display: flex;
justify-content: space-between;
}
.order_number {
display: flex;
align-items: center;
}
.order_num{
line-height: 88rpx;
display: inline-block;
font-size: 26rpx;
letter-spacing: 0px;
color: #999999;
}
.order_state{
line-height: 88rpx;
display: inline-block;
font-size: 28rpx;
letter-spacing: 0px;
color: #ff4737;
text-align: right;
}
.order_icon{
margin-right: 5rpx;
width: 23rpx;
height: 26rpx;
}
.order_icon image{
width: 23rpx;
height: 26rpx;
}
.order_info{
width: 100%;
padding: 30rpx 35rpx 30rpx 70rpx;
}
.info_p{
font-size: 26rpx;
letter-spacing: 0px;
color: #333333;
}
.order_sub{
width: 100%;
height: 106rpx;
padding-right: 35rpx;
border-top: 2rpx solid #f2f2f2;
display: -webkit-flex;
display: flex;
-webkit-flex-direction: row-reverse;
flex-direction: row-reverse;
}
.order_sub view,.order_sub button{
padding: 16rpx 30rpx;
border-radius: 150rpx;
font-size: 24rpx;
}
.order_sub button{
/* margin: 0; */
line-height: normal;
}
.order_sub button::after{
width: 0;
height: 0;
}
.cancel{
text-align: center;
border: solid 1px #ebebeb;
color: #333333;
}
.openInfo{
border: solid 1px #1dbf45;
color: #1dbf45;
}
.text-style-2{
color: #fd933f;
}
/* 弹出层 */
.tips{
position: fixed;
top: 0;
left: 0;
right: 0;
height: 100%;
width: 100%;
background-color: rgba(0, 0, 0, 0.5);
z-index: 9999;
}
.tips_cen{
width: 600rpx;
height: 489rpx;
background-color: #ffffff;
border-radius: 10rpx;
padding-top: 58rpx;
}
.tips_cen_tit{
font-family: PingFang-SC-Bold;
font-size: 36rpx;
color: #000000;
font-weight: 600;
text-align: center;
}
.tips_cen_text{
width: 520rpx;
height: 200rpx;
background-color: #f5f5f5;
border-radius: 5rpx;
position: relative;
padding: 34rpx 25rpx;
}
.tips_cen_text textarea{
height: 100%;
width: 100%;
}
.tips_text_span{
position: absolute;
right: 16rpx;
bottom: 13rpx;
font-family: PingFang-SC-Medium;
font-size: 20rpx;
color: #999999;
}
.tips_cen_sub{
margin: 45rpx auto 0;
width: 550rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
background-color: #36d96c;
border-radius: 40rpx;
font-family: PingFang-SC-Medium;
font-size: 32rpx;
color: #ffffff;
}
.tips_img{
margin-top: 50rpx;
text-align: center;
}
.tips_img image{
width: 69rpx;
height: 69rpx;
}
.line {
height: 20px;
}
.nolist {
margin-top: 30px;
}