From a9b02f6862522b54d0824152017bf2acfec2af7b Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 21 三月 2024 10:29:50 +0800
Subject: [PATCH] 2024-03-21

---
 src/menu/components/card/cardcellcomponent/formconfig.jsx |  332 ++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 243 insertions(+), 89 deletions(-)

diff --git a/src/menu/components/card/cardcellcomponent/formconfig.jsx b/src/menu/components/card/cardcellcomponent/formconfig.jsx
index 5ea5621..41265db 100644
--- a/src/menu/components/card/cardcellcomponent/formconfig.jsx
+++ b/src/menu/components/card/cardcellcomponent/formconfig.jsx
@@ -1,37 +1,118 @@
-import zhCN from '@/locales/zh-CN/model.js'
-import enUS from '@/locales/en-US/model.js'
-
-const Formdict = sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS
+import MenuUtils from '@/utils/utils-custom.js'
 
 /**
  * @description 鑾峰彇鍏冪礌閰嶇疆淇℃伅
  * @param {*} card
  * @param {*} type
  */
-export function getCardCellForm (card, type, subtype, cardCell, anchors) {
+export function getCardCellForm (card, cards, cardCell) {
+  let appType = sessionStorage.getItem('appType')
+
   let _options = [
     { value: 'text', text: '鏂囨湰'},
     { value: 'number', text: '鏁板��'},
     { value: 'picture', text: '鍥剧墖'},
     { value: 'video', text: '瑙嗛'},
-    { value: 'icon', text: '鍥炬爣'},
+    { value: 'icon', text: '鎻愮ず锛堝浘鏍囷級'},
     { value: 'slider', text: '杩涘害鏉�'},
     { value: 'splitline', text: '鍒嗗壊绾�'},
     { value: 'barcode', text: '鏉″舰鐮�'},
     { value: 'qrcode', text: '浜岀淮鐮�'},
     { value: 'currentDate', text: '褰撳墠鏃堕棿'},
     { value: 'formula', text: '鍏紡'},
+    { value: 'color', text: '棰滆壊'},
   ]
 
-  if (type === 'table' || (type === 'card' && subtype === 'datacard')) {
-    _options.push({value: 'sequence', text: '搴忓彿'})
+  let anchors = []
+  if (window.GLOB.customMenu.Template === 'BaseTable') {
+    anchors = null
+  } else {
+    anchors = MenuUtils.getAnchors(window.GLOB.customMenu.components, cards.uuid) || []
   }
 
-  let appMenus = []
-  const isApp = sessionStorage.getItem('appType') === 'pc'
+  if (cards.type === 'table' || (cards.type === 'card' && cards.subtype !== 'propcard')) {
+    _options.push({value: 'sequence', text: '搴忓彿'})
+  } else if (card.eleType === 'sequence') { // 鎷栨嫿娣诲姞绫诲瀷杞崲
+    card.eleType = 'text'
+  }
+  if (card.eleType === 'icon' && card.datatype === 'dynamic' && !card.field) { // 鎷栨嫿娣诲姞绫诲瀷杞崲
+    card.datatype = 'static'
+  }
 
-  if (isApp) {
-    appMenus = sessionStorage.getItem('appMenus')
+  let tooltip = ''
+  if (cardCell.$cardType === 'extendCard') {
+    tooltip = '鍦ㄦ墿灞曞崱鐗囦腑锛屽姩鎬佹暟鎹樉绀哄�间负鑾峰彇鍒扮殑绗竴琛屾暟鎹��'
+  }
+
+  let isHeader = false
+  if (cardCell.$cardType === 'extendCard' && cardCell.setting.cardRole === 'header') {
+    isHeader = true
+    anchors = null
+    card.link = ''
+    _options = [{ value: 'text', text: '鏂囨湰'}]
+  }
+
+  let width = card.width || 12
+  if (/x/.test(card.width)) {
+    width = +width.replace(/x/, '.5')
+  }
+
+  let linkTypes = [
+    { value: 'tel', text: '鐢佃瘽' },
+    { value: 'email', text: '閭' },
+    { value: 'linkmenu', text: '鍏宠仈鑿滃崟' },
+    { value: 'download', text: '涓嬭浇' },
+    { value: 'other', text: '鍏朵粬' }
+  ]
+
+  if (appType === 'mob') {
+    linkTypes = [
+      { value: 'tel', text: '鐢佃瘽' },
+      { value: 'email', text: '閭' },
+      { value: 'qywx', text: '浼佷笟寰俊' },
+      { value: 'linkmenu', text: '鍏宠仈鑿滃崟' },
+      { value: 'download', text: '涓嬭浇' },
+      { value: 'other', text: '鍏朵粬' }
+    ]
+  } else if (appType === 'pc') {
+    linkTypes = [
+      { value: 'tel', text: '鐢佃瘽' },
+      { value: 'email', text: '閭' },
+      { value: 'linkmenu', text: '鍏宠仈鑿滃崟' },
+      { value: 'download', text: '涓嬭浇' },
+      { value: 'other', text: '鍏朵粬' }
+    ]
+  }
+
+  if (card.linkType === 'qywx') {
+    if (appType !== 'mob') {
+      card.link = ''
+      card.linkType = ''
+      card.linkurl = ''
+    }
+  // } else if (card.linkType === 'linkmenu') {
+  //   if (appType !== 'mob' && appType !== 'pc') {
+  //     card.link = ''
+  //     card.linkType = ''
+  //     card.linkurl = ''
+  //     card.linkmenu = ''
+  //   }
+  }
+
+  let menulist = sessionStorage.getItem('fstMenuList')
+
+  if (appType === '' && menulist) {
+    try {
+      menulist = JSON.parse(menulist)
+    } catch (e) {
+      menulist = []
+    }
+  } else {
+    menulist = []
+  }
+
+  let appMenus = sessionStorage.getItem('appMenus')
+  if (['pc', 'mob'].includes(appType)) {
     if (appMenus) {
       try {
         appMenus = JSON.parse(appMenus)
@@ -41,11 +122,7 @@
     } else {
       appMenus = []
     }
-  }
-
-  let tooltip = ''
-  if (cardCell.$cardType === 'extendCard') {
-    tooltip = '鍦ㄦ墿灞曞崱鐗囦腑锛屽姩鎬佹暟鎹樉绀哄�间负鑾峰彇鍒扮殑绗竴琛屾暟鎹��'
+    appMenus.push({value: 'goback', text: '杩斿洖锛堜笂涓�椤碉級'})
   }
 
   let forms = [
@@ -56,13 +133,6 @@
       initVal: card.eleType,
       required: true,
       options: _options
-    },
-    {
-      type: 'icon',
-      key: 'icon',
-      label: '鍥炬爣',
-      initVal: card.icon,
-      required: true
     },
     {
       type: 'radio',
@@ -77,6 +147,17 @@
       ]
     },
     {
+      type: 'radio',
+      key: 'tipType',
+      label: '鎻愮ず鍐呭',
+      initVal: card.tipType || 'icon',
+      required: false,
+      options: [
+        { value: 'icon', text: '鍥炬爣' },
+        { value: 'text', text: '鏂囨湰' }
+      ]
+    },
+    {
       type: 'select',
       key: 'field',
       label: '瀛楁',
@@ -85,12 +166,19 @@
       options: []
     },
     {
+      type: 'icon',
+      key: 'icon',
+      label: '鍥炬爣',
+      initVal: card.icon,
+      required: true
+    },
+    {
       type: 'text',
       key: 'value',
       min: 0,
       label: '鍐呭',
       initVal: card.value || '',
-      tooltip: '鏂囨湰绫诲瀷锛屼細鏇挎崲鍐呭涓殑@username@銆丂fullName@銆丂mk_city@銆丂appname@銆丂bid@銆�',
+      tooltip: '鏂囨湰绫诲瀷锛屼細鏇挎崲鍐呭涓殑@username@銆丂fullName@銆丂mk_city@銆丂appname@銆丂bid@銆丂month@銆丂week@銆丂day@',
       required: true
     },
     {
@@ -161,6 +249,34 @@
       required: true
     },
     {
+      type: 'radio',
+      key: 'eval',
+      label: '瑙f瀽鏂瑰紡',
+      initVal: card.eval || 'false',
+      tooltip: '褰撳叕寮忓唴瀹规秹鍙婅绠楁椂璇烽�夋嫨鈥滆绠椻�濓紝褰撳叕寮忓唴瀹逛负瀛楁鎷兼帴鏃惰閫夋嫨鈥滃瓧娈垫浛鎹⑩�濓紝浣跨敤鍑芥暟鏃跺叆鍙備负data锛堟暟缁勶級銆�',
+      required: false,
+      options: [{
+        value: 'false',
+        text: '瀛楁鏇挎崲'
+      }, {
+        value: 'true',
+        text: '璁$畻'
+      }, {
+        value: 'func',
+        text: '鍑芥暟'
+      }]
+    },
+    {
+      type: 'number',
+      key: 'decimal',
+      min: 0,
+      max: 18,
+      decimal: 0,
+      label: '灏忔暟浣�',
+      initVal: card.decimal === undefined ? '' : card.decimal,
+      required: false
+    },
+    {
       type: 'select',
       key: 'format',
       label: '鏍煎紡鍖�',
@@ -183,7 +299,8 @@
         { value: 'MM鏈圖D鏃� ahh:mm', text: '鑷畾涔�2锛堜緥锛�12鏈�17鏃� 涓婂崍10:57锛�' },
         { value: 'calendar1', text: '鑷畾涔�3锛堜緥锛氫粖澶� 涓婂崍10:57锛�' },
         { value: 'calendar2', text: '鑷畾涔�4锛堜緥锛氬垰鍒氥�佹槰澶┿��5澶╁墠锛�' },
-      ]
+      ],
+      forbid: isHeader
     },
     {
       type: 'select',
@@ -197,17 +314,8 @@
         { value: 'YYYY-MM', text: 'YYYY-MM' },
         { value: 'YYYY-MM-DD HH:mm', text: 'YYYY-MM-DD HH:mm' },
         { value: 'YYYY-MM-DD HH:mm:ss', text: 'YYYY-MM-DD HH:mm:ss' },
+        { value: 'YYYY骞碝M鏈圖D鏃�', text: 'YYYY骞碝M鏈圖D鏃�' },
       ]
-    },
-    {
-      type: 'number',
-      key: 'decimal',
-      min: 0,
-      max: 18,
-      decimal: 0,
-      label: '灏忔暟浣�',
-      initVal: card.decimal === undefined ? '' : card.decimal,
-      required: false
     },
     {
       type: 'text',
@@ -228,7 +336,8 @@
       key: 'tooltip',
       label: '鎻愮ず淇℃伅',
       initVal: card.tooltip || '',
-      tooltip: '榧犳爣鎮诞鏃舵樉绀恒��',
+      tooltip: '榧犳爣鎮诞鏃舵樉绀恒�傛敞锛氬浣跨敤鍔ㄦ�佷俊鎭紝璇峰湪姝ゅ濉啓鐩稿簲鐨勫瓧娈靛悕銆�',
+      forbid: appType === 'mob',
       required: false
     },
     {
@@ -332,12 +441,12 @@
     {
       type: 'number',
       key: 'width',
-      min: 1,
+      min: 0.5,
       max: 24,
-      precision: 0,
+      precision: 1,
       label: '鍏冪礌瀹藉害',
-      initVal: card.width || 12,
-      tooltip: '鏍呮牸甯冨眬锛屾瘡琛岀瓑鍒嗕负24鍒椼��',
+      initVal: width,
+      tooltip: '鏍呮牸甯冨眬锛屾瘡琛岀瓑鍒嗕负24鍒楋紝鍙缃崐鍒楀嵆.5銆�',
       required: true
     },
     {
@@ -347,7 +456,7 @@
       max: 10,
       label: '楂樺害(琛�)',
       initVal: card.height !== undefined ? card.height : 1,
-      tooltip: '鍐呭鏄剧ず琛屾暟锛屽�间负绌烘椂楂樺害鑷�傚簲锛屾敞锛氳嚜閫傚簲楂樺害浠呭湪璁剧疆鍗$墖楂樺害鍚庢湁鏁堛��',
+      tooltip: '鍐呭鏄剧ず琛屾暟锛屽�间负绌烘椂楂樺害鑷�傚簲銆�',
       required: false
     },
     {
@@ -358,7 +467,8 @@
       tooltip: '缁戝畾鏁版嵁婧愬瓧娈碉紝鍙牴鎹繑鍥炲�兼敼鍙樿儗鏅浘銆�',
       required: false,
       allowClear: true,
-      options: []
+      options: [],
+      forbid: isHeader
     },
     {
       type: 'cascader',
@@ -367,7 +477,8 @@
       initVal: card.anchors || [],
       tooltip: sessionStorage.getItem('appType') === 'mob' ? '娉細灏忕▼搴忎腑鏃犳晥' : '',
       required: false,
-      options: anchors
+      options: anchors,
+      forbid: !anchors
     },
     {
       type: 'number',
@@ -443,6 +554,18 @@
         { value: '9:16', text: '9:16' },
       ]
     },
+    // {
+    //   type: 'radio',
+    //   key: 'backgroundSize',
+    //   label: '鍥惧儚澶у皬',
+    //   initVal: card.backgroundSize || 'cover',
+    //   required: false,
+    //   options: [
+    //     { value: 'cover', text: '瑕嗙洊' },
+    //     { value: 'contain', text: '鍖呭惈' },
+    //     { value: 'auto', text: '鑷�傚簲' },
+    //   ]
+    // },
     {
       type: 'number',
       key: 'maxWidth',
@@ -470,25 +593,22 @@
       key: 'link',
       label: '閾炬帴',
       initVal: card.link || '',
-      tooltip: '鍔ㄦ�佸湴鍧�涓虹粦瀹氬瓧娈靛�笺��',
+      tooltip: '鍔ㄦ�佸湴鍧�涓虹粦瀹氬瓧娈靛�笺�備娇鐢� 鍔ㄦ��-鍏宠仈鑿滃崟 鏃讹紝璇峰湪鈥滈摼鎺ュ湴鍧�鈥濆瓧娈佃繑鍥炶彍鍗旾D銆�',
       required: false,
       options: [
         { value: '', text: '鏃�' },
         { value: 'dynamic', text: '鍔ㄦ��' },
         { value: 'static', text: '闈欐��' }
-      ]
+      ],
+      forbid: isHeader
     },
     {
-      type: 'radio',
+      type: 'select',
       key: 'linkType',
       label: '閾炬帴绫诲瀷',
       initVal: card.linkType || 'other',
       required: false,
-      options: [
-        { value: 'tel', text: '鐢佃瘽' },
-        { value: 'email', text: '閭' },
-        { value: 'other', text: '鍏朵粬' }
-      ]
+      options: linkTypes
     },
     {
       type: 'radio',
@@ -507,64 +627,60 @@
       label: '鍏宠仈鑿滃崟',
       initVal: card.linkmenu || '',
       required: true,
-      forbid: !isApp,
-      options: appMenus
+      options: appMenus || [],
+      forbid: !['pc', 'mob'].includes(appType)
     },
