lanan-repair-app/pages-order/choosePeople/choosePeople.vue

218 lines
5.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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">-->
<radio-group @change="radioChange">
<label v-for="(item, index) in list" :key="item.userId" class="userItem">
<view class="info">
<text class="name">{{item.userName}}</text>
<text class="trade">{{item.workTypeText}}</text>
</view>
<radio :value="item.userId+''" :checked="index === current" />
<!-- <u-checkbox v-model="item.checked" :name="item.userId" iconSize="24" shape="circle" activeColor="#1890ff"></u-checkbox>-->
</label>
</radio-group>
<!-- </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";
export default {
components: {
VNavigationBar,
},
data() {
return {
current: 0,
ticketId:'',
list: [],
checkedUserId:"",
checkedUserName:"",
ifDetail:false,
}
},
onLoad(data) {
if(data.id){
this.ticketId = data.id
this.workByTicketId()
}
if(data.ifDetail){
//从订单详情页跳过来的返回时需要返回2步
this.ifDetail = true
}
},
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查询维修工人
*/
workByTicketId(){
request({
url: '/admin-api/repair/worker/listByTicketId',
method: 'get',
params:{ticketId:this.ticketId}
}).then((res)=>{
this.list = res.data
this.list.map((item)=>{
item.workTypeText = getDictTextByCodeAndValue('repair_work_type',item.workType)
})
})
},
submit() {
const param = {
id:this.ticketId,
nowRepairId:this.checkedUserId,
nowRepairName:this.checkedUserName,
}
console.log(param)
request({
url: '/admin-api/repair/tickets/notify',
method: 'post',
data:param
}).then((res)=>{
uni.showToast({
title: '指派成功!',
icon: 'none'
})
setTimeout(()=>{
if(this.ifDetail){
uni.navigateBack({
delta: 2 // 返回倒数第2页
})
}else{
uni.navigateBack()
}
},700)
})
//
// console.log('this.checked', this.checked)
// const selected = this.list.filter(f => this.checked.includes(f.id))
// bus.$emit('choosePeople', selected)
// uni.navigateBack()
}
}
}
</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;
.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;
}
}
.userList {
margin: 20rpx 32rpx 0;
background-color: #fff;
padding: 0 20rpx;
.userItem {
padding: 30rpx 0;
border-bottom: 1rpx solid #DDDDDD;
display: flex;
align-items: center;
justify-content: space-between;
.info {
display: flex;
flex-direction: column;
row-gap: 20rpx;
.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>