From 4d13944afeb0e095dfedaf820a192f844f5f541a Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 15 十月 2021 12:11:01 +0800
Subject: [PATCH] 2021-10-15

---
 src/menu/components/share/actioncomponent/formconfig.jsx |  396 +++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 344 insertions(+), 52 deletions(-)

diff --git a/src/menu/components/share/actioncomponent/formconfig.jsx b/src/menu/components/share/actioncomponent/formconfig.jsx
index 0444ac7..f7ff1d8 100644
--- a/src/menu/components/share/actioncomponent/formconfig.jsx
+++ b/src/menu/components/share/actioncomponent/formconfig.jsx
@@ -1,7 +1,7 @@
 import zhCN from '@/locales/zh-CN/model.js'
 import enUS from '@/locales/en-US/model.js'
 
-const Formdict = localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS
+const Formdict = sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS
 
 /**
  * @description 鑾峰彇鎸夐挳琛ㄥ崟閰嶇疆淇℃伅
@@ -11,7 +11,12 @@
  * @param {*} usefulFields   瀛樺偍杩囩▼鍙敤鐨勫紑濮嬪瓧娈�
  * @param {*} type           鎸夐挳绫诲瀷锛岀敤浜庡尯鍒嗗彲閫夌殑鎵撳紑鏂瑰紡
  */
