From 6ae0fcef149ddbe614746023a58a3885b3ac4bde Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期二, 25 三月 2025 11:31:04 +0800
Subject: [PATCH] Merge branch 'dev'

---
 src/components/Process/panel/taskListener.vue |   49 +++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 45 insertions(+), 4 deletions(-)

diff --git a/src/components/Process/panel/taskListener.vue b/src/components/Process/panel/taskListener.vue
index bdc3aa0..c46c01c 100644
--- a/src/components/Process/panel/taskListener.vue
+++ b/src/components/Process/panel/taskListener.vue
@@ -184,8 +184,8 @@
     </el-drawer>
 
     <!-- 娉ㄥ叆瑗挎 缂栬緫/鍒涘缓 閮ㄥ垎 -->
-    <el-dialog title="瀛楁閰嶇疆" :visible.sync="listenerFieldFormModelVisible" width="600px" append-to-body destroy-on-close>
-      <el-form :model="listenerFieldForm"  label-width="96px" ref="listenerFieldFormRef" style="height: 136px" @submit.native.prevent>
+    <el-dialog title="瀛楁閰嶇疆" :visible.sync="listenerFieldFormModelVisible" :close-on-click-modal="false" width="600px" append-to-body destroy-on-close>
+      <el-form :model="listenerFieldForm"  label-width="96px" ref="listenerFieldFormRef" @submit.native.prevent>
         <el-form-item label="瀛楁鍚嶇О锛�" prop="name" :rules="{ required: true, trigger: ['blur', 'change'] }">
           <el-input v-model="listenerFieldForm.name" clearable />
         </el-form-item>
@@ -202,6 +202,11 @@
             :rules="{ required: true, trigger: ['blur', 'change'] }"
         >
           <el-input v-model="listenerFieldForm.string" clearable />
+          <el-alert
+            :closable="false"
+            title="璧嬬爜鏃堕棿鏍煎紡涓猴細澶�-灏忔椂锛屼緥濡傦細涓�澶╅浂3灏忔椂搴旈厤缃负锛�1-3"
+            type="info">
+          </el-alert>
         </el-form-item>
         <el-form-item
             v-if="listenerFieldForm.fieldType === 'expression'"
@@ -341,6 +346,7 @@
 
     // 鎵撳紑 鐩戝惉鍣ㄨ鎯� 渚ц竟鏍�
     openListenerForm(listener, index) {
+      this.resetListenersList();
       if (listener) {
         this.listenerForm = this.initListenerForm(listener);
         this.editingListenerIndex = index;
@@ -417,6 +423,29 @@
     async saveListenerConfig() {
       let validateStatus = await this.$refs["listenerFormRef"].validate();
       if (!validateStatus) return; // 楠岃瘉涓嶉�氳繃鐩存帴杩斿洖
+      console.log('鐩戝惉鍣ㄥ弬鏁�',this.listenerForm)
+      //鏍¢獙瓒呮椂鐩戝惉鍣ㄥ弬鏁�
+      if (this.listenerForm.class === 'com.ycl.listener.flowable.FlowableOverTimeListener') {
+        // 0-0 鏍煎紡
+        const regex = /^(\d{1,3})-(\d{1,2})$/;
+        for (let i = 0; i < this.listenerForm.fields.length; i++) {
+          if (this.listenerForm.fields[i].name === '绾㈢爜鏃堕暱' || this.listenerForm.fields[i].name === '榛勭爜鏃堕暱' || this.listenerForm.fields[i].name === '鍔炵悊鏈熼檺') {
+            const match = this.listenerForm.fields[i].string.match(regex);
+            if (match) {
+              const hours1 = parseInt(match[1], 10);
+              const hours2 = parseInt(match[2], 10);
+              // 妫�鏌ュ皬鏃舵暟鏄惁鍦ㄥ悎鐞嗚寖鍥村唴锛屽苟涓旂浜屼釜灏忔椂鏁板皬浜庣瓑浜�24
+              if (hours1 < 0 || hours2 > 24) {
+                this.$message.error(this.listenerForm.fields[i].name + '灏忔椂鏁颁笉鍚堢悊');
+                return;
+              }
+            } else {
+              this.$message.error(this.listenerForm.fields[i].name + '鏃堕棿鏍煎紡涓嶆纭�');
+              return;
+            }
+          }
+        }
+      }
       const listenerObject = createListenerObject(this.modelerStore.moddle, this.listenerForm, true, "flowable");
       if (this.editingListenerIndex === -1) {
         this.bpmnElementListeners.push(listenerObject);
@@ -435,11 +464,18 @@
     },
 
     initListenerType(listener) {
+      console.log("鐩戝惉鍣╨istener",listener)
       let listenerType;
       if (listener.class) listenerType = "classListener";
       if (listener.expression) listenerType = "expressionListener";
       if (listener.delegateExpression) listenerType = "delegateExpressionListener";
       if (listener.script) listenerType = "scriptListener";
+      //鐩戝惉鍣ㄥ瓧娈礲ug淇
+      if (listener && listener.fields) {
+        listener.fields.forEach(field => {
+          field.fieldType = field.string ? "string" : "expression";
+        });
+      }
       return {
         ...JSON.parse(JSON.stringify(listener)),
         ...(listener.script ?? {}),
@@ -469,7 +505,6 @@
               self.eventDefinitionType = key.replace("time", "").toLowerCase();
             }
           }
-          console.log(k);
           self.eventTimeDefinitions = listener.eventDefinitions[0][k].body;
         }
       }
@@ -499,7 +534,11 @@
     saveSystemListener() {
       if (this.checkedListenerData.length > 0) {
         this.checkedListenerData.forEach(value => {
-          // 淇濆瓨鍏朵粬閰嶇疆
+          value.fields.forEach(field => {
+            if (field.name === '寮�濮嬭鏃惰妭鐐�') {
+              field.string = this.modelerStore.element.id;
+            }
+          });
           const listenerObject = createSystemListenerObject(this.modelerStore.moddle, value, true, "flowable");
           this.bpmnElementListeners.push(listenerObject);
           this.elementListenersList.push(changeListenerObject(value));
@@ -513,6 +552,8 @@
       this.listenerSystemChecked = true;
       // 闅愯棌渚ц竟鏍�
       this.listenerSystemVisible = false;
+      //瑙f瀽娉ㄥ叆瀛楁娣诲姞鍒板綋鍓嶈〃鍗�
+      this.resetListenersList();
     }
   }
 }

--
Gitblit v1.8.0