Browse Source

维修工单修改

ouyj 5 months ago
parent
commit
569a895b21

+ 13 - 1
ygtx-gxt/src/main/java/com/ygtx/gxt/domain/GxtRepairOrder.java

@@ -191,8 +191,11 @@ public class GxtRepairOrder extends BaseEntity
     /** 工单类型 */
     private Long orderType;
 
-    /** 维修方式 */
+    /** 维修方式(1正常维修,2复位启机)*/
     private String repairMethod;
+    
+    /** 复位方式(1远程复位,2就地复位) */
+    private String resetMethod;
 
     private List<GxtRepairOrderPerson> repairOrderPersonList;
 
@@ -695,6 +698,14 @@ public class GxtRepairOrder extends BaseEntity
         this.repairMethod = repairMethod;
     }
 
+    public String getResetMethod() {
+        return resetMethod;
+    }
+
+    public void setResetMethod(String resetMethod) {
+        this.resetMethod = resetMethod;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@@ -740,6 +751,7 @@ public class GxtRepairOrder extends BaseEntity
             .append("finalizationRemark", getFinalizationRemark())
             .append("orderType", getOrderType())
             .append("repairMethod", getRepairMethod())
+            .append("resetMethod", getResetMethod())
             .toString();
     }
 }

+ 6 - 1
ygtx-gxt/src/main/resources/mapper/gxt/GxtRepairOrderMapper.xml

@@ -60,6 +60,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="finalCoefficient"    column="final_coefficient"    />
         <result property="orderType"    column="order_type"    />
         <result property="repairMethod"    column="repair_method"    />
+        <result property="resetMethod"    column="reset_method"    />
     </resultMap>
 
     <resultMap type="GxtRepairOrder" id="GxtRepairOrderWithPersonResult" extends="GxtRepairOrderResult">
@@ -95,7 +96,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                accept_user_id, accept_user_name, real_start_time, real_end_time, team_leader_id, team_leader_name, work_group_member_id,
                work_group_member_name, t.create_by, t.create_time, t.update_by, t.update_time, t.remark, content, plan_hour, priority_type, score,
                review_content, maintenance_type, occur_time, fault_barcode, suspend_reason, suspend_description, approval_status,
-               rejection_reason, modify_reason, finalization_remark, related_order_code, related_order_content, mis_order_no, restart_time, scoring_status, pcs_station_pid, attachment_urls, review_score_num, final_coefficient, order_type, repair_method
+               rejection_reason, modify_reason, finalization_remark, related_order_code, related_order_content, mis_order_no, restart_time, scoring_status, pcs_station_pid, attachment_urls, review_score_num, final_coefficient, order_type, repair_method, reset_method
         from gxt_repair_order t
         left join sys_user u on u.user_name = t.create_by
         left join sys_dept d on u.dept_id = d.dept_id
@@ -229,6 +230,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="finalCoefficient != null">final_coefficient,</if>
             <if test="orderType != null">order_type,</if>
             <if test="repairMethod != null and repairMethod != ''">repair_method,</if>
+            <if test="resetMethod != null and resetMethod != ''">reset_method,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="workOrderProjectNo != null and workOrderProjectNo != ''">#{workOrderProjectNo},</if>
@@ -285,6 +287,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="finalCoefficient != null">#{finalCoefficient},</if>
             <if test="orderType != null">#{orderType},</if>
             <if test="repairMethod != null and repairMethod != ''">#{repairMethod},</if>
+            <if test="resetMethod != null and resetMethod != ''">#{resetMethod},</if>
          </trim>
     </insert>
 
@@ -345,6 +348,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="finalCoefficient != null">final_coefficient = #{finalCoefficient},</if>
             <if test="orderType != null">order_type = #{orderType},</if>
             <if test="repairMethod != null and repairMethod != ''">repair_method = #{repairMethod},</if>
