This commit is contained in:
SelfRidicule 2024-08-14 20:49:09 +08:00
parent 49d8817641
commit 94904b4d8e
4 changed files with 262 additions and 26 deletions

View File

@ -96,6 +96,15 @@ export function workerRepairNumberRq(id) {
}
// 故障原因-字典
export function faultTypeListRq() {
return request({
url: `/repairDeviceApi/faultTypeList`,
method: "get",
});
}
// 返回订单状态
// 状态:1 待派单,3 重新派单,5 已派单,7 处理中, 9已完成 待评价, 11 已关闭 13 已评价
let statusList = [{

View File

@ -1,8 +1,17 @@
const app = getApp()
import Notify from '@vant/weapp/notify/notify';
import {
selfFormatTimeYMDHMS,
repairAttachUpload,
} from "../../../../utils/util.js"
import {
getDetailRq,
getStatusName
getStatusName,
flowHandleRq,
faultTypeListRq
} from "../../../../api/repair/repair.js"
Page({
@ -17,17 +26,26 @@ Page({
files: [],
innerAudioContext: null, // 音频对象
innerAudioContextIsPlay: false, // 音频对象-是否播放
statusList: [{
form: {
cause: "",
solution: "",
failureTypeId: null,
failureTypeName: "",
resolve: null,
fileList: [],
},
solveList: [{
name: '已解决',
status: 1,
isSelect: true,
isSelect: false,
},
{
name: '未解决',
status: 2,
status: 0,
isSelect: false,
}
]
],
failureTypeList: []
},
/**
@ -39,7 +57,10 @@ Page({
_this.setData({
...options
})
// 详情
_this.getDetail(options.id)
// 查询故障原因-字典
_this.getFaultTypeList()
},
getDetail(id) {
@ -68,8 +89,8 @@ Page({
})
},
// 播放语音
startAudio() {
// 播放语音
startAudio() {
console.log('startAudio');
let _this = this
// 获取innerAudioContext实例
@ -104,6 +125,199 @@ Page({
})
},
// 接收/退回-提交
receiveSubmit(e) {
console.log('receiveSubmit', e);
let _this = this
let status = e.currentTarget.dataset.status
let data = {
"repair": {
"id": _this.data.id
},
"content": "",
"operate": ""
}
if (status == 'yes') {
data.content = "接收工单"
data.operate = "NEXT"
} else {
data.content = "退回工单"
data.operate = "BACK"
}
flowHandleRq(data).then(res => {
console.log('flowHandleRq', res);
if (res.code == 0) {
app.vantNotifySuccess(Notify, res.msg)
_this.getDetail(_this.data.id)
} else {
app.vantNotifyErr(Notify, res.msg)
}
})
},
// input输入内容监听
fieldInput(e) {
console.log('fieldInput', e);
let _this = this;
let form = _this.data.form;
form[e.currentTarget.dataset.name] = e.detail
_this.setData({
form
})
},
// 查询故障原因-字典
getFaultTypeList() {
let _this = this
faultTypeListRq().then(res => {
console.log('getFaultTypeList', res);
let failureTypeList = res.rows.map(item => {
return {
id: item.id,
name: item.name,
isSelect: false,
}
})
_this.setData({
failureTypeList
})
})
},
// 选择故障类型
selectFaultType(e) {
console.log('selectFaultType', e);
let _this = this
let obj = e.currentTarget.dataset.obj
let failureTypeList = _this.data.failureTypeList.map(item => {
if (item.id == obj.id) {
item.isSelect = !item.isSelect
let form = _this.data.form
if (item.isSelect) {
form.failureTypeId = item.id
form.failureTypeName = item.name
} else {
form.failureTypeId = null
form.failureTypeName = ''
}
_this.setData(form)
} else {
item.isSelect = false
}
return item
})
_this.setData({
failureTypeList
})
},
// 选择-是否解决
selectSolve(e) {
console.log('selectSolve', e);
let _this = this
let obj = e.currentTarget.dataset.obj
let solveList = _this.data.solveList.map(item => {
if (item.status == obj.status) {
item.isSelect = !item.isSelect
let form = _this.data.form
if (item.isSelect) {
form.resolve = item.status
} else {
form.resolve = null
}
_this.setData(form)
} else {
item.isSelect = false
}
return item
})
_this.setData({
solveList
})
},
// 文件-上传后
async fileAfterRead(event) {
let _this = this;
console.log('fileAfterRead', event);
// 上传完成需要更新 fileList
let fileList = _this.data.form.fileList;
//
const {
file
} = event.detail;
// 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
for (let i = 0; i < file.length; i++) {
let url = file[i].url;
await repairAttachUpload({
url,
operate: 'repair'
}).then(res => {
console.log('upload file ', res);
fileList.push({
id: res.id,
relativeUrl: res.url,
url: app.IMG_NAME + res.url,
deletable: true,
})
})
}
let form = _this.data.form
form.fileList = fileList
_this.setData({
form
})
},
// 删除图片
deleteImg(event) {
console.log('deleteImg', event);
let _this = this;
let fileList = _this.data.form.fileList;
fileList.splice(event.detail.index, 1);
//
let form = _this.data.form
form.fileList = fileList
_this.setData({
form
})
},
// 反馈-提交
feedbackSubmit() {
console.log('feedbackSubmit');
let _this = this
let form = _this.data.form
// 校验数据
//
// 报修名称
if (form.resolve == null) {
app.vantNotifyErr(Notify, '请选择是否解决!')
return;
}
//
let files = form.fileList.map(item => item.id)
let data = {
"repair": {
"id": _this.data.id,
...form,
},
files,
"content": "维修-提交反馈",
"operate": "NEXT"
}
flowHandleRq(data).then(res => {
console.log('flowHandleRq', res);
if (res.code == 0) {
app.vantNotifySuccess(Notify, res.msg)
_this.getDetail(_this.data.id)
} else {
app.vantNotifyErr(Notify, res.msg)
}
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/

View File

@ -5,6 +5,7 @@
"van-field": "@vant/weapp/field/index",
"van-uploader": "@vant/weapp/uploader/index",
"van-checkbox": "@vant/weapp/checkbox/index",
"van-checkbox-group": "@vant/weapp/checkbox-group/index"
"van-checkbox-group": "@vant/weapp/checkbox-group/index",
"van-notify": "@vant/weapp/notify/index"
}
}

View File

@ -12,9 +12,9 @@
<view class="time {{detail.status == '7' ? 'activity' : ''}}">{{detail.createTime}}</view>
</view>
<view class="line"></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 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>
@ -25,7 +25,7 @@
<view class="labelView">报修单信息</view>
<view class="step1">
<view class="step1" wx:if="{{detail.status == '5' || detail.status == '7' }}">
<view class="itemView">
<view class="name">报修名称</view>
<view class="content">{{detail.repairName}}</view>
@ -79,47 +79,56 @@
</view>
</view>
<view class="bottomView">
<view class="btn">接收</view>
<view class="btn oragen">退回</view>
<view class="bottomView" wx:if="{{detail.status == '5' }}">
<view class="btn" data-status="yes" bind:tap="receiveSubmit">接收</view>
<view class="btn oragen" data-status="no" bind:tap="receiveSubmit">退回</view>
</view>
</view>
<view class="step2">
<view class="step2" wx:if="{{detail.status == '7' }}">
<view class="itemView">
<view class="title">分析原因</view>
<view class="content">
<van-field model:value="{{ value }}" type="textarea" placeholder="请输入用户名" maxlength="{{100}}" show-word-limit border="{{true}}" autosize input-class="selfTextarea" />
<van-field model:value="{{ form.cause }}" bind:input="fieldInput" data-name="cause" type="textarea" placeholder="请输入" maxlength="{{100}}" show-word-limit border="{{true}}" autosize input-class="selfTextarea" clearable/>
</view>
</view>
<view class="itemView">
<view class="title">解决方案</view>
<view class="content">
<van-field model:value="{{ value }}" type="textarea" placeholder="请输入用户名" maxlength="{{100}}" show-word-limit border="{{true}}" autosize input-class="selfTextarea" />
<van-field model:value="{{ form.solution }}" bind:input="fieldInput" data-name="solution" type="textarea" placeholder="请输入" maxlength="{{100}}" show-word-limit border="{{true}}" autosize input-class="selfTextarea" clearable/>
</view>
</view>
<view class="itemView">
<view class="title">图片</view>
<view class="title">故障类型</view>
<view class="content">
<view class="checkItemView" wx:for="{{failureTypeList}}" wx:key="*this" bind:tap="selectFaultType" data-obj="{{item}}">
<van-checkbox value="{{ item.isSelect }}" shape="square" icon-size="36rpx"></van-checkbox>
<view class="name">{{item.name}}</view>
</view>
</view>
</view>
<view class="itemView">
<view class="title">图片/视频</view>
<view class="content">
<!-- 上传图片 -->
<view class="uploadImgView">
<van-uploader file-list="{{ fileList }}" upload-text="点击上传照片" use-before-read bind:before-read="beforeRead" bind:after-read="afterRead" deletable="{{ true }}" bind:delete="deleteImg" max-count="1" />
<van-uploader file-list="{{ form.fileList }}" upload-text="点击上传" bind:after-read="fileAfterRead" deletable="{{ true }}" bind:delete="deleteImg" max-count="6" accept="media" multiple/>
</view>
</view>
</view>
<view class="itemView">
<view class="title">是否解决</view>
<view class="content">
<view class="checkItemView" wx:for="{{statusList}}" wx:key="*this">
<van-checkbox value="{{ item.isSelect }}" data-id="{{item.status}}" shape="square" icon-size="36rpx" bind:tap="checkBoxClick"></van-checkbox>
<view class="name" data-id="{{item.status}}" bind:tap="checkBoxClick">{{item.name}}</view>
<view class="checkItemView" wx:for="{{solveList}}" wx:key="*this" bind:tap="selectSolve" data-obj="{{item}}">
<van-checkbox value="{{ item.isSelect }}" shape="square" icon-size="36rpx" ></van-checkbox>
<view class="name">{{item.name}}</view>
</view>
</view>
</view>
<view class="btn">提交反馈</view>
<view class="btn" bind:tap="feedbackSubmit">提交反馈</view>
</view>
<view class="step3">
<view class="step3" wx:if="{{detail.status >= '9' }}">
<view class="mainView">
<van-icon name="success" color="#4e96f8" size="180rpx" />
<view class="label1">处理成功</view>
@ -130,3 +139,6 @@
</view>
</view>
<!-- 消息通知 -->
<van-notify id="van-notify" />