-export function getActionForm (card, functip, setting, usefulFields, type, menulist = [], modules = []) {
+export function getActionForm (card, functip, config, usefulFields, type, menulist = [], modules = []) {
+  let appType = sessionStorage.getItem('appType')
+  let viewType = sessionStorage.getItem('editMenuType') // 寮圭獥 popview
+  let setting = config.setting || {}
+  let columns = config.columns || []
+  let appMenus = []
   let opentypes = [
     {
       value: 'pop',
@@ -43,12 +48,90 @@
     }
   ]
 
-  if (type === 'chart') {
+  let getTabs = (list) => {
+    return list.filter(item => {
+      if (item.type !== 'tabs') return false
+
+      item.children = item.children.map(cell => {
+        cell.children = getTabs(cell.children)
+        return cell
+      })
+      return item
+    })
+  }
+
+  if (type === 'editable') {
+    opentypes = [
+      {
+        value: 'excelIn',
+        text: Formdict['model.form.excelIn']
+      }, {
+        value: 'excelOut',
+        text: Formdict['model.form.excelOut']
+      }
+    ]
+  }
+
+  let tabs = getTabs(JSON.parse(JSON.stringify(modules)))
+
+  let pageTemps = [
+    { value: 'billprint', text: '鍗曟嵁鎵撳嵃' },
+    { value: 'pay', text: Formdict['model.pay'] },
+    { value: 'custom', text: Formdict['header.form.custom'] }
+  ]
+  const isApp = ['pc', 'mob'].includes(appType)
+
+  let funTypes = [
+    { value: 'changeuser', text: Formdict['header.form.func.changeuser'] },
+    { value: 'print', text: '鏍囩鎵撳嵃' },
+    { value: 'closetab', text: '鏍囩鍏抽棴' },
+  ]
+  
+  if (isApp) {
+    appMenus = sessionStorage.getItem('appMenus')
+    if (appMenus) {
+      try {
+        appMenus = JSON.parse(appMenus)
+      } catch (e) {
+        appMenus = []
+      }
+    } else {
+      appMenus = []
+    }
+
+    if (appType === 'mob') {
+      opentypes = opentypes.filter(item => ['pop', 'prompt', 'exec', 'innerpage', 'funcbutton'].includes(item.value))
+      funTypes = [
+        { value: 'mkBinding', text: '寮�閫氭壂鐮佺櫥褰�' },
+        { value: 'mkUnBinding', text: '鐢ㄦ埛瑙g粦' },
+        { value: 'reAuth', text: '閲嶆柊鎺堟潈' },
+        { value: 'goBack', text: '杩斿洖' },
+      ]
+      pageTemps = [
+        { value: 'linkpage', text: '鍏宠仈鑿滃崟' },
+        // { value: 'pay', text: Formdict['model.pay'] },
+        { value: 'custom', text: '閾炬帴' }
+      ]
+    } else {
+      pageTemps = [
+        { value: 'linkpage', text: '鍏宠仈鑿滃崟' },
+        { value: 'billprint', text: '鍗曟嵁鎵撳嵃' },
+        { value: 'pay', text: Formdict['model.pay'] },
+        { value: 'custom', text: '閾炬帴' }
+      ]
+      funTypes = [
+        { value: 'changeuser', text: Formdict['header.form.func.changeuser'] },
+      ]
+      opentypes = opentypes.filter(item => item.value !== 'tab')
+    }
+  }
+  
+  if (type === 'chart' && appType !== 'mob') {
     opentypes = opentypes.filter(item => item.value === 'excelIn' || item.value === 'excelOut')
   }
 
   let refresh = []
-  if (sessionStorage.getItem('editMenuType') === 'popview') { // 寮圭獥鏍囩
+  if (viewType === 'popview') { // 寮圭獥鏍囩
     opentypes = opentypes.filter(item => item.value !== 'popview' && item.value !== 'funcbutton')
     refresh.push({
       value: 'popclose',
@@ -69,15 +152,9 @@
       type: 'select',
       key: 'funcType',
       label: Formdict['header.form.funcType'],
-      initVal: card.funcType || 'print',
+      initVal: card.funcType || '',
       required: true,
-      options: [{
-        value: 'changeuser',
-        text: Formdict['header.form.func.changeuser']
-      }, {
-        value: 'print',
-        text: '鏍囩鎵撳嵃'
-      }]
+      options: funTypes
     },
     {
       type: 'select',
@@ -102,23 +179,6 @@
       label: Formdict['header.form.intertype'],
       initVal: card.intertype || 'system',
       required: true,
-      options: [{
-        value: 'system',
-        text: '绯荤粺'
-      }, {
-        value: 'inner',
-        text: Formdict['model.interface.inner']
-      }, {
-        value: 'outer',
-        text: Formdict['model.interface.outer']
-      }]
-    },
-    {
-      type: 'select',
-      key: 'sqlType',
-      label: Formdict['header.form.action.type'],
-      initVal: card.sqlType || '',
-      required: true,
       options: []
     },
     {
@@ -128,6 +188,28 @@
       initVal: card.label,
       required: true,
       readonly: false
+    },
+    {
+      type: 'radio',
+      key: 'procMode',
+      label: '鍙傛暟澶勭悊',
+      initVal: card.procMode || 'system',
+      required: true,
+      options: [{
+        value: 'system',
+        text: '绯荤粺鍑芥暟'
+      }, {
+        value: 'inner',
+        text: '鍐呴儴鍑芥暟'
+      }]
+    },
+    {
+      type: 'radio',
+      key: 'sqlType',
+      label: Formdict['header.form.action.type'],
+      initVal: card.sqlType || '',
+      required: true,
+      options: []
     },
     {
       type: 'text',
@@ -153,21 +235,21 @@
       label: Formdict['model.form.newpage.type'],
       initVal: card.pageTemplate || '',
       required: true,
-      options: [{
-        value: 'billprint',
-        text: '鍗曟嵁鎵撳嵃'
-      }, {
-        value: 'pay',
-        text: Formdict['model.pay']
-      }, {
-        value: 'custom',
-        text: Formdict['header.form.custom']
-      }]
+      options: pageTemps
     },
     {
-      type: 'text',
+      type: 'select',
+      key: 'linkmenu',
+      label: '鍏宠仈鑿滃崟',
+      initVal: card.linkmenu || '',
+      required: true,
+      forbid: !isApp,
+      options: appMenus
+    },
+    {
+      type: 'textarea',
       key: 'url',
-      label: Formdict['model.form.newpage.url'],
+      label: Formdict['model.pageUrl'],
       initVal: card.url || '',
       required: true
     },
@@ -194,12 +276,71 @@
       readonly: false
     },
     {
-      type: 'text',
+      type: 'textarea',
       key: 'interface',
-      label: Formdict['header.form.interface'],
+      label: '娴嬭瘯鍦板潃',
       initVal: card.sysInterface === 'true' ? (window.GLOB.mainSystemApi || '') : (card.interface || ''),
       required: true,
       readonly: card.sysInterface === 'true'
+    },
+    {
+      type: 'textarea',
+      key: 'proInterface',
+      label: '姝e紡鍦板潃',
+      initVal: card.proInterface || '',
+      tooltip: '姝e紡绯荤粺鎵�浣跨敤鐨勬帴鍙e湴鍧�銆�',
+      required: false
+    },
+    {
+      type: 'radio',
+      key: 'method',
+      label: '璇锋眰鏂瑰紡',
+      initVal: card.method || 'post',
+      required: true,
+      options: [{
+        value: 'get',
+        text: 'GET'
+      }, {
+        value: 'post',
+        text: 'POST'
+      }]
+    },
+    {
+      type: 'radio',
+      key: 'cross',
+      label: '璺ㄥ煙璇锋眰',
+      initVal: card.cross || 'true',
+      tooltip: '濡傛灉鑷畾涔夋帴鍙d笉鏀寔璺ㄥ煙璇锋眰锛屼細閫氳繃褰撳墠绯荤粺杞彂銆�',
+      required: false,
+      options: [{
+        value: 'true',
+        text: '鏀寔'
+      }, {
+        value: 'false',
+        text: '涓嶆敮鎸�'
+      }]
+    },
+    {
+      type: 'radio',
+      key: 'callbackType',
+      label: '鍥炶皟鏂瑰紡',
+      initVal: card.callbackType || 'script',
+      tooltip: '浣跨敤鍚庡彴鑴氭湰鎵ц鏃讹紝闇�瑕侀厤鍚堣鍒掍换鍔°��',
+      required: true,
+      options: [{
+        value: 'script',
+        text: '鑷畾涔夎剼鏈�'
+      }, {
+        value: 'default',
+        text: '鍚庡彴鑴氭湰'
+      }]
+    },
+    {
+      type: 'text',
+      key: 'cbTable',
+      label: '鍥炶皟琛ㄥ悕',
+      initVal: card.cbTable || '',
+      required: true
     },
     {
       type: 'text',
@@ -224,6 +365,7 @@
       label: Formdict['model.form.linkmenu'],
       initVal: card.linkmenu || [],
       required: true,
+      forbid: isApp,
       options: menulist
     },
     {
@@ -242,6 +384,9 @@
       }, {
         value: 'mainline',
         text: '鍒锋柊涓婄骇缁勪欢 - 琛�'
+      }, {
+        value: !appType ? 'closetab' : 'goback',
+        text: !appType ? '鍏抽棴鏍囩' : '杩斿洖锛堜笂涓�涓〉闈級'
       },
       ...refresh]
     },
@@ -308,24 +453,42 @@
       required: true
     },
     {
-      type: 'select',
+      type: 'radio',
       key: 'show',
-      label: "鏄剧ず涓�",
-      initVal: card.show || 'icon',
+      label: '鏄剧ず涓�',
+      initVal: card.show || 'button',
       required: true,
       options: [{
         value: 'icon',
         text: '鍥炬爣'
       }, {
         value: 'button',
-        text: '鎸夐挳'
+        text: '鍥炬爣+鏂囧瓧'
       }, {
         value: 'link',
-        text: '閾炬帴'
+        text: '鏂囧瓧+鍥炬爣'
       }]
     },
     {
-      type: 'select',
+      type: 'radio',
+      key: 'swipe',
+      label: "婊戝姩鏄剧ず",
+      initVal: card.swipe || 'false',
+      required: false,
+      forbid: (type !== 'datacard' || appType !== 'mob'),
+      options: [{
+        value: 'false',
+        text: '鍚�'
+      }, {
+        value: 'left',
+        text: '宸︽粦'
+      }, {
+        value: 'right',
+        text: '鍙虫粦'
+      }]
+    },
+    {
+      type: 'icon',
       key: 'icon',
       label: Formdict['model.icon'],
       initVal: card.icon,
@@ -337,6 +500,7 @@
       key: 'class',
       label: Formdict['model.form.color'],
       initVal: card.class,
+      tooltip: '姝ら鑹蹭负鎸夐挳鍒濆鍖栭鑹诧紝鍙湪鏍峰紡璋冩暣涓慨鏀广��',
       required: false,
       options: []
     },
@@ -390,13 +554,141 @@
       }]
     },
     {
-      type: 'mcascader',
+      type: 'cascader',
       key: 'syncComponent',
-      label: '鍚屾鍒锋柊',
+      label: '鍒锋柊缁勪欢',
       initVal: card.syncComponent || [],
+      tooltip: '鎵ц鎴愬姛鍚庯紝闇�瑕佸悓姝ュ埛鏂扮殑缁勪欢',
       required: false,
       options: modules
-    }
+    },
+    {
+      type: 'cascader',
+      key: 'switchTab',
+      label: '鍒囨崲鏍囩',
+      initVal: card.switchTab || [],
+      tooltip: '鎵ц鎴愬姛鍚庯紝闇�瑕佸垏鎹㈢殑鏍囩椤�',
+      required: false,
+      options: tabs
+    },
+    {
+      type: 'cascader',
+      key: 'refreshTab',
+      label: '鍒锋柊鑿滃崟',
+      initVal: card.refreshTab || [],
+      tooltip: '鎵ц鎴愬姛鍚庢垨鏍囩鍏抽棴鏃讹紝闇�瑕佸悓姝ュ埛鏂扮殑鑿滃崟',
+      required: false,
+      forbid: isApp || viewType === 'popview',
+      options: menulist
+    },
+    {
+      type: 'select',
+      key: 'controlField',
+      label: '鎺у埗瀛楁',
+      tooltip: '绂佺敤鎺у埗瀛楁锛屽彲鏍规嵁鏁版嵁鎺у埗鎸夐挳鏄惁绂佺敤銆�',
+      initVal: card.controlField || '',
+      required: false,
+      allowClear: true,
+      options: columns
+    },
+    {
+      type: 'text',
+      key: 'controlVal',
+      label: '鎺у埗鍊�',
+      tooltip: '褰撻�夋嫨鎺у埗瀛楁锛屼笖瀛楁鍊间笌鎺у埗鍊肩浉绛夋椂锛屾寜閽細绂佺敤锛屽涓�肩敤閫楀彿鍒嗛殧銆�',
+      initVal: card.controlVal || '',
+      required: false
+    },
+    {
+      type: 'cascader',
+      key: 'linkmenu',
+      label: Formdict['model.form.linkmenu'],
+      initVal: card.linkmenu || [],
+      required: true,
+      forbid: isApp,
+      options: menulist
+    },
+    {
+      type: !appType ? 'cascader' : 'select',
+      key: 'openmenu',
+      label: '鎵撳紑鑿滃崟',
+      tooltip: '鎵ц鎴愬姛鍚庨渶瑕佹墦寮�鐨勮彍鍗曘��',
+      initVal: card.openmenu || (!appType ? [] : ''),
+      required: false,
+      allowClear: true,
+      options: appType === 'mob' ? [...appMenus, {value: 'goback', text: '杩斿洖'}] : (appType === 'pc' ? appMenus : menulist),
+      forbid: viewType === 'popview'
+    },
+    {
+      type: 'text',
+      key: 'output',
+      label: '杩斿洖鍊�',
+      tooltip: '鎵ц鎴愬姛鍚庣殑杩斿洖鍊笺��',
+      initVal: card.output || '',
+      required: false,
+      forbid: viewType === 'popview'
+    },
+    {
+      type: 'radio',
+      key: 'open',
+      label: '鎵撳紑鏂瑰紡',
+      initVal: card.open || 'blank',
+      required: true,
+      forbid: appType !== 'pc',
+      options: [{
+        value: 'blank',
+        text: '鏂扮獥鍙�'
+      }, {
+        value: 'self',
+        text: '褰撳墠绐楀彛'
+      }]
+    },
+    {
+      type: 'radio',
+      key: 'display',
+      label: '鏄剧ず鏂瑰紡',
+      initVal: card.display || 'modal',
+      required: true,
+      options: [{
+        value: 'modal',
+        text: '妯℃�佹'
+      }, {
+        value: 'drawer',
+        text: '鎶藉眽'
+      }]
+    },
+    {
+      type: 'number',
+      key: 'ratio',
+      min: 1,
+      max: 24,
+      precision: 0,
+      label: '姣斾緥',
+      initVal: card.ratio || 85,
+      tooltip: '灏忎簬100涓哄搴︼紙鎴栭珮搴︼級鐧惧垎姣旓紝澶т簬100涓哄儚绱犲�笺��',
+      required: true
+    },
+    {
+      type: 'radio',
+      key: 'placement',
+      label: '鎶藉眽鏂瑰悜',
+      initVal: card.placement || 'right',
+      tooltip: '浣跨敤鎶藉眽鏃舵湁鏁堛��',
+      required: false,
+      options: [{
+        value: 'right',
+        text: '鍙充晶'
+      }, {
+        value: 'left',
+        text: '宸︿晶'
+      }, {
+        value: 'top',
+        text: '涓婁晶'
+      }, {
+        value: 'bottom',
+        text: '涓嬩晶'
+      }]
+    },
   ]
 
   return forms

--
Gitblit v1.8.0