+            <if test="resetMethod != null and resetMethod != ''">reset_method = #{resetMethod},</if>
         </trim>
         where id = #{id}
     </update>
@@ -415,6 +419,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="attachmentUrls != null  and attachmentUrls != ''"> and attachment_urls = #{attachmentUrls}</if>
             <if test="reviewScoreNum != null "> and review_score_num = #{reviewScoreNum}</if>
             <if test="repairMethod != null  and repairMethod != ''"> and repair_method = #{repairMethod}</if>
+            <if test="resetMethod != null and resetMethod != ''"> and reset_method = #{resetMethod}</if>
         </where>
         order by id desc
     </select>

+ 165 - 126
ygtx-ui/src/views/gxt/repairOrder/index.vue

@@ -901,131 +901,120 @@
           <el-col :span="12">
             <el-form-item label="工作负责人"><el-input v-model="finalizeForm.teamLeaderName" disabled /> </el-form-item>
           </el-col>
-<!--          <el-col :span="12">-->
-<!--            <el-form-item label="MIS工单编码" prop="misOrderNo">-->
-<!--              <el-input-->
-<!--                v-model="finalizeForm.misOrderNo"-->
-<!--                placeholder="请输入MIS工单编码"-->
-<!--                maxlength="50"-->
-<!--                show-word-limit-->
-<!--                v-chinese-limit-->
-<!--                @blur="handleMisOrderNoBlur"-->
-<!--              />-->
-<!--            </el-form-item>-->
-<!--          </el-col>-->
           <el-col :span="12">
-            <el-form-item label="MIS工单编码" prop="misOrderNo">
-              <el-input
-                v-model="finalizeForm.misOrderNo"
-                placeholder="请输入MIS工单编码或点击搜索选择"
-                clearable
-                @focus="handleMisNoInputFocus"
-                @blur="handleMisNoInputBlur"
-                @input="handleMisNoInput"
-                @clear="handleMisNoClear"
+            <el-form-item label="维修方式" prop="repairMethod">
+              <el-select 
+                v-model="finalizeForm.repairMethod" 
+                placeholder="请选择维修方式" 
+                style="width: 100%"
+                @change="handleRepairMethodChange"
               >
-                <template #append>
-                  <el-button @click="handleSelectMisInfo" icon="Search"></el-button>
-                </template>
-              </el-input>
-              <!-- 快速检索下拉框 -->
-              <div class="quick-select-dropdown" v-show="showMisNoQuickSelect && quickMisNoList.length > 0">
-                <div
-                    v-for="item in quickMisNoList"
-                    :key="item.misNo"
-                    class="quick-select-item"
-                    @click="handleMisNoQuickSelect(item)">
-                  <span class="mis-no">{{ item.misNo }}</span>
-                </div>
-              </div>
-              <div class="quick-select-dropdown no-data" v-show="showMisNoQuickSelect && quickMisNoList.length === 0 && form.misNo">
-                <div>未找到匹配的MIS工单</div>
-              </div>
-            </el-form-item>
-          </el-col>
-          <!-- MIS选择组件 -->
-          <MisInfoSelectSingle :key="commonKey" v-model="misInfoSelectVisible" @onSelected="onMisInfoSelected" :pcsStationName="finalizeForm.pcsStationName" :pcsDeviceName="finalizeForm.pcsDeviceName"></MisInfoSelectSingle>
-          <el-col :span="12">
-<!--            <el-form-item label="开始时间">{{ parseTime(finalizeForm.realStartTime, '{y}-{m}-{d} {h}:{i}') }}</el-form-item>-->
-            <el-form-item label="开始时间" prop="realStartTime">
-              <el-date-picker
-                  v-model="finalizeForm.realStartTime"
-                  type="datetime"
-                  format="YYYY-MM-DD HH:mm"
-                  value-format="YYYY-MM-DD HH:mm"
-                  placeholder="请选择开始时间"
-                  style="width: 100%"
-                  :disabled="getMisDataConfig === '1'"
-                  readonly
-              />
+                <el-option
+                    v-for="dict in gxt_repair_method"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="dict.value"
+                />
+              </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-<!--            <el-form-item label="结束时间">{{ parseTime(finalizeForm.realEndTime, '{y}-{m}-{d} {h}:{i}') }}</el-form-item>-->
-            <el-form-item label="结束时间" prop="realEndTime">
-              <el-date-picker
-                  v-model="finalizeForm.realEndTime"
-                  type="datetime"
-                  format="YYYY-MM-DD HH:mm"
-                  value-format="YYYY-MM-DD HH:mm"
-                  placeholder="请选择结束时间"
+          
+          <!-- 正常维修时显示的字段 -->
+          <template v-if="!finalizeForm.repairMethod || finalizeForm.repairMethod === '1'">
+            <el-col :span="12">
+              <el-form-item label="MIS工单编码" prop="misOrderNo">
+                <el-input
+                  v-model="finalizeForm.misOrderNo"
+                  placeholder="请输入MIS工单编码或点击搜索选择"
+                  clearable
+                  @focus="handleMisNoInputFocus"
+                  @blur="handleMisNoInputBlur"
+                  @input="handleMisNoInput"
+                  @clear="handleMisNoClear"
+                >
+                  <template #append>
+                    <el-button @click="handleSelectMisInfo" icon="Search"></el-button>
+                  </template>
+                </el-input>
+                <!-- 快速检索下拉框 -->
+                <div class="quick-select-dropdown" v-show="showMisNoQuickSelect && quickMisNoList.length > 0">
+                  <div
+                      v-for="item in quickMisNoList"
+                      :key="item.misNo"
+                      class="quick-select-item"
+                      @click="handleMisNoQuickSelect(item)">
+                    <span class="mis-no">{{ item.misNo }}</span>
+                  </div>
+                </div>
+                <div class="quick-select-dropdown no-data" v-show="showMisNoQuickSelect && quickMisNoList.length === 0 && form.misNo">
+                  <div>未找到匹配的MIS工单</div>
+                </div>
+              </el-form-item>
+            </el-col>
+            <!-- MIS选择组件 -->
+            <MisInfoSelectSingle :key="commonKey" v-model="misInfoSelectVisible" @onSelected="onMisInfoSelected" :pcsStationName="finalizeForm.pcsStationName" :pcsDeviceName="finalizeForm.pcsDeviceName"></MisInfoSelectSingle>
+            <el-col :span="12">
+              <el-form-item label="开始时间" prop="realStartTime">
+                <el-date-picker
+                    v-model="finalizeForm.realStartTime"
+                    type="datetime"
+                    format="YYYY-MM-DD HH:mm"
+                    value-format="YYYY-MM-DD HH:mm"
+                    placeholder="请选择开始时间"
+                    style="width: 100%"
+                    :disabled="getMisDataConfig === '1'"
+                    readonly
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="结束时间" prop="realEndTime">
+                <el-date-picker
+                    v-model="finalizeForm.realEndTime"
+                    type="datetime"
+                    format="YYYY-MM-DD HH:mm"
+                    value-format="YYYY-MM-DD HH:mm"
+                    placeholder="请选择结束时间"
+                    style="width: 100%"
+                    :disabled="getMisDataConfig === '1'"
+                    readonly
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="检修人员" prop="workGroupMemberName">
+                <el-input
+                    v-model="finalizeForm.workGroupMemberName"
+                    placeholder="请输入检修人员"
+                    maxlength="200"
+                    show-word-limit
+                    :disabled="getMisDataConfig === '1'"
+                    readonly
+                />
+              </el-form-item>
+            </el-col>
+          </template>
+          
+          <!-- 复位启机时显示的字段 -->
+          <template v-else-if="finalizeForm.repairMethod === '2'">
+            <el-col :span="12">
+              <el-form-item label="复位方式" prop="resetMethod">
+                <el-select 
+                  v-model="finalizeForm.resetMethod" 
+                  placeholder="请选择复位方式" 
                   style="width: 100%"
