Commit 0ad29394 authored by 石盼盼's avatar 石盼盼

修改,优化,审核员详情页

parent 341385f9
...@@ -10,8 +10,8 @@ const baseUrl = '/api' ...@@ -10,8 +10,8 @@ const baseUrl = '/api'
// todo: url // todo: url
// const httpUrl = 'https://repairtest.zeruiedu.com' // 测试接口 // const httpUrl = 'https://repairtest.zeruiedu.com' // 测试接口
const httpUrl = 'https://repair.zeruiedu.com' // 正式接口 const httpUrl = 'https://repair.zeruiedu.com' // 正式接口
// const h5Url = 'http://localhost:8080' // 测试h5线上地址 const h5Url = 'http://localhost:8080' // 测试h5线上地址
const h5Url = 'http://repair.h5.zeruiedu.com' // 测试h5线上地址 // const h5Url = 'http://repair.h5.zeruiedu.com' // 测试h5线上地址
window.localStorage.setItem('httpUrl', httpUrl) window.localStorage.setItem('httpUrl', httpUrl)
window.localStorage.setItem('h5Url', h5Url) window.localStorage.setItem('h5Url', h5Url)
// const httpUrl = 'https://fenghexm.xueyoubangedu.com' // 正式接口 // const httpUrl = 'https://fenghexm.xueyoubangedu.com' // 正式接口
......
...@@ -355,7 +355,7 @@ ...@@ -355,7 +355,7 @@
// 选择工人弹窗样式 // 选择工人弹窗样式
.tc-box{ .tc-box{
width: 6.9rem; width: 6.9rem;
height: 90%; height: 60%;
background: #fff; background: #fff;
padding-top: 0.3rem; padding-top: 0.3rem;
padding-bottom: 0.3rem; padding-bottom: 0.3rem;
...@@ -413,3 +413,23 @@ ...@@ -413,3 +413,23 @@
font-size: 0.24rem; font-size: 0.24rem;
margin-right: 0.2rem; margin-right: 0.2rem;
} }
.backBtn {
width: 0.8rem;
height: 0.8rem;
background: #fff;
box-shadow: 0 0 0.1rem #0054ff;
position: fixed;
right: 0.6rem;
top: 1rem;
z-index: 1;
border-radius: 50%;
padding: 0.1rem;
}
.backBtn img {
width: 100%;
height: 100%;
border-radius: 50%;
}
\ No newline at end of file
...@@ -114,11 +114,16 @@ router.beforeEach((to, from, next) => { ...@@ -114,11 +114,16 @@ router.beforeEach((to, from, next) => {
next() next()
return true return true
} }
if (to.query.token && to.query.status) { if ((to.query.token || to.query.id) && to.query.status) {
// console.log('ok-------0', status) // console.log('ok-------0', status)
if (to.query.token) {
token = to.query.token token = to.query.token
} else {
var tempToken = to.query.id.split('=')
console.log('tempToken', tempToken)
token = tempToken[1]
}
status = to.query.status status = to.query.status
console.log('1111', to)
if (to.query.role != 0) { if (to.query.role != 0) {
role = to.query.role role = to.query.role
window.localStorage.setItem('role', role) window.localStorage.setItem('role', role)
...@@ -131,8 +136,6 @@ router.beforeEach((to, from, next) => { ...@@ -131,8 +136,6 @@ router.beforeEach((to, from, next) => {
window.localStorage.setItem('status', status) window.localStorage.setItem('status', status)
} }
if (token && status === '200') { if (token && status === '200') {
// const is_detail = to.query.is_info ? 1 : 0
// console.log('is_detail', is_detail)
console.log('ok-------1', 200) console.log('ok-------1', 200)
if ((role == 2 || role == 4) && to.path =='/') { // 2审核员身份 4超管身份 if ((role == 2 || role == 4) && to.path =='/') { // 2审核员身份 4超管身份
// setTimeout(() => { // setTimeout(() => {
......
<template> <template>
<div>审核员详情页</div> <div class="cont" v-if="order">
<van-pull-refresh v-model="isloading" @refresh="onRefresh">
<div class="order-item">
<div class="item flex-h flex-vc">
<div class="title">{{order.order_status_display}}</div>
</div>
<div class="item-title">问题描述:</div>
<div class="item-desc que-desc">{{order.repair_type.type_name}}-{{order.description}}</div>
<div class="item flex-h flex-vc">
<div class="item-title">服务地址:</div>
<div
class="item-desc"
>{{order.region.region_name}}-{{order.room.room_name}}-{{order.address}}</div>
</div>
<div class="item flex-h flex-vc">
<div class="item-title">客户姓名:</div>
<div class="item-desc">{{order.realname}}</div>
</div>
<div class="item flex-h flex-vc">
<div class="item-title">联系电话:</div>
<div class="item-desc phone" @click="callPhone(order)">{{order.telephone}}</div>
</div>
<div class="item flex-h flex-vc">
<div class="item-title">提交时间:</div>
<div class="item-desc">2021-06-17 09:28:43</div>
</div>
<div class="item flex-h flex-vc">
<div class="item-title">图片详情:</div>
<div
class="img"
v-for="(child, index) in order.image"
:key="index"
@click="preview(order.image,index)"
>
<img :src="child.url" alt />
</div>
</div>
<div v-if="order.work_name">
<div class="line"></div>
<div class="item flex-h flex-vc">
<div class="item-title">派工对象:</div>
<div class="item-desc">{{order.work_name}}</div>
</div>
</div>
<div class="material" v-if="order.no_pay_order">
<div class="item-title bz-title">待支付耗材</div>
<div
class="no-pay ma-item flex-h flex-hb"
v-for="(child, index) in order.no_pay_order.goods"
:key="index"
>
<div class="one one1 text-line-one">{{child.parent_detail.goods_name}}</div>
<div class="one one2 flex-h">
<div class="_one text-line-one">{{child.good_detail.goods_name}}</div>
<div class="_two text-line-one">*{{child.number}}</div>
</div>
<div class="one one3">{{child.price}}</div>
</div>
<div class="item_line"></div>
</div>
<div class="material" v-if="order.pay_order != ''">
<div class="item-title">已支付耗材</div>
<div v-for="(parent, index) in order.pay_order" :key="index">
<div class="ma-item flex-h flex-hb" v-for="(child, index) in parent.goods" :key="index">
<div class="one one1 text-line-one">{{child.parent_detail.goods_name}}</div>
<div class="one one2 flex-h">
<div class="_one text-line-one">{{child.good_detail.goods_name}}</div>
<div class="_two text-line-one">*{{child.number}}</div>
</div>
<div class="one one3">{{child.price}}</div>
</div>
</div>
<div class="item_line"></div>
</div>
<div class="material" v-if="order.free_material_order">
<div class="item-title bz-title">备注耗材</div>
<div
class="ma-item flex-h flex-hb"
v-for="(child, index) in order.free_material_order.goods"
:key="index"
>
<div class="one one1 text-line-one">免费</div>
<div class="one one2 flex-h">
<div class="_one text-line-one" @click="showAll(item,$event)">{{child.goods_name}}</div>
<div class="_two text-line-one">*{{child.number}}</div>
</div>
<div class="one one3 text-line-one">¥0</div>
</div>
<div class="item_line"></div>
</div>
<div class="item flex-h flex-start" v-if="order.orderlog_transfer">
<div class="item-title">转单备注:</div>
<div class="item-desc">{{order.orderlog_transfer.remark}}</div>
</div>
<div class="item flex-h flex-start" v-if="order.orderlog_cancel">
<div class="item-title">退回备注:</div>
<div class="item-desc">{{order.orderlog_cancel.remark}}</div>
</div>
<div v-if="order.is_can_assign_worker==1">
<div class="line"></div>
<div
v-if="order.is_can_assign_worker==1"
class="item flex-h flex-vc flex-hb"
@click="workers"
>
<div class="wo flex-h flex-vc">
<div class="item-title" v-if="order.order_status_display == '已派工'">重新派工:</div>
<div class="item-title" v-else>派工对象:</div>
<div class="item-desc worker-name">{{workerName.length ? workerName.join(',') : ''}}</div>
</div>
<div class="flex-h flex-vc">
<div class="select flex-h flex-vc">
<div class="select_txt">选择</div>
<img src="@assets/images/my/select.png" alt />
</div>
</div>
</div>
</div>
<div class="line"></div>
<div class="allBtn flex-h flex-hr">
<div v-if="order.is_can_assign_worker==1" class="button sureBtn" @click="sureOrder">确定</div>
<div v-if="order.is_can_cancel==1" class="button" @click="cancelOrder">取消</div>
</div>
<!-- 选择工人弹窗 -->
<van-popup v-model="showWorker" round>
<div class="tc-box">
<div class="tc-title">选择工人</div>
<div class="workers">
<div class="gr-item" v-for="(child_item,child_index) in columns" :key="child_index">
<div class="bm-item">{{child_item.name}}</div>
<div
class="people-item flex-h flex-vc flex-hb"
v-for="(lchild_item,lchild_index) in child_item.user"
:key="lchild_index"
@click="chooseWorker(lchild_item,lchild_index)"
>
<div class="flex-h flex-vc">
<img class="gr-img" src="@assets/images/gr.png" />
<div
class="gr-name"
v-if="lchild_item.repired_count !== 0 || lchild_item.repiring_count !== 0"
>{{lchild_item.name}} (已派工: {{lchild_item.repired_count}};维修中: {{lchild_item.repiring_count}})</div>
<div class="gr-name" v-else>{{lchild_item.username}} (休息中)</div>
</div>
<img
class="k-img"
:src="temporaryId && temporaryId.includes(lchild_item.id) ? select_img : unselect_img"
/>
</div>
</div>
</div>
<div class="allBtn btn-box flex-h flex-hc">
<div class="button" @click="Cancel">取消</div>
<div class="button sureBtn" @click="keyConfirm">确定</div>
</div>
</div>
</van-popup>
<!-- 取消工单原因弹窗 -->
<van-popup v-model="qxShow" close-icon="close">
<div class="cancel_cont">
<div class="pop_title">备注取消原因</div>
<textarea placeholder="请输入转单理由" v-model="reason" maxlength="100"></textarea>
<div class="btnItem flex-h">
<div class="cancel" @click="cancel">取消</div>
<div class="sure" @click="qx_submit">提交</div>
</div>
</div>
</van-popup>
</div>
</van-pull-refresh>
<div class="backBtn" @click="goBack">
<img src="@assets/images/tabbar/icon_01_sel.png" alt />
</div>
</div>
</template> </template>
<script> <script>
import { trimStrSpace } from '@assets/js/format.js'
import { ImagePreview, CellGroup } from 'vant';
import select_img from '@assets/images/select.png'
import unselect_img from '@assets/images/un_select.png'
export default { export default {
name: 'admin_detail',
data () {
return {
showWorker: false,
select_img,
unselect_img,
reson: '',//取消原因
qxShow: false, // 发起转单弹窗
workerName: '',
worker_id: '',
showWorker: false,
columns: [],
locked: false,
// 上拉加载
loading: false,
imgList: [],
// 转单
reason: '', // 原因
currentId: '',
order: null,
order_id: '',
temporaryName: '',
temporaryId: '',
}
},
created () {
this.order_id = this.$route.query.id
// this.order_id = 177
this.getDetail()
this.getWorkers()
},
methods: {
goBack(){
this.$router.push({
path: '/'
})
},
getDetail () {
this.isloading = true
const curParams = {
repair_order_id: this.order_id
}
this.$http.get(this.$myApi.ORDER_INFO, curParams)
.then(res => {
this.order = res.order
this.workerName = []
this.temporaryName=[]
this.temporaryId=[]
this.worker_id = []
this.locked = false
this.isloading = false
})
.catch(() => {
this.locked = false
this.isloading = false
})
},
// 选择完工人点击确定按钮
keyConfirm(){
console.log('this.temporaryId',this.temporaryId);
console.log('this.temporaryName',this.temporaryName);
if(!this.temporaryId.length){
this.$toast('请选择工人!')
return
}
this.workerName = [...this.temporaryName]
this.worker_id = [...this.temporaryId]
this.showWorker = false
},
chooseWorker(item,lchild_index){
console.log('11111111111',item,item.id,item.name,lchild_index);
if(this.temporaryId.includes(item.id)){ // 删除
let name_i = this.temporaryId.indexOf(item.id)
this.temporaryId.splice(name_i,1)
this.temporaryName.splice(name_i,1)
}else{ // 加入
this.temporaryId.push(item.id)
this.temporaryName.push(item.name)
}
},
preview(img, index){
let temp = img.map(item=>{
return item.url
})
ImagePreview({
images: temp,
startPosition: index,
});
},
callPhone(item){
let phoneNumber = item.telephone
window.location.href = 'tel://' + phoneNumber
},
//指派工人
sureOrder(){
const vm = this
if(!this.worker_id.length) {
this.$toast('请选择工人')
return
}
const curParams = {
repair_order_id: this.order_id,
worker_id: this.worker_id.join(',')
}
this.$http
.post(this.$myApi.REPAIR_ASSIGN, curParams)
.then((data) => {
console.log('指派工人',data);
this.$toast('操作成功')
this.workerName = []
this.temporaryName=[]
this.temporaryId=[]
this.worker_id = []
this.reason = ''
this.order = data
})
.catch(() => {})
},
// 取消工单
cancelOrder(){
this.qxShow = true;
this.reason = ''
},
workers(){
this.showWorker = true
},
Cancel(){
this.showWorker = false
},
//获取工人列表
getWorkers(){
const curParams = {}
this.$http
.get(this.$myApi.GET_WORKER, curParams)
.then((data) => {
this.columns = data
})
.catch(() => {
})
},
// 初始化
initData () {
this.locked = false
this.isloading = false
this.loading = false
this.getWorkers()
},
onRefresh () {
this.initData()
if (!this.locked) {
this.locked = true
this.getDetail()
}
},
// 取消工单提交
qx_submit () {
const vm = this
if (this.reason === '') {
this.$toast('取消原因不可为空')
return
}
const curParams = {
repair_order_id: this.order_id,
content: this.reason
}
this.$http
.post(this.$myApi.REPAIR_CANCEL, curParams)
.then((data) => {
this.qxShow = false
this.$toast('操作成功')
this.order = data
})
.catch(() => {
this.qxShow = false
})
},
// 取消工单按钮
cancel () {
this.qxShow = false
},
}
} }
</script> </script>
<style> <style lang="scss" scoped>
@import "@assets/styles/tabbar/admin_index.scss";
</style> </style>
\ No newline at end of file
...@@ -95,6 +95,14 @@ ...@@ -95,6 +95,14 @@
</div> </div>
<div class="item_line"></div> <div class="item_line"></div>
</div> </div>
<div class="item flex-h flex-start" v-if="order.orderlog_transfer">
<div class="item-title">转单备注:</div>
<div class="item-desc">{{order.orderlog_transfer.remark}}</div>
</div>
<div class="item flex-h flex-start" v-if="order.orderlog_cancel">
<div class="item-title">退回备注:</div>
<div class="item-desc">{{order.orderlog_cancel.remark}}</div>
</div>
<div class="btn flex-h flex-hr" v-if="btnShow"> <div class="btn flex-h flex-hr" v-if="btnShow">
<div v-if="order.is_can_remark_material==1" class="btn-item bz-btn" @click="bz_click">备注耗材</div> <div v-if="order.is_can_remark_material==1" class="btn-item bz-btn" @click="bz_click">备注耗材</div>
<div <div
...@@ -237,6 +245,15 @@ export default { ...@@ -237,6 +245,15 @@ export default {
this.getDetail() this.getDetail()
}, },
methods: { methods: {
preview(img, index){
let temp = img.map(item=>{
return item.url
})
ImagePreview({
images: temp,
startPosition: index,
});
},
// 确认完成 // 确认完成
sure_click (item, index) { sure_click (item, index) {
const vm = this const vm = this
...@@ -441,13 +458,13 @@ export default { ...@@ -441,13 +458,13 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@assets/styles/tabbar/index.scss"; @import "@assets/styles/tabbar/index.scss";
.backBtn { .backBtn {
width: 1rem; width: 0.8rem;
height: 1rem; height: 0.8rem;
background: #fff; background: #fff;
box-shadow: 0 0 0.1rem #0054ff; box-shadow: 0 0 0.1rem #0054ff;
position: fixed; position: fixed;
right: 0.3rem; right: 0.6rem;
bottom: 1.3rem; top: 1rem;
z-index: 1; z-index: 1;
border-radius: 50%; border-radius: 50%;
padding: 0.1rem; padding: 0.1rem;
......
...@@ -56,11 +56,7 @@ ...@@ -56,11 +56,7 @@
<div class="tc-box"> <div class="tc-box">
<div class="tc-title">选择工人</div> <div class="tc-title">选择工人</div>
<div class="workers"> <div class="workers">
<div <div class="gr-item" v-for="(child_item,child_index) in columns" :key="child_index">
class="gr-item"
v-for="(child_item,child_index) in columns"
:key="child_index"
>
<div class="bm-item">{{child_item.name}}</div> <div class="bm-item">{{child_item.name}}</div>
<div <div
class="people-item flex-h flex-vc flex-hb" class="people-item flex-h flex-vc flex-hb"
...@@ -130,7 +126,11 @@ ...@@ -130,7 +126,11 @@
</div> </div>
<div class="material" v-if="item.no_pay_order"> <div class="material" v-if="item.no_pay_order">
<div class="item-title bz-title">待支付耗材</div> <div class="item-title bz-title">待支付耗材</div>
<div class="no-pay ma-item flex-h flex-hb" v-for="(child, index) in item.no_pay_order.goods" :key="index"> <div
class="no-pay ma-item flex-h flex-hb"
v-for="(child, index) in item.no_pay_order.goods"
:key="index"
>
<div class="one one1 text-line-one">{{child.parent_detail.goods_name}}</div> <div class="one one1 text-line-one">{{child.parent_detail.goods_name}}</div>
<div class="one one2 flex-h"> <div class="one one2 flex-h">
<div class="_one text-line-one">{{child.good_detail.goods_name}}</div> <div class="_one text-line-one">{{child.good_detail.goods_name}}</div>
...@@ -214,9 +214,7 @@ ...@@ -214,9 +214,7 @@
<div class="wo flex-h flex-vc"> <div class="wo flex-h flex-vc">
<div class="item-title" v-if="item.order_status_display == '已派工'">重新派工:</div> <div class="item-title" v-if="item.order_status_display == '已派工'">重新派工:</div>
<div class="item-title" v-else>派工对象:</div> <div class="item-title" v-else>派工对象:</div>
<div <div class="item-desc worker-name">{{item.realName}}</div>
class="item-desc worker-name"
>{{item.workerName.length ? item.workerName.join(',') : ''}}</div>
</div> </div>
<div class="flex-h flex-vc"> <div class="flex-h flex-vc">
<div class="select flex-h flex-vc"> <div class="select flex-h flex-vc">
...@@ -369,9 +367,9 @@ export default { ...@@ -369,9 +367,9 @@ export default {
return return
} }
this.list[i].workerName = [...this.list[i].temporaryName] this.list[i].workerName = [...this.list[i].temporaryName]
this.list[i].realName = this.list[i].workerName.length ? this.list[i].workerName.join(',') : ''
this.list[i].worker_id = [...this.list[i].temporaryId] this.list[i].worker_id = [...this.list[i].temporaryId]
this.list[i].showWorker = false this.list[i].showWorker = false
}, },
chooseWorker(item,lchild_index,index){ chooseWorker(item,lchild_index,index){
if(this.list[index].temporaryId.includes(item.id)){ // 删除 if(this.list[index].temporaryId.includes(item.id)){ // 删除
...@@ -381,7 +379,6 @@ export default { ...@@ -381,7 +379,6 @@ export default {
}else{ // 加入 }else{ // 加入
this.list[index].temporaryId.push(item.id) this.list[index].temporaryId.push(item.id)
this.list[index].temporaryName.push(item.name) this.list[index].temporaryName.push(item.name)
// console.log('选中的',this.list[index].temporaryName);
} }
}, },
onmore(){ onmore(){
...@@ -409,6 +406,7 @@ export default { ...@@ -409,6 +406,7 @@ export default {
// console.log('1111',item); // console.log('1111',item);
this.curItem = item this.curItem = item
this.repair_order_id = item.id this.repair_order_id = item.id
console.log('工人id',item.worker_id);
if(!item.worker_id.length) { if(!item.worker_id.length) {
this.$toast('请选择工人') this.$toast('请选择工人')
return return
...@@ -420,7 +418,11 @@ export default { ...@@ -420,7 +418,11 @@ export default {
this.$http this.$http
.post(this.$myApi.REPAIR_ASSIGN, curParams) .post(this.$myApi.REPAIR_ASSIGN, curParams)
.then((data) => { .then((data) => {
console.log('指派工人',data); data.workerName = []
data.realName = ''
data.temporaryName=[]
data.temporaryId=[]
data.worker_id = []
this.$toast('操作成功') this.$toast('操作成功')
this.reason = '' this.reason = ''
this.changeList(data,index) this.changeList(data,index)
...@@ -576,6 +578,7 @@ export default { ...@@ -576,6 +578,7 @@ export default {
this.list = this.list.map(item=>{ this.list = this.list.map(item=>{
item.showWorker = false item.showWorker = false
item.workerName = [] item.workerName = []
item.realName = ''
item.temporaryName=[] item.temporaryName=[]
item.temporaryId=[] item.temporaryId=[]
item.worker_id = [] item.worker_id = []
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment