描述:订单信息

This commit is contained in:
SelfRidicule 2024-08-13 17:39:38 +08:00
parent 8e21c838ae
commit 31e3192087
6 changed files with 256 additions and 141 deletions

View File

@ -1,21 +0,0 @@
import {
request
} from '../selfRequest';
// 派单列表
export function dispatcherListRq(data) {
return request({
url: `/repair/dispatcherList?pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
method: "post",
data
});
}
// 报修详情
export function reportDetailRq(id) {
return request({
url: `/repair/get/` + id,
method: "get",
});
}

View File

@ -45,3 +45,61 @@ export function repairSaveRq(data) {
data data
}); });
} }
// * 工单列表
// * menu:1.保修查询3派单入口5维修入口, 7 管理员
// * 报修查询:全部、处理中、待评价、已评价 type对应值all、process、evaling、evaled
// * 派单入口:重新派单、待派单、已派单、已关闭 type对应值anew、wait、already、close
// * 维修入口:待完成、进行中、已完成 type对应值wait、working、close
// * 管理员:重派单,全部 type对应值anew、all 【小程序暂时用不到】
export function repairListRq(data) {
return request({
url: `/app/repair/list?pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
method: "post",
data
});
}
// 获取详情
export function getDetailRq(data) {
return request({
url: `/app/repair/get`,
method: "post",
data
});
}
// 返回订单状态
// 状态:1 待派单,3 重新派单,5 已派单,7 处理中, 9已完成 待评价, 11 已关闭 13 已评价
let statusList = [{
status: 1,
statusName: '待派单',
}, {
status: 3,
statusName: '重新派单',
}, {
status: 5,
statusName: '已派单',
}, {
status: 7,
statusName: '处理中',
}, {
status: 9,
statusName: '已完成',
}, {
status: 11,
statusName: '已关闭',
}, {
status: 13,
statusName: '已评价',
},]
export function getStatusName(status) {
let obj = statusList.find(item=> item.status == status )
if(obj){
return obj.statusName
}else{
return '状态不存在!'
}
}

View File

