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/PropertiesPanel.vue |  206 ++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 179 insertions(+), 27 deletions(-)

diff --git a/src/components/Process/panel/PropertiesPanel.vue b/src/components/Process/panel/PropertiesPanel.vue
index 3d9b41c..e7bc2dc 100644
--- a/src/components/Process/panel/PropertiesPanel.vue
+++ b/src/components/Process/panel/PropertiesPanel.vue
@@ -6,28 +6,58 @@
       <el-table-column label="灞炴�у��" prop="value" min-width="100px" show-overflow-tooltip />
       <el-table-column label="鎿嶄綔" width="90px">
         <template slot-scope="{ row, $index }">
-          <el-button size="mini" type="text" @click="openAttributesForm(row, $index)">缂栬緫</el-button>
-          <el-divider direction="vertical" />
           <el-button size="mini" type="text" style="color: #ff4d4f" @click="removeAttributes(row, $index)">绉婚櫎</el-button>
         </template>
       </el-table-column>
     </el-table>
     <div class="element-drawer__button">
-      <el-button size="mini" type="primary" icon="el-icon-plus" @click="openAttributesForm(null, -1)">娣诲姞灞炴��</el-button>
+      <el-button size="mini" type="primary" icon="el-icon-setting" @click="openAttributesForm(null, -1)">灞炴�ц缃�</el-button>
     </div>
 
-    <el-dialog :visible.sync="propertyFormModelVisible" title="灞炴�ч厤缃�" width="600px" append-to-body destroy-on-close>
-      <el-form :model="propertyForm" label-width="80px" size="mini" ref="attributeFormRef" @submit.native.prevent>
-        <el-form-item label="灞炴�у悕锛�" prop="name">
-          <el-input v-model="propertyForm.name" clearable />
-        </el-form-item>
-        <el-form-item label="灞炴�у�硷細" prop="value">
-          <el-input v-model="propertyForm.value" clearable />
-        </el-form-item>
-      </el-form>
+    <el-dialog :visible.sync="propertyFormModelVisible" title="灞炴�ч厤缃�" width="600px" @close="closeProperty" append-to-body :destroy-on-close="true" :close-on-click-modal="false">
+      <div v-for="item in canConfigPropertyList" style="margin-bottom: 20px; display: flex; align-items: center;">
+        <!-- Name  -->
+        <span style="flex: 0 0 100px; text-align: right; margin-right: 20px;">{{ item.name }}</span>
+        <!-- 缁勪欢 -->
+        <div >
+          <!-- Switch -->
+          <div v-if="item.vueType === 'switch'">
+            <el-switch
+              v-model="item.value"
+              @change="(val) => item.method(item.name, val === true ? '鏄�' : '鍚�')"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+            >
+            </el-switch>
+          </div>
+          <!-- Select -->
+          <div v-if="item.vueType === 'select'">
+            <el-select
+              v-model="item.value"
+              @change="(val) => item.method(item.name, val)"
+              placeholder="璇烽�夋嫨"
+            >
+              <el-option
+                v-for="option in item.options"
+                :key="option.value"
+                :label="option.label"
+                :value="option.value"
+              >
+              </el-option>
+            </el-select>
+          </div>
+        </div>
+      </div>
+<!--      <el-form :model="propertyForm" label-width="80px" size="mini" ref="attributeFormRef" @submit.native.prevent>-->
+<!--        <el-form-item label="灞炴�у悕锛�" prop="name">-->
+<!--          <el-input v-model="propertyForm.name" clearable />-->
+<!--        </el-form-item>-->
+<!--        <el-form-item label="灞炴�у�硷細" prop="value">-->
+<!--          <el-input v-model="propertyForm.value" clearable />-->
+<!--        </el-form-item>-->
+<!--      </el-form>-->
       <template slot="footer">
-        <el-button size="mini" @click="propertyFormModelVisible = false">鍙� 娑�</el-button>
-        <el-button size="mini" type="primary" @click="saveAttribute">纭� 瀹�</el-button>
+        <el-button size="mini" @click="closeProperty">鍏� 闂�</el-button>
       </template>
     </el-dialog>
   </div>
