工单分配,维修人员,报修详情

This commit is contained in:
Zy
2026-05-21 10:55:27 +08:00
parent 5d0819183e
commit ac9379ab8a
14 changed files with 333 additions and 182 deletions

View File

@@ -6,44 +6,41 @@
<view
@click="handleClick"
class="search_view flex-center"
v-if="!queryParmas.value.trim() && Searching"
v-if="!queryParmas.keyword.trim() && Searching"
>
<uni-icons type="search" size="34rpx" color="rgba(0,0,0,0.26)"></uni-icons>
<text>请输入关键字进行搜索</text>
</view>
<uni-easyinput
@blur="handleInput"
@change="handleSearch"
@confirm="handleSearch"
@clear="handleClear"
@input="handleClear"
:focus="true"
ref="inputRef"
v-model="queryParmas.value"
v-model="queryParmas.keyword"
v-else
/>
</view>
<!-- 已经选择人数 -->
<view class="checkoutedUser_box">
<text>已选({{ checkoutUserid ? 1 : 0 }}/1)</text>
<text class="checkoutUseName" v-if="checkoutInfo">{{ checkoutInfo.name }}</text>
<text class="checkoutUseName" v-if="checkoutInfo">{{ checkoutInfo.nickName }}</text>
</view>
<!-- srcoll -->
<scroll-view
scroll-y="true"
class="flex-1 overflow-auto"
lower-threshold="60"
@scrolltolower="scrolltolower"
>
<scroll-view scroll-y="true" class="flex-1 overflow-auto">
<radio-group @change="radioChange">
<label v-for="(item, index) in searchlist" :key="index">
<view
class="item flex items-center justify-between"
:class="{
active: checkoutUserid === item.id
active: checkoutUserid === item.userId
}"
>
<view class="">
<view class="info">
<text>姓名:</text>
<text>{{ item.name }}</text>
<text>{{ item.nickName }}</text>
</view>
<view class="info">
<text>角色:</text>
@@ -51,10 +48,10 @@
</view>
<view class="info">
<text>手机号码:</text>
<text>{{ item.phone }}</text>
<text>{{ item.phonenumber }}</text>
</view>
</view>
<radio color="#4d5dfa" :value="item.id" />
<radio color="#4d5dfa" :value="item.userId" />
</view>
</label>
</radio-group>
@@ -71,6 +68,9 @@
<script setup>
import { ref, onMounted, getCurrentInstance } from 'vue'
import navBar from '@/components/navbar/navbar.vue'
import { getSystemUsers_employee } from '@/api/common.js'
import { onShow } from '@dcloudio/uni-app'
const Searching = ref(true)
/** 点击时切换到input,并聚焦 */
function handleClick() {
@@ -78,73 +78,74 @@ function handleClick() {
}
/** 判断 失去焦点时 切换回 view */
function handleInput() {
if (queryParmas.value.value.trim()) {
if (queryParmas.value.keyword.trim()) {
Searching.value = true
resetList()
} else {
queryParmas.value.keyword = ''
Searching.value = false
resetList()
}
}
function handleSearch() {
if (queryParmas.value.keyword.trim()) {
resetList()
}
}
function handleClear() {
if (queryParmas.value.keyword.trim() === '') {
queryParmas.value.keyword = ''
Searching.value = true
resetList()
}
}
function handleSearch() {}
// -----------------------------------------
/* 选择列表 */
const searchlist = ref([])
const queryParmas = ref({
pageNum: 1,
pageSize: 10,
value: ''
keyword: '',
roleKey: 'repair'
})
const isLoading = ref(false) // 加载锁
const hasMore = ref(true) // 是否还有更多数据
const total = ref(21)
function scrolltolower() {
// 必须加这两个判断!
if (isLoading.value || !hasMore.value) {
return
}
queryParmas.value.pageNum += 1
getlist()
}
function getlist() {
// 1. 如果正在加载或没有更多数据,直接返回
if (isLoading.value || !hasMore.value) return
if (isLoading.value) return
// 2. 开启锁
isLoading.value = true
uni.showLoading({
title: '加载中',
mask: true
})
const { pageNum, pageSize } = queryParmas.value
const startId = (pageNum - 1) * pageSize + 1
const arr = Array.from({ length: pageSize }).map((_, index) => {
const realId = startId + index
const randomStatus = Math.floor(Math.random() * 3)
return {
name: '张三' + realId,
roleName: '维修人员',
phone: '19578012123',
id: realId
}
})
// 追加数据(正确方式)
searchlist.value = [...searchlist.value, ...arr]
// 判断是否还有更多
hasMore.value = searchlist.value.length < total.value
isLoading.value = false
uni.hideLoading()
const { keyword, roleKey } = queryParmas.value
getSystemUsers_employee(roleKey, keyword)
.then(res => {
searchlist.value = res.data
})
.finally(() => {
isLoading.value = false
uni.hideLoading()
})
}
getlist()
onShow(() => {
resetList()
})
function resetList() {
reportRecords.value = []
searchlist.value = []
queryParmas.value.pageNum = 1
hasMore.value = true
getlist()
}
//searchlist----------------------
const checkoutUserid = ref(null)
const checkoutInfo = ref(null)
function radioChange(val) {
checkoutUserid.value = Number(val.detail.value)
const find = searchlist.value.find(item => item.id === Number(val.detail.value))
checkoutUserid.value = val.detail.value
const find = searchlist.value.find(item => item.userId === val.detail.value)
if (find) {
checkoutInfo.value = find
}
@@ -161,11 +162,13 @@ onMounted(() => {
/* 确定派单 */
function handleSelecthouse() {
// api
eventChannel.emit('backData', {
checkoutUserid: checkoutUserid.value
})
// 3. 返回上一页
uni.navigateBack()
if (eventChannel) {
eventChannel.emit('backData', {
checkoutUserid: checkoutUserid.value
})
// 3. 返回上一页
uni.navigateBack()
}
}
// ===========================================
</script>