-                  :disabled="getMisDataConfig === '1'"
-                  readonly
-              />
-            </el-form-item>
-          </el-col>
-<!--          <el-col :span="12">
-            <el-form-item label="故障描述">{{ finalizeForm.faultDesc || '无' }}</el-form-item>
-          </el-col>-->
-
-<!--          <el-col :span="12">-->
-<!--            <el-form-item label="检修类型" prop="maintenanceType">-->
-<!--              <el-select v-model="finalizeForm.maintenanceType" placeholder="请选择检修类型" style="width: 100%">-->
-<!--                <el-option-->
-<!--                    v-for="dict in gxt_maintenance_type"-->
-<!--                    :key="dict.value"-->
-<!--                    :label="dict.label"-->
-<!--                    :value="dict.value"-->
-<!--                />-->
-<!--              </el-select>-->
-<!--            </el-form-item>-->
-<!--          </el-col>-->
-<!--          <el-col :span="24">
-            <el-form-item label="检修人员" prop="selectedMembers">
-              <el-checkbox-group v-model="finalizeForm.selectedMembers" style="width: 100%"  @change="() => handleMembersChange('finalizeForm')">
-                <el-row :gutter="10">
-                  <el-col :span="6" v-for="user in userList" :key="user.userId">
-                    <el-checkbox :label="user.userId">{{ user.nickName }}</el-checkbox>
-                  </el-col>
-                </el-row>
-              </el-checkbox-group>
-            </el-form-item>
-          </el-col>-->
-          <el-col :span="12">
-            <el-form-item label="检修人员" prop="workGroupMemberName">
-              <el-input
-                  v-model="finalizeForm.workGroupMemberName"
-                  placeholder="请输入检修人员"
-                  maxlength="200"
-                  show-word-limit
-                  :disabled="getMisDataConfig === '1'"
-                  readonly
-              />
-            </el-form-item>
-          </el-col>
-<!--          <el-col :span="24">-->
-<!--            <el-form-item label="维修总结" prop="content">-->
-<!--              <el-input-->
-<!--                  v-model="finalizeForm.content"-->
-<!--                  type="textarea"-->
-<!--                  placeholder="请输入维修总结"-->
-<!--                  maxlength="200"-->
-<!--                  show-word-limit-->
-<!--                  :rows="4"-->
-<!--              />-->
-<!--            </el-form-item>-->
-<!--          </el-col>-->
+                >
+                  <el-option
+                      v-for="dict in gxt_reset_method"
+                      :key="dict.value"
+                      :label="dict.label"
+                      :value="dict.value"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </template>
+          
           <el-col :span="24">
             <el-form-item label="附件(可选)">
               <preview :limit="8" v-model="finalizeForm.attachmentUrls" :filesize="5"></preview>
@@ -1547,7 +1536,7 @@ import useUserStore from '@/store/modules/user'
 
 
 const { proxy } = getCurrentInstance()
-const { gxt_maintenance_type, gxt_work_order_status, gxt_order_priority_type,gxt_repair_order_flow_action_type,gxt_order_suspend_reason } = proxy.useDict("gxt_maintenance_type", "gxt_work_order_status", "gxt_order_priority_type","gxt_repair_order_flow_action_type","gxt_order_suspend_reason")
+const { gxt_maintenance_type, gxt_work_order_status, gxt_order_priority_type,gxt_repair_order_flow_action_type,gxt_order_suspend_reason,gxt_repair_method,gxt_reset_method } = proxy.useDict("gxt_maintenance_type", "gxt_work_order_status", "gxt_order_priority_type","gxt_repair_order_flow_action_type","gxt_order_suspend_reason","gxt_repair_method","gxt_reset_method")
 
 // 数据列表相关
 const repairOrderList = ref([])
