king
2024-04-08 37e28da53f6d4d7d8abe7626ba28ba7dbe16e7bb
src/mob/components/topbar/normal-navbar/options.jsx
@@ -1,8 +1,24 @@
import React from 'react'
import MkIcon from '@/components/mk-icon'
/**
 * @description Wrap表单配置信息
 */
export default function (wrap) {
  let menulist = sessionStorage.getItem('appMenus')
  let searchable = true
  let adapters = sessionStorage.getItem('adapter')
  if (adapters) {
    adapters = adapters.split(',')
  } else {
    adapters = []
  }
  window.GLOB.customMenu.components.forEach(item => {
    if (item.type === 'search') {
      searchable = false
    }
  })
  if (menulist) {
    try {
@@ -14,6 +30,24 @@
    menulist = []
  }
  let funs = []
  if (wrap.back === 'true') {
    funs.push('back')
  }
  if (wrap.logout === 'true') {
    funs.push('logout')
  }
  if (wrap.scan === 'true') {
    funs.push('scan')
  }
  if (wrap.refresh === 'true') {
    funs.push('refresh')
  }
  if (wrap.resetPwd === 'true') {
    funs.push('resetPwd')
  }
  const topbarWrapForm = [
    {
      type: 'radio',
@@ -23,8 +57,8 @@
      required: false,
      options: [
        {value: 'navbar', label: '导航栏'},
        {value: 'search', label: '搜索框'},
        {value: 'searchIcon', label: '搜索标'},
        {value: 'search', label: '搜索框', disabled: !searchable},
        {value: 'searchIcon', label: '搜索标', disabled: !searchable},
      ],
    },
    {
@@ -32,81 +66,95 @@
      field: 'title',
      label: '标题',
      initval: wrap.title || '',
      tooltip: '使用搜索框时,标题用于搜索条件隐藏时(当启用黑名单,登录用户无权限时)显示。',
      // tooltip: '使用搜索框时,标题用于搜索条件隐藏时(当启用黑名单,登录用户无权限时)显示。注:@username代表用户名,@fullname代表姓名。',
      tooltip: '注:@username代表用户名,@fullname代表姓名。',
      required: false
    },
    {
      type: 'radio',
      field: 'back',
      label: '返回',
      initval: wrap.back || 'true',
      type: 'checkbox',
      field: 'funs',
      label: '扩展功能',
      tooltip: '1、返回上一页;2、绑定公众号后可分享当前页面;3、二维码以“login”开头时为扫码登录,二维码以“http”开头为页面跳转,二维码以“mkbid”开头为菜单跳转,且设置有关联菜单;4、当前页面刷新;5、退出系统,返回第一个页面。',
      initval: funs,
      required: false,
      options: [
        {value: 'true', label: '显示'},
        {value: 'false', label: '隐藏'},
        {value: 'back', label: '返回'},
        {value: 'scan', label: '扫一扫'},
        {value: 'resetPwd', label: '修改密码'},
        {value: 'refresh', label: '刷新'},
        {value: 'logout', label: '退出'},
      ],
      controlFields: [
        {field: 'reload', values: ['true']},
        {field: 'reload', values: ['back']},
        {field: 'linkmenu', values: ['scan']},
        {field: 'prefix', values: ['scan']},
      ],
      span: 24
    },
    {
      type: 'radio',
      field: 'mode',
      label: '弹框背景',
      initval: wrap.mode || 'dark',
      tooltip: '当存在扩展功能或自定义菜单时,展示对应信息弹窗的背景颜色。',
      required: false,
      options: [
        {value: 'light', label: '白色'},
        {value: 'dark', label: '黑色'},
      ]
    },
    // {
    //   type: 'radio',
    //   field: 'search',
    //   label: '搜索',
    //   initval: wrap.search || 'false',
    //   field: 'back',
    //   label: '返回',
    //   initval: wrap.back || 'true',
    //   required: false,
    //   options: [
    //     {value: 'true', label: '显示'},
    //     {value: 'false', label: '隐藏'},
    //   ],
    //   controlFields: [
    //     {field: 'reload', values: ['true']},
    //   ]
    // },
    // {
    //   type: 'radio',
    //   field: 'logout',
    //   label: '退出',
    //   initval: wrap.logout || 'false',
    //   tooltip: '点击退出时,返回第一个页面。',
    //   required: false,
    //   options: [
    //     {value: 'true', label: '显示'},
    //     {value: 'false', label: '隐藏'},
    //   ]
    // },
    {
      type: 'radio',
      field: 'logout',
      label: '退出',
      initval: wrap.logout || 'false',
      tooltip: '点击退出时,返回第一个页面。',
      required: false,
      options: [
        {value: 'true', label: '显示'},
        {value: 'false', label: '隐藏'},
      ]
    },
    {
      type: 'radio',
      field: 'scan',
      label: '扫一扫',
      initval: wrap.scan || 'false',
      tooltip: '系统功能:1、扫码登录,二维码以“login”开头,2、页面跳转,二维码以“http”开头,3、菜单跳转,二维码以“mkbid”开头,且设置关联菜单',
      required: false,
      options: [
        {value: 'true', label: '显示'},
        {value: 'false', label: '隐藏'},
      ],
      controlFields: [
        {field: 'linkmenu', values: ['true']},
      ]
    },
    {
      type: 'radio',
      field: 'refresh',
      label: '刷新',
      initval: wrap.refresh || 'false',
      required: false,
      options: [
        {value: 'true', label: '显示'},
        {value: 'false', label: '隐藏'},
      ]
    },
    {
      type: 'select',
      field: 'linkmenu',
      label: '关联菜单',
      initval: wrap.linkmenu || '',
      tooltip: '使用扫码登录功能或菜单跳转功能时,需选择跳转的菜单。',
      required: false,
      options: menulist
    },
    // {
    //   type: 'radio',
    //   field: 'scan',
    //   label: '扫一扫',
    //   initval: wrap.scan || 'false',
    //   tooltip: '系统功能:1、扫码登录,二维码以“login”开头,2、页面跳转,二维码以“http”开头,3、菜单跳转,二维码以“mkbid”开头,且设置关联菜单',
    //   required: false,
    //   options: [
    //     {value: 'true', label: '显示'},
    //     {value: 'false', label: '隐藏'},
    //   ],
    //   controlFields: [
    //     {field: 'linkmenu', values: ['true']},
    //   ]
    // },
    // {
    //   type: 'radio',
    //   field: 'refresh',
    //   label: '刷新',
    //   initval: wrap.refresh || 'false',
    //   required: false,
    //   options: [
    //     {value: 'true', label: '显示'},
    //     {value: 'false', label: '隐藏'},
    //   ]
    // },
    {
      type: 'radio',
      field: 'reload',
@@ -122,6 +170,88 @@
        label: '刷新'
      }]
    },
    {
      type: 'select',
      field: 'linkmenu',
      label: '关联菜单',
      initval: wrap.linkmenu || '',
      tooltip: '使用扫码登录功能或菜单跳转功能时,需选择跳转的菜单。',
      required: false,
      options: menulist
    },
    {
      type: 'text',
      field: 'prefix',
      label: '前缀',
      initval: wrap.prefix || '',
      tooltip: '扫码信息将与前缀拼接后执行。注:跳转菜单需以mkbid(:或,)开头,mkbid(:或,)跳转后将被去除。例如:mkbid:123456 跳转后页面BID为 123456。',
      required: false
    },
    {
      type: 'radio',
      field: 'minishow',
      label: '小程序中',
      initval: wrap.minishow || 'false',
      tooltip: '导航栏在小程序中是否显示。',
      required: false,
      options: [
        {value: 'true', label: '显示'},
        {value: 'false', label: '隐藏'},
      ],
      forbid: !adapters.includes('wxmini')
    },
    {
      type: 'radio',
      field: 'menuPosition',
      label: '自定义菜单位置',
      initval: wrap.menuPosition || 'right',
      tooltip: '自定义菜单的位置。注:菜单位于左侧时会显示头像,且返回功能被禁用。',
      required: false,
      options: [
        {value: 'left', label: '左侧'},
        {value: 'right', label: '右侧'},
      ]
    },
    {
      type: 'table',
      field: 'menus',
      label: '自定义菜单',
      initval: wrap.menus || [],
      required: false,
      span: 24,
      actions: ['edit', 'del', 'add', 'move', 'view'],
      tip: <span style={{fontSize: '12px', color: '#959595', position: 'relative', top: '-8px'}}>当使用图标<MkIcon type="user"/>,且右侧只有一个菜单时,会显示用户头像。</span>,
      columns: [
        {
          title: '图标',
          dataIndex: 'icon',
          inputType: 'icon',
          editable: true,
          required: true,
          render: (text, record) => <MkIcon type={text}/>,
          width: '23%'
        },
        {
          title: '自定义名称',
          dataIndex: 'name',
          inputType: 'text',
          editable: true,
          required: false,
          width: '23%'
        },
        {
          title: '菜单',
          dataIndex: 'menu',
          inputType: 'select',
          editable: true,
          required: true,
          extends: [{key: 'label', value: 'label'}],
          width: '23%',
          render: (text, record) => record.label,
          options: menulist
        }
      ]
    }
  ]
  return topbarWrapForm