This commit is contained in:
SelfRidicule 2024-08-14 19:07:39 +08:00
parent e45c024d2f
commit 49d8817641
7 changed files with 374 additions and 55 deletions

View File

@ -87,6 +87,14 @@ export function selectWorkerIdByTypeIdRq(id) {
});
}
// 获取维修人员工单数量统计
export function workerRepairNumberRq(id) {
return request({
url: `/app/repair/workerRepairNumber`,
method: "post",
});
}
// 返回订单状态
// 状态:1 待派单,3 重新派单,5 已派单,7 处理中, 9已完成 待评价, 11 已关闭 13 已评价

View File

@ -1,5 +1,10 @@
const app = getApp()
import {
getDetailRq,
getStatusName
} from "../../../../api/repair/repair.js"
Page({
/**
@ -7,15 +12,19 @@ Page({
*/
data: {
IMG_NAME: app.IMG_NAME,
statusList : [
{
name : '已解决',
status : 1,
id: '',
detail: {},
files: [],
innerAudioContext: null, // 音频对象
innerAudioContextIsPlay: false, // 音频对象-是否播放
statusList: [{
name: '已解决',
status: 1,
isSelect: true,
},
{
name : '未解决',
status : 2,
name: '未解决',
status: 2,
isSelect: false,
}
]
@ -25,7 +34,74 @@ Page({
* 生命周期函数--监听页面加载
*/
onLoad(options) {
console.log('onLoad', options);
let _this = this
_this.setData({
...options
})
_this.getDetail(options.id)
},
getDetail(id) {
let _this = this
getDetailRq({
id
}).then(res => {
console.log("getDetailRq", res);
// 详情
let detail = res.repair
detail.statusName = getStatusName(detail.status)
// 附件
let files = res.files
files.repair = files.repair.map(item => {
item.url = app.IMG_NAME + item.url
return item
})
files.voice = files.voice.map(item => {
item.url = app.IMG_NAME + item.url
return item
})
_this.setData({
detail,
files
})
})
},
// 播放语音
startAudio() {
console.log('startAudio');
let _this = this
// 获取innerAudioContext实例
let innerAudioContext = _this.data.innerAudioContext
let innerAudioContextIsPlay = _this.data.innerAudioContextIsPlay
if (!innerAudioContext) {
// 全局设置播放声音
wx.setInnerAudioOption({
obeyMuteSwitch: false
});
innerAudioContext = wx.createInnerAudioContext()
// 设置音频文件的路径
innerAudioContext.src = _this.data.files.voice[0].url
innerAudioContextIsPlay = false
innerAudioContext.onEnded(() => {
_this.setData({
innerAudioContextIsPlay: false
})
})
}
if (innerAudioContextIsPlay) { // 播放中
innerAudioContext.stop()
innerAudioContextIsPlay = false
} else { // 未播放
innerAudioContext.play()
innerAudioContextIsPlay = true
}
//
_this.setData({
innerAudioContext,
innerAudioContextIsPlay
})
},
/**

View File

@ -2,62 +2,80 @@
<view class="topHead">
<view class="progressView">
<view class="point">
<view class="msgView">派单信息</view>
<view class="time">2022-11-15 10:25:23</view>
<view class="point {{detail.status == '5' ? 'activity' : ''}}">
<view class="msgView {{detail.status == '5' ? 'activity' : ''}}">派单信息</view>
<view class="time {{detail.status == '5' ? 'activity' : ''}}">{{detail.createTime}}</view>
</view>
<view class="line"></view>
<view class="point">
<view class="msgView">维修反馈</view>
<view class="time">2022-11-15 10:25:23</view>
<view class="point {{detail.status == '7' ? 'activity' : ''}}">
<view class="msgView {{detail.status == '7' ? 'activity' : ''}}">维修反馈</view>
<view class="time {{detail.status == '7' ? 'activity' : ''}}">{{detail.createTime}}</view>
</view>
<view class="line"></view>
<view class="point activity">
<view class="msgView activity">处理完成</view>
<view class="time activity">2022-11-15 10:25:23</view>
<view class="point {{detail.status == '9' ? 'activity' : ''}}">
<view class="msgView {{detail.status == '9' ? 'activity' : ''}}">处理完成</view>
<view class="time {{detail.status == '9' ? 'activity' : ''}}">{{detail.createTime}}</view>
</view>
</view>
</view>
<view class="personMsgView">
报修人电话:19883286522
报修人电话:{{detail.phone}}
</view>
<view class="labelView">报修单信息</view>
<view class="step1">
<view class="itemView">
<view class="name">报修设备:</view>
<view class="content">南楼102室空调</view>
<view class="name">报修名称</view>
<view class="content">{{detail.repairName}}</view>
</view>
<view class="itemView">
<view class="name">派发对象:</view>
<view class="content">李四</view>
<view class="name">故障等级</view>
<view class="content">{{detail.repairLevel}}</view>
</view>
<view class="itemView">
<view class="name">报修内容:</view>
<view class="content">设备故障,及时检修设备故障,及时检修设备故障,及时检修设备故障,及时检修</view>
<view class="name">故障时间</view>
<view class="content">{{detail.repairTime}}</view>
</view>
<view class="itemView">
<view class="name">工单编号:</view>
<view class="content"> BX202112100001</view>
<view class="name">故障类型</view>
<view class="content">{{detail.typeName + '/' + detail.deviceName}}</view>
</view>
<view class="itemView">
<view class="name">报修人:</view>
<view class="content">张三</view>
<view class="name">故障地点</view>
<view class="content">{{detail.address + '/' + detail.floor}}</view>
</view>
<view class="itemView">
<view class="name">报修时间:</view>
<view class="content">2022-11-15 10:25:23</view>
<view class="name">门牌号</view>
<view class="content">{{detail.room}}</view>
</view>
<view class="itemView">
<view class="name">联系电话</view>
<view class="content">{{detail.phone}}</view>
</view>
<view class="itemView">
<view class="name">报修人姓名</view>
<view class="content">{{detail.name}}</view>
</view>
<view class="itemView">
<view class="name">故障描述</view>
<view class="content">{{detail.explain}}</view>
</view>
<view class="itemView">
<view class="name">相关语音:</view>
<view class="content">4s</view>
<view class="content">
<view class="voiceView" wx:if="{{files.voice.length > 0}}">
<van-icon name="volume-o" color="black" size="40rpx" bind:tap="startAudio" />
</view>
</view>
</view>
<view class="itemView">
<view class="name">报修图片:</view>
<view class="content">
<view wx:for="{{4}}" class="imgView" style="background: no-repeat center/cover url({{IMG_NAME + '/profile/static/index/banner/1.jpg'}});"></view>
<view class="imgContentView">
<van-uploader file-list="{{ files.repair }}" show-upload="{{false}}" deletable="{{false}}" />
</view>
</view>
</view>
@ -103,7 +121,7 @@
<view class="step3">
<view class="mainView">
<van-icon name="success" color="#4e96f8" size="180rpx"/>
<van-icon name="success" color="#4e96f8" size="180rpx" />
<view class="label1">处理成功</view>
<view class="label2">您已提交成功</view>
</view>

View File

@ -1,5 +1,17 @@
const app = getApp()
import {
selfFormatTimeYMD,
selfFormatTimeHM,
checkIsImg
} from "../../../../utils/util.js"
import {
repairListRq,
workerRepairNumberRq
} from "../../../../api/repair/repair.js"
Page({
/**
@ -7,22 +19,161 @@ Page({
*/
data: {
IMG_NAME: app.IMG_NAME,
workerNumber: {},
tabTitle: 'wait', // tab 标题
// 待完成
waitOrder: {
pageNum: 1,
pageSize: 10,
type: 'wait',
dataList: [],
isDataAll: false,
},
// 进行中
workOrder: {
pageNum: 1,
pageSize: 10,
type: 'working',
dataList: [],
isDataAll: false,
},
// 已完成
closeOrder: {
pageNum: 1,
pageSize: 10,
type: 'close',
dataList: [],
isDataAll: false,
},
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
let _this = this;
},
back(){
back() {
wx.navigateBack()
},
jumpCase(){
// tab 点击切换
tabClickSwitch(e) {
console.log('tabClickSwitch', e);
let _this = this;
_this.setData({
tabTitle: e.target.dataset.type
})
},
// 获取数据
getDataList(transferTabTitle) {
// 获取参数
let _this = this;
let tabTitle = _this.data.tabTitle
if (transferTabTitle) {
tabTitle = transferTabTitle
}
let pageNum = null
let pageSize = null
let type = null
let isDataAll = null
//
let waitOrder = _this.data.waitOrder
let workOrder = _this.data.workOrder
let closeOrder = _this.data.closeOrder
if (tabTitle == 'wait') {
pageNum = waitOrder.pageNum
pageSize = waitOrder.pageSize
type = waitOrder.type
isDataAll = waitOrder.isDataAll
} else if (tabTitle == 'working') {
pageNum = workOrder.pageNum
pageSize = workOrder.pageSize
type = workOrder.type
isDataAll = workOrder.isDataAll
} else if (tabTitle == 'close') {
pageNum = closeOrder.pageNum
pageSize = closeOrder.pageSize
type = closeOrder.type
isDataAll = closeOrder.isDataAll
} else {
wx.showToast({
title: `tab 切换错误(${tabTitle})`,
icon: 'none',
});
return;
}
// 判断数据是否已全部加载
if (isDataAll) {
return;
}
// 传递参数
let param = {
pageNum,
pageSize,
menu: '5', // 维修
type,
}
// 查询数据
repairListRq(param).then(res => {
console.log('repairListRq', res);
let dataList = res.rows
let isDataAll = false
if (!(dataList && dataList.length > 0)) {
dataList = []
isDataAll = true
}
//
if (tabTitle == 'wait') {
waitOrder.dataList = waitOrder.dataList.concat(_this.formartData(dataList))
waitOrder.pageNum = waitOrder.pageNum + 1
waitOrder.isDataAll = isDataAll
_this.setData({
waitOrder
})
} else if (tabTitle == 'working') {
workOrder.dataList = workOrder.dataList.concat(_this.formartData(dataList))
workOrder.pageNum = workOrder.pageNum + 1
workOrder.isDataAll = isDataAll
_this.setData({
workOrder
})
} else if (tabTitle == 'close') {
closeOrder.dataList = closeOrder.dataList.concat(_this.formartData(dataList))
closeOrder.pageNum = closeOrder.pageNum + 1
closeOrder.isDataAll = isDataAll
_this.setData({
closeOrder
})
}
})
},
// 格式化数据
formartData(dataList) {
// 格式化数据
return dataList.map(item => {
return item;
})
},
// 跳转
jumpCase(e) {
console.log('jumpCase', e);
let id = e.currentTarget.dataset.obj.id
wx.navigateTo({
url: '/pages/reportRepair/repair/case/case',
url: `/pages/reportRepair/repair/case/case?id=${id}`,
})
},
@ -37,7 +188,45 @@ Page({
* 生命周期函数--监听页面显示
*/
onShow() {
let _this = this;
_this.setData({
// 待完成
waitOrder: {
pageNum: 1,
pageSize: 10,
type: 'wait',
dataList: [],
isDataAll: false,
},
// 进行中
workOrder: {
pageNum: 1,
pageSize: 10,
type: 'working',
dataList: [],
isDataAll: false,
},
// 已完成
closeOrder: {
pageNum: 1,
pageSize: 10,
type: 'close',
dataList: [],
isDataAll: false,
},
})
// 数据
_this.getDataList('wait')
_this.getDataList('working')
_this.getDataList('close')
// 获取维修人员工单数量统计
workerRepairNumberRq().then(res => {
console.log('workerRepairNumberRq', res);
_this.setData({
workerNumber: res.workerRepairNumber
})
})
},
/**
@ -65,7 +254,9 @@ Page({
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
console.log('onReachBottom');
let _this = this
_this.getDataList()
},
/**

View File

@ -1,6 +1,8 @@
{
"navigationStyle": "custom",
"usingComponents": {
"van-icon": "@vant/weapp/icon/index"
}
"van-icon": "@vant/weapp/icon/index",
"van-divider": "@vant/weapp/divider/index"
},
"onReachBottomDistance": 100
}

View File

@ -14,25 +14,19 @@
<view class="itemListView">
<view class="itemView">
<view class="circle1 blueColor">
<view class="circle2 blueCenterColor">
100
</view>
<view class="circle2 blueCenterColor">{{workerNumber.wait}}</view>
</view>
<view class="name">待完成</view>
</view>
<view class="itemView">
<view class="circle1 cyanColor">
<view class="circle2 cyanCenterColor">
200
</view>
<view class="circle2 cyanCenterColor">{{workerNumber.working}}</view>
</view>
<view class="name">进行中</view>
</view>
<view class="itemView">
<view class="circle1 greenColor">
<view class="circle2 greenCenterColor">
300
</view>
<view class="circle2 greenCenterColor">{{workerNumber.close}}</view>
</view>
<view class="name">已完成</view>
</view>
@ -40,17 +34,42 @@
</view>
<view class="statusView">
<view class="status">待完成</view>
<view class="status activity">进行中</view>
<view class="status">已完成</view>
<view class="status {{tabTitle == 'wait' ? 'activity' : ''}}" bind:tap="tabClickSwitch" data-type="wait">待完成</view>
<view class="status {{tabTitle == 'working' ? 'activity' : ''}}" bind:tap="tabClickSwitch" data-type="working">进行中</view>
<view class="status {{tabTitle == 'close' ? 'activity' : ''}}" bind:tap="tabClickSwitch" data-type="close">已完成</view>
</view>
<view class="caseListView">
<view class="caseView" wx:for="{{10}}" bind:tap="jumpCase">
<view class="content ellipsisFont">王军发起一个订单王军发起一个订单王军发起一个订单</view>
<view class="time">2024-01-01 10:10:10</view>
<view class="caseListView" wx:if="{{tabTitle == 'wait'}}">
<view class="caseView" wx:for="{{waitOrder.dataList}}" wx:for-item="item" wx:key="*this" data-obj="{{item}}" bind:tap="jumpCase">
<view class="content ellipsisFont">{{item.name}}发起一个订单</view>
<view class="time">{{item.createTime}}</view>
<view class="status"></view>
</view>
<view class="loadAllLine" wx:if="{{waitOrder.isDataAll}}">
<van-divider class="van-divider" customStyle="font-size: 26rpx;" contentPosition="center">数据已全部加载</van-divider>
</view>
</view>
<view class="caseListView" wx:if="{{tabTitle == 'working'}}">
<view class="caseView" wx:for="{{workOrder.dataList}}" wx:for-item="item" wx:key="*this" data-obj="{{item}}" bind:tap="jumpCase">
<view class="content ellipsisFont">{{item.name}}发起一个订单</view>
<view class="time">{{item.createTime}}</view>
<view class="status"></view>
</view>
<view class="loadAllLine" wx:if="{{workOrder.isDataAll}}">
<van-divider class="van-divider" customStyle="font-size: 26rpx;" contentPosition="center">数据已全部加载</van-divider>
</view>
</view>
<view class="caseListView" wx:if="{{tabTitle == 'close'}}">
<view class="caseView" wx:for="{{closeOrder.dataList}}" wx:for-item="item" wx:key="*this" data-obj="{{item}}" bind:tap="jumpCase">
<view class="content ellipsisFont">{{item.name}}发起一个订单</view>
<view class="time">{{item.createTime}}</view>
<view class="status"></view>
</view>
<view class="loadAllLine" wx:if="{{closeOrder.isDataAll}}">
<van-divider class="van-divider" customStyle="font-size: 26rpx;" contentPosition="center">数据已全部加载</van-divider>
</view>
</view>
</view>

View File

@ -1,5 +1,6 @@
.containerView.public {
background: none;
height: auto;
}
.elHidden {
@ -194,3 +195,7 @@
width: 20rpx;
background: red;
}
.loadAllLine {
margin-top: 80rpx;
}