|
@@ -18,16 +18,16 @@
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
|
- <el-form-item label="维保类型" prop="inspectionType" label-position="top">
|
|
|
|
|
- <el-select v-model="queryParams.inspectionType" placeholder="请选择工单类型" clearable>
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="dict in gxt_inspection_type"
|
|
|
|
|
- :key="dict.value"
|
|
|
|
|
- :label="dict.label"
|
|
|
|
|
- :value="dict.value"
|
|
|
|
|
- />
|
|
|
|
|
- </el-select>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
|
|
+<!-- <el-form-item label="维保类型" prop="inspectionType" label-position="top">-->
|
|
|
|
|
+<!-- <el-select v-model="queryParams.inspectionType" placeholder="请选择工单类型" clearable>-->
|
|
|
|
|
+<!-- <el-option-->
|
|
|
|
|
+<!-- v-for="dict in gxt_inspection_type"-->
|
|
|
|
|
+<!-- :key="dict.value"-->
|
|
|
|
|
+<!-- :label="dict.label"-->
|
|
|
|
|
+<!-- :value="dict.value"-->
|
|
|
|
|
+<!-- />-->
|
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
<el-form-item label="维保中心" prop="gxtCenter" label-position="top">
|
|
<el-form-item label="维保中心" prop="gxtCenter" label-position="top">
|
|
|
<el-select
|
|
<el-select
|
|
|
v-model="queryParams.gxtCenter"
|
|
v-model="queryParams.gxtCenter"
|
|
@@ -150,12 +150,12 @@
|
|
|
{{ scope.row.pcsDeviceName || '-' }}
|
|
{{ scope.row.pcsDeviceName || '-' }}
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
- <el-table-column label="维保类型" align="center" prop="inspectionType" min-width="100">
|
|
|
|
|
- <template #default="scope">
|
|
|
|
|
- <dict-tag v-if="scope.row.inspectionType" :options="gxt_inspection_type" :value="scope.row.inspectionType"/>
|
|
|
|
|
- <span v-else>-</span>
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
|
|
+<!-- <el-table-column label="维保类型" align="center" prop="inspectionType" min-width="100">-->
|
|
|
|
|
+<!-- <template #default="scope">-->
|
|
|
|
|
+<!-- <dict-tag v-if="scope.row.inspectionType" :options="gxt_inspection_type" :value="scope.row.inspectionType"/>-->
|
|
|
|
|
+<!-- <span v-else>-</span>-->
|
|
|
|
|
+<!-- </template>-->
|
|
|
|
|
+<!-- </el-table-column>-->
|
|
|
<el-table-column label="工单状态" align="center" prop="workOrderStatus" min-width="100">
|
|
<el-table-column label="工单状态" align="center" prop="workOrderStatus" min-width="100">
|
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
|
<dict-tag :options="gxt_work_order_status" :value="scope.row.workOrderStatus"/>
|
|
<dict-tag :options="gxt_work_order_status" :value="scope.row.workOrderStatus"/>
|
|
@@ -350,7 +350,7 @@
|
|
|
<el-row :gutter="20">
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="24">
|
|
<el-col :span="24">
|
|
|
<el-form-item label="维保内容" prop="content">
|
|
<el-form-item label="维保内容" prop="content">
|
|
|
- <el-input v-model="form.content" type="textarea" placeholder="请输入维保内容" :rows="3" readonly />
|
|
|
|
|
|
|
+ <el-input v-model="form.content" type="textarea" :rows="3" readonly />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
@@ -484,21 +484,50 @@
|
|
|
<el-row :gutter="20">
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="24">
|
|
<el-col :span="24">
|
|
|
<el-form-item label="维保内容" prop="content">
|
|
<el-form-item label="维保内容" prop="content">
|
|
|
- <el-input v-model="acceptForm.content" type="textarea" placeholder="请输入维保内容" :rows="3" disabled />
|
|
|
|
|
|
|
+ <el-input v-model="acceptForm.content" type="textarea" :rows="3" disabled />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
<el-row :gutter="20">
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="24">
|
|
|
|
|
|
|
+ <el-col :span="12">
|
|
|
<el-form-item label="工作负责人" prop="teamLeaderId">
|
|
<el-form-item label="工作负责人" prop="teamLeaderId">
|
|
|
- <el-select v-model="acceptForm.teamLeaderId" placeholder="请选择工作负责人" style="width: 100%" @change="(userId) => acceptForm.teamLeaderName = userList.find(u => u.userId === userId)?.nickName">
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="user in userList"
|
|
|
|
|
- :key="user.userId"
|
|
|
|
|
- :label="user.nickName"
|
|
|
|
|
- :value="user.userId"
|
|
|
|
|
- />
|
|
|
|
|
- </el-select>
|
|
|
|
|
|
|
+<!-- <el-select v-model="acceptForm.teamLeaderId" placeholder="请选择工作负责人" style="width: 100%" @change="(userId) => acceptForm.teamLeaderName = userList.find(u => u.userId === userId)?.nickName">-->
|
|
|
|
|
+<!-- <el-option-->
|
|
|
|
|
+<!-- v-for="user in userList"-->
|
|
|
|
|
+<!-- :key="user.userId"-->
|
|
|
|
|
+<!-- :label="user.nickName"-->
|
|
|
|
|
+<!-- :value="user.userId"-->
|
|
|
|
|
+<!-- />-->
|
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ v-model="acceptForm.teamLeaderName"
|
|
|
|
|
+ placeholder="请输入工作负责人姓名或点击选择"
|
|
|
|
|
+ clearable
|
|
|
|
|
+ @focus="handleTeamLeaderInputFocus"
|
|
|
|
|
+ @blur="handleTeamLeaderInputBlur"
|
|
|
|
|
+ @input="handleTeamLeaderInput"
|
|
|
|
|
+ @clear="handleTeamLeaderClear"
|
|
|
|
|
+ >
|
|
|
|
|
+ </el-input>
|
|
|
|
|
+ <!-- 快速检索下拉框 -->
|
|
|
|
|
+ <div class="quick-select-dropdown" v-show="showTeamLeaderQuickSelect && quickTeamLeaderList.length > 0">
|
|
|
|
|
+ <div
|
|
|
|
|
+ v-for="item in quickTeamLeaderList"
|
|
|
|
|
+ :key="item.userId"
|
|
|
|
|
+ class="quick-select-item"
|
|
|
|
|
+ @click="handleTeamLeaderQuickSelect(item)">
|
|
|
|
|
+ <span class="user-name">{{ item.nickName }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="quick-select-dropdown no-data" v-show="showTeamLeaderQuickSelect && quickTeamLeaderList.length === 0 && acceptForm.teamLeaderName && !teamLeaderLoading">
|
|
|
|
|
+ <div>未找到匹配的人员</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="quick-select-dropdown no-data" v-show="showTeamLeaderQuickSelect && teamLeaderLoading">
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <i class="el-icon-loading"></i>
|
|
|
|
|
+ 搜索中...
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
@@ -681,7 +710,7 @@
|
|
|
<el-row :gutter="20">
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="24">
|
|
<el-col :span="24">
|
|
|
<el-form-item label="维保内容" prop="content">
|
|
<el-form-item label="维保内容" prop="content">
|
|
|
- <el-input v-model="finishForm.content" type="textarea" placeholder="请输入维保内容" :rows="3" disabled />
|
|
|
|
|
|
|
+ <el-input v-model="finishForm.content" type="textarea" :rows="3" disabled />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
@@ -691,35 +720,35 @@
|
|
|
<el-input v-model="finishForm.teamLeaderName" disabled />
|
|
<el-input v-model="finishForm.teamLeaderName" disabled />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
- <el-col :span="12">
|
|
|
|
|
- <el-form-item label="维保类型" prop="inspectionType">
|
|
|
|
|
- <el-select v-model="finishForm.inspectionType" placeholder="请选择维保类型">
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="dict in gxt_inspection_type"
|
|
|
|
|
- :key="dict.value"
|
|
|
|
|
- :label="dict.label"
|
|
|
|
|
- :value="dict.value"
|
|
|
|
|
- />
|
|
|
|
|
- </el-select>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </el-col>
|
|
|
|
|
- </el-row>
|
|
|
|
|
- <el-row :gutter="20">
|
|
|
|
|
- <el-col :span="24">
|
|
|
|
|
- <el-form-item label="维保总结" prop="realContent">
|
|
|
|
|
- <el-input v-model="finishForm.realContent"
|
|
|
|
|
- type="textarea"
|
|
|
|
|
- placeholder="请输入点评内容,最多100字"
|
|
|
|
|
- maxlength="100"
|
|
|
|
|
- :rows="3"
|
|
|
|
|
- show-word-limit />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </el-col>
|
|
|
|
|
|
|
+<!-- <el-col :span="12">-->
|
|
|
|
|
+<!-- <el-form-item label="维保类型" prop="inspectionType">-->
|
|
|
|
|
+<!-- <el-select v-model="finishForm.inspectionType" placeholder="请选择维保类型">-->
|
|
|
|
|
+<!-- <el-option-->
|
|
|
|
|
+<!-- v-for="dict in gxt_inspection_type"-->
|
|
|
|
|
+<!-- :key="dict.value"-->
|
|
|
|
|
+<!-- :label="dict.label"-->
|
|
|
|
|
+<!-- :value="dict.value"-->
|
|
|
|
|
+<!-- />-->
|
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
|
+<!-- </el-col>-->
|
|
|
</el-row>
|
|
</el-row>
|
|
|
|
|
+<!-- <el-row :gutter="20">-->
|
|
|
|
|
+<!-- <el-col :span="24">-->
|
|
|
|
|
+<!-- <el-form-item label="维保总结" prop="realContent">-->
|
|
|
|
|
+<!-- <el-input v-model="finishForm.realContent"-->
|
|
|
|
|
+<!-- type="textarea"-->
|
|
|
|
|
+<!-- placeholder="请输入点评内容,最多100字"-->
|
|
|
|
|
+<!-- maxlength="100"-->
|
|
|
|
|
+<!-- :rows="3"-->
|
|
|
|
|
+<!-- show-word-limit />-->
|
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
|
+<!-- </el-col>-->
|
|
|
|
|
+<!-- </el-row>-->
|
|
|
<el-row>
|
|
<el-row>
|
|
|
<el-col :span="24">
|
|
<el-col :span="24">
|
|
|
<el-form-item label="检修人员">
|
|
<el-form-item label="检修人员">
|
|
|
- <el-input v-model="finishForm.workGroupMemberName" />
|
|
|
|
|
|
|
+ <el-input v-model="finishForm.workGroupMemberName" readonly />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<!-- <el-form-item label="检修人员" prop="memberIds">-->
|
|
<!-- <el-form-item label="检修人员" prop="memberIds">-->
|
|
|
<!-- <el-checkbox-group v-model="finishForm.memberIds" style="width: 100%" @change="handleMembersChange">-->
|
|
<!-- <el-checkbox-group v-model="finishForm.memberIds" style="width: 100%" @change="handleMembersChange">-->
|
|
@@ -838,13 +867,13 @@
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
- <el-row>
|
|
|
|
|
- <el-col :span="24">
|
|
|
|
|
- <el-form-item label="实际维保内容">
|
|
|
|
|
- <el-input v-model="restartForm.realContent" type="textarea" :rows="3" disabled />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </el-col>
|
|
|
|
|
- </el-row>
|
|
|
|
|
|
|
+<!-- <el-row>-->
|
|
|
|
|
+<!-- <el-col :span="24">-->
|
|
|
|
|
+<!-- <el-form-item label="实际维保内容">-->
|
|
|
|
|
+<!-- <el-input v-model="restartForm.realContent" type="textarea" :rows="3" disabled />-->
|
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
|
+<!-- </el-col>-->
|
|
|
|
|
+<!-- </el-row>-->
|
|
|
<el-row>
|
|
<el-row>
|
|
|
<el-col :span="24">
|
|
<el-col :span="24">
|
|
|
<el-form-item label="附件">
|
|
<el-form-item label="附件">
|
|
@@ -973,13 +1002,13 @@
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
- <el-row :gutter="20">
|
|
|
|
|
- <el-col :span="24">
|
|
|
|
|
- <el-form-item label="实际维保内容">
|
|
|
|
|
- <el-input v-model="rateForm.realContent" type="textarea" :rows="3" disabled />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </el-col>
|
|
|
|
|
- </el-row>
|
|
|
|
|
|
|
+<!-- <el-row :gutter="20">-->
|
|
|
|
|
+<!-- <el-col :span="24">-->
|
|
|
|
|
+<!-- <el-form-item label="实际维保内容">-->
|
|
|
|
|
+<!-- <el-input v-model="rateForm.realContent" type="textarea" :rows="3" disabled />-->
|
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
|
+<!-- </el-col>-->
|
|
|
|
|
+<!-- </el-row>-->
|
|
|
<el-row>
|
|
<el-row>
|
|
|
<el-col :span="24">
|
|
<el-col :span="24">
|
|
|
<el-form-item label="附件">
|
|
<el-form-item label="附件">
|
|
@@ -1056,19 +1085,19 @@
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
<el-row :gutter="20">
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="12">
|
|
|
|
|
- <el-form-item label="维保类型" prop="inspectionType">
|
|
|
|
|
-<!-- <el-input v-model="approveForm.orderType" disabled />-->
|
|
|
|
|
- <el-select v-model="approveForm.inspectionType" disabled>
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="dict in gxt_inspection_type"
|
|
|
|
|
- :key="dict.value"
|
|
|
|
|
- :label="dict.label"
|
|
|
|
|
- :value="dict.value"
|
|
|
|
|
- />
|
|
|
|
|
- </el-select>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </el-col>
|
|
|
|
|
|
|
+<!-- <el-col :span="12">-->
|
|
|
|
|
+<!-- <el-form-item label="维保类型" prop="inspectionType">-->
|
|
|
|
|
+<!--<!– <el-input v-model="approveForm.orderType" disabled />–>-->
|
|
|
|
|
+<!-- <el-select v-model="approveForm.inspectionType" disabled>-->
|
|
|
|
|
+<!-- <el-option-->
|
|
|
|
|
+<!-- v-for="dict in gxt_inspection_type"-->
|
|
|
|
|
+<!-- :key="dict.value"-->
|
|
|
|
|
+<!-- :label="dict.label"-->
|
|
|
|
|
+<!-- :value="dict.value"-->
|
|
|
|
|
+<!-- />-->
|
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
|
+<!-- </el-col>-->
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
<el-form-item label="工单状态" prop="workOrderStatus">
|
|
<el-form-item label="工单状态" prop="workOrderStatus">
|
|
|
<!-- <el-input v-model="approveForm.workOrderStatus" disabled />-->
|
|
<!-- <el-input v-model="approveForm.workOrderStatus" disabled />-->
|
|
@@ -1267,15 +1296,15 @@
|
|
|
<el-col :span="24">
|
|
<el-col :span="24">
|
|
|
<el-form-item label="检修人员">{{ detailData.workGroupMemberName || '-' }}</el-form-item>
|
|
<el-form-item label="检修人员">{{ detailData.workGroupMemberName || '-' }}</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
- <el-col :span="24">
|
|
|
|
|
- <el-form-item label="维保类型">
|
|
|
|
|
- <dict-tag v-if="detailData.inspectionType" :options="gxt_inspection_type" :value="detailData.inspectionType" />
|
|
|
|
|
- <span v-else>-</span>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </el-col>
|
|
|
|
|
- <el-col :span="24">
|
|
|
|
|
- <el-form-item label="实际维保内容">{{ detailData.realContent || '-' }}</el-form-item>
|
|
|
|
|
- </el-col>
|
|
|
|
|
|
|
+<!-- <el-col :span="24">-->
|
|
|
|
|
+<!-- <el-form-item label="维保类型">-->
|
|
|
|
|
+<!-- <dict-tag v-if="detailData.inspectionType" :options="gxt_inspection_type" :value="detailData.inspectionType" />-->
|
|
|
|
|
+<!-- <span v-else>-</span>-->
|
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
|
+<!-- </el-col>-->
|
|
|
|
|
+<!-- <el-col :span="24">-->
|
|
|
|
|
+<!-- <el-form-item label="实际维保内容">{{ detailData.realContent || '-' }}</el-form-item>-->
|
|
|
|
|
+<!-- </el-col>-->
|
|
|
<el-col :span="24">
|
|
<el-col :span="24">
|
|
|
<el-form-item label="得分">{{ detailData.score || '-' }}</el-form-item>
|
|
<el-form-item label="得分">{{ detailData.score || '-' }}</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
@@ -1406,7 +1435,7 @@ import {
|
|
|
importGxtWorkOrderPersonFromExcel,
|
|
importGxtWorkOrderPersonFromExcel,
|
|
|
// importTemplate
|
|
// importTemplate
|
|
|
} from "@/api/gxt/gxtOrder"
|
|
} from "@/api/gxt/gxtOrder"
|
|
|
-import { listUser } from "@/api/system/user"
|
|
|
|
|
|
|
+import {listUser, listUserNoPermi} from "@/api/system/user"
|
|
|
import {getToken} from "@/utils/auth.js";
|
|
import {getToken} from "@/utils/auth.js";
|
|
|
import {getRepairOrder} from "@/api/gxt/repairOrder.js";
|
|
import {getRepairOrder} from "@/api/gxt/repairOrder.js";
|
|
|
import {listEquipment, listMaintenanceCenters, listStationsByMaintenanceCenter} from "@/api/gxt/equipment.js";
|
|
import {listEquipment, listMaintenanceCenters, listStationsByMaintenanceCenter} from "@/api/gxt/equipment.js";
|
|
@@ -1414,6 +1443,115 @@ import MisInfoSelectSingle from "@/components/misInfoSelect/single.vue";
|
|
|
import {genCode} from "@/api/system/autocode/rule.js";
|
|
import {genCode} from "@/api/system/autocode/rule.js";
|
|
|
import {listMisInfo, listWorkPerson} from "@/api/gxt/misInfo.js";
|
|
import {listMisInfo, listWorkPerson} from "@/api/gxt/misInfo.js";
|
|
|
|
|
|
|
|
|
|
+// 工作负责人快速检索相关响应式数据
|
|
|
|
|
+const showTeamLeaderQuickSelect = ref(false)
|
|
|
|
|
+const quickTeamLeaderList = ref([])
|
|
|
|
|
+const teamLeaderLoading = ref(false)
|
|
|
|
|
+const teamLeaderSearchTimer = ref(null)
|
|
|
|
|
+
|
|
|
|
|
+// 工作负责人快速检索方法
|
|
|
|
|
+/** 工作负责人输入框获取焦点 */
|
|
|
|
|
+const handleTeamLeaderInputFocus = () => {
|
|
|
|
|
+ showTeamLeaderQuickSelect.value = true
|
|
|
|
|
+ // 如果已有输入内容,立即搜索
|
|
|
|
|
+ if (acceptForm.value.teamLeaderName && acceptForm.value.teamLeaderName.trim()) {
|
|
|
|
|
+ handleTeamLeaderInput(acceptForm.value.teamLeaderName)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 如果没有输入内容,加载默认列表
|
|
|
|
|
+ loadQuickTeamLeaderList()
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/** 工作负责人输入框失去焦点 */
|
|
|
|
|
+const handleTeamLeaderInputBlur = () => {
|
|
|
|
|
+ // 延迟隐藏下拉框,确保点击选项能触发
|
|
|
|
|
+ setTimeout(() => {
|
|
|
|
|
+ showTeamLeaderQuickSelect.value = false
|
|
|
|
|
+ }, 200)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/** 工作负责人输入事件 - 实时搜索 */
|
|
|
|
|
+const handleTeamLeaderInput = (value) => {
|
|
|
|
|
+ const searchText = value.trim()
|
|
|
|
|
+
|
|
|
|
|
+ if (!searchText) {
|
|
|
|
|
+ quickTeamLeaderList.value = []
|
|
|
|
|
+ showTeamLeaderQuickSelect.value = false
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ showTeamLeaderQuickSelect.value = true
|
|
|
|
|
+
|
|
|
|
|
+ // 清除之前的定时器
|
|
|
|
|
+ if (teamLeaderSearchTimer.value) {
|
|
|
|
|
+ clearTimeout(teamLeaderSearchTimer.value)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 设置新的定时器,防抖处理(300ms)
|
|
|
|
|
+ teamLeaderSearchTimer.value = setTimeout(() => {
|
|
|
|
|
+ searchTeamLeaderList(searchText)
|
|
|
|
|
+ }, 300)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/** 搜索工作负责人列表 */
|
|
|
|
|
+const searchTeamLeaderList = async (keyword) => {
|
|
|
|
|
+ if (!keyword) {
|
|
|
|
|
+ quickTeamLeaderList.value = []
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ teamLeaderLoading.value = true
|
|
|
|
|
+ try {
|
|
|
|
|
+ const response = await listUserNoPermi({
|
|
|
|
|
+ nickName: keyword,
|
|
|
|
|
+ // 可以根据需要添加其他搜索条件
|
|
|
|
|
+ status: '0' // 只搜索启用状态的用户
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ quickTeamLeaderList.value = response.data || []
|
|
|
|
|
+
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('搜索工作负责人失败:', error)
|
|
|
|
|
+ proxy.$modal.msgError('搜索失败,请重试')
|
|
|
|
|
+ quickTeamLeaderList.value = []
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ teamLeaderLoading.value = false
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/** 加载快速检索工作负责人列表 */
|
|
|
|
|
+const loadQuickTeamLeaderList = async () => {
|
|
|
|
|
+ teamLeaderLoading.value = true
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 加载当前部门下的用户列表
|
|
|
|
|
+ const response = await listUserNoPermi({
|
|
|
|
|
+ deptId: acceptForm.value.gxtCenterId, // 使用维保中心ID
|
|
|
|
|
+ status: '0'
|
|
|
|
|
+ })
|
|
|
|
|
+ quickTeamLeaderList.value = response.data || []
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('加载工作负责人列表失败:', error)
|
|
|
|
|
+ quickTeamLeaderList.value = []
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ teamLeaderLoading.value = false
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/** 快速选择工作负责人 */
|
|
|
|
|
+const handleTeamLeaderQuickSelect = (item) => {
|
|
|
|
|
+ acceptForm.value.teamLeaderId = item.userId
|
|
|
|
|
+ acceptForm.value.teamLeaderName = item.nickName
|
|
|
|
|
+ showTeamLeaderQuickSelect.value = false
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/** 清空工作负责人 */
|
|
|
|
|
+const handleTeamLeaderClear = () => {
|
|
|
|
|
+ acceptForm.value.teamLeaderId = undefined
|
|
|
|
|
+ acceptForm.value.teamLeaderName = ''
|
|
|
|
|
+ quickTeamLeaderList.value = []
|
|
|
|
|
+ showTeamLeaderQuickSelect.value = false
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
// MIS工单快速检索相关响应式数据
|
|
// MIS工单快速检索相关响应式数据
|
|
|
const showMisNoQuickSelect = ref(false)
|
|
const showMisNoQuickSelect = ref(false)
|
|
|
const quickMisNoList = ref([])
|
|
const quickMisNoList = ref([])
|
|
@@ -1441,20 +1579,16 @@ const handleMisNoInputBlur = () => {
|
|
|
/** MIS工单编号输入事件 - 实时搜索 */
|
|
/** MIS工单编号输入事件 - 实时搜索 */
|
|
|
const handleMisNoInput = (value) => {
|
|
const handleMisNoInput = (value) => {
|
|
|
const searchText = value.trim()
|
|
const searchText = value.trim()
|
|
|
-
|
|
|
|
|
if (!searchText) {
|
|
if (!searchText) {
|
|
|
quickMisNoList.value = []
|
|
quickMisNoList.value = []
|
|
|
showMisNoQuickSelect.value = false
|
|
showMisNoQuickSelect.value = false
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
showMisNoQuickSelect.value = true
|
|
showMisNoQuickSelect.value = true
|
|
|
-
|
|
|
|
|
// 清除之前的定时器
|
|
// 清除之前的定时器
|
|
|
if (misNoSearchTimer.value) {
|
|
if (misNoSearchTimer.value) {
|
|
|
clearTimeout(misNoSearchTimer.value)
|
|
clearTimeout(misNoSearchTimer.value)
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
// 设置新的定时器,防抖处理(500ms)
|
|
// 设置新的定时器,防抖处理(500ms)
|
|
|
misNoSearchTimer.value = setTimeout(() => {
|
|
misNoSearchTimer.value = setTimeout(() => {
|
|
|
searchMisNoList(searchText)
|
|
searchMisNoList(searchText)
|
|
@@ -1771,8 +1905,8 @@ const data = reactive({
|
|
|
},
|
|
},
|
|
|
finishRules: {
|
|
finishRules: {
|
|
|
// teamLeaderId: [{ required: true, message: "请选择工作负责人", trigger: "change" }],
|
|
// teamLeaderId: [{ required: true, message: "请选择工作负责人", trigger: "change" }],
|
|
|
- inspectionType: [{ required: true, message: "请选择维保类型", trigger: "change" }],
|
|
|
|
|
- realContent: [{ required: true, message: "请输入实际维保内容", trigger: "change" }],
|
|
|
|
|
|
|
+ // inspectionType: [{ required: true, message: "请选择维保类型", trigger: "change" }],
|
|
|
|
|
+ // realContent: [{ required: true, message: "请输入实际维保内容", trigger: "change" }],
|
|
|
// memberIds: [{ required: true, message: "请至少选择一名检修人员", trigger: "change" }],
|
|
// memberIds: [{ required: true, message: "请至少选择一名检修人员", trigger: "change" }],
|
|
|
},
|
|
},
|
|
|
restartForm: {
|
|
restartForm: {
|
|
@@ -2058,15 +2192,16 @@ function handleRestart(row) {
|
|
|
restartForm.value = response.data
|
|
restartForm.value = response.data
|
|
|
restartForm.value.orderId = row.id
|
|
restartForm.value.orderId = row.id
|
|
|
restartForm.value.restartTime = undefined
|
|
restartForm.value.restartTime = undefined
|
|
|
|
|
+ restartDialogVisible.value = true
|
|
|
// finishForm.value.memberIds = []
|
|
// finishForm.value.memberIds = []
|
|
|
- listUser({ pageNum: 1, pageSize: 100, deptId: row.pcsStationId }).then(response => {
|
|
|
|
|
- userList.value = response.rows
|
|
|
|
|
- restartDialogVisible.value = true
|
|
|
|
|
- // 打开对话框后重置表单验证错误
|
|
|
|
|
- proxy.$nextTick(() => {
|
|
|
|
|
- proxy.$refs["restartRef"]?.clearValidate()
|
|
|
|
|
- })
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ // listUser({ pageNum: 1, pageSize: 100, deptId: row.pcsStationId }).then(response => {
|
|
|
|
|
+ // userList.value = response.rows
|
|
|
|
|
+ // restartDialogVisible.value = true
|
|
|
|
|
+ // // 打开对话框后重置表单验证错误
|
|
|
|
|
+ // proxy.$nextTick(() => {
|
|
|
|
|
+ // proxy.$refs["restartRef"]?.clearValidate()
|
|
|
|
|
+ // })
|
|
|
|
|
+ // })
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -2115,19 +2250,6 @@ function submitRestart() {
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-/** 派单 */
|
|
|
|
|
-function handleAssign(row) {
|
|
|
|
|
- assignForm.value.orderId = row.id
|
|
|
|
|
- assignForm.value.assignType = 'teamLeader'
|
|
|
|
|
- assignForm.value.teamLeaderId = undefined
|
|
|
|
|
- assignForm.value.workGroupMemberId = undefined
|
|
|
|
|
- // 获取用户列表
|
|
|
|
|
- listUser({ pageNum: 1, pageSize: 100 }).then(response => {
|
|
|
|
|
- userList.value = response.rows
|
|
|
|
|
- assignDialogVisible.value = true
|
|
|
|
|
- })
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
/** 接单 */
|
|
/** 接单 */
|
|
|
function handleAccept(row) {
|
|
function handleAccept(row) {
|
|
|
getGxtOrder(row.id).then(response => {
|
|
getGxtOrder(row.id).then(response => {
|
|
@@ -2135,14 +2257,22 @@ function handleAccept(row) {
|
|
|
acceptForm.value.orderId = row.id
|
|
acceptForm.value.orderId = row.id
|
|
|
acceptForm.value.teamLeaderId = undefined
|
|
acceptForm.value.teamLeaderId = undefined
|
|
|
acceptForm.value.teamLeaderName = undefined
|
|
acceptForm.value.teamLeaderName = undefined
|
|
|
- listUser({ pageNum: 1, pageSize: 100, deptId: row.pcsStationPid }).then(response => {
|
|
|
|
|
- userList.value = response.rows
|
|
|
|
|
|
|
+ if (row.gxtCenterId) {
|
|
|
|
|
+ // 预加载工作负责人列表
|
|
|
|
|
+ loadQuickTeamLeaderList()
|
|
|
acceptDialogVisible.value = true
|
|
acceptDialogVisible.value = true
|
|
|
- // 打开对话框后重置表单验证错误
|
|
|
|
|
- proxy.$nextTick(() => {
|
|
|
|
|
- proxy.$refs["acceptRef"]?.clearValidate()
|
|
|
|
|
- })
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ // listUserNoPermi({deptId: row.gxtCenterId}).then(response => {
|
|
|
|
|
+ // userList.value = response.data
|
|
|
|
|
+ // acceptDialogVisible.value = true
|
|
|
|
|
+ // // 打开对话框后重置表单验证错误
|
|
|
|
|
+ // proxy.$nextTick(() => {
|
|
|
|
|
+ // proxy.$refs["acceptRef"]?.clearValidate()
|
|
|
|
|
+ // })
|
|
|
|
|
+ // })
|
|
|
|
|
+ } else {
|
|
|
|
|
+ proxy.$modal.msgWarning("未找到有效的部门信息,无法加载用户列表");
|
|
|
|
|
+ acceptDialogVisible.value = true
|
|
|
|
|
+ }
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -2300,14 +2430,7 @@ function handleApprove(row) {
|
|
|
approveForm.value.orderId = row.id
|
|
approveForm.value.orderId = row.id
|
|
|
approveForm.value.workOrderStatus = 'suspended'
|
|
approveForm.value.workOrderStatus = 'suspended'
|
|
|
approveForm.value.rejectionReason = undefined
|
|
approveForm.value.rejectionReason = undefined
|
|
|
- listUser({ pageNum: 1, pageSize: 100, deptId: row.pcsStationId }).then(response => {
|
|
|
|
|
- userList.value = response.rows
|
|
|
|
|
- approveDialogVisible.value = true
|
|
|
|
|
- // 打开对话框后重置表单验证错误
|
|
|
|
|
- proxy.$nextTick(() => {
|
|
|
|
|
- proxy.$refs["finishRef"]?.clearValidate()
|
|
|
|
|
- })
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ approveDialogVisible.value = true
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -2766,5 +2889,4 @@ getList()
|
|
|
:deep(.el-form-item) {
|
|
:deep(.el-form-item) {
|
|
|
margin-bottom: 18px;
|
|
margin-bottom: 18px;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
</style>
|
|
</style>
|