HD_wangm 4 months ago
parent
commit
ceafd54b6c

+ 1 - 1
ygtx-gxt/src/main/java/com/ygtx/gxt/service/impl/GxtRepairOrderServiceImpl.java

@@ -955,7 +955,7 @@ public class GxtRepairOrderServiceImpl implements IGxtRepairOrderService
                             person.setCreateTime(DateUtils.getNowDate());
                             gxtRepairOrderPersonMapper.insertGxtRepairOrderPerson(person);
                         } else {
-                            throw new ServiceException("检修人员不存在");
+                            throw new ServiceException("您输入的人员不存在");
                         }
                     }
                 }

+ 1 - 1
ygtx-gxt/src/main/java/com/ygtx/gxt/service/impl/GxtWorkOrderServiceImpl.java

@@ -824,7 +824,7 @@ public class GxtWorkOrderServiceImpl implements IGxtWorkOrderService
                                 person.setCreateTime(DateUtils.getNowDate());
                                 gxtWorkOrderPersonMapper.insertGxtWorkOrderPerson(person);
                             } else {
-                                throw new ServiceException("检修人员不存在");
+                                throw new ServiceException("您输入的人员不存在");
                             }
                         }
                     }

+ 50 - 5
ygtx-ui/src/views/gxt/gxtOrder/index.vue

@@ -390,7 +390,7 @@
             </el-col>
             <el-col :span="12" v-if="form.infoEntry == 2">
               <el-form-item label="工作票编号" prop="workPermitNum">
-                <el-input v-model="form.workPermitNum"  />
+                <el-input v-model="workPermitNumProxy"  maxlength="20" show-word-limit />
               </el-form-item>
             </el-col>
           </el-row>
@@ -829,7 +829,7 @@
 <!--            </el-row>-->
             <el-row>
               <el-col :span="24">
-                <el-form-item label="检修人员(多人请用英文逗号隔开)" prop="workGroupMemberName">
+                <el-form-item label="检修人员" prop="workGroupMemberName">
                   <el-input v-model="finishForm.workGroupMemberName"
                             maxlength="200"
                             show-word-limit
@@ -1370,6 +1370,9 @@
                   <el-col :span="24" v-if="detailData.infoEntry == '1'">
                     <el-form-item label="MIS工单编码">{{ detailData.misNo || '-' }}</el-form-item>
                   </el-col>
+                  <el-col :span="24" v-if="detailData.infoEntry == '2'">
+                    <el-form-item label="工作票编号">{{ detailData.workPermitNum|| '-' }}</el-form-item>
+                  </el-col>
                   <el-col :span="24">
                     <el-form-item label="开始时间">{{ parseTime(detailData.realStartTime, '{y}-{m}-{d} {h}:{i}') || '-' }}</el-form-item>
                   </el-col>