@ -2,8 +2,9 @@ const app = getApp()
import { import {
reportDetailRq getDetailRq,
} from "../../../../api/repair/distributionCase.js" getStatusName
} from "../../../../api/repair/repair.js"
Page({ Page({
@ -14,6 +15,7 @@ Page({
IMG_NAME: app.IMG_NAME, IMG_NAME: app.IMG_NAME,
id: '', id: '',
detail: {}, detail: {},
files: {},
innerAudioContext: null, // 音频对象 innerAudioContext: null, // 音频对象
innerAudioContextIsPlay: false, // 音频对象-是否播放 innerAudioContextIsPlay: false, // 音频对象-是否播放
}, },
@ -36,27 +38,26 @@ Page({
getDetail(id) { getDetail(id) {
let _this = this let _this = this
reportDetailRq(id).then(res => { getDetailRq({
console.log("reportDetailRq", res); id
let detail = res.data }).then(res => {
let repairVoice = detail.repairVoice console.log("getDetailRq", res);
let repairImages = detail.repairImages // 详情
// 音频 let detail = res.repair
if (repairVoice) { detail.statusName = getStatusName(detail.status)
detail.voiceObj = JSON.parse(repairVoice) // 附件
detail.voiceObj.url = app.IMG_NAME + detail.voiceObj.url let files = res.files
} files.repair = files.repair.map(item=>{
// 图片/视频 item.url = app.IMG_NAME + item.url
if (repairImages) { return item
detail.fileList = JSON.parse(repairImages).map(item => { })
return { files.voice = files.voice.map(item=>{
url: app.IMG_NAME + item.url, item.url = app.IMG_NAME + item.url
name: item.url, return item
} })
})
}
_this.setData({ _this.setData({
detail detail,
files
}) })
}) })
}, },
@ -75,7 +76,7 @@ Page({
}); });
innerAudioContext = wx.createInnerAudioContext() innerAudioContext = wx.createInnerAudioContext()
// 设置音频文件的路径 // 设置音频文件的路径
innerAudioContext.src = _this.data.detail.voiceObj.url innerAudioContext.src = _this.data.files.voice[0].url
innerAudioContextIsPlay = false innerAudioContextIsPlay = false
innerAudioContext.onEnded(() => { innerAudioContext.onEnded(() => {
_this.setData({ _this.setData({

View File

@ -17,8 +17,8 @@
<view class="mainView"> <view class="mainView">
<view class="statusView"> <view class="statusView">
<view class="label">{{detail.sn}}</view> <view class="label">{{detail.sn}}</view>
<view class="time">{{detail.typeName + '/' + detail.repairDeviceName}}</view> <view class="time">{{detail.typeName + '/' + detail.deviceName}}</view>
<view class="tag">{{detail.status}}</view> <view class="tag">{{detail.statusName}}</view>
</view> </view>
<view class="reportView"> <view class="reportView">
@ -34,19 +34,19 @@
</view> </view>
<view class="itemView"> <view class="itemView">
<view class="label">故障时间</view> <view class="label">故障时间</view>
<view class="content">{{detail.failureDate}}</view> <view class="content">{{detail.repairTime}}</view>
</view> </view>
<view class="itemView"> <view class="itemView">
<view class="label">故障类型</view> <view class="label">故障类型</view>
<view class="content">{{detail.typeName + '/' + detail.repairDeviceName}}</view> <view class="content">{{detail.typeName + '/' + detail.deviceName}}</view>
</view> </view>
<view class="itemView"> <view class="itemView">
<view class="label">故障地点</view> <view class="label">故障地点</view>
<view class="content">{{detail.addressName + '/' + detail.roomName}}</view> <view class="content">{{detail.address + '/' + detail.floor}}</view>
</view> </view>
<view class="itemView"> <view class="itemView">
<view class="label">门牌号</view> <view class="label">门牌号</view>
<view class="content">{{detail.area}}</view> <view class="content">{{detail.room}}</view>
</view> </view>
<view class="itemView"> <view class="itemView">
<view class="label">联系电话</view> <view class="label">联系电话</view>
@ -58,14 +58,14 @@
</view> </view>
<view class="itemView"> <view class="itemView">
<view class="label">故障描述</view> <view class="label">故障描述</view>
<view class="content">{{detail.content}}</view> <view class="content">{{detail.explain}}</view>
</view> </view>
<view class="itemView"> <view class="itemView">
<view class="label">语音</view> <view class="label">语音</view>
<view class="content"> <view class="content">
<view class="voiceView" wx:if="{{detail.voiceObj.url}}"> <view class="voiceView" wx:if="{{files.voice.length > 0}}">
<van-icon name="volume-o" color="black" size="40rpx" bind:tap="startAudio" /> <van-icon name="volume-o" color="black" size="40rpx" bind:tap="startAudio" />
<view class="voiceTimeView" bind:tap="startAudio">{{detail.voiceObj.time}} s</view> <!-- <view class="voiceTimeView" bind:tap="startAudio">{{detail.voiceObj.time}} s</view> -->
</view> </view>
</view> </view>
</view> </view>
@ -73,7 +73,7 @@
<view class="label">故障图片/视频</view> <view class="label">故障图片/视频</view>
<view class="content"> <view class="content">
<view class="imgContentView"> <view class="imgContentView">
<van-uploader file-list="{{ detail.fileList }}" show-upload="{{false}}" deletable="{{false}}"/> <van-uploader file-list="{{ files.repair }}" show-upload="{{false}}" deletable="{{false}}"/>
</view> </view>
</view> </view>
</view> </view>

View File

@ -11,8 +11,8 @@ import {
import { import {
dispatcherListRq repairListRq
} from "../../../../api/repair/distributionCase.js" } from "../../../../api/repair/repair.js"
Page({ Page({
@ -27,29 +27,37 @@ Page({
tabTitle: '待派单', // tab 标题 tabTitle: '待派单', // tab 标题
resendOrderVisible: false, // 重新派单显示 resendOrderVisible: false, // 重新派单显示
// 重新派单 // 重新派单
resendOrderPageNum: 1, resendOrder: {
resendOrderPageSize: 10, pageNum: 1,
resendOrderStatus: 0, pageSize: 10,
resendOrderDataList: [], type: 'anew',
resendOrderIsDataAll: false, dataList: [],
isDataAll: false,
},
// 待派单 // 待派单
pendingOrderPageNum: 1, pendingOrder: {
pendingOrderPageSize: 10, pageNum: 1,
pendingOrderStatus: 1, pageSize: 10,
pendingOrderDataList: [], type: 'wait',
pendingOrderIsDataAll: false, dataList: [],
isDataAll: false,
},
// 已派单 // 已派单
assignOrderPageNum: 1, assignOrder: {
assignOrderPageSize: 10, pageNum: 1,
assignOrderStatus: 2, pageSize: 10,
assignOrderDataList: [], type: 'already',
assignOrderIsDataAll: false, dataList: [],
isDataAll: false,
},
// 已关闭 // 已关闭
closeOrderPageNum: 1, closeOrder: {
closeOrderPageSize: 10, pageNum: 1,
closeOrderStatus: 3, pageSize: 10,
closeOrderDataList: [], type: 'close',
closeOrderIsDataAll: false, dataList: [],
isDataAll: false,
},
}, },
/** /**
@ -85,34 +93,40 @@ Page({
tabTitle = transferTabTitle tabTitle = transferTabTitle
} }
let userId = _this.data.userData.id let userId = _this.data.userData.id
let isDataAll = null
let pageNum = null let pageNum = null
let pageSize = null let pageSize = null
let status = null let type = null
let isDataAll = null
//
let resendOrder = _this.data.resendOrder
let pendingOrder = _this.data.pendingOrder
let assignOrder = _this.data.assignOrder
let closeOrder = _this.data.closeOrder
if (tabTitle == '重新派单') { if (tabTitle == '重新派单') {
pageNum = _this.data.resendOrderPageNum pageNum = resendOrder.pageNum
pageSize = _this.data.resendOrderPageSize pageSize = resendOrder.pageSize
status = _this.data.resendOrderStatus type = resendOrder.type
isDataAll = _this.data.resendOrderIsDataAll isDataAll = resendOrder.isDataAll
} else if (tabTitle == '待派单') { } else if (tabTitle == '待派单') {
pageNum = _this.data.pendingOrderPageNum pageNum = pendingOrder.pageNum
pageSize = _this.data.pendingOrderPageSize pageSize = pendingOrder.pageSize
status = _this.data.pendingOrderStatus type = pendingOrder.type
isDataAll = _this.data.pendingOrderIsDataAll isDataAll = pendingOrder.isDataAll
} else if (tabTitle == '已派单') { } else if (tabTitle == '已派单') {
pageNum = _this.data.assignOrderPageNum pageNum = assignOrder.pageNum
pageSize = _this.data.assignOrderPageSize pageSize = assignOrder.pageSize
status = _this.data.assignOrderStatus type = assignOrder.type
isDataAll = _this.data.assignOrderIsDataAll isDataAll = assignOrder.isDataAll
} else if (tabTitle == '已关闭') { } else if (tabTitle == '已关闭') {
pageNum = _this.data.closeOrderPageNum pageNum = closeOrder.pageNum
pageSize = _this.data.closeOrderPageSize pageSize = closeOrder.pageSize
status = _this.data.closeOrderStatus type = closeOrder.type
isDataAll = _this.data.closeOrderIsDataAll isDataAll = closeOrder.isDataAll
} else { } else {
wx.showToast({ wx.showToast({
@ -128,15 +142,15 @@ Page({
} }
// 传递参数 // 传递参数
let param = { let param = {
userId,
pageNum, pageNum,
pageSize, pageSize,
statusValue: status menu: '3', // 派单
type,
} }
// 查询数据 // 查询数据
dispatcherListRq(param).then(res => { repairListRq(param).then(res => {
console.log('dispatcherListRq', res); console.log('repairListRq', res);
let dataList = res.data.records let dataList = res.rows
let isDataAll = false let isDataAll = false
if (!(dataList && dataList.length > 0)) { if (!(dataList && dataList.length > 0)) {
dataList = [] dataList = []
@ -144,31 +158,35 @@ Page({
} }
// //
if (tabTitle == '重新派单') { if (tabTitle == '重新派单') {
resendOrder.dataList = resendOrder.dataList.concat(_this.formartData(dataList))
resendOrder.pageNum = resendOrder.pageNum + 1
resendOrder.isDataAll = isDataAll
_this.setData({ _this.setData({
resendOrderDataList: _this.data.resendOrderDataList.concat(_this.formartData(dataList)), resendOrder
resendOrderPageNum: pageNum + 1,
resendOrderIsDataAll: isDataAll,
}) })
} else if (tabTitle == '待派单') { } else if (tabTitle == '待派单') {
pendingOrder.dataList = pendingOrder.dataList.concat(_this.formartData(dataList))
pendingOrder.pageNum = pendingOrder.pageNum + 1
pendingOrder.isDataAll = isDataAll
_this.setData({ _this.setData({
pendingOrderDataList: _this.data.pendingOrderDataList.concat(_this.formartData(dataList)), pendingOrder
pendingOrderPageNum: pageNum + 1,
pendingOrderIsDataAll: isDataAll,
}) })
} else if (tabTitle == '已派单') { } else if (tabTitle == '已派单') {
assignOrder.dataList = assignOrder.dataList.concat(_this.formartData(dataList))
assignOrder.pageNum = assignOrder.pageNum + 1
assignOrder.isDataAll = isDataAll
_this.setData({ _this.setData({
assignOrderDataList: _this.data.assignOrderDataList.concat(_this.formartData(dataList)), assignOrder
assignOrderPageNum: pageNum + 1,
assignOrderIsDataAll: isDataAll,
}) })
} else if (tabTitle == '已关闭') { } else if (tabTitle == '已关闭') {
closeOrder.dataList = closeOrder.dataList.concat(_this.formartData(dataList))
closeOrder.pageNum = closeOrder.pageNum + 1
closeOrder.isDataAll = isDataAll
_this.setData({ _this.setData({
closeOrderDataList: _this.data.closeOrderDataList.concat(_this.formartData(dataList)), closeOrder
closeOrderPageNum: pageNum + 1,
closeOrderIsDataAll: isDataAll,
}) })
} }
}) })

View File

@ -1,39 +1,16 @@
<view class="containerView public"> <view class="containerView public">
<van-tabs bind:click="tabClickSwitch" color="#4e96f8" border animated title-active-color="black" title-inactive-color="gray"> <van-tabs bind:click="tabClickSwitch" color="#4e96f8" border animated title-active-color="black" title-inactive-color="gray">
<van-tab title="重新派单" wx:if="{{resendOrderVisible}}"> <van-tab title="重新派单" wx:if="{{resendOrderVisible}}">
<view class="itemView" wx:for="{{resendOrderDataList}}" wx:for-item="item" wx:key="*this" bind:tap="jumpAgain"> <view class="itemView" wx:for="{{resendOrder.dataList}}" wx:for-item="item" wx:key="*this" data-obj="{{item}}" bind:tap="jumpDetail">
<view class="topTitle">编号: T123123123</view>
<view class="selfLine"></view>
<view class="centerView">
<view class="showImg" style="background: no-repeat center/cover url({{IMG_NAME + item.visibleImg}});"></view>
<view class="rightView">
<view class="labelName ellipsisFont">空调损坏</view>
<view class="labelContent1 ellipsisFont">设备名称: 空调</view>
<view class="labelContent2 ellipsisFont">设备地址: 301南楼</view>
</view>
</view>
<view class="selfLine"></view>
<view class="bottomView">
<view class="name">王军18300011120</view>
<view class="time">2024-01-01 12:12:00</view>
</view>
</view>
<view class="loadAllLine" wx:if="{{resendOrderIsDataAll}}">
<van-divider class="van-divider" customStyle="font-size: 26rpx;" contentPosition="center">数据已全部加载</van-divider>
</view>
</van-tab>
<van-tab title="待派单">
<view class="itemView" wx:for="{{pendingOrderDataList}}" wx:for-item="item" wx:key="*this" data-obj="{{item}}" bind:tap="jumpDetail">
<view class="topTitle">编号: {{item.sn}}</view> <view class="topTitle">编号: {{item.sn}}</view>
<view class="selfLine"></view> <view class="selfLine"></view>
<view class="centerView"> <view class="centerView">
<view class="showImg" style="background: no-repeat center/cover url({{IMG_NAME + item.visibleImg}});"></view> <view class="showImg" style="background: no-repeat center/cover url({{IMG_NAME + item.visibleImg}});"></view>
<view class="rightView"> <view class="rightView">
<view class="labelName ellipsisFont">{{item.repairName}}</view> <view class="labelName ellipsisFont">{{item.repairName}}</view>
<view class="labelContent1 ellipsisFont">类型: {{item.typeName + '/' + item.repairDeviceName}}</view> <view class="labelContent1 ellipsisFont">类型: {{item.typeName + '/' + item.deviceName}}</view>
<view class="labelContent2 ellipsisFont">地点: {{item.addressName + '/' + item.roomName}}</view> <view class="labelContent2 ellipsisFont">地点: {{item.address + '/' + item.floor}}</view>
<view class="labelContent2 ellipsisFont">门牌号: {{item.area ? item.area : ''}}</view> <view class="labelContent2 ellipsisFont">门牌号: {{item.room ? item.room : ''}}</view>
</view> </view>
</view> </view>
<view class="selfLine"></view> <view class="selfLine"></view>
@ -48,16 +25,98 @@
</view> </view>
</view> </view>
</view> </view>
<view class="loadAllLine" wx:if="{{pendingOrderIsDataAll}}"> <view class="loadAllLine" wx:if="{{resendOrder.isDataAll}}">
<van-divider class="van-divider" customStyle="font-size: 26rpx;" contentPosition="center">数据已全部加载</van-divider>
</view>
</van-tab>
<van-tab title="待派单">
<view class="itemView" wx:for="{{pendingOrder.dataList}}" wx:for-item="item" wx:key="*this" data-obj="{{item}}" bind:tap="jumpDetail">
<view class="topTitle">编号: {{item.sn}}</view>
<view class="selfLine"></view>
<view class="centerView">
<view class="showImg" style="background: no-repeat center/cover url({{IMG_NAME + item.visibleImg}});"></view>
<view class="rightView">
<view class="labelName ellipsisFont">{{item.repairName}}</view>
<view class="labelContent1 ellipsisFont">类型: {{item.typeName + '/' + item.deviceName}}</view>
<view class="labelContent2 ellipsisFont">地点: {{item.address + '/' + item.floor}}</view>
<view class="labelContent2 ellipsisFont">门牌号: {{item.room ? item.room : ''}}</view>
</view>
</view>
<view class="selfLine"></view>
<view class="bottomView">
<view class="name">
<van-icon name="manager-o" size="28rpx" color="#4e96f8"/>
{{item.name}}{{item.phone}}
</view>
<view class="time">
<van-icon name="calendar-o" size="30rpx" color="#4e96f8"/>
{{item.createTime}}
</view>
</view>
</view>
<view class="loadAllLine" wx:if="{{pendingOrder.isDataAll}}">
<van-divider class="van-divider" customStyle="font-size: 26rpx;" contentPosition="center">数据已全部加载</van-divider> <van-divider class="van-divider" customStyle="font-size: 26rpx;" contentPosition="center">数据已全部加载</van-divider>
</view> </view>
</van-tab> </van-tab>
<van-tab title="已派单"> <van-tab title="已派单">
<view class="itemView" wx:for="{{assignOrder.dataList}}" wx:for-item="item" wx:key="*this" data-obj="{{item}}" bind:tap="jumpDetail">
<view class="topTitle">编号: {{item.sn}}</view>
<view class="selfLine"></view>
<view class="centerView">
<view class="showImg" style="background: no-repeat center/cover url({{IMG_NAME + item.visibleImg}});"></view>
<view class="rightView">
<view class="labelName ellipsisFont">{{item.repairName}}</view>
<view class="labelContent1 ellipsisFont">类型: {{item.typeName + '/' + item.deviceName}}</view>
<view class="labelContent2 ellipsisFont">地点: {{item.address + '/' + item.floor}}</view>
<view class="labelContent2 ellipsisFont">门牌号: {{item.room ? item.room : ''}}</view>
</view>
</view>
<view class="selfLine"></view>
<view class="bottomView">
<view class="name">
<van-icon name="manager-o" size="28rpx" color="#4e96f8"/>
{{item.name}}{{item.phone}}
</view>
<view class="time">
<van-icon name="calendar-o" size="30rpx" color="#4e96f8"/>
{{item.createTime}}
</view>
</view>
</view>
<view class="loadAllLine" wx:if="{{assignOrder.isDataAll}}">
<van-divider class="van-divider" customStyle="font-size: 26rpx;" contentPosition="center">数据已全部加载</van-divider>
</view>
</van-tab> </van-tab>
<van-tab title="已关闭"> <van-tab title="已关闭">
<view class="itemView" wx:for="{{closeOrder.dataList}}" wx:for-item="item" wx:key="*this" data-obj="{{item}}" bind:tap="jumpDetail">
<view class="topTitle">编号: {{item.sn}}</view>
<view class="selfLine"></view>
<view class="centerView">
<view class="showImg" style="background: no-repeat center/cover url({{IMG_NAME + item.visibleImg}});"></view>
<view class="rightView">
<view class="labelName ellipsisFont">{{item.repairName}}</view>
<view class="labelContent1 ellipsisFont">类型: {{item.typeName + '/' + item.deviceName}}</view>
<view class="labelContent2 ellipsisFont">地点: {{item.address + '/' + item.floor}}</view>
<view class="labelContent2 ellipsisFont">门牌号: {{item.room ? item.room : ''}}</view>
</view>
</view>
<view class="selfLine"></view>
<view class="bottomView">
<view class="name">
<van-icon name="manager-o" size="28rpx" color="#4e96f8"/>
{{item.name}}{{item.phone}}
</view>
<view class="time">
<van-icon name="calendar-o" size="30rpx" color="#4e96f8"/>
{{item.createTime}}
</view>
</view>
</view>
<view class="loadAllLine" wx:if="{{closeOrder.isDataAll}}">
<van-divider class="van-divider" customStyle="font-size: 26rpx;" contentPosition="center">数据已全部加载</van-divider>
</view>
</van-tab> </van-tab>
</van-tabs> </van-tabs>