|
|
@@ -24,7 +24,7 @@
|
|
|
<view class="list-item">
|
|
|
<view class="item-container">
|
|
|
<view class="item-header">
|
|
|
- <text class="item-title">{{ getWorkOrderProjectNo(item) }}-{{ (item as acceptOrderInfo).pcsStationName }}{{ getPcsDeviceName(item) }}{{ getOrderType(item) }}</text>
|
|
|
+ <text class="item-title">{{ getWorkOrderProjectNo(item) }}-{{ (item as acceptOrderInfoExtend).pcsStationName }}{{ getPcsDeviceName(item) }}{{ getOrderType(item) }}</text>
|
|
|
<text class="status-tag" :class="getStatusClass(item)">{{ getWorkOrderStatus(item) }}</text>
|
|
|
</view>
|
|
|
<view class="info-row">
|
|
|
@@ -40,6 +40,14 @@
|
|
|
>
|
|
|
<text class="btn-text">接单</text>
|
|
|
</view>
|
|
|
+ <view
|
|
|
+ v-if="(getOrderStatus(item) == 'assigned' || getOrderStatus(item) == 'to_finish')
|
|
|
+ && canHandleOrder(item,'shutdown') && (item as acceptOrderInfoExtend).pauseTime == null"
|
|
|
+ class="btn-primary info-value"
|
|
|
+ @click.stop="handleItemClick(item,'shutdown')"
|
|
|
+ >
|
|
|
+ <text class="btn-text">停机</text>
|
|
|
+ </view>
|
|
|
<view
|
|
|
v-if="getOrderStatus(item) == 'to_approve' && canHandleOrder(item,'')"
|
|
|
class="btn-primary info-value"
|
|
|
@@ -99,17 +107,46 @@
|
|
|
|
|
|
<script setup lang="uts">
|
|
|
import { ref, onBeforeUnmount, onMounted } from 'vue'
|
|
|
-import type { acceptOrderInfo } from '../../types/order'
|
|
|
import type { SysDictData } from '../../types/dict'
|
|
|
import { pendingList } from '../../api/order/list'
|
|
|
import { getDictDataByType } from '../../api/dict/index'
|
|
|
import {checkPermi, getUserInfo} from '../../utils/storage'
|
|
|
|
|
|
+type acceptOrderInfoExtend = {
|
|
|
+ orderType: Number
|
|
|
+ id: Number
|
|
|
+ teamLeaderId: Number
|
|
|
+ acceptUserId: Number
|
|
|
+ teamLeaderName: string | null
|
|
|
+ acceptUserName: string | null
|
|
|
+ acceptTime: string | null
|
|
|
+ assignTime: string | null
|
|
|
+ assignUserName: string | null
|
|
|
+ status: Number
|
|
|
+ workOrderProjectNo: string | null
|
|
|
+ workOrderStatus: string | null
|
|
|
+ gxtCenterId: Number
|
|
|
+ gxtCenter: string | null
|
|
|
+ pcsStationId: Number
|
|
|
+ pcsStationName: string | null
|
|
|
+ pcsDeviceId: Number
|
|
|
+ pcsDeviceName: string | null
|
|
|
+ brand: string | null
|
|
|
+ model: string | null
|
|
|
+ createTime: string | null
|
|
|
+ suspendReason: string | null
|
|
|
+ rejectionReason: string | null
|
|
|
+ updateTime: string | null
|
|
|
+ workEndTime: string | null
|
|
|
+ orderEntryType: string | null
|
|
|
+ pauseTime: string | null
|
|
|
+}
|
|
|
+
|
|
|
const userId = ref<string>("")
|
|
|
const roles = ref<string>('')
|
|
|
|
|
|
// 列表数据
|
|
|
- const dataList = ref<acceptOrderInfo[]>([])
|
|
|
+ const dataList = ref<acceptOrderInfoExtend[]>([])
|
|
|
let keyword = ref<string>("")
|
|
|
const page = ref<number>(1)
|
|
|
const pageSize: number = 10
|
|
|
@@ -131,7 +168,7 @@ import {checkPermi, getUserInfo} from '../../utils/storage'
|
|
|
|
|
|
const getOrderStatus = (item: any | null): string => {
|
|
|
if (item == null) return ''
|
|
|
- const orderItem = item as acceptOrderInfo
|
|
|
+ const orderItem = item as acceptOrderInfoExtend
|
|
|
return orderItem.workOrderStatus ?? ''
|
|
|
}
|
|
|
|
|
|
@@ -139,24 +176,30 @@ import {checkPermi, getUserInfo} from '../../utils/storage'
|
|
|
const canHandleOrder = (item: any | null, buttonType: string | ''): boolean => {
|
|
|
if (item == null) return false
|
|
|
let permit: string[] = []
|
|
|
- const orderItem = item as acceptOrderInfo
|
|
|
- if(orderItem.workOrderStatus == 'assigned' && buttonType != '' && buttonType == "acceptReturn" && orderItem.orderType == 1) {
|
|
|
- // 接单退回
|
|
|
- permit = ['gxt:repairOrder:acceptReturn']
|
|
|
- } else if(orderItem.workOrderStatus == 'assigned' && buttonType != '' && buttonType == "accept") {
|
|
|
- // 接单
|
|
|
- permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:accept'] : ['gxt:repairOrder:accept']
|
|
|
+ const orderItem = item as acceptOrderInfoExtend
|
|
|
+ if(orderItem.workOrderStatus == 'assigned') {
|
|
|
+ if(buttonType != '' && buttonType == "acceptReturn" && orderItem.orderType == 1) {
|
|
|
+ // 接单退回
|
|
|
+ permit = ['gxt:repairOrder:acceptReturn']
|
|
|
+ } else if(buttonType != '' && buttonType == "accept") {
|
|
|
+ // 接单
|
|
|
+ permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:accept'] : ['gxt:repairOrder:accept']
|
|
|
+ } else if(buttonType != '' && buttonType == "shutdown" && orderItem.orderType == 2) {
|
|
|
+ permit = ['gxt:maintenance:order:shutdown']
|
|
|
+ }
|
|
|
} else if(orderItem.workOrderStatus == 'to_finish') {
|
|
|
- if(buttonType != '' && buttonType == "suspend" && (orderItem.teamLeaderId == parseInt(userId.value) || roles.value.includes("管理员"))) {
|
|
|
- // 挂起
|
|
|
- permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:suspend'] : ['gxt:repairOrder:suspend']
|
|
|
- } else if(buttonType != '' && buttonType == "return" && orderItem.orderType == 1 && (orderItem.teamLeaderId == parseInt(userId.value) || roles.value.includes("管理员"))) {
|
|
|
- // 退回
|
|
|
- permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:return'] : ['gxt:repairOrder:return']
|
|
|
- } else if(buttonType != '' && buttonType == "finalize" && orderItem.orderType == 1 && (orderItem.teamLeaderId == parseInt(userId.value) || roles.value.includes("管理员"))) {
|
|
|
- // 复启
|
|
|
- permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:finalize'] : ['gxt:repairOrder:finalize']
|
|
|
- }
|
|
|
+ if(buttonType != '' && buttonType == "suspend" && (orderItem.teamLeaderId == parseInt(userId.value) || roles.value.includes("管理员"))) {
|
|
|
+ // 挂起
|
|
|
+ permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:suspend'] : ['gxt:repairOrder:suspend']
|
|
|
+ } else if(buttonType != '' && buttonType == "return" && orderItem.orderType == 1 && (orderItem.teamLeaderId == parseInt(userId.value) || roles.value.includes("管理员"))) {
|
|
|
+ // 退回
|
|
|
+ permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:return'] : ['gxt:repairOrder:return']
|
|
|
+ } else if(buttonType != '' && buttonType == "finalize" && orderItem.orderType == 1 && (orderItem.teamLeaderId == parseInt(userId.value) || roles.value.includes("管理员"))) {
|
|
|
+ // 复启
|
|
|
+ permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:finalize'] : ['gxt:repairOrder:finalize']
|
|
|
+ } else if(buttonType != '' && buttonType == "shutdown" && orderItem.orderType == 2) {
|
|
|
+ permit = ['gxt:maintenance:order:shutdown']
|
|
|
+ }
|
|
|
} else if(orderItem.workOrderStatus == 'to_approve') {
|
|
|
// 审批
|
|
|
permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:approve'] : ['gxt:repairOrder:approve']
|
|
|
@@ -170,7 +213,7 @@ import {checkPermi, getUserInfo} from '../../utils/storage'
|
|
|
else {
|
|
|
return false
|
|
|
}
|
|
|
- // const orderType = (item as acceptOrderInfo).orderType
|
|
|
+ // const orderType = (item as acceptOrderInfoExtend).orderType
|
|
|
return checkPermi(permit)
|
|
|
}
|
|
|
|
|
|
@@ -271,11 +314,11 @@ import {checkPermi, getUserInfo} from '../../utils/storage'
|
|
|
const responseTotal = resultObj['total'] as number
|
|
|
|
|
|
if (code == 200) {
|
|
|
- // 将 any[] 转换为 acceptOrderInfo[]
|
|
|
- const newData: acceptOrderInfo[] = []
|
|
|
+ // 将 any[] 转换为 acceptOrderInfoExtend[]
|
|
|
+ const newData: acceptOrderInfoExtend[] = []
|
|
|
for (let i = 0; i < responseData.length; i++) {
|
|
|
const item = responseData[i] as UTSJSONObject
|
|
|
- const orderItem: acceptOrderInfo = {
|
|
|
+ const orderItem: acceptOrderInfoExtend = {
|
|
|
orderType: item['orderType'] as Number,
|
|
|
id: item['id'] as Number,
|
|
|
teamLeaderId: item['teamLeaderId'] != null ? (item['teamLeaderId'] as Number) : 0,
|
|
|
@@ -300,7 +343,8 @@ import {checkPermi, getUserInfo} from '../../utils/storage'
|
|
|
suspendReason: item['suspendReason'] as string | null,
|
|
|
rejectionReason: item['rejectionReason'] as string | null,
|
|
|
updateTime: item['updateTime'] as string | null, // 新增字段
|
|
|
- workEndTime: item['workEndTime'] as string | null // 新增字段
|
|
|
+ workEndTime: item['workEndTime'] as string | null, // 新增字段
|
|
|
+ pauseTime: item['pauseTime'] as string | null
|
|
|
}
|
|
|
newData.push(orderItem)
|
|
|
}
|
|
|
@@ -347,26 +391,26 @@ import {checkPermi, getUserInfo} from '../../utils/storage'
|
|
|
// 辅助函数:从 any 类型提取属性
|
|
|
const getOrderType = (item: any | null): string => {
|
|
|
if (item == null) return ''
|
|
|
- const orderInfoItem = item as acceptOrderInfo
|
|
|
+ const orderInfoItem = item as acceptOrderInfoExtend
|
|
|
return orderInfoItem.orderType == 1?"维修工单":"维保工单";
|
|
|
}
|
|
|
|
|
|
const getWorkOrderProjectNo = (item: any | null): string | null => {
|
|
|
if (item == null) return ''
|
|
|
- const orderInfoItem = item as acceptOrderInfo
|
|
|
+ const orderInfoItem = item as acceptOrderInfoExtend
|
|
|
return orderInfoItem.workOrderProjectNo
|
|
|
}
|
|
|
|
|
|
const getPcsDeviceName = (item: any | null): string | null=> {
|
|
|
if (item == null) return ''
|
|
|
- const orderInfoItem = item as acceptOrderInfo
|
|
|
+ const orderInfoItem = item as acceptOrderInfoExtend
|
|
|
return orderInfoItem.pcsDeviceName
|
|
|
}
|
|
|
|
|
|
// 根据状态显示不同的时间
|
|
|
const getDisplayTime = (item: any | null): string|null => {
|
|
|
if (item == null) return null
|
|
|
- const orderInfoItem = item as acceptOrderInfo
|
|
|
+ const orderInfoItem = item as acceptOrderInfoExtend
|
|
|
|
|
|
// 如果是"待接单"状态,显示派单时间
|
|
|
if (orderInfoItem.workOrderStatus == 'assigned') {
|
|
|
@@ -393,7 +437,7 @@ import {checkPermi, getUserInfo} from '../../utils/storage'
|
|
|
|
|
|
const getWorkOrderStatus = (item: any | null): string | null => {
|
|
|
if (item == null) return ''
|
|
|
- const orderInfoItem = item as acceptOrderInfo
|
|
|
+ const orderInfoItem = item as acceptOrderInfoExtend
|
|
|
const rawStatus = orderInfoItem.workOrderStatus
|
|
|
|
|
|
if (rawStatus==null) return ''
|
|
|
@@ -410,7 +454,7 @@ import {checkPermi, getUserInfo} from '../../utils/storage'
|
|
|
|
|
|
const getStatusClass = (item: any | null): string => {
|
|
|
if (item == null) return ''
|
|
|
- const orderInfoItem = item as acceptOrderInfo
|
|
|
+ const orderInfoItem = item as acceptOrderInfoExtend
|
|
|
const rawStatus = orderInfoItem.workOrderStatus
|
|
|
if (rawStatus==null) return ''
|
|
|
// const status = rawStatus
|
|
|
@@ -513,7 +557,7 @@ import {checkPermi, getUserInfo} from '../../utils/storage'
|
|
|
// 点击列表查看
|
|
|
const handleView = (item: any | null): void => {
|
|
|
if (item == null) return
|
|
|
- const orderItem = item as acceptOrderInfo
|
|
|
+ const orderItem = item as acceptOrderInfoExtend
|
|
|
uni.navigateTo({
|
|
|
url: `/pages/order/detail/index?id=${orderItem.id}&orderType=${orderItem.orderType}`
|
|
|
})
|
|
|
@@ -523,13 +567,18 @@ import {checkPermi, getUserInfo} from '../../utils/storage'
|
|
|
// 点击列表项
|
|
|
const handleItemClick = (item: any | null, buttonType: string | ''): void => {
|
|
|
if (item == null) return
|
|
|
- const orderItem = item as acceptOrderInfo
|
|
|
+ const orderItem = item as acceptOrderInfoExtend
|
|
|
if(orderItem.workOrderStatus == 'assigned') {
|
|
|
if(buttonType != '' && buttonType == "acceptReturn") {
|
|
|
// 跳转到退回页面
|
|
|
uni.navigateTo({
|
|
|
url: `/pages/order/detail/returnIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
|
|
|
})
|
|
|
+ } else if(buttonType != '' && buttonType == "shutdown") {
|
|
|
+ // 跳转到停机页面
|
|
|
+ uni.navigateTo({
|
|
|
+ url: `/pages/order/detail/shutdownIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
|
|
|
+ })
|
|
|
} else {
|
|
|
// 跳转到接单页面
|
|
|
uni.navigateTo({
|
|
|
@@ -552,6 +601,11 @@ import {checkPermi, getUserInfo} from '../../utils/storage'
|
|
|
uni.navigateTo({
|
|
|
url: `/pages/order/detail/resetIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
|
|
|
})
|
|
|
+ } else if(buttonType != '' && buttonType == "shutdown") {
|
|
|
+ // 跳转到停机页面
|
|
|
+ uni.navigateTo({
|
|
|
+ url: `/pages/order/detail/shutdownIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
|
|
|
+ })
|
|
|
}
|
|
|
} else if(orderItem.workOrderStatus == 'to_approve') {
|
|
|
// 跳转到待审批页面
|