@@ -1996,9 +1985,15 @@ const finalizeRules = ref({
   // content: [
   //   { required: true, message: "请输入维修总结", trigger: "blur" }
   // ],
+  repairMethod: [
+    { required: true, message: "请选择维修方式", trigger: "change" }
+  ],
   misOrderNo: [
     { required: true, message: "MIS工单编码不能为空", trigger: "blur" }
   ],
+  resetMethod: [
+    { required: true, message: "请选择复位方式", trigger: "change" }
+  ]
 })
 
 // 评分表单验证规则
@@ -2707,6 +2702,22 @@ function handleMisOrderNoBlur() {
   }
 }
 
+/** 维修方式变化处理 */
+function handleRepairMethodChange(value) {
+  // 如果切换到正常维修(1),清除复位方式
+  if (value === '1') {
+    finalizeForm.value.resetMethod = undefined;
+  } 
+  // 如果切换到复位启机(2),清除MIS相关字段
+  else if (value === '2') {
+    finalizeForm.value.misOrderNo = undefined;
+    finalizeForm.value.realStartTime = undefined;
+    finalizeForm.value.realEndTime = undefined;
+    finalizeForm.value.workGroupMemberName = undefined;
+    finalizeForm.value.repairOrderPersonList = [];
+  }
+}
+
 /** 提交完成 */
 async function submitComplete() {
   proxy.$refs["completeFormRef"].validate(async valid => {
@@ -2838,6 +2849,10 @@ async function submitApprove(approvalStatusValue) {
 function handleFinalize(row) {
   getRepairOrder(row.id).then(response => {
     finalizeForm.value = { ...response.data, selectedMembers: [] }
+    // 设置默认维修方式为正常维修(1)
+    if (!finalizeForm.value.repairMethod) {
+      finalizeForm.value.repairMethod = '1';
+    }
     finalizeDialogVisible.value = true
     commonKey++
     /*// 获取场站ID用于查询用户
@@ -2873,15 +2888,39 @@ function handleFinalize(row) {
 
 /** 提交结单 */
 async function submitFinalize() {
-  if (!finalizeForm.value.realEndTime) {
-    proxy.$modal.msgError("该工单未结束,无法结单!")
+  // 根据维修方式执行不同的验证逻辑
+  if (finalizeForm.value.repairMethod === '1') {
+    // 正常维修需要验证MIS相关字段
+    if (!finalizeForm.value.realEndTime) {
+      proxy.$modal.msgError("该工单未结束,无法结单!")
+      return
+    }
+  }/* else if (finalizeForm.value.repairMethod === '2') {
+    // 复位启机需要验证复位方式
+    if (!finalizeForm.value.resetMethod) {
+      proxy.$modal.msgError("请选择复位方式!")
+      return
+    }
+  } else {
+    proxy.$modal.msgError("请选择维修方式!")
     return
-  }
+  }*/
+  
   proxy.$refs["finalizeFormRef"].validate(async valid => {
     if (valid) {
       try {
-        // 更新检修人员列表
-        //handleMembersChange('finalizeForm');
+        // 根据维修方式清除不需要的字段
+        if (finalizeForm.value.repairMethod === '1') {
+          // 正常维修时清除复位方式
+          finalizeForm.value.resetMethod = undefined;
+        } else if (finalizeForm.value.repairMethod === '2') {
+          // 复位启机时清除MIS相关字段
+          finalizeForm.value.misOrderNo = undefined;
+          finalizeForm.value.realStartTime = undefined;
+          finalizeForm.value.realEndTime = undefined;
+          finalizeForm.value.workGroupMemberName = undefined;
+          finalizeForm.value.repairOrderPersonList = [];
+        }
 
         await finalizeRepairOrder(finalizeForm.value)