-    // {
-    //   type: 'radio',
-    //   key: 'open',
-    //   label: '鎵撳紑鏂瑰紡',
-    //   initVal: card.open || 'blank',
-    //   required: false,
-    //   forbid: !isApp,
-    //   options: [
-    //     { value: 'blank', text: '鏂伴〉闈�' },
-    //     { value: 'self', text: '褰撳墠椤甸潰' }
-    //   ]
-    // },
+    {
+      type: 'cascader',
+      key: 'linkmenu',
+      label: '鍏宠仈鑿滃崟',
+      initVal: card.linkmenu || [],
+      required: true,
+      options: menulist,
+      forbid: ['pc', 'mob'].includes(appType)
+    },
     {
       type: 'select',
       key: 'linkurl',
       label: '閾炬帴鍦板潃',
       initVal: card.linkurl || '',
+      tooltip: ['pc', 'mob'].includes(appType) ? '褰撻摼鎺ョ被鍨嬩负鈥滃叾浠栤�濓紝涓旈摼鎺ュ湴鍧�浠menuid@寮�澶存椂锛屽叾鍚庡唴瀹瑰皢琚涓鸿彍鍗旾D銆�' : '',
       required: true,
       options: []
     },
     {
       type: 'radio',
+      key: 'open',
+      label: '鎵撳紑鏂瑰紡',
+      initVal: card.open || 'blank',
+      tooltip: '鑿滃崟鎵撳紑鏂瑰紡锛岄摼鎺ユ棤鏁堛��',
+      required: true,
+      forbid: !['pc', 'mob'].includes(appType),
+      options: [
+        {value: 'blank', text: appType !== 'mob' ? '鏂扮獥鍙�' : '鏂伴〉闈�'},
+        {value: 'self', text: appType !== 'mob' ? '褰撳墠绐楀彛' : '褰撳墠椤甸潰'},
+      ]
+    },
+    {
+      type: 'radio',
       key: 'joint',
-      label: Formdict['model.form.paramJoint'],
+      label: '鎷兼帴鍙傛暟',
       initVal: card.joint || 'true',
       required: false,
       options: [{
         value: 'true',
-        text: Formdict['model.true']
+        text: '鏄�'
       }, {
         value: 'false',
-        text: Formdict['model.false']
+        text: '鍚�'
       }]
     },
     {
-      type: 'radio',
-      key: 'eval',
-      label: '瑙f瀽',
-      initVal: card.eval || 'true',
-      tooltip: '褰撳叕寮忓唴瀹规秹鍙婅绠楁椂璇烽�夋嫨鈥滄槸鈥濓紝褰撳叕寮忓唴瀹逛负瀛楁鎷兼帴鏃惰閫夋嫨鈥滃惁鈥濄��',
-      required: false,
-      options: [{
-        value: 'true',
-        text: Formdict['model.true']
-      }, {
-        value: 'false',
-        text: Formdict['model.false']
-      }]
-    },
-    {
-      type: 'textarea',
+      type: 'codemirror',
       key: 'formula',
       label: '鍏紡',
       initVal: card.formula || '',
-      tooltip: '鎵ц鏃朵細浣跨敤鏌ヨ鍒扮殑鏁版嵁鏇挎崲鐩稿簲鐨勫瓧娈碉紝灞曠ず鑾峰緱鐨勭粨鏋滐紝鍦ㄤ笉浣跨敤瑙f瀽鏃舵崲琛岀鎴栫┖鏍间細鏇挎崲涓洪〉闈㈠厓绱犮�傚彲浣跨敤JS鐨勪竴浜涜娉曪紝濡傦細涓夊厓琛ㄨ揪寮� @field1@ > @field2@ ? 0 : 1锛汳ath瀵硅薄锛屽彇缁濆鍊� Math.abs(@field@)銆佸洓鑸嶄簲鍏� Math.round(@field@)绛�',
+      tooltip: '鎵ц鏃朵細浣跨敤鏌ヨ鍒扮殑鏁版嵁鏇挎崲鐩稿簲鐨勫瓧娈碉紝灞曠ず鑾峰緱鐨勭粨鏋滐紝鍦ㄤ笉浣跨敤瑙f瀽鏃舵崲琛岀鎴栫┖鏍间細鏇挎崲涓洪〉闈㈠厓绱犮�傚彲浣跨敤JS鐨勪竴浜涜娉曪紝濡傦細涓夊厓琛ㄨ揪寮� @field1@ > @field2@ ? 0 : 1锛汳ath瀵硅薄锛屽彇缁濆鍊� Math.abs(@field@)銆佸洓鑸嶄簲鍏� Math.round(@field@)绛夈�傛敞锛氫細鏇挎崲鍏紡涓殑@username@銆丂fullName@銆丂bid@銆�',
       placeholder: '渚嬪锛欯price@ * @number@',
       required: true
     },
