|
|
@@ -148,6 +148,15 @@
|
|
|
<template #default="scope">
|
|
|
<!-- 维修工单操作按钮 -->
|
|
|
<template v-if="scope.row.orderType === 1">
|
|
|
+
|
|
|
+ <el-button
|
|
|
+ v-if="scope.row.workOrderStatus === 'to_issue' || scope.row.workOrderStatus === 'accept_return'"
|
|
|
+ type="primary"
|
|
|
+ link
|
|
|
+ @click="handleUpdate(scope.row)"
|
|
|
+ v-hasPermi="['gxt:repairOrder:edit']"
|
|
|
+ ><i class="fa fa-user-plus"></i>下发</el-button>
|
|
|
+
|
|
|
<el-button
|
|
|
v-if="scope.row.workOrderStatus === 'assigned'"
|
|
|
type="primary"
|
|
|
@@ -171,10 +180,26 @@
|
|
|
@click="handleApprove(scope.row)"
|
|
|
v-hasPermi="['gxt:repairOrder:approve']"
|
|
|
><i class="fa fa-check-circle"></i>审批</el-button>
|
|
|
+
|
|
|
+ <el-button
|
|
|
+ v-if="scope.row.workOrderStatus === 'completed'"
|
|
|
+ type="success"
|
|
|
+ link
|
|
|
+ @click="handleRestart(scope.row)"
|
|
|
+ v-hasPermi="['gxt:repairOrder:restart']"
|
|
|
+ ><i class="fa fa-refresh"></i>复运</el-button>
|
|
|
</template>
|
|
|
|
|
|
<!-- 维保工单操作按钮 -->
|
|
|
<template v-else>
|
|
|
+ <el-button
|
|
|
+ v-if="scope.row.workOrderStatus === 'to_issue'"
|
|
|
+ type="primary"
|
|
|
+ link
|
|
|
+ @click="handleUpdate(scope.row)"
|
|
|
+ v-hasPermi="['gxt:maintenance:order:edit']"
|
|
|
+ ><i class="fa fa-user-plus"></i>下发</el-button>
|
|
|
+
|
|
|
<el-button
|
|
|
v-if="scope.row.workOrderStatus === 'assigned'"
|
|
|
type="primary"
|
|
|
@@ -198,6 +223,14 @@
|
|
|
@click="handleApprove(scope.row)"
|
|
|
v-hasPermi="['gxt:maintenance:order:approve']"
|
|
|
><i class="fa fa-check-circle"></i>审批</el-button>
|
|
|
+
|
|
|
+ <el-button
|
|
|
+ link type="success"
|
|
|
+ @click="handleRestart(scope.row)"
|
|
|
+ v-if="scope.row.workOrderStatus === 'completed'"
|
|
|
+ v-hasPermi="['gxt:maintenance:order:restart']">
|
|
|
+ <i class="fa fa-refresh"></i>复运
|
|
|
+ </el-button>
|
|
|
</template>
|
|
|
|
|
|
<el-button
|
|
|
@@ -1158,6 +1191,166 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
+
|
|
|
+ <!-- 复运对话框 (维修工单) -->
|
|
|
+ <el-dialog title="复运" v-model="restartRepairDialogVisible" width="800px" append-to-body>
|
|
|
+ <el-form ref="restartRepairFormRef" :model="restartRepairForm" :rules="restartRepairRules" label-width="120px" label-position="top">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="工单编码"><el-input v-model="restartRepairForm.workOrderProjectNo" disabled /></el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="风机编号"><el-input v-model="restartRepairForm.pcsDeviceName" disabled /></el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="工单状态">
|
|
|
+ <el-select v-model="restartRepairForm.workOrderStatus" style="width: 100%" disabled>
|
|
|
+ <el-option
|
|
|
+ v-for="dict in gxt_work_order_status"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.label"
|
|
|
+ :value="dict.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="维保中心"><el-input v-model="restartRepairForm.gxtCenter" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="场站"><el-input v-model="restartRepairForm.pcsStationName" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="品牌"><el-input v-model="restartRepairForm.brand" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="故障代码"><el-input v-model="restartRepairForm.faultCode" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="故障信息">
|
|
|
+ <el-input
|
|
|
+ v-model="restartRepairForm.faultBarcode"
|
|
|
+ type="textarea"
|
|
|
+ placeholder="请输入故障信息"
|
|
|
+ maxlength="100"
|
|
|
+ show-word-limit
|
|
|
+ :rows="3"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="下发人"><el-input v-model="restartRepairForm.assignUserName" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="下发时间"><el-input v-model="restartRepairForm.assignTime" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="接单人"><el-input v-model="restartRepairForm.acceptUserName" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="接单时间"><el-input v-model="restartRepairForm.acceptTime" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="工作负责人"><el-input v-model="restartRepairForm.teamLeaderName" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="结束时间"><el-input v-model="restartRepairForm.realEndTime" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="恢复运行时间" prop="restartTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="restartRepairForm.restartTime"
|
|
|
+ type="datetime"
|
|
|
+ format="YYYY-MM-DD HH:mm"
|
|
|
+ value-format="YYYY-MM-DD HH:mm"
|
|
|
+ placeholder="请选择恢复运行时间"
|
|
|
+ style="width: 100%"
|
|
|
+ :disabled-date="disabledDate"
|
|
|
+ :disabled-time="disabledTime"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ <template #footer>
|
|
|
+ <div class="dialog-footer">
|
|
|
+ <el-button @click="restartRepairDialogVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="submitRestartRepair">确认复运</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <!-- 复运对话框 (维保工单) -->
|
|
|
+ <el-dialog title="复运" v-model="restartWorkDialogVisible" width="800px" append-to-body>
|
|
|
+ <el-form ref="restartWorkFormRef" :model="restartWorkForm" :rules="restartWorkRules" label-width="120px" label-position="top">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="工单编码"><el-input v-model="restartWorkForm.workOrderProjectNo" disabled /></el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="风机编号"><el-input v-model="restartWorkForm.pcsDeviceName" disabled /></el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="工单状态">
|
|
|
+ <el-select v-model="restartWorkForm.workOrderStatus" style="width: 100%" disabled>
|
|
|
+ <el-option
|
|
|
+ v-for="dict in gxt_work_order_status"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.label"
|
|
|
+ :value="dict.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="维保中心"><el-input v-model="restartWorkForm.gxtCenter" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="场站"><el-input v-model="restartWorkForm.pcsStationName" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="品牌"><el-input v-model="restartWorkForm.brand" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="机型"><el-input v-model="restartWorkForm.model" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="MIS工单编码"><el-input v-model="restartWorkForm.misNo" disabled /></el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="接单人"><el-input v-model="restartWorkForm.acceptUserName" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="接单时间"><el-input v-model="restartWorkForm.acceptTime" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="结束时间"><el-input v-model="restartWorkForm.realEndTime" disabled /> </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="恢复运行时间" prop="restartTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="restartWorkForm.restartTime"
|
|
|
+ type="datetime"
|
|
|
+ format="YYYY-MM-DD HH:mm"
|
|
|
+ value-format="YYYY-MM-DD HH:mm"
|
|
|
+ placeholder="请选择恢复运行时间"
|
|
|
+ style="width: 100%"
|
|
|
+ :disabled-date="disabledDate"
|
|
|
+ :disabled-time="disabledTime"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ <template #footer>
|
|
|
+ <div class="dialog-footer">
|
|
|
+ <el-button @click="restartWorkDialogVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="submitRestartWork">确认复运</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
@@ -1172,7 +1365,9 @@ import {
|
|
|
finalizeRepairOrder,
|
|
|
finalizeWorkOrder,
|
|
|
approveRepairOrder,
|
|
|
- approveWorkOrder
|
|
|
+ approveWorkOrder,
|
|
|
+ restartRepairOrder,
|
|
|
+ restartWorkOrder,
|
|
|
} from "@/api/gxt/orderMine.js";
|
|
|
import { listUserNoPermi } from "@/api/system/user.js";
|
|
|
import { listMaintenanceCenters, listStationsByMaintenanceCenter } from "@/api/gxt/equipment.js";
|
|
|
@@ -1217,6 +1412,11 @@ const finalizeWorkDialogVisible = ref(false);
|
|
|
const approveRepairDialogVisible = ref(false);
|
|
|
const approveWorkDialogVisible = ref(false);
|
|
|
|
|
|
+// 复运对话框可见性
|
|
|
+const restartRepairDialogVisible = ref(false);
|
|
|
+const restartWorkDialogVisible = ref(false);
|
|
|
+
|
|
|
+
|
|
|
// 维保中心选项
|
|
|
const maintenanceCenterOptions = ref([]);
|
|
|
|
|
|
@@ -1247,6 +1447,11 @@ const getMisDataConfig = ref("0"); // 默认值为"0",表示可以手动输入
|
|
|
const approveRepairForm = ref({});
|
|
|
const approveWorkForm = ref({});
|
|
|
|
|
|
+// 复运表单数据
|
|
|
+const restartRepairForm = ref({});
|
|
|
+const restartWorkForm = ref({});
|
|
|
+
|
|
|
+
|
|
|
// 工作负责人快速检索相关响应式数据
|
|
|
const showTeamLeaderQuickSelect = ref(false);
|
|
|
const quickTeamLeaderList = ref([]);
|
|
|
@@ -1342,6 +1547,45 @@ const approveWorkRules = ref({
|
|
|
]
|
|
|
});
|
|
|
|
|
|
+// 复运表单验证规则
|
|
|
+const restartRepairRules = ref({
|
|
|
+ restartTime: [
|
|
|
+ { required: true, message: "请选择恢复运行时间", trigger: "change" },
|
|
|
+ {
|
|
|
+ validator: (rule, value, callback) => {
|
|
|
+ debugger
|
|
|
+ if (value && new Date(value) > new Date()) {
|
|
|
+ callback(new Error('恢复运行时间不能大于当前时间'));
|
|
|
+ } else if(value && new Date(value) < new Date(restartRepairForm.value.realEndTime)) {
|
|
|
+ callback(new Error('恢复运行时间不能小于结束时间'));
|
|
|
+ } else {
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ trigger: 'change'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+});
|
|
|
+
|
|
|
+const restartWorkRules = ref({
|
|
|
+ restartTime: [
|
|
|
+ { required: true, message: "请选择恢复运行时间", trigger: "change" },
|
|
|
+ {
|
|
|
+ validator: (rule, value, callback) => {
|
|
|
+ debugger
|
|
|
+ if (value && new Date(value) > new Date()) {
|
|
|
+ callback(new Error('恢复运行时间不能大于当前时间'));
|
|
|
+ } else if(value && new Date(value) < new Date(restartWorkForm.value.realEndTime)) {
|
|
|
+ callback(new Error('恢复运行时间不能小于结束时间'));
|
|
|
+ } else {
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ trigger: 'change'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+});
|
|
|
+
|
|
|
// 页面加载时执行
|
|
|
onMounted(() => {
|
|
|
getList();
|
|
|
@@ -1572,19 +1816,6 @@ function submitFinalizeRepair() {
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- // 根据维修方式清除不需要的字段
|
|
|
- /*const data = {
|
|
|
- id: finalizeRepairForm.value.id,
|
|
|
- repairMethod: finalizeRepairForm.value.repairMethod,
|
|
|
- misOrderNo: finalizeRepairForm.value.misOrderNo,
|
|
|
- realStartTime: finalizeRepairForm.value.realStartTime,
|
|
|
- realEndTime: finalizeRepairForm.value.realEndTime,
|
|
|
- resetMethod: finalizeRepairForm.value.resetMethod,
|
|
|
- finalizationRemark: finalizeRepairForm.value.finalizationRemark,
|
|
|
- attachmentUrls: finalizeRepairForm.value.attachmentUrls,
|
|
|
- workOrderStatus: "completed" // 结单后工单状态变为已完成
|
|
|
- };*/
|
|
|
|
|
|
const data = finalizeRepairForm.value;
|
|
|
// 根据维修方式清除不需要的字段
|
|
|
@@ -1679,13 +1910,6 @@ function submitApproveWork(approvalStatusValue) {
|
|
|
approveWorkForm.value.workOrderStatus = approvalStatusValue
|
|
|
proxy.$refs["approveWorkFormRef"].validate(valid => {
|
|
|
if (valid) {
|
|
|
- /*const data = {
|
|
|
- id: approveWorkForm.value.id,
|
|
|
- approvalStatus: approvalStatusValue,
|
|
|
- rejectionReason: approveWorkForm.value.rejectionReason,
|
|
|
- workOrderStatus: approvalStatusValue === "approved" ? "suspended" : "processing"
|
|
|
- };*/
|
|
|
-
|
|
|
approveWorkOrder(approveWorkForm.value).then(response => {
|
|
|
const msg = approveWorkForm.value.workOrderStatus === 'suspended' ? '挂起审批通过' : '挂起审批驳回'
|
|
|
proxy.$modal.msgSuccess(msg + "成功")
|
|
|
@@ -1958,6 +2182,52 @@ function handleRepairMethodChange(value) {
|
|
|
finalizeRepairForm.value.realEndTime = undefined;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+// 处理复运
|
|
|
+function handleRestart(row) {
|
|
|
+ getOrderInfo(row.orderType, row.id).then(response => {
|
|
|
+ if (row.orderType === 1) {
|
|
|
+ // 维修工单
|
|
|
+ restartRepairForm.value = response.data;
|
|
|
+ restartRepairDialogVisible.value = true;
|
|
|
+ } else {
|
|
|
+ // 维保工单
|
|
|
+ restartWorkForm.value = response.data;
|
|
|
+ restartWorkDialogVisible.value = true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+// 提交维修工单复运
|
|
|
+function submitRestartRepair() {
|
|
|
+ proxy.$refs["restartRepairFormRef"].validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ restartRepairOrder(restartRepairForm.value).then(response => {
|
|
|
+ proxy.$modal.msgSuccess("复运成功");
|
|
|
+ restartRepairDialogVisible.value = false;
|
|
|
+ getList();
|
|
|
+ }).catch(error => {
|
|
|
+ proxy.$modal.msgError("复运失败: " + error.message);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+// 提交维保工单复运
|
|
|
+function submitRestartWork() {
|
|
|
+ proxy.$refs["restartWorkFormRef"].validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ restartWorkForm.value.workOrderStatus = 'restarted'
|
|
|
+ restartWorkOrder(restartWorkForm.value).then(response => {
|
|
|
+ restartWorkDialogVisible.value = false
|
|
|
+ proxy.$modal.msgSuccess("复运成功")
|
|
|
+ getList()
|
|
|
+ }).catch(error => {
|
|
|
+ proxy.$modal.msgError("复运失败:" + (error?.response?.data?.msg || "未知错误"))
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|