维修工完成工单,服务顾问授权
This commit is contained in:
parent
d4d70c01b8
commit
a193fc2c5c
@ -51,9 +51,9 @@
|
|||||||
<view @click="receiveOrder(order.id)" v-if="order.ticketsStatus == '05' && order.ticketsWorkStatus=='01' && roleCanJd" class="btn qc">
|
<view @click="receiveOrder(order.id)" v-if="order.ticketsStatus == '05' && order.ticketsWorkStatus=='01' && roleCanJd" class="btn qc">
|
||||||
接单
|
接单
|
||||||
</view>
|
</view>
|
||||||
<view @click="doOrder(order.id)" v-if="order.ticketsStatus == '05' && order.ticketsWorkStatus=='04' && roleCanSg" class="btn qc">
|
<!-- <view @click="doOrder(order.id)" v-if="order.ticketsStatus == '05' && order.ticketsWorkStatus=='04' && roleCanSg" class="btn qc">-->
|
||||||
开始施工
|
<!-- 开始施工-->
|
||||||
</view>
|
<!-- </view>-->
|
||||||
<view v-if="order.ticketsStatus == '06' && roleCanQc" class="btn qc">
|
<view v-if="order.ticketsStatus == '06' && roleCanQc" class="btn qc">
|
||||||
告知取车
|
告知取车
|
||||||
</view>
|
</view>
|
||||||
@ -112,15 +112,9 @@ export default {
|
|||||||
//服务顾问可以告知取车
|
//服务顾问可以告知取车
|
||||||
this.roleCanQc = true
|
this.roleCanQc = true
|
||||||
}
|
}
|
||||||
if(userInfo.roleCodes.includes("repair_staff")){
|
if(userInfo.roleCodes.includes("repair_staff") && this.order.nowRepairId==userInfo.id){
|
||||||
//维修工角色可以接单
|
//维修工角色,并且指派处理的人就是当前用户可以接单
|
||||||
this.roleCanJd = true
|
this.roleCanJd = true
|
||||||
console.log(this.order.nowRepairId,"this.order.nowRepairId")
|
|
||||||
console.log(userInfo.id,"userInfo.id")
|
|
||||||
if(this.order.nowRepairId==userInfo.id){
|
|
||||||
//当前用户就是接单的人,可以施工、施工过程、结束施工操作
|
|
||||||
this.roleCanSg = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLoad(){
|
onLoad(){
|
||||||
|
224
pages-order/chooseImg/chooseImg.vue
Normal file
224
pages-order/chooseImg/chooseImg.vue
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
<template>
|
||||||
|
<view class="container">
|
||||||
|
<VNavigationBar background-color="#fff" title="图片授权客户" title-color="#333"></VNavigationBar>
|
||||||
|
<view class="body">
|
||||||
|
<!-- <div class="searchBox">-->
|
||||||
|
<!-- <div class="inputBox">-->
|
||||||
|
<!-- <input placeholder="请输入人员姓名" type="text">-->
|
||||||
|
<!-- </div>-->
|
||||||
|
<!-- <text>搜索</text>-->
|
||||||
|
<!-- </div>-->
|
||||||
|
<div class="userList">
|
||||||
|
<u-checkbox-group
|
||||||
|
placement="column"
|
||||||
|
v-model="checked">
|
||||||
|
<view v-for="(item, index) in list" :key="item.id" class="userItem">
|
||||||
|
<view class="info">
|
||||||
|
<image :src="imgUrlPrex + item.image" class="projImgItem" @click="prviewImage(list,index)"></image>
|
||||||
|
<view>
|
||||||
|
<text class="trade" v-if="item.isOpen=='1'" style="color:#0174F6 ">已授权</text>
|
||||||
|
<text class="trade" v-else>未授权</text>
|
||||||
|
<u-checkbox style="float: right" :name="item.id" iconSize="24" shape="circle" activeColor="#1890ff"></u-checkbox>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- <radio :value="item.userId+''" :checked="index === current" />-->
|
||||||
|
</view>
|
||||||
|
</u-checkbox-group>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
<view class="foot">
|
||||||
|
<view class="submit" @click="submit">保存</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import VNavigationBar from '@/components/VNavigationBar.vue'
|
||||||
|
import {bus} from "@/utils/eventBus";
|
||||||
|
import request from '@/utils/request';
|
||||||
|
import {getDictTextByCodeAndValue} from "@/utils/utils";
|
||||||
|
import {getJSONData} from "@/utils/auth";
|
||||||
|
import config from '@/config'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
VNavigationBar,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
list: [],
|
||||||
|
imgUrlPrex:config.baseImageUrl,
|
||||||
|
checked:[],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
checked: {
|
||||||
|
handler(newVal, oldVal) {
|
||||||
|
this.buildList()
|
||||||
|
console.log('数组发生变化:', newVal);
|
||||||
|
},
|
||||||
|
deep: true
|
||||||
|
},
|
||||||
|
},
|
||||||
|
onLoad(data) {
|
||||||
|
this.list = getJSONData("chooseImg")
|
||||||
|
this.list.map((item)=>{
|
||||||
|
if(item.isOpen=='1'){
|
||||||
|
this.checked.push(item.id)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/**
|
||||||
|
* 预览图片
|
||||||
|
*/
|
||||||
|
prviewImage(imgList, index) {
|
||||||
|
let urls = []
|
||||||
|
imgList.forEach(i => {
|
||||||
|
urls.push(this.imgUrlPrex+i.image)
|
||||||
|
})
|
||||||
|
uni.previewImage({
|
||||||
|
urls: urls,
|
||||||
|
current: index
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 选中或取消选中,重新组装数据
|
||||||
|
*/
|
||||||
|
buildList(){
|
||||||
|
this.list.map((item)=>{
|
||||||
|
if(this.checked.includes(item.id)){
|
||||||
|
item.isOpen="1"
|
||||||
|
}else{
|
||||||
|
item.isOpen="0"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
submit() {
|
||||||
|
let itemList = []
|
||||||
|
this.list.map((item)=>{
|
||||||
|
itemList.push({
|
||||||
|
id:item.id,
|
||||||
|
isOpen:item.isOpen
|
||||||
|
})
|
||||||
|
})
|
||||||
|
console.log(itemList)
|
||||||
|
request({
|
||||||
|
url: '/admin-api/dl/repair-records/updateItemBatch',
|
||||||
|
method: 'post',
|
||||||
|
data:itemList
|
||||||
|
}).then((res)=>{
|
||||||
|
uni.showToast({
|
||||||
|
title: '操作成功!',
|
||||||
|
icon: 'none'
|
||||||
|
})
|
||||||
|
setTimeout(()=>{
|
||||||
|
uni.navigateBack()
|
||||||
|
},700)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.container {
|
||||||
|
height: 100%;
|
||||||
|
background-color: #F3F5F7;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.body {
|
||||||
|
flex: 1;
|
||||||
|
height: 0;
|
||||||
|
overflow: auto;
|
||||||
|
padding: 20rpx 0;
|
||||||
|
|
||||||
|
.projImgItem {
|
||||||
|
width: 180rpx;
|
||||||
|
height: 180rpx;
|
||||||
|
background-color: #efefef;
|
||||||
|
}
|
||||||
|
|
||||||
|
.searchBox {
|
||||||
|
margin: 0 32rpx;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border-radius: 8rpx 8rpx 8rpx 8rpx;
|
||||||
|
padding: 30rpx;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
column-gap: 20rpx;
|
||||||
|
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #0174F6;
|
||||||
|
|
||||||
|
.inputBox {
|
||||||
|
flex: 1;
|
||||||
|
width: 0;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.u-checkbox-group{
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
.userList {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 0 20rpx;
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
.userItem {
|
||||||
|
margin: 10rpx;
|
||||||
|
border: 1rpx solid #DDDDDD;
|
||||||
|
border-radius: 10rpx;
|
||||||
|
width: 210rpx;
|
||||||
|
float: left;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.info {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
row-gap: 20rpx;
|
||||||
|
margin: auto;
|
||||||
|
|
||||||
|
.name {
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
.trade {
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//.userItem:last-child {
|
||||||
|
// border-bottom: none;
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.foot {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 30rpx;
|
||||||
|
|
||||||
|
.submit {
|
||||||
|
margin: 0 auto;
|
||||||
|
width: 510rpx;
|
||||||
|
height: 76rpx;
|
||||||
|
background: #0174F6;
|
||||||
|
border-radius: 38rpx 38rpx 38rpx 38rpx;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -9,17 +9,20 @@
|
|||||||
<!-- <text>搜索</text>-->
|
<!-- <text>搜索</text>-->
|
||||||
<!-- </div>-->
|
<!-- </div>-->
|
||||||
<div class="userList">
|
<div class="userList">
|
||||||
<u-checkbox-group
|
<!-- <u-checkbox-group-->
|
||||||
placement="column"
|
<!-- placement="column"-->
|
||||||
v-model="checked">
|
<!-- v-model="checked">-->
|
||||||
<view v-for="item in list" :key="item.userId" class="userItem">
|
<radio-group @change="radioChange">
|
||||||
|
<label v-for="(item, index) in list" :key="item.userId" class="userItem">
|
||||||
<view class="info">
|
<view class="info">
|
||||||
<text class="name">{{item.userName}}</text>
|
<text class="name">{{item.userName}}</text>
|
||||||
<text class="trade">{{item.workTypeText}}</text>
|
<text class="trade">{{item.workTypeText}}</text>
|
||||||
</view>
|
</view>
|
||||||
<u-checkbox v-model="item.checked" :name="item.userId" iconSize="24" shape="circle" activeColor="#1890ff"></u-checkbox>
|
<radio :value="item.userId+''" :checked="index === current" />
|
||||||
</view>
|
<!-- <u-checkbox v-model="item.checked" :name="item.userId" iconSize="24" shape="circle" activeColor="#1890ff"></u-checkbox>-->
|
||||||
</u-checkbox-group>
|
</label>
|
||||||
|
</radio-group>
|
||||||
|
<!-- </u-checkbox-group>-->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</view>
|
</view>
|
||||||
@ -41,9 +44,12 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
current: 0,
|
||||||
ticketId:'',
|
ticketId:'',
|
||||||
list: [],
|
list: [],
|
||||||
checked: []
|
checkedUserId:"",
|
||||||
|
checkedUserName:"",
|
||||||
|
ifDetail:false,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLoad(data) {
|
onLoad(data) {
|
||||||
@ -51,8 +57,23 @@ export default {
|
|||||||
this.ticketId = data.id
|
this.ticketId = data.id
|
||||||
this.workByTicketId()
|
this.workByTicketId()
|
||||||
}
|
}
|
||||||
|
if(data.ifDetail){
|
||||||
|
//从订单详情页跳过来的,返回时需要返回2步
|
||||||
|
this.ifDetail = true
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
radioChange: function(evt) {
|
||||||
|
for (let i = 0; i < this.list.length; i++) {
|
||||||
|
if (this.list[i].userId == evt.detail.value) {
|
||||||
|
this.current = i;
|
||||||
|
this.checkedUserId = this.list[i].userId
|
||||||
|
this.checkedUserName = this.list[i].userName
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(this.checkedUserName)
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* 通过工单id查询维修工人
|
* 通过工单id查询维修工人
|
||||||
*/
|
*/
|
||||||
@ -69,12 +90,10 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
submit() {
|
submit() {
|
||||||
const nowRepairId = this.checked[0]
|
|
||||||
const nowRepair = this.list.filter(item => nowRepairId===item.userId);
|
|
||||||
const param = {
|
const param = {
|
||||||
id:this.ticketId,
|
id:this.ticketId,
|
||||||
nowRepairId:nowRepairId,
|
nowRepairId:this.checkedUserId,
|
||||||
nowRepairName:nowRepair[0].userName,
|
nowRepairName:this.checkedUserName,
|
||||||
}
|
}
|
||||||
console.log(param)
|
console.log(param)
|
||||||
request({
|
request({
|
||||||
@ -87,7 +106,13 @@ export default {
|
|||||||
icon: 'none'
|
icon: 'none'
|
||||||
})
|
})
|
||||||
setTimeout(()=>{
|
setTimeout(()=>{
|
||||||
uni.navigateBack()
|
if(this.ifDetail){
|
||||||
|
uni.navigateBack({
|
||||||
|
delta: 2 // 返回倒数第2页
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
uni.navigateBack()
|
||||||
|
}
|
||||||
},700)
|
},700)
|
||||||
})
|
})
|
||||||
//
|
//
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
style="width: 48rpx;height: 48rpx"></image>
|
style="width: 48rpx;height: 48rpx"></image>
|
||||||
<view class="flagBody">
|
<view class="flagBody">
|
||||||
<text>{{ ticketInfo.ticketsStatus == '02' ? '已完成' : ticketInfo.statusStr }}</text>
|
<text>{{ ticketInfo.ticketsStatus == '02' ? '已完成' : ticketInfo.statusStr }}</text>
|
||||||
<text class="flagDesc">当前工单维修项目{{ ticketInfo.flag == '02' ? '已全部完成' : ticketInfo.statusStr }}</text>
|
<text class="flagDesc" v-if="nowRepair.repairItemId">当前工单维修项目:{{ nowRepair.itemName }}</text>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
</view>
|
</view>
|
||||||
@ -173,11 +173,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-if="ticketInfo.wares && ticketInfo.wares.length > 0" class="card cardInfo projCard">
|
<view v-if="ticketInfo.wares && ticketInfo.wares.length > 0" class="card cardInfo projCard">
|
||||||
<view class="projTitle">维修配件 </view>
|
<view class="projTitle">维修配件 <view class="dl-ifcus" v-if="canOpenCus"><text>是否开放给客户</text><switch :checked="ticketInfo.partShow == '1'" style="transform:scale(0.7)" @change="toPartShow" /></view></view>
|
||||||
<view class="infoItem" style="flex: 1">
|
|
||||||
<view class="label"><text>是否开放给客户</text><switch :checked="ticketInfo.partShow == '1'" style="transform:scale(0.7)" @change="toPartShow" /></view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="projList">
|
<view class="projList">
|
||||||
<template>
|
<template>
|
||||||
<view v-for="item in ticketInfo.wares" :key="item.id" class="projEditItem">
|
<view v-for="item in ticketInfo.wares" :key="item.id" class="projEditItem">
|
||||||
@ -216,18 +212,18 @@
|
|||||||
{{ item.remark }}
|
{{ item.remark }}
|
||||||
</view>
|
</view>
|
||||||
<view class="projImg">
|
<view class="projImg">
|
||||||
<image v-for="(img, imgIndex) in item.itemList" :key="imgIndex" :src="imgUrlPrex + img.image"
|
<image v-for="(img, imgIndex) in item.itemList" @click="prviewImage(item.itemList,imgIndex)" :key="imgIndex" :src="imgUrlPrex + img.image"
|
||||||
class="projImgItem"></image>
|
class="projImgItem"></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="projSend">
|
<view class="projSend" v-if="item.itemList.length>0 && canOpenCus">
|
||||||
<template v-if="item.isSend">
|
<!-- <template >-->
|
||||||
<image mode="aspectFit" src="/static/icons/sendSuccess.png"
|
<!-- <image mode="aspectFit" src="/static/icons/sendSuccess.png"-->
|
||||||
style="width: 28rpx;height: 28rpx"></image>
|
<!-- style="width: 28rpx;height: 28rpx"></image>-->
|
||||||
<text style="color: #858BA0">已发送客户</text>
|
<!-- <text style="color: #858BA0">已发送客户</text>-->
|
||||||
</template>
|
<!-- </template>-->
|
||||||
<template v-else>
|
<template >
|
||||||
<image mode="aspectFit" src="/static/icons/send.png" style="width: 28rpx;height: 28rpx"></image>
|
<image mode="aspectFit" src="/static/icons/send.png" style="width: 28rpx;height: 28rpx"></image>
|
||||||
<text style="color: #0174F6">发送给客户</text>
|
<text style="color: #0174F6" @click="sendCusImgManage(item.itemList)">发送给客户</text>
|
||||||
</template>
|
</template>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
@ -242,22 +238,13 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- 悬浮操作-->
|
<!-- 悬浮操作-->
|
||||||
<uni-fab ref="fab" :pattern="pattern" :content="content" :horizontal="horizontal" :vertical="vertical"
|
<uni-fab v-if="content.length>0" ref="fab" :pattern="pattern" :content="content" :horizontal="horizontal" :vertical="vertical"
|
||||||
:direction="direction" @trigger="trigger" @fabClick="fabClick" />
|
:direction="direction" @trigger="trigger" @fabClick="fabClick" />
|
||||||
<!-- 普通弹窗---拍照上传 -->
|
<!-- 普通弹窗---拍照上传 -->
|
||||||
<uni-popup ref="popup" background-color="#fff">
|
<uni-popup ref="popup" background-color="#fff">
|
||||||
<view class="popup-content">
|
<view class="popup-content">
|
||||||
<view class="dl-avatar-box">
|
<view class="dl-avatar-box">
|
||||||
<uni-file-picker :value="fileList" :sizeType="sizeType" @select="afterRead" @delete="deleteFile" limit="9" title="最多选择9张图片"></uni-file-picker>
|
<uni-file-picker :value="fileList" :sizeType="sizeType" @select="afterRead" @delete="deleteFile" limit="9" title="最多选择9张图片"></uni-file-picker>
|
||||||
<!-- <u-upload-->
|
|
||||||
<!-- :action="uploadUrl"-->
|
|
||||||
<!-- :headers="headers"-->
|
|
||||||
<!-- :file-list="fileList"-->
|
|
||||||
<!-- :max-count="10"-->
|
|
||||||
<!-- :show-upload-btn="true"-->
|
|
||||||
<!-- @after-read="afterRead"-->
|
|
||||||
<!-- @delete="deleteFile"-->
|
|
||||||
<!-- ></u-upload>-->
|
|
||||||
</view>
|
</view>
|
||||||
<button type="primary" @click="saveWorkingItem">保存</button>
|
<button type="primary" @click="saveWorkingItem">保存</button>
|
||||||
</view>
|
</view>
|
||||||
@ -271,7 +258,7 @@ import {bus} from "@/utils/eventBus";
|
|||||||
import request from '@/utils/request';
|
import request from '@/utils/request';
|
||||||
import upload from '@/utils/upload'
|
import upload from '@/utils/upload'
|
||||||
import {getOrderStatusText,formatDate,formatTimestamp,getDictTextByCodeAndValue,saveTicketsRecords} from "@/utils/utils";
|
import {getOrderStatusText,formatDate,formatTimestamp,getDictTextByCodeAndValue,saveTicketsRecords} from "@/utils/utils";
|
||||||
import {getUserInfo} from '@/utils/auth'
|
import {getUserInfo,setJSONData} from '@/utils/auth'
|
||||||
import config from '@/config'
|
import config from '@/config'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
@ -292,6 +279,7 @@ export default {
|
|||||||
},
|
},
|
||||||
content: [],
|
content: [],
|
||||||
sizeType:['compressed'],
|
sizeType:['compressed'],
|
||||||
|
//上传的图片数组
|
||||||
fileList: [],
|
fileList: [],
|
||||||
imgUrlPrex:config.baseImageUrl,
|
imgUrlPrex:config.baseImageUrl,
|
||||||
//是否详情页(0否1是)
|
//是否详情页(0否1是)
|
||||||
@ -300,6 +288,15 @@ export default {
|
|||||||
ticketId: '',
|
ticketId: '',
|
||||||
//工单信息
|
//工单信息
|
||||||
ticketInfo: null,
|
ticketInfo: null,
|
||||||
|
//当前维修的项目
|
||||||
|
nowRepair:{
|
||||||
|
repairItemId:"",
|
||||||
|
itemName:"",
|
||||||
|
},
|
||||||
|
//是否可以授权给客户看
|
||||||
|
canOpenCus:false,
|
||||||
|
//当前选择的操作:working-维修期间|done_half-阶段完成|done-全部完成递交下一维修班组选人维修
|
||||||
|
nowChooseOperate:"",
|
||||||
carInfo: {},
|
carInfo: {},
|
||||||
userInfo: {},
|
userInfo: {},
|
||||||
loginUser:{},
|
loginUser:{},
|
||||||
@ -362,9 +359,24 @@ export default {
|
|||||||
if (data.isDetail){
|
if (data.isDetail){
|
||||||
this.isDetail = data.isDetail
|
this.isDetail = data.isDetail
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
onShow(){
|
||||||
this.getOrderDetail()
|
this.getOrderDetail()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
/**
|
||||||
|
* 预览图片
|
||||||
|
*/
|
||||||
|
prviewImage(imgList, index) {
|
||||||
|
let urls = []
|
||||||
|
imgList.forEach(i => {
|
||||||
|
urls.push(this.imgUrlPrex+i.image)
|
||||||
|
})
|
||||||
|
uni.previewImage({
|
||||||
|
urls: urls,
|
||||||
|
current: index
|
||||||
|
});
|
||||||
|
},
|
||||||
afterRead(file) {
|
afterRead(file) {
|
||||||
for (let i = 0; i < file.tempFilePaths.length; i++) {
|
for (let i = 0; i < file.tempFilePaths.length; i++) {
|
||||||
upload({
|
upload({
|
||||||
@ -382,18 +394,33 @@ export default {
|
|||||||
console.log('删除文件');
|
console.log('删除文件');
|
||||||
this.fileList.splice(index, 1);
|
this.fileList.splice(index, 1);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存工作记录信息
|
* 保存工作记录信息
|
||||||
*/
|
*/
|
||||||
async saveWorkingItem(){
|
async saveWorkingItem(){
|
||||||
try {
|
try {
|
||||||
let fileStr = this.fileList.map(item=>item.url.replace(config.baseImageUrl,"")).join(",")
|
let fileStr = this.fileList.map(item=>item.url.replace(config.baseImageUrl,"")).join(",")
|
||||||
const result = await saveTicketsRecords(this.ticketInfo.id,null,null,null,"sgz","施工中拍照记录",fileStr);
|
if("working"==this.nowChooseOperate){
|
||||||
|
//维修中拍照
|
||||||
|
const result = await saveTicketsRecords(this.ticketInfo.id,null,null,null,"sgz","施工中拍照记录",fileStr);
|
||||||
|
}else if("done_half"==this.nowChooseOperate || "done"==this.nowChooseOperate){
|
||||||
|
//阶段完成
|
||||||
|
const result = await saveTicketsRecords(this.ticketInfo.id, '03',this.nowRepair.repairItemId,"03","sgwczj","阶段完成",fileStr);
|
||||||
|
}
|
||||||
this.$refs.popup.close()
|
this.$refs.popup.close()
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '操作成功',
|
title: '操作成功',
|
||||||
icon: 'none'
|
icon: 'none'
|
||||||
})
|
})
|
||||||
|
if("done"==this.nowChooseOperate){
|
||||||
|
//全部完成,需要指派下一个维修人
|
||||||
|
setTimeout(()=>{
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages-order/choosePeople/choosePeople?id=' + this.ticketInfo.id +'&ifDetail=true'
|
||||||
|
})
|
||||||
|
},500)
|
||||||
|
}
|
||||||
console.error("result",result);
|
console.error("result",result);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
@ -403,21 +430,45 @@ export default {
|
|||||||
* 判断工单状态和角色控制显示什么操作按钮
|
* 判断工单状态和角色控制显示什么操作按钮
|
||||||
*/
|
*/
|
||||||
checkRoleOperate(){
|
checkRoleOperate(){
|
||||||
|
this.content = []
|
||||||
if(this.loginUser.roleCodes.includes("service_advisor")){
|
if(this.loginUser.roleCodes.includes("service_advisor")){
|
||||||
//服务顾问
|
//服务顾问
|
||||||
|
this.canOpenCus = true
|
||||||
|
}
|
||||||
|
if(this.loginUser.roleCodes.includes("weixiu")){
|
||||||
|
//维修管理员
|
||||||
|
this.canOpenCus = true
|
||||||
|
}
|
||||||
|
if(this.loginUser.roleCodes.includes("general_inspection")){
|
||||||
|
//维修总检
|
||||||
|
this.canOpenCus = true
|
||||||
}
|
}
|
||||||
if(this.loginUser.roleCodes.includes("repair_staff")){
|
if(this.loginUser.roleCodes.includes("repair_staff")){
|
||||||
//维修工角色
|
//维修工角色
|
||||||
if(this.ticketInfo.nowRepairId==this.loginUser.id){
|
if(this.ticketInfo.nowRepairId==this.loginUser.id && "05"==this.ticketInfo.ticketsStatus){
|
||||||
//当前用户就是施工人,可以提交配件申请
|
//当前用户就是施工人,,订单状态处于维修中 可以提交配件申请
|
||||||
this.content.push({
|
this.content.push({
|
||||||
text: '配件申请', active: false,code:"apply"
|
text: '配件申请', active: false,code:"apply"
|
||||||
})
|
})
|
||||||
if("02"==this.ticketInfo.ticketsWorkStatus){
|
if("02"==this.ticketInfo.ticketsWorkStatus){
|
||||||
//当前正在施工,可以随时上传图片
|
//当前正在施工,可以随时上传图片、也可以结束施工
|
||||||
this.content.push({
|
this.content.push({
|
||||||
text: '拍照上传', active: false,code:"working"
|
text: '拍照上传', active: false,code:"working"
|
||||||
})
|
})
|
||||||
|
this.content.push({
|
||||||
|
text: '阶段完成', active: false,code:"done_half"
|
||||||
|
})
|
||||||
|
this.content.push({
|
||||||
|
text: '全部完成', active: false,code:"done"
|
||||||
|
})
|
||||||
|
//查当前维修的项目
|
||||||
|
this.selectNowRepair()
|
||||||
|
}
|
||||||
|
if("03"==this.ticketInfo.ticketsWorkStatus || "04"==this.ticketInfo.ticketsWorkStatus) {
|
||||||
|
//当前子状态是已接单和已完成,可以开始施工
|
||||||
|
this.content.push({
|
||||||
|
text: '开始施工', active: false, code: "start"
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -428,10 +479,14 @@ export default {
|
|||||||
trigger(e) {
|
trigger(e) {
|
||||||
console.log(e)
|
console.log(e)
|
||||||
this.content[e.index].active = !e.item.active
|
this.content[e.index].active = !e.item.active
|
||||||
if("working"==e.item.code){
|
this.nowChooseOperate = e.item.code
|
||||||
//维修过程中拍照上传
|
if("working"==e.item.code || "done_half"==e.item.code || "done"==e.item.code){
|
||||||
|
//维修过程中拍照上传、阶段完成、整体完成
|
||||||
this.fileList=[]
|
this.fileList=[]
|
||||||
this.$refs.popup.open("bottom")
|
this.$refs.popup.open("bottom")
|
||||||
|
}else if("start" == e.item.code){
|
||||||
|
//开始施工
|
||||||
|
this.startWork(this.ticketInfo.id)
|
||||||
}
|
}
|
||||||
// uni.showModal({
|
// uni.showModal({
|
||||||
// title: '提示',
|
// title: '提示',
|
||||||
@ -445,6 +500,16 @@ export default {
|
|||||||
// }
|
// }
|
||||||
// })
|
// })
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* 维修照片是否授权给客户看管理
|
||||||
|
*/
|
||||||
|
sendCusImgManage(itemList){
|
||||||
|
console.log(itemList)
|
||||||
|
setJSONData("chooseImg",itemList)
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages-order/chooseImg/chooseImg'
|
||||||
|
})
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* 点击悬浮操作按钮
|
* 点击悬浮操作按钮
|
||||||
*/
|
*/
|
||||||
@ -452,7 +517,54 @@ export default {
|
|||||||
|
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* 是否开放给用户
|
* 开始施工
|
||||||
|
*/
|
||||||
|
startWork(id){
|
||||||
|
let paramsObj = {ticketId:id}
|
||||||
|
//先查当前用户在本工单下有几个维修项目
|
||||||
|
request({
|
||||||
|
url: '/admin-api/repair/titem/listProject',
|
||||||
|
method: 'get',
|
||||||
|
params:paramsObj
|
||||||
|
}).then((res) => {
|
||||||
|
console.log(res)
|
||||||
|
if (res.code == 200 && res.data.length>0) {
|
||||||
|
if(res.data.length==1){
|
||||||
|
//只有1个,直接开始施工
|
||||||
|
this.startWorkRequest(id,"02",res.data[0].id,"02","kssg","开始施工")
|
||||||
|
}else{
|
||||||
|
uni.showActionSheet({
|
||||||
|
itemList: res.data.map(m => m.itemName),
|
||||||
|
success: ({
|
||||||
|
tapIndex
|
||||||
|
}) => {
|
||||||
|
this.startWorkRequest(id,"02",res.data[tapIndex].id,"02","kssg","开始施工")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
uni.showToast({
|
||||||
|
title: '操作失败,请联系管理员',
|
||||||
|
icon: 'none'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 开始施工请求后台
|
||||||
|
*/
|
||||||
|
async startWorkRequest(id,ticketsWorkStatus,itemId,itemStatus,recordType,remark){
|
||||||
|
try {
|
||||||
|
const result = await saveTicketsRecords(id,ticketsWorkStatus,itemId,itemStatus,recordType,remark,null);
|
||||||
|
debugger
|
||||||
|
//刷新数据
|
||||||
|
this.getOrderDetail()
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 是否开放给用户----配件单
|
||||||
*/
|
*/
|
||||||
toPartShow(row){
|
toPartShow(row){
|
||||||
console.log(row.detail.value)
|
console.log(row.detail.value)
|
||||||
@ -514,7 +626,28 @@ export default {
|
|||||||
this.checkRoleOperate()
|
this.checkRoleOperate()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* 查当前维修的项目
|
||||||
|
*/
|
||||||
|
selectNowRepair(){
|
||||||
|
request({
|
||||||
|
url: '/admin-api/dl/repair-records/listByTicketId',
|
||||||
|
method: 'get',
|
||||||
|
params:{ticketId:this.ticketInfo.id}
|
||||||
|
}).then((res)=>{
|
||||||
|
if(res.code==200){
|
||||||
|
if(res.data && res.data.hasOwnProperty("repair_item_id")){
|
||||||
|
this.nowRepair.repairItemId = res.data.repair_item_id
|
||||||
|
this.nowRepair.itemName = res.data.item_name
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
uni.showToast({
|
||||||
|
title: res.msg,
|
||||||
|
icon: 'none'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
editPeople(type, proj) {
|
editPeople(type, proj) {
|
||||||
bus.$off('choosePeople')
|
bus.$off('choosePeople')
|
||||||
bus.$on('choosePeople', (data) => {
|
bus.$on('choosePeople', (data) => {
|
||||||
@ -676,6 +809,11 @@ export default {
|
|||||||
color: #333333;
|
color: #333333;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dl-ifcus{
|
||||||
|
font-size: 14px;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
.carCard {
|
.carCard {
|
||||||
.orderFlag {
|
.orderFlag {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<view class="body">
|
<view class="body">
|
||||||
<view class="tabList">
|
<view class="tabList">
|
||||||
<view v-for="(item, index) in tabList" :key="index" :class="{actived: item.id === activeKey}" class="tabItem"
|
<view v-for="(item, index) in tabList" :key="index" :class="{actived: item.id === activeKey}" class="tabItem"
|
||||||
@click="changeTabFun(item.id)">
|
@click.stop="changeTabFun(item.id)">
|
||||||
{{ item.title }}
|
{{ item.title }}
|
||||||
<view v-if="activeKey === item.id" class="activeLine"></view>
|
<view v-if="activeKey === item.id" class="activeLine"></view>
|
||||||
</view>
|
</view>
|
||||||
@ -282,6 +282,7 @@ export default {
|
|||||||
.tabItem {
|
.tabItem {
|
||||||
padding: 30rpx;
|
padding: 30rpx;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
z-index: 9999999;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
|
@ -91,6 +91,13 @@
|
|||||||
"enablePullDownRefresh": true
|
"enablePullDownRefresh": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "chooseImg/chooseImg",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "",
|
||||||
|
"enablePullDownRefresh": true
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "reviewList/reviewList",
|
"path": "reviewList/reviewList",
|
||||||
"style": {
|
"style": {
|
||||||
|
@ -245,7 +245,7 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
border-radius: 45px;
|
border-radius: 45px;
|
||||||
box-shadow: $uni-shadow-base;
|
//box-shadow: $uni-shadow-base;
|
||||||
}
|
}
|
||||||
|
|
||||||
.uni-cursor-point {
|
.uni-cursor-point {
|
||||||
@ -284,6 +284,7 @@
|
|||||||
/* #ifdef H5 */
|
/* #ifdef H5 */
|
||||||
right: calc(15px + var(--window-right));
|
right: calc(15px + var(--window-right));
|
||||||
bottom: calc(30px + var(--window-bottom));
|
bottom: calc(30px + var(--window-bottom));
|
||||||
|
border: 1px solid #d6dee7;
|
||||||
/* #endif */
|
/* #endif */
|
||||||
// padding: 10px;
|
// padding: 10px;
|
||||||
}
|
}
|
||||||
@ -429,7 +430,7 @@
|
|||||||
|
|
||||||
.uni-fab__content--other-platform {
|
.uni-fab__content--other-platform {
|
||||||
border-width: 0px;
|
border-width: 0px;
|
||||||
box-shadow: $uni-shadow-base;
|
//box-shadow: $uni-shadow-base;
|
||||||
}
|
}
|
||||||
|
|
||||||
.uni-fab__content--left {
|
.uni-fab__content--left {
|
||||||
|
Loading…
Reference in New Issue
Block a user