@@ -573,12 +689,38 @@
       key: 'noValue',
       label: '绌哄��',
       initVal: card.noValue || 'show',
-      tooltip: '褰撳厓绱犲唴瀹逛负绌烘椂锛屾槸鍚︽樉绀哄綋鍓嶅厓绱犮��',
+      tooltip: '褰撳厓绱犲唴瀹逛负绌烘椂锛屾槸鍚︽樉绀哄綋鍓嶅厓绱犮�傛敞锛氭暟鍊肩被鍨嬪厓绱犲寘鎷暟瀛�0锛堥潪鏂囨湰锛夈��',
       required: false,
       options: [
         { value: 'show', text: '鏄剧ず' },
         { value: 'hide', text: '闅愯棌' }
       ]
+    },
+    {
+      type: 'radio',
+      key: 'lostTip',
+      label: '鍥剧墖缂哄け',
+      initVal: card.lostTip || 'true',
+      tooltip: '鍥剧墖鍦板潃涓嶅瓨鍦ㄦ椂锛屾槸鍚︽彁绀哄浘鐗囦涪澶便��',
+      required: false,
+      options: [
+        { value: 'true', text: '鎻愮ず' },
+        { value: 'false', text: '涓嶆彁绀�' }
+      ]
+    },
+    {
+      type: 'radio',
+      key: 'alignItems',
+      label: '鍨傜洿瀵归綈',
+      initVal: card.alignItems || '',
+      tooltip: '鍨傜洿鏂瑰悜鐨勫榻愭柟寮忋�傛敞锛氶珮搴︼紙琛岋級澶т簬1鏃舵湁鏁堛��',
+      required: false,
+      options: [
+        { value: '', text: '灞呬笂' },
+        { value: 'center', text: '灞呬腑' },
+        { value: 'end', text: '灞呬笅' }
+      ],
+      forbid: isHeader
     },
     {
       type: 'radio',
@@ -590,7 +732,8 @@
       options: [
         { value: '', text: '缁熶竴鏍峰紡' },
         { value: 'alone', text: '鐙珛鏍峰紡' }
-      ]
+      ],
+      forbid: isHeader
     },
     {
       type: 'radio',
@@ -602,7 +745,8 @@
       options: [
         { value: 'true', text: '鏄�' },
         { value: 'false', text: '鍚�' }
-      ]
+      ],
+      forbid: isHeader
     },
     {
       type: 'number',
@@ -642,6 +786,16 @@
       tooltip: '鍓嶇紑銆佸悗缂�鐨勫彸杈硅窛銆�',
       required: false
     },
+    {
+      type: 'select',
+      key: 'sortField',
+      label: '鎺掑簭瀛楁',
+      initVal: card.sortField || '',
+      required: false,
+      allowClear: true,
+      options: [],
+      forbid: !isHeader
+    },
   ]
 
   return forms

--
Gitblit v1.8.0