king
2023-08-23 547e5fe219ee7bee309ecd67db74bc8df66b5433
src/menu/components/card/balcony/options.jsx
@@ -1,14 +1,29 @@
import { fromJS } from 'immutable'
import React from 'react'
import MenuUtils from '@/utils/utils-custom.js'
/**
 * @description Wrap表单配置信息
 */
export default function (wrap) {
  let modules = MenuUtils.getLinkModules(fromJS(window.GLOB.customMenu).toJS().components) || []
  let supmodules = MenuUtils.getSupModules(fromJS(window.GLOB.customMenu).toJS().components, '') || []
export default function (wrap, buttons, columns) {
  let menu = window.GLOB.customMenu
  let MenuType = menu.parentId === 'BillPrintTemp' ? 'billPrint' : ''
  let modules = MenuUtils.getLinkModules(menu.components) || []
  let supmodules = MenuUtils.getSupModules(menu.components, '', menu.interfaces)
  let roleList = sessionStorage.getItem('sysRoles')
  let appType = sessionStorage.getItem('appType')
  let interfaces = []
  if (menu.interfaces) {
    menu.interfaces.forEach(item => {
      if (item.status === 'true') {
        interfaces.push({
          value: item.uuid,
          label: item.name
        })
      }
    })
  }
  if (roleList) {
    try {
@@ -50,14 +65,53 @@
      options: [
        {value: 'dynamic', label: '动态'},
        {value: 'static', label: '静态'},
        {value: 'public', label: '公共数据源'},
      ],
      controlFields: [
        {field: 'empty', values: ['dynamic']},
        {field: 'publicId', values: ['public']},
        {field: 'bgField', values: ['dynamic', 'public']},
      ]
    },
    {
      type: 'select',
      field: 'publicId',
      label: '数据源',
      initval: wrap.publicId || '',
      required: true,
      options: interfaces,
      reset_source: true,
      callback: (map, record) => {
        if (!record.publicId) return
        let interfaces = window.GLOB.customMenu.interfaces || []
        let d = interfaces.filter(m => m.uuid === record.publicId && m.status === 'true')[0]
        if (!d || !d.columns) return
        let columns = JSON.parse(JSON.stringify(d.columns))
        let _bgField = map.get('bgField')
        if (_bgField && !_bgField.forbid) {
          _bgField.options = columns
          _bgField.oriOptions = columns
          map.set('bgField', _bgField)
        }
      }
    },
    {
      type: 'radio',
      field: 'linkType',
      label: '受控类型',
      initval: wrap.linkType || 'static',
      tooltip: '组件与其他组件之间的控制类型,独立类型表示与其他组件没有关联,同步类型中公式与按钮比较特殊,操作数据为其同步组件的数据。',
      tooltip: <div>
        <div>组件与其他组件之间的控制类型: </div>
        <div>1、独立表示与其他组件没有关联。</div>
        <div>2、同步类型中公式、按钮以及全选元素比较特殊,操作数据为其同步组件的数据。</div>
        <div>3、上级类型需添加当前组件的上级组件,并可设置当前组件为始终显示,还是只有在上级组件选行后才显示。</div>
      </div>,
      required: false,
      options: [
        {value: 'static', label: '独立'},
@@ -69,13 +123,14 @@
        {field: 'supControl', values: ['sup']},
        {field: 'syncModule', values: ['sync']},
        {field: 'checkAll', values: ['sync']},
      ]
      ],
      forbid: MenuType === 'billPrint'
    },
    {
      type: 'cascader',
      field: 'supModule',
      label: '上级组件',
      initval: wrap.supModule || '',
      initval: wrap.supModule || [],
      // tooltip: '当上级组件不存在或没有权限时,当前组件不显示。',
      required: true,
      options: supmodules
@@ -115,92 +170,59 @@
    },
    {
      type: 'radio',
      field: 'position',
      label: '位置',
      initval: wrap.position || 'relative',
      tooltip: '相对定位是相对其正常位置的偏移;绝对定位是相对于原组件的偏移,原组件高度可视为0;固定定位是相对于窗口的位置,定位效果测试环境中查看。',
      field: 'empty',
      label: '空值隐藏',
      initval: wrap.empty || 'show',
      tooltip: '当查询数据为空时,隐藏该组件。',
      required: false,
      skip: true,
      options: [
        {value: 'relative', label: '相对定位'},
        {value: 'absolute', label: '绝对定位'},
        {value: 'fixed', label: '固定定位'},
        {value: 'show', label: '否'},
        {value: 'hidden', label: '是'},
      ],
      controlFields: [
        {field: 'quick', values: ['fixed']},
        {field: 'realwidth', values: ['fixed', 'absolute']},
        {field: 'transform', values: ['fixed', 'absolute']},
      ]
    },
    {
      type: 'select',
      field: 'quick',
      label: '快捷选择',
      initval: '',
      field: 'bgField',
      label: '背景图',
      initval: wrap.bgField || '',
      tooltip: '动态背景,背景图片由字段值控制。请注意调整背景样式。',
      required: false,
      subFields: ['top', 'left', 'right', 'bottom', 'transform'],
      options: columns
    },
    {
      type: 'radio',
      field: 'printType',
      label: '组件类型',
      initval: wrap.printType || 'content',
      tooltip: '选择类型为《页眉/页脚》时,打印的每页里都会带有该组件。注:页眉页脚中文本元素将替换 @pageIndex@(页码)、@total@(总数)、@date@(当前日期)、@datetime@(当前时间),使用分页参数时注意打印模板的页面布局使用分页。',
      required: false,
      options: [
        {value: 'top', label: '上', top: '0px', left: '0px', right: '0px', bottom: '', transform: ''},
        {value: 'top-left', label: '左上', top: '0px', left: '0px', right: '', bottom: '', transform: ''},
        {value: 'top-right', label: '右上', top: '0px', left: '', right: '0px', bottom: '', transform: ''},
        {value: 'left-middle', label: '左中', top: '50%', left: '0px', right: '', bottom: '', transform: 'translateY(-50%)'},
        {value: 'right-middle', label: '右中', top: '50%', left: '', right: '0px', bottom: '', transform: 'translateY(-50%)'},
        {value: 'bottom-left', label: '左下', top: '', left: '0px', right: '', bottom: '0px', transform: ''},
        {value: 'bottom-right', label: '右下', top: '', left: '', right: '0px', bottom: '0px', transform: ''},
        {value: 'bottom', label: '下', top: '', left: '0px', right: '0px', bottom: '0px', transform: ''},
        {value: 'middle', label: '中间', top: '50%', left: '50%', right: '', bottom: '', transform: 'translate(-50%, -50%)'}
      ]
        {value: 'content', label: '浮动卡'},
        {value: 'headerOrfooter', label: '页眉/页脚'},
      ],
      forbid: MenuType !== 'billPrint'
    },
    {
      type: 'styleInput',
      field: 'top',
      label: '距上',
      initval: wrap.top || '',
      required: false
    },
    {
      type: 'styleInput',
      field: 'right',
      label: '距右',
      initval: wrap.right || '',
      required: false
    },
    {
      type: 'styleInput',
      field: 'bottom',
      label: '距下',
      initval: wrap.bottom || '',
      required: false
    },
    {
      type: 'styleInput',
      field: 'left',
      label: '距左',
      initval: wrap.left || '',
      required: false
    },
    {
      type: 'styleInput',
      field: 'realwidth',
      label: '实际宽度',
      initval: wrap.realwidth || '',
      required: false
      type: 'radio',
      field: 'permission',
      label: '权限验证',
      initval: wrap.permission || (!appType ? 'true' : 'false'),
      required: false,
      options: [
        {value: 'true', label: '启用'},
        {value: 'false', label: '禁用'},
      ],
      forbid: sessionStorage.getItem('editMenuType') === 'popview'
    },
    {
      type: 'select',
      field: 'transform',
      label: '变换',
      initval: wrap.transform || '',
      field: 'linkbtn',
      label: '关联按钮',
      initval: wrap.linkbtn || '',
      required: false,
      options: [
        {value: 'translateY(-50%)', label: '上移50%'},
        {value: 'translateY(50%)', label: '下移50%'},
        {value: 'translateX(-50%)', label: '左移50%'},
        {value: 'translateX(50%)', label: '右移50%'},
        {value: 'translate(-50%, -50%)', label: '左上移50%'},
        {value: 'translate(-50%, 50%)', label: '左下移50%'},
        {value: 'translate(50%, -50%)', label: '右上移50%'},
        {value: 'translate(50%, 50%)', label: '右下移50%'},
      ]
      options: buttons,
      forbid: MenuType === 'billPrint'
    },
    {
      type: 'multiselect',