lanan-repair-app/pages-order/choosePeople/choosePeople.vue
2024-10-26 16:57:33 +08:00

398 lines
11 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" v-if="type == 'xs' || !type">
<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>
<view v-else>
<!-- <label v-for="(item, index) in list" :key="item.id" class="userItem">-->
<!-- <view class="info">-->
<!-- <text class="name">{{ item.userName }}</text>-->
<!-- <text class="trade">{{ item.workTypeText }}</text>-->
<!-- </view>-->
<!-- <checkbox :value="item.id+''" v-model="selectedUsers" @change="cs" />-->
<!-- </label>-->
<checkbox-group @change="cs">
<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>
<checkbox :value="item.userId + ''" />
</label>
</checkbox-group>
</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,saveTicketsRecords} from "@/utils/utils";
export default {
components: {
VNavigationBar,
},
data() {
return {
current: 0,
ticketId: '',
list: [],
checkedUserId: "",
checkedUserName: "",
ifDetail: false,
type: "",
sgIds: [], // 初始化为数组
sgNames : [],
projectId: '',
itemId:"",
}
},
onLoad(data) {
console.log("data", data)
if (data.id) {
console.log('执行了派单')
this.ticketId = data.id
this.workByTicketId()
}
if (data.ifDetail) {
//从订单详情页跳过来的返回时需要返回2步
this.ifDetail = true
}
if (data.itemId) {
//从订单详情页跳过来的返回时需要返回2步
this.itemId = data.itemId
}
if (data.type) {
this.type = data.type
if (data.type == 'xs') {
this.getStaffList()
} else {
this.getRepairWorder()
}
}
//创建工单后,订单详情页跳转过来携带
if (data.ticketId) {
this.ticketId = data.ticketId
}
if (data.projectId) {
this.projectId = data.projectId
}
},
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)
},
/**
* 获取销售列表
*/
getStaffList() {
request({
url: '/admin-api/company/staff/list',
method: 'get'
}).then(res => {
this.list = res.data
this.list.map((item) => {
item.userName = item.name
})
if (this.list.length > 0) {
console.log(this.list[0].userId)
this.checkedUserId = this.list[0].userId
this.checkedUserName = this.list[0].userName
}
})
},
/**
* 获取维修工人
*/
getRepairWorder(){
request({
url: '/admin-api/repair/worker/page',
method: 'get',
params:{
pageNo: 1,
pageSize: 9999
}
}).then(res => {
if (res.code == 200) {
let thisList = res.data.records
thisList.map((item) => {
getDictTextByCodeAndValue("repair_work_type", item.workType).then(value => {
item.workTypeText = value
}).catch(error => {
item.workTypeText = "未知"
console.error(error);
});
})
this.list = thisList
} else {
this.list = []
}
})
},
/**
* 通过工单id查询维修工人
*/
workByTicketId() {
request({
url: '/admin-api/repair/worker/listByTicketId',
method: 'get',
params: {ticketId: this.ticketId}
}).then((res) => {
this.list = res.data
if (this.list.length > 0) {
console.log(this.list[0].userId)
this.checkedUserId = this.list[0].userId
this.checkedUserName = this.list[0].userName
}
})
},
cs(e){
let arr = []
let nameArr = []
for (let i = 0; i < this.list.length; i++) {
for (let j = 0; j < e.detail.value.length; j++) {
if (this.list[i].userId == e.detail.value[j]) {
this.current = i;
let checkedUserId = this.list[i].userId
let checkedUserName = this.list[i].userName
arr.push(checkedUserId)
nameArr.push(checkedUserName)
}
}
}
console.log(this.checkedUserName)
this.sgIds = arr
this.sgNames = nameArr
},
async submit() {
if (this.type == 'sg') {
if (this.sgIds.length == 0) {
uni.showToast({
title: '请选择维修人员!',
icon: 'none'
})
} else {
//以逗号拼接
const sgIds = this.sgIds.join(',')
const sgNames = this.sgNames.join(',')
console.log('this.projectId',this.projectId)
const param = {
ticketId: this.ticketId,
projectId: this.projectId,
repairIds: sgIds,
repairNames: sgNames,
}
request({
url: '/admin-api/repair/titem/updateRepairAndSale',
method: 'put',
data: param
}).then((res) => {
uni.showToast({
title: '选择维修人员成功!',
icon: 'none'
})
setTimeout(() => {
uni.navigateBack()
}, 700)
})
}
}else if (this.type == 'xs') {
if (this.checkedUserId == '' && this.checkedUserName == '') {
uni.showToast({
title: '请选择销售人员!',
icon: 'none'
})
} else {
//以逗号拼接
const param = {
ticketId: this.ticketId,
projectId: this.projectId,
saleId: this.checkedUserId,
saleName: this.checkedUserName,
}
request({
url: '/admin-api/repair/titem/updateRepairAndSale',
method: 'put',
data: param
}).then((res) => {
uni.showToast({
title: '选择销售人员成功!',
icon: 'none'
})
setTimeout(() => {
uni.navigateBack()
}, 700)
})
}
} else {
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) {
//记录一下操作记录
saveTicketsRecords(this.ticketId, '03',this.itemId,"03","sgwczj","维修完成移交下一班组维修","","01",this.checkedUserName);
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>