|
|
@@ -238,7 +238,7 @@
|
|
|
placeholder="请选择工作负责人"
|
|
|
v-model="teamLeaderName"
|
|
|
@click="showLeaderPicker = true"
|
|
|
- :disabled="infoEntry == '1'"
|
|
|
+ :disabled="infoEntry == '1' || overStopStatus == 2"
|
|
|
/>
|
|
|
</view>
|
|
|
</view>
|
|
|
@@ -256,7 +256,7 @@
|
|
|
placeholder="请选择工作班成员"
|
|
|
v-model="workGroupMemberName"
|
|
|
@click="showUserSelect = true"
|
|
|
- :disabled="infoEntry == '1'"
|
|
|
+ :disabled="infoEntry == '1' || overStopStatus == 2"
|
|
|
/>
|
|
|
<!-- <text class="select-users-count" v-if="selectedUserIds.length > 0" :style="{ marginRight: selectedUserIds.length > 0 ? '60rpx' : '0' }">({{ selectedUserIds.length }}人)</text> -->
|
|
|
<text class="select-clear" v-if="selectedUserIds.length > 0" @click="clearSelectedUsers">×</text>
|
|
|
@@ -341,7 +341,7 @@
|
|
|
</l-popup>
|
|
|
|
|
|
<!-- 人员选择弹窗 -->
|
|
|
- <view v-if="showUserSelect" class="picker-modal">
|
|
|
+ <view v-if="showUserSelect && overStopStatus != 2" class="picker-modal">
|
|
|
<view class="modal-mask" @click="showUserSelect = false"></view>
|
|
|
<view class="modal-content">
|
|
|
<view class="modal-header">
|
|
|
@@ -440,7 +440,7 @@
|
|
|
</view>
|
|
|
|
|
|
<!-- 工作负责人弹窗 -->
|
|
|
- <view v-if="showLeaderPicker" class="picker-modal">
|
|
|
+ <view v-if="showLeaderPicker && overStopStatus != 2" class="picker-modal">
|
|
|
<view class="modal-mask" @click="showLeaderPicker = false"></view>
|
|
|
<view class="modal-content">
|
|
|
<view class="modal-header">
|
|
|
@@ -535,6 +535,10 @@
|
|
|
const resumeShow = ref<boolean>(false)
|
|
|
const resumeTime = ref<string>('') // 挂起结束时间
|
|
|
const showResumeTimePicker = ref<boolean>(false)
|
|
|
+ const oldWorkGroupMemberName = ref<string>('') // 旧工作班成员
|
|
|
+ const oldRepairOrderPersonList = ref<UTSJSONObject[]>([]) // 旧工作班成员数组
|
|
|
+ const overStopStatus = ref<Number | null>(null)
|
|
|
+ const oldTeamLeaderName = ref<string>('')
|
|
|
|
|
|
// 添加字典加载状态
|
|
|
const dictLoaded = ref<boolean>(false)
|
|
|
@@ -818,7 +822,7 @@
|
|
|
// 兼容 radio-group 事件:detail 可能不存在,直接取 e.value
|
|
|
const val = e.detail?.value as string | null
|
|
|
infoEntry.value = val ?? ''
|
|
|
- if (infoEntry.value == '1') {
|
|
|
+ if (infoEntry.value == '1' && overStopStatus.value !=2) {
|
|
|
// 当选择MIS工单时,清空手工录入的字段
|
|
|
workPermitNum.value = '';
|
|
|
realStartTime.value = '';
|
|
|
@@ -932,7 +936,42 @@
|
|
|
const responseObj = response as UTSJSONObject
|
|
|
const rows = responseObj['rows'] as UTSJSONObject[] | null
|
|
|
repairOrderPersonList.value = rows ?? []
|
|
|
- if (rows != null && rows.length > 0) {
|
|
|
+ if (rows != null && overStopStatus.value ==2) {
|
|
|
+ let hasDifference = false
|
|
|
+ const newPersonList = rows
|
|
|
+ if (oldRepairOrderPersonList.value.length === 0) {
|
|
|
+ // 旧列表为空,新列表不为空,存在差异
|
|
|
+ hasDifference = true
|
|
|
+ } else if (newPersonList.length !== oldRepairOrderPersonList.value.length) {
|
|
|
+ // 列表长度不一致,存在差异
|
|
|
+ hasDifference = true
|
|
|
+ } else {
|
|
|
+ // 比较每个人员的 nickName
|
|
|
+ for (let newPerson of newPersonList) {
|
|
|
+ const found = oldRepairOrderPersonList.value.some(oldPerson =>
|
|
|
+ newPerson.nickName === oldPerson.nickName
|
|
|
+ )
|
|
|
+ if (!found) {
|
|
|
+ hasDifference = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果存在差异,提醒用户但不改变当前 repairOrderPersonList
|
|
|
+ if (hasDifference) {
|
|
|
+ uni.showModal({
|
|
|
+ title: '提示',
|
|
|
+ content: 'MIS 工单人员列表与当前工单人员列表不一致!',
|
|
|
+ showCancel: false, // 只显示确定按钮
|
|
|
+ confirmText: '确定',
|
|
|
+ confirmColor: '#007aff', // 自定义按钮颜色,匹配你的UI风格
|
|
|
+ success: (res) => {
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (rows != null && rows.length > 0 && overStopStatus.value != 2) {
|
|
|
// 查找 isLeader 等于 1 的负责人(优先获取第一个符合条件的,贴合常规单负责人场景)
|
|
|
const leaderPerson = rows.find(person => person.isLeader == 1);
|
|
|
if(leaderPerson != null) {
|
|
|
@@ -1485,6 +1524,12 @@
|
|
|
faultBarcode.value = (data['faultBarcode'] as string | null) ?? ''
|
|
|
faultDesc.value = (data['faultDesc'] as string | null) ?? ''
|
|
|
suspendReason.value = (data['suspendReason'] as string | null) ?? ''
|
|
|
+ workGroupMemberName.value = (data['workGroupMemberName'] as string | null) ?? ''
|
|
|
+ oldWorkGroupMemberName.value = (data['workGroupMemberName'] as string | null) ?? '' // 旧工作班成员
|
|
|
+ oldRepairOrderPersonList.value = (data['repairOrderPersonList'] as UTSJSONObject[] | null) ?? [] // 旧工作班成员数组
|
|
|
+ overStopStatus.value = (data['overStopStatus'] as Number | null) ?? null
|
|
|
+ oldTeamLeaderName.value = (data['teamLeaderName'] as string | null) ?? ''
|
|
|
+
|
|
|
// 初始化附件数据
|
|
|
const attachmentUrlsFromServer = (data['attachmentUrls'] as string | null) ?? ''
|
|
|
if (attachmentUrlsFromServer.length > 0) {
|
|
|
@@ -1559,13 +1604,62 @@
|
|
|
if (rows != null && rows.length > 0) {
|
|
|
// 查询负责人信息并回填
|
|
|
for (const person of repairOrderPersonList.value) {
|
|
|
- // 严格判断isLeader为1(兼容数字/字符串类型)
|
|
|
- if (person.isLeader == 1) {
|
|
|
- teamLeaderName.value = (person.nickName as string | null) ?? '';
|
|
|
- teamLeaderId.value = (person.userId as Number | null) ?? null;
|
|
|
- break; // 找到后立即停止循环
|
|
|
+ // 严格判断isLeader为1(兼容数字/字符串类型)
|
|
|
+ if (person.isLeader == 1) {
|
|
|
+ if(overStopStatus.value == 2 && oldTeamLeaderName.value != person.nickName) {
|
|
|
+ uni.showModal({
|
|
|
+ title: '提示',
|
|
|
+ content: 'MIS工单工作负责人与手动选择的工作负责人不一致',
|
|
|
+ showCancel: false, // 只显示确定按钮
|
|
|
+ confirmText: '确定',
|
|
|
+ confirmColor: '#007aff',
|
|
|
+ success: (res) => {
|
|
|
+ }
|
|
|
+ });
|
|
|
+ break;
|
|
|
+ } else {
|
|
|
+ teamLeaderName.value = (person.nickName as string | null) ?? '';
|
|
|
+ teamLeaderId.value = (person.userId as Number | null) ?? null;
|
|
|
+ break; // 找到后立即停止循环
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ // 当 overStopStatus == 2 时,比对旧的 repairOrderPersonList 和新的 MIS 工单获取的 repairOrderPersonList
|
|
|
+ if (overStopStatus.value == 2) {
|
|
|
+ let hasDifference = false
|
|
|
+ const newPersonList = repairOrderPersonList.value
|
|
|
+ if (oldRepairOrderPersonList.value.length === 0) {
|
|
|
+ // 旧列表为空,新列表不为空,存在差异
|
|
|
+ hasDifference = true
|
|
|
+ } else if (newPersonList.length !== oldRepairOrderPersonList.value.length) {
|
|
|
+ // 列表长度不一致,存在差异
|
|
|
+ hasDifference = true
|
|
|
+ } else {
|
|
|
+ // 比较每个人员的 nickName
|
|
|
+ for (let newPerson of newPersonList) {
|
|
|
+ const found = oldRepairOrderPersonList.value.some(oldPerson =>
|
|
|
+ newPerson.nickName === oldPerson.nickName
|
|
|
+ )
|
|
|
+ if (!found) {
|
|
|
+ hasDifference = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果存在差异,提醒用户但不改变当前 repairOrderPersonList
|
|
|
+ if (hasDifference) {
|
|
|
+ uni.showModal({
|
|
|
+ title: '提示',
|
|
|
+ content: 'MIS工单人员列表与当前工单人员列表不一致!',
|
|
|
+ showCancel: false, // 只显示确定按钮
|
|
|
+ confirmText: '确定',
|
|
|
+ confirmColor: '#007aff',
|
|
|
+ success: (res) => {
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
const nickNames = rows
|
|
|
.filter(person => person.isLeader != 1)
|
|
|
.map(person => (person.nickName as string | null) ?? '')
|
|
|
@@ -1605,6 +1699,7 @@
|
|
|
})
|
|
|
|
|
|
}
|
|
|
+ }
|
|
|
})
|
|
|
}
|
|
|
|