|
|
@@ -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>
|