@@ -46,7 +76,65 @@
   },
   data() {
     return {
-      elementPropertyList: [],
+      canConfigPropertyList: [
+        {
+          name: '鏄惁瀹℃壒鑺傜偣',
+          value: false,
+          vueType: 'switch',
+          method: (name, value) => {
+            this.propertyForm.name = name
+            this.propertyForm.value = value
+            this.saveAttribute()
+          }
+        },
+        {
+          name: '鏄惁鍏佽璺宠繃',
+          value: false,
+          vueType: 'switch',
+          method: (name, value) => {
+            this.propertyForm.name = name
+            this.propertyForm.value = value
+            this.saveAttribute()
+          }
+        },
+        {
+          name: '鏄惁鍏佽瀹圭己',
+          value: false,
+          vueType: 'switch',
+          method: (name, value) => {
+            this.propertyForm.name = name
+            this.propertyForm.value = value
+            this.saveAttribute()
+          }
+        },
+        {
+          name: '鏄惁鍏佽鎸傝捣',
+          value: false,
+          vueType: 'switch',
+          method: (name, value) => {
+            this.propertyForm.name = name
+            this.propertyForm.value = value
+            this.saveAttribute()
+          }
+        },
+        {
+          name: '椤圭洰闃舵',
+          value: null,
+          vueType: 'select',
+          options: [
+            {label: '鍌ㄥ瑙勫垝闃舵',value: '鍌ㄥ瑙勫垝闃舵'},
+            {label: '椤圭洰鍓嶆湡闃舵',value: '椤圭洰鍓嶆湡闃舵'},
+            {label: '瀹炴柦闃舵',value: '瀹炴柦闃舵'},
+            {label: '绔e伐鎶曠敤闃舵',value: '绔e伐鎶曠敤闃舵'}
+          ],
+          method: (name, value) => {
+            this.propertyForm.name = name
+            this.propertyForm.value = value
+            this.saveAttribute()
+          }
+        }
+      ], // 鍙互閰嶇疆鐨勫睘鎬у垪琛�
+      elementPropertyList: [], // 鎵╁睍灞炴�у垪琛�
       otherExtensionList: [],
       propertyForm: {},
       editingPropertyIndex: -1,
@@ -64,6 +152,44 @@
     }
   },
   methods: {
+    closeProperty() {
+      this.propertyFormModelVisible = false
+      // this.resetList()
+    },
+    resetList() {
+      this.canConfigPropertyList = [
+        {
+          name: '鏄惁瀹℃壒鑺傜偣',
+          value: false,
+          vueType: 'switch',
+          method: (name, value) => {
+            this.propertyForm.name = name
+            this.propertyForm.value = value
+            this.saveAttribute()
+          }
+        },
+        {
+          name: '鏄惁鍏佽璺宠繃',
+          value: false,
+          vueType: 'switch',
+          method: (name, value) => {
+            this.propertyForm.name = name
+            this.propertyForm.value = value
+            this.saveAttribute()
+          }
+        },
+        {
+          name: '鏄惁鍏佽瀹圭己',
+          value: false,
+          vueType: 'switch',
+          method: (name, value) => {
+            this.propertyForm.name = name
+            this.propertyForm.value = value
+            this.saveAttribute()
+          }
+        }
+      ]
+    },
     resetAttributesList() {
       this.bpmnElement = this.modelerStore.element;
       this.otherExtensionList = []; // 鍏朵粬鎵╁睍閰嶇疆
@@ -74,10 +200,26 @@
           }
           return ex.$type === `flowable:Properties`;
         }) ?? [];
-
       // 淇濆瓨鎵�鏈夌殑 鎵╁睍灞炴�у瓧娈�
-      this.bpmnElementPropertyList = this.bpmnElementProperties.reduce((pre, current) => pre.concat(current.values), []);
-      // 澶嶅埗 鏄剧ず
+      this.bpmnElementPropertyList = this.bpmnElementProperties.reduce((pre, current) => {
+        // 妫�鏌� current.values 鏄惁鏄暟缁勶紝濡傛灉涓嶆槸鍒欎娇鐢ㄧ┖鏁扮粍
+        const values = current.values ? current.values : [];
+        return pre.concat(values);
+      }, []);
+      console.log("bpmnElementProperties",this.bpmnElementProperties)
+      // 鍥炴樉
+      this.canConfigPropertyList.forEach(item => {
+        const find = this.bpmnElementPropertyList.find(el => el.name === item.name);
+        if (find) {
+          if (item.vueType === 'switch') {
+            item.value = find.value === '鏄�' ? true : false
+          }else if (item.vueType === 'select') {
+            item.value = find.value
+          }
+        } else {
+          item.value = null
+        }
+      })
       this.elementPropertyList = JSON.parse(JSON.stringify(this.bpmnElementPropertyList ?? []));
     },
     openAttributesForm(attr, index) {
@@ -107,22 +249,32 @@
     },
     saveAttribute() {
       const { name, value } = this.propertyForm;
-      console.log(this.bpmnElementPropertyList);
+      console.log(this.bpmnElementPropertyList, "灞炴�у垪琛�");
       if (this.editingPropertyIndex !== -1) {
         this.modelerStore.modeling.updateModdleProperties(this.bpmnElement, this.bpmnElementPropertyList[this.editingPropertyIndex], {
           name,
           value
         });
       } else {
-        // 鏂板缓灞炴�у瓧娈�
-        const newPropertyObject = this.modelerStore.moddle.create(`flowable:Property`, { name, value });
-        // 鏂板缓涓�涓睘鎬у瓧娈电殑淇濆瓨鍒楄〃
-        const propertiesObject = this.modelerStore.moddle.create(`flowable:Properties`, {
-          values: this.bpmnElementPropertyList.concat([newPropertyObject])
-        });
-        this.updateElementExtensions(propertiesObject);
+        // 濡傛灉宸茬粡瀛樺湪杩欎釜灞炴��,灏卞仛淇敼
+        const find = this.bpmnElementPropertyList.find(item => item.name === name);
+        if (find) {
+          this.modelerStore.modeling.updateModdleProperties(this.bpmnElement, this.bpmnElementPropertyList[this.bpmnElementPropertyList.indexOf(find)], {
+            name,
+            value
+          });
+        } else {
+          // 鏂板缓灞炴�у瓧娈�
+          const newPropertyObject = this.modelerStore.moddle.create(`flowable:Property`, { name, value });
+          // 鏂板缓涓�涓睘鎬у瓧娈电殑淇濆瓨鍒楄〃
+          const propertiesObject = this.modelerStore.moddle.create(`flowable:Properties`, {
+            values: this.bpmnElementPropertyList.concat([newPropertyObject])
+          });
+          this.updateElementExtensions(propertiesObject);
+        }
       }
-      this.propertyFormModelVisible = false;
+      // this.propertyFormModelVisible = false;
+      this.$message.success("鎿嶄綔鎴愬姛")
       this.resetAttributesList();
     },
     updateElementExtensions(properties) {

--
Gitblit v1.8.0