From d4d2b680baff18f950da5e77463c1f0e26dbd567 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 03 四月 2025 10:10:25 +0800
Subject: [PATCH] 2025-04-03

---
 src/menu/components/card/data-card/options.jsx |  307 +++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 227 insertions(+), 80 deletions(-)

diff --git a/src/menu/components/card/data-card/options.jsx b/src/menu/components/card/data-card/options.jsx
index 519af8e..9b0aeec 100644
--- a/src/menu/components/card/data-card/options.jsx
+++ b/src/menu/components/card/data-card/options.jsx
@@ -1,4 +1,4 @@
-import MenuUtils from '@/utils/utils-custom.js'
+import MenuUtils, { getInterfaces } from '@/utils/utils-custom.js'
 
 /**
  * @description Wrap琛ㄥ崟閰嶇疆淇℃伅
@@ -9,16 +9,10 @@
   let ispop = sessionStorage.getItem('editMenuType') === 'popview'
   let menu = window.GLOB.customMenu
   let laypage = setting && setting.laypage !== 'false'
+
   let interfaces = []
-  if (subtype === 'propcard' && menu.interfaces) {
-    menu.interfaces.forEach(item => {
-      if (item.status === 'true') {
-        interfaces.push({
-          value: item.uuid,
-          label: item.name
-        })
-      }
-    })
+  if (subtype === 'propcard') {
+    interfaces = getInterfaces()
   }
   let modules = []
   if (subtype === 'propcard' || subtype === 'datacard') {
@@ -59,6 +53,74 @@
     }
   }
 
+  let interaction = []
+  let interOptions = []
+
+  if (wrap.scale === 'true') {
+    interaction.push('scale')
+  }
+  if (wrap.parity === 'true') {
+    interaction.push('parity')
+  }
+  if (wrap.hover === 'true') {
+    interaction.push('hover')
+  }
+
+  if (subtype === 'datacard') {
+    interOptions = [
+      {value: 'parity', label: '濂囧伓寮傝壊'},
+    ]
+    if (appType !== 'mob') {
+      interOptions.push(
+        {value: 'hover', label: '鎮诞鍙樿壊'},
+        {value: 'scale', label: '鎮诞鏀惧ぇ'}
+      )
+    }
+  } else if (subtype === 'propcard' && appType !== 'mob') {
+    interOptions = [
+      {value: 'scale', label: '鎮诞鏀惧ぇ'}
+    ]
+  } else if (subtype === 'tablecard') {
+    interOptions = [
+      {value: 'parity', label: '濂囧伓寮傝壊'},
+    ]
+    if (appType !== 'mob') {
+      interOptions.push(
+        {value: 'hover', label: '鎮诞鍙樿壊'}
+      )
+    }
+  }
+
+  if (interaction.length && interOptions.length) {
+    interaction = interaction.filter(m => interOptions.findIndex(cell => cell.value === m) > -1)
+  }
+
+  // let interItem = null
+
+  // if (interOptions.length === 1) {
+  //   interItem = {
+  //     type: 'radio',
+  //     field: interOptions[0].value,
+  //     label: interOptions[0].label,
+  //     initval: interaction.length === 1 ? 'true' : 'false',
+  //     required: false,
+  //     options: [
+  //       {value: 'true', label: '鍚敤'},
+  //       {value: 'false', label: '绂佺敤'}
+  //     ]
+  //   }
+  // } else {
+  //   interItem = {
+  //     type: 'checkbox',
+  //     field: 'interaction',
+  //     label: '浜や簰鏁堟灉',
+  //     initval: interaction,
+  //     required: false,
+  //     options: interOptions,
+  //     forbid: interOptions.length === 0
+  //   }
+  // }
+
   const cardWrapForm = [
     {
       type: 'text',
@@ -91,7 +153,7 @@
       field: 'datatype',
       label: '鏁版嵁鏉ユ簮',
       initval: wrap.datatype || 'dynamic',
-      tooltip: '閫夋嫨闈欐�佸�硷紝鏃犻渶閰嶇疆鏁版嵁婧愩��',
+      tooltip: '閫夋嫨闈欐�佹椂锛屾棤闇�閰嶇疆鏁版嵁婧愶紝鍙睍绀轰笂绾х粍浠舵垨url鍙傛暟瀛楁銆�',
       required: false,
       options: [
         {value: 'dynamic', label: '鍔ㄦ��', priKeyType: 'static'},
@@ -99,14 +161,15 @@
         {value: 'public', label: '鍏叡鏁版嵁婧�', priKeyType: 'static'},
       ],
       linkFields: ['priKeyType'],
-      controlFields: [
+      controlFields: subtype === 'propcard' ? [
         {field: 'goback', values: ['dynamic', 'public']},
         {field: 'empty', values: ['dynamic', 'public']},
         {field: 'jump', values: ['dynamic', 'public']},
         {field: 'broadcast', values: ['dynamic', 'public']},
         {field: 'supModule', values: ['static']},
         {field: 'publicId', values: ['public']},
-      ],
+        {field: 'emptyExec', values: ['dynamic', 'public']},
+      ] : null,
       forbid: subtype !== 'propcard'
     },
     {
@@ -118,38 +181,17 @@
       options: interfaces,
       reset_source: true,
       forbid: subtype !== 'propcard',
-      callback: (map, record) => {
+      callback: (record) => {
         if (!record.publicId) return
         
-        let interfaces = window.GLOB.customMenu.interfaces || []
-        
-        let d = interfaces.filter(m => m.uuid === record.publicId && m.status === 'true')[0]
+        let d = interfaces.filter(m => m.value === record.publicId)[0]
         
         if (!d || !d.columns) return
-        let columns = JSON.parse(JSON.stringify(d.columns))
 
-        let _broadcast = map.get('broadcast')
-
-        if (_broadcast && !_broadcast.forbid) {
-          _broadcast.options = columns
-          _broadcast.oriOptions = columns
-          map.set('broadcast', _broadcast)
-        }
-        
-        let _jumpField = map.get('jumpField')
-
-        if (_jumpField && !_jumpField.forbid) {
-          _jumpField.options = columns
-          _jumpField.oriOptions = columns
-          map.set('jumpField', _jumpField)
-        }
-
-        let _link = map.get('link')
-
-        if (_link && !_link.forbid) {
-          _link.options = columns
-          _link.oriOptions = columns
-          map.set('link', _link)
+        return {
+          broadcast: d.columns,
+          jumpField: d.columns,
+          link: d.columns
         }
       }
     },
@@ -167,8 +209,21 @@
       controlFields: subtype !== 'propcard' ? [
         {field: 'printHeight', values: ['flex']},
         {field: 'cardFloat', values: ['grid']},
+        {field: 'zHeight', values: ['grid']},
       ] : [{field: 'cardFloat', values: ['grid']}],
       forbid: subtype === 'tablecard'
+    },
+    {
+      type: 'number',
+      field: 'zHeight',
+      label: '鏈�澶ч珮搴�',
+      initval: wrap.zHeight || '',
+      tooltip: '鍗$墖鍐呭鍖虹殑鏈�澶ч珮搴︼紙涓嶅寘鍚爣棰樸�佺炕椤电瓑鍏冪礌锛夛紝娣诲姞楂樺害鍚庣粍浠朵腑绗竴涓睘鎬у崱灏嗗浐瀹氫簬澶撮儴銆傛敞锛氬皬浜庣瓑浜�100澶т簬0鏃朵负楂樺害鐨勭櫨鍒嗘瘮锛屽皬浜�0鏃朵负绐楀彛楂樺害鍑忓幓姝ゅ�笺��',
+      min: -1000,
+      max: 3000,
+      precision: 0,
+      required: false,
+      forbid: subtype !== 'datacard' || appType === 'mob'
     },
     {
       type: 'radio',
@@ -186,6 +241,7 @@
       ],
       controlFields: [
         {field: 'slidetip', values: ['slide']},
+        {field: 'maxPageSize', values: ['page']},
       ],
       forbid: subtype === 'propcard'
     },
@@ -204,7 +260,7 @@
         {field: 'checkAll', values: ['checkbox']},
         {field: 'selected', values: ['radio', 'checkbox']},
         {field: 'selStyle', values: ['radio', 'checkbox']},
-        // {field: 'priKeyType', values: ['radio', 'checkbox']},
+        {field: 'pickup', values: ['radio', 'checkbox']},
       ],
       forbid: subtype === 'tablecard'
     },
@@ -217,12 +273,10 @@
       required: false,
       linkField: 'datatype',
       options: [
-        {ParentID: 'static', value: 'static', label: '闈欐�佸��'},
-        {ParentID: 'dynamic', value: 'static', label: '闈欐�佸��'},
         {ParentID: 'dynamic', value: 'dynamic', label: '鍔ㄦ�佸��'},
-        {ParentID: 'dynamic', value: 'joint', label: '鎷兼帴鍊�'},
-        {ParentID: 'public', value: 'static', label: '闈欐�佸��'},
         {ParentID: 'public', value: 'dynamic', label: '鍔ㄦ�佸��'},
+        {ParentID: '', value: 'static', label: '闈欐�佸��'},
+        {ParentID: 'dynamic', value: 'joint', label: '鎷兼帴鍊�'},
         {ParentID: 'public', value: 'joint', label: '鎷兼帴鍊�'},
       ],
       forbid: subtype !== 'propcard'
@@ -260,13 +314,14 @@
       type: 'select',
       field: 'selStyle',
       label: '閫変腑椋庢牸',
-      initval: wrap.selStyle || 'active',
+      initval: wrap.selStyle || 'none',
       tooltip: '瀛樺湪杈规鏃讹紝杈规浼氫娇鐢ㄧ郴缁熻壊銆�',
       required: false,
       options: [
         {value: 'none', label: '鏃�'},
         {value: 'active', label: '澶栭槾褰�'},
-        {value: 'backFont', label: '鑳屾櫙+鏂囧瓧'},
+        {value: 'backFont', label: '鑳屾櫙锛堟祬锛�+鏂囧瓧锛堟繁锛�'},
+        {value: 'deepBackFont', label: '鑳屾櫙锛堟繁锛�+鏂囧瓧锛堟祬锛�'},
         {value: 'font', label: '鏂囧瓧'},
         {value: 'tabs', label: '鏍囩椤�'},
         ...(subtype === 'datacard' ? [
@@ -292,29 +347,38 @@
     },
     {
       type: 'radio',
-      field: 'scale',
-      label: '鏀惧ぇ鏁堟灉',
-      initval: wrap.scale || 'false',
-      tooltip: '榧犳爣鎮诞浜庡崱鐗囦笂鏂规椂锛屽崱鐗囨斁澶�1.05鍊嶃��',
+      field: 'pickup',
+      label: '鏀惰捣寮�鍏�',
+      initval: wrap.pickup || 'false',
+      tooltip: '鏁版嵁鍗″彸涓婅浼氭樉绀烘敹璧峰紑鍏炽��',
       required: false,
       options: [
         {value: 'false', label: '鏃�'},
         {value: 'true', label: '鏈�'},
       ],
-      forbid: subtype === 'tablecard' || appType === 'mob'
+      forbid: subtype !== 'datacard' || appType === 'mob'
     },
+    // {
+    //   type: 'radio',
+    //   field: 'scale',
+    //   label: '鏀惧ぇ鏁堟灉',
+    //   initval: wrap.scale || 'false',
+    //   tooltip: '榧犳爣鎮诞浜庡崱鐗囦笂鏂规椂锛屽崱鐗囨斁澶�1.05鍊嶃��',
+    //   required: false,
+    //   options: [
+    //     {value: 'false', label: '鏃�'},
+    //     {value: 'true', label: '鏈�'},
+    //   ],
+    //   forbid: subtype === 'tablecard' || appType === 'mob'
+    // },
     {
-      type: 'radio',
-      field: 'parity',
-      label: '濂囧伓鑳屾櫙',
-      initval: wrap.parity || 'false',
-      tooltip: '鍋舵暟琛屼細娣诲姞鑳屾櫙鑹层��',
+      type: 'checkbox',
+      field: 'interaction',
+      label: '浜や簰鏁堟灉',
+      initval: interaction,
       required: false,
-      options: [
-        {value: 'false', label: '鏃�'},
-        {value: 'true', label: '鏈�'},
-      ],
-      forbid: subtype === 'propcard'
+      options: interOptions,
+      forbid: interOptions.length === 0
     },
     {
       type: 'radio',
@@ -347,6 +411,7 @@
       label: '璇煶鎾姤',
       initval: wrap.broadcast || '',
       tooltip: '璇煶鎾姤鍦ㄧЩ鍔ㄧ鏈夋晥銆傛敞锛氬湪H5涓浣跨敤闊抽閾炬帴锛屾坊鍔犲畾鏃跺櫒鏃讹紝鍙惊鐜挱鎶�',
+      timestamp: new Date().getTime(),
       required: false,
       options: columns,
       forbid: !columns || appType !== 'mob' || subtype !== 'propcard'
@@ -375,9 +440,9 @@
         {value: 'normal', label: '姝e父鏄剧ず'},
         {value: 'hidden', label: '涓嶅彲瑙�'},
       ],
-      controlFields: [
+      controlFields: subtype === 'propcard' ? [
         {field: 'empty', values: ['normal']},
-      ],
+      ] : null,
       forbid: subtype !== 'propcard'
     },
     {
@@ -387,21 +452,62 @@
       initval: wrap.empty || 'show',
       tooltip: '褰撴煡璇㈡暟鎹负绌烘椂锛岄殣钘忚缁勪欢銆�',
       required: false,
-      skip: true,
       options: [
         {value: 'show', label: '鍚�'},
         {value: 'hidden', label: '鏄�'},
       ],
+      controlFields: [
+        {field: 'empSign', values: ['show']},
+      ]
+    },
+    {
+      type: 'radio',
+      field: 'empSign',
+      label: '绌哄�煎浘鏍�',
+      initval: wrap.empSign || 'show',
+      tooltip: '褰撴煡璇㈡暟鎹负绌烘椂锛屾槸鍚︽樉绀虹┖鍊兼彁绀哄浘鏍囥��',
+      required: false,
+      options: [
+        {value: 'show', label: '鏄剧ず'},
+        {value: 'hidden', label: '闅愯棌'},
+      ],
+      forbid: subtype === 'propcard'
     },
     {
       type: 'select',
       field: 'autoExec',
       label: '鑷姩鎵ц',
       initval: wrap.autoExec || '',
-      tooltip: '鏁版嵁鏇存柊鏃惰嚜鍔ㄦ墽琛屾寜閽�傛敞锛氭鎸夐挳鎵ц鎴愬姛鍚庤皑鎱庨�夋嫨鍒锋柊椤癸紝閬垮厤閫犳垚寰幆鎵ц銆�',
+      tooltip: subtype === 'propcard' ? '鏁版嵁鏇存柊鏃惰嚜鍔ㄦ墽琛屾寜閽�傛敞锛氭鎸夐挳鎵ц鎴愬姛鍚庤皑鎱庨�夋嫨鍒锋柊椤癸紝閬垮厤閫犳垚寰幆鎵ц銆�' : '鍒濆鍖栬嚜鍔ㄦ墽琛屾寜閽��',
       required: false,
       options: buttons,
+      forbid: subtype !== 'propcard' && subtype !== 'datacard',
+      controlFields: [
+        {field: 'emptyExec', notNull: true},
+        {field: 'execDelay', notNull: true},
+      ]
+    },
+    {
+      type: 'number',
+      field: 'execDelay',
+      label: '鎵ц寤舵椂',
+      initval: wrap.execDelay,
+      tooltip: '鑷姩鎵ц鎸夐挳鐨勫欢鏃舵墽琛屾椂闂达紝鍗曚綅姣銆�',
+      required: false,
       forbid: subtype !== 'propcard'
+    },
+    {
+      type: 'radio',
+      field: 'emptyExec',
+      label: '绌哄�兼墽琛�',
+      initval: wrap.emptyExec || 'true',
+      tooltip: '褰撴煡璇㈡暟鎹负绌烘椂锛岃嚜鍔ㄦ墽琛屾寜閽槸鍚︽墽琛屻��',
+      required: false,
+      forbid: subtype !== 'propcard',
+      options: [
+        {value: 'true', label: '鏄�'},
+        {value: 'false', label: '鍚�'},
+      ],
     },
     {
       type: 'radio',
@@ -417,7 +523,6 @@
       ],
       controlFields: [
         {field: 'jumpField', values: ['menu', 'link']},
-        {field: 'joint', values: ['menu', 'link']},
         {field: 'open', values: ['menu', 'link']},
         {field: 'menu', values: ['menu']},
         {field: 'link', values: ['link']},
@@ -430,6 +535,7 @@
       label: '鎺у埗瀛楁',
       initval: wrap.jumpField || '',
       tooltip: '褰撳瓧娈靛�间负true鏃惰Е鍙戣烦杞��',
+      timestamp: new Date().getTime(),
       required: true,
       options: columns,
       forbid: subtype !== 'propcard' || appType !== 'mob'
@@ -449,20 +555,9 @@
       label: '閾炬帴瀛楁',
       initval: wrap.link || '',
       tooltip: '璺宠浆閾炬帴涓烘煡璇㈡暟鎹殑杩斿洖鍊笺��',
+      timestamp: new Date().getTime(),
       required: true,
       options: columns,
-      forbid: subtype !== 'propcard' || appType !== 'mob'
-    },
-    {
-      type: 'radio',
-      field: 'joint',
-      label: '鍙傛暟鎷兼帴',
-      initval: wrap.joint || 'true',
-      required: false,
-      options: [
-        {value: 'true', label: '鏄�'},
-        {value: 'false', label: '鍚�'},
-      ],
       forbid: subtype !== 'propcard' || appType !== 'mob'
     },
     {
@@ -508,6 +603,7 @@
       tooltip: '鐢ㄤ簬鎺у埗琛屾暟鎹槸鍚﹀彲閫夋嫨銆�',
       required: false,
       allowClear: true,
+      joint: true,
       options: columns,
       controlFields: [
         {field: 'controlVal', notNull: true},
@@ -564,6 +660,56 @@
       forbid: ispop || isprint
     },
     {
+      type: 'radio',
+      field: 'cacheSearch',
+      label: '鎼滅储缂撳瓨',
+      initval: wrap.cacheSearch || 'false',
+      tooltip: '鍚敤鎼滅储鏉′欢缂撳瓨鍚庯紝鍦ㄨ彍鍗曞埛鏂版椂鎼滅储鏉′欢涓嶅彉銆�',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ],
+      forbid: !!appType || subtype === 'propcard' || isprint
+    },
+    {
+      type: 'radio',
+      field: 'searchBtn',
+      label: '鎼滅储鎸夐挳',
+      initval: wrap.searchBtn || 'hidden',
+      required: false,
+      options: [
+        {value: 'hidden', label: '闅愯棌'},
+        {value: 'show', label: '鏄剧ず'},
+      ],
+      forbid: appType === 'mob' || subtype === 'propcard' || isprint,
+    },
+    {
+      type: 'radio',
+      field: 'shifting',
+      label: '鎸夐挳鍋忕Щ',
+      initval: wrap.shifting || 'false',
+      tooltip: '鍚敤鏃讹紝宸ュ叿鏍忔寜閽皢鏄剧ず鍦ㄦ爣棰樻爮鍙充笂瑙掋��',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ],
+      forbid: !!appType || subtype !== 'datacard' || isprint
+    },
+    {
+      type: 'number',
+      field: 'maxPageSize',
+      label: '姣忛〉鏈�澶ф暟',
+      initval: wrap.maxPageSize || '',
+      tooltip: '鍒嗛〉鏃舵瘡椤靛彲鏄剧ず鐨勬渶澶ф暟閲忋��',
+      min: 10,
+      max: 500,
+      precision: 0,
+      required: false,
+      forbid: !laypage || appType === 'mob' || subtype !== 'datacard'
+    },
+    {
       type: 'multiselect',
       field: 'blacklist',
       label: '榛戝悕鍗�',
@@ -589,6 +735,7 @@
       required: true,
       forbid: subtype !== 'datacard' || appType === 'mob' || isprint,
       span: 24,
+      actions: ['edit', 'del', 'add', 'move'],
       columns: [
         {
           title: '搴忓彿',
@@ -598,7 +745,7 @@
           width: '20%'
         },
         {
-          title: '鑿滃崟',
+          title: '缁勪欢',
           dataIndex: 'nodes',
           inputType: 'cascader',
           editable: true,

--
Gitblit v1.8.0