@@ -1943,8 +1946,29 @@ const data = reactive({
     // workOrderStatus: [{ required: true, message: "工单状态不能为空", trigger: "change" }],
     gxtCenter: [{ required: true, message: "维保中心不能为空", trigger: "blur" }],
     pcsStationName: [{ required: true, message: "风电场不能为空", trigger: "blur" }],
+    // workPermitNum: [
+    //   { required: true, message: "工作票编号不能为空", trigger: "blur" }
+    // ],
     workPermitNum: [
-      { required: true, message: "工作票编号不能为空", trigger: "blur" }
+      { required: true, message: "工作票编号不能为空", trigger: "blur" },
+      {
+        validator: (rule, value, callback) => {
+          if (form.value.infoEntry == '2') {
+            if (!value) {
+              callback(new Error('工作票编号不能为空'))
+            } else if (!/^[a-zA-Z0-9_\-\.]*$/.test(value)) {
+              callback(new Error('仅支持英文、数字、下划线'))
+            } else if (value.length > 20) {
+              callback(new Error('不能超过20个字符'))
+            } else {
+              callback()
+            }
+          } else {
+            callback()
+          }
+        },
+        trigger: 'blur'
+      }
     ],
     // 动态控制 content 是否必填
     content: [
@@ -2478,8 +2502,7 @@ function saveFinishWorkOrder() {
     proxy.$modal.msgSuccess("结单成功")
     getList()
   }).catch(error => {
-    debugger
-    proxy.$modal.msgError("结单失败:" + (error? error.message || "未知错误" : "未知错误"))
+    console.log("操作失败: " + error.message)
   })
 }
 
@@ -3137,6 +3160,28 @@ const disabledEndDate = (time) => {
   return selectedDateStr < acceptDateStr || selectedDateStr > today;
 };
 
+// 计算属性:双向绑定代理
+const workPermitNumProxy = computed({
+  get() {
+    return form.value.workPermitNum
+  },
+  set(val) {
+    // 1. 去掉首尾空格
+    let trimmed = val.trim()
+
+    // 2. 只保留允许的字符:中文、英文字母、数字、下划线
+    // 如果你希望更宽松(比如允许横杠 -),可调整正则
+    trimmed = trimmed.replace(/[^a-zA-Z0-9_\-\.]/g, '')
+
+    // 3. 截断到 20 个字符(按字符数,不是字节)
+    if (trimmed.length > 20) {
+      trimmed = trimmed.substring(0, 20)
+    }
+
+    // 4. 写回表单
+    form.value.workPermitNum = trimmed
+  }
+})
 getList()
 </script>
 <style scoped>

+ 49 - 5
ygtx-ui/src/views/gxt/repairOrder/index.vue

@@ -1045,7 +1045,7 @@
             <MisInfoSelectSingle :key="commonKey" v-model="misInfoSelectVisible" @onSelected="onMisInfoSelected" :pcsStationName="finalizeForm.pcsStationName" :pcsDeviceName="finalizeForm.pcsDeviceName"></MisInfoSelectSingle>
             <el-col :span="12" v-if="finalizeForm.infoEntry == 2">
               <el-form-item label="工作票编号" prop="workPermitNum">
-                <el-input v-model="finalizeForm.workPermitNum"  />
+                <el-input v-model="workPermitNumProxy"   maxlength="20" show-word-limit  />
               </el-form-item>
             </el-col>
             <el-col :span="12">
@@ -1077,7 +1077,7 @@
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="检修人员(多人请用英文逗号隔开)" prop="workGroupMemberName">
+              <el-form-item label="检修人员" prop="workGroupMemberName">
                 <el-input
                     v-model="finalizeForm.workGroupMemberName"
                     placeholder="请输入检修人员"
@@ -1716,9 +1716,12 @@
                     <el-col :span="24">
                       <el-form-item label="工作部位">{{ formattedWorkArea }}</el-form-item>
                     </el-col>
-                    <el-col :span="24">
+                    <el-col :span="24" v-if="viewForm.infoEntry == 1">
                       <el-form-item label="MIS工单编码">{{ viewForm.misOrderNo || '-' }}</el-form-item>
                     </el-col>
+                    <el-col :span="24" v-if="viewForm.infoEntry == 2">
+                    <el-form-item label="工票编号">{{ viewForm.workPermitNum || '-' }}</el-form-item>
+                    </el-col>
                     <el-col :span="24">
                       <el-form-item label="开始时间">{{ parseTime(viewForm.realStartTime, '{y}-{m}-{d} {h}:{i}') || '-' }}</el-form-item>
                     </el-col>
@@ -2549,7 +2552,25 @@ const finalizeRules = ref({
     { required: true, message: "请选择工作部位", trigger: "change" }
   ],
   workPermitNum: [
-    { required: true, message: "工作票编号不能为空", trigger: "blur" }
+    { required: true, message: "工作票编号不能为空", trigger: "blur" },
+    {
+      validator: (rule, value, callback) => {
+        if (finalizeForm.value.infoEntry == '2') {
+          if (!value) {
+            callback(new Error('工作票编号不能为空'))
+          } else if (!/^[a-zA-Z0-9_\-\.]*$/.test(value)) {
+            callback(new Error('仅支持英文、数字、下划线'))
+          } else if (value.length > 20) {
+            callback(new Error('不能超过20个字符'))
+          } else {
+            callback()
+          }
+        } else {
+          callback()
+        }
+      },
+      trigger: 'blur'
+    }
   ]
 })
 
@@ -3712,7 +3733,7 @@ async function submitFinalize() {
         resetTimeOutOrder();
         getList()
       } catch (error) {
-        proxy.$modal.msgError("操作失败: " + error.message)
+        console.log("操作失败: " + error.message)
       }
     }
   })
@@ -4009,6 +4030,29 @@ const formattedWorkArea = computed(() =>{
   return labels.join(',') || '-'
 })
 
+// 计算属性:双向绑定代理
+const workPermitNumProxy = computed({
+  get() {
+    return finalizeForm.value.workPermitNum
+  },
+  set(val) {
+    // 1. 去掉首尾空格
+    let trimmed = val.trim()
+
+    // 2. 只保留允许的字符:中文、英文字母、数字、下划线
+    // 如果你希望更宽松(比如允许横杠 -),可调整正则
+    trimmed = trimmed.replace(/[^a-zA-Z0-9_\-\.]/g, '')
+
+    // 3. 截断到 20 个字符(按字符数,不是字节)
+    if (trimmed.length > 20) {
+      trimmed = trimmed.substring(0, 20)
+    }
+
+    // 4. 写回表单
+    finalizeForm.value.workPermitNum = trimmed
+  }
+})
+
 </script>
 
 <style scoped>