king
2022-02-08 f393af9623c26ae177a3f69b8676afc4e23bff8d
2022-02-08
54个文件已修改
325 ■■■■■ 已修改文件
src/menu/components/card/balcony/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/data-card/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/prop-card/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/table-card/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/carousel/data-card/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/carousel/prop-card/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/chart/antv-bar/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/chart/antv-dashboard/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/chart/antv-pie/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/chart/antv-scatter/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/chart/chart-custom/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/code/sandbox/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/editor/braft-editor/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/form/normal-form/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/form/tab-form/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/group/groupcomponents/card.jsx 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/group/groupcomponents/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/group/normal-group/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/search/main-search/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/table/edit-table/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/table/normal-table/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/tabs/antv-tabs/index.jsx 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/tabs/paste/index.jsx 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/tabs/tabcomponents/card.jsx 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/tabs/tabcomponents/index.jsx 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/timeline/normal-timeline/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/tree/antd-tree/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/datasource/index.jsx 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/datasource/verifycard/index.jsx 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/menushell/card.jsx 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/pastecontroller/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mob/components/menubar/normal-menubar/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mob/components/navbar/normal-navbar/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mob/components/search/single-search/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mob/components/tabs/antv-tabs/index.jsx 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mob/components/tabs/tabcomponents/card.jsx 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mob/components/tabs/tabcomponents/index.jsx 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mob/components/topbar/normal-navbar/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mob/components/topbar/normal-navbar/options.jsx 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mob/mobshell/card.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mob/mobshell/index.jsx 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pc/components/login/normal-login/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pc/components/navbar/normal-navbar/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pc/menushell/card.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/index.jsx 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/mutilform/index.jsx 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/zshare/editTable/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/zshare/editTable/index.scss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/zshare/modalform/datatable/index.jsx 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/zshare/modalform/datatable/index.scss 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/zshare/modalform/modaleditable/index.jsx 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/zshare/modalform/modaleditable/index.scss 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/utils-custom.js 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mobdesign/index.jsx 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/balcony/index.jsx
@@ -39,7 +39,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        format: 'object',   // 组件属性 - 数据格式
src/menu/components/card/data-card/index.jsx
@@ -46,7 +46,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        format: 'array',   // 组件属性 - 数据格式
src/menu/components/card/prop-card/index.jsx
@@ -45,7 +45,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        format: 'object',   // 组件属性 - 数据格式
src/menu/components/card/table-card/index.jsx
@@ -45,7 +45,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        format: 'array',    // 组件属性 - 数据格式
src/menu/components/carousel/data-card/index.jsx
@@ -41,7 +41,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        format: 'array',    // 组件属性 - 数据格式
src/menu/components/carousel/prop-card/index.jsx
@@ -42,7 +42,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        format: 'object',   // 组件属性 - 数据格式
src/menu/components/chart/antv-bar/index.jsx
@@ -71,7 +71,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        format: 'array',   // 组件属性 - 数据格式
src/menu/components/chart/antv-dashboard/index.jsx
@@ -112,7 +112,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        format: card.subtype === 'ratioboard' ? 'array' : 'object',   // 组件属性 - 数据格式
src/menu/components/chart/antv-pie/index.jsx
@@ -62,7 +62,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        format: 'array',   // 组件属性 - 数据格式
src/menu/components/chart/antv-scatter/index.jsx
@@ -58,7 +58,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        format: 'array',   // 组件属性 - 数据格式
src/menu/components/chart/chart-custom/index.jsx
@@ -50,7 +50,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        format: 'array',   // 组件属性 - 数据格式
src/menu/components/code/sandbox/index.jsx
@@ -41,7 +41,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        dataName: card.dataName || '',
src/menu/components/editor/braft-editor/index.jsx
@@ -38,7 +38,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        dataName: card.dataName || '',
src/menu/components/form/normal-form/index.jsx
@@ -59,7 +59,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        format: 'object',   // 组件属性 - 数据格式
src/menu/components/form/tab-form/index.jsx
@@ -59,7 +59,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        format: 'object',   // 组件属性 - 数据格式
src/menu/components/group/groupcomponents/card.jsx
@@ -27,7 +27,7 @@
const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
  const originalIndex = findCard(id).index
  const [{ isDragging }, drag] = useDrag({
    item: { type: 'menu', id, originalIndex, floor: card.floor },
    item: { type: 'menu', id, originalIndex },
    collect: monitor => ({
      isDragging: monitor.isDragging(),
    }),
@@ -36,10 +36,10 @@
    accept: 'menu',
    canDrop: () => true,
    drop: (item) => {
      const { id: draggedId, originalIndex, floor } = item
      const { id: draggedId, originalIndex } = item
      if (originalIndex === undefined) {
        item.dropTargetId = id
      } else if (draggedId && floor === card.floor) {
      } else if (draggedId) {
        if (draggedId === id) return
        const { index: originIndex } = findCard(draggedId)
src/menu/components/group/groupcomponents/index.jsx
@@ -106,7 +106,6 @@
        width: item.width || 24,
        dataName: Utils.getdataName(),
        name: name,
        floor: config.floor || 1, // 组件的层级
        isNew: true               // 新添加标志,用于初始化
      }
src/menu/components/group/normal-group/index.jsx
@@ -35,7 +35,6 @@
      let _group = {
        uuid: group.uuid,
        type: group.type,
        floor: group.floor,
        tabId: group.tabId || '',
        parentId: group.parentId || '',
        subtype: group.subtype,
@@ -145,7 +144,6 @@
  insert = (item) => {
    let group = fromJS(this.state.group).toJS()
    item.floor = group.floor || 1
    item.parentId = group.parentId
    group.components.push(item)
src/menu/components/search/main-search/index.jsx
@@ -53,7 +53,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        width: 24,
src/menu/components/table/edit-table/index.jsx
@@ -46,7 +46,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        format: 'array',    // 组件属性 - 数据格式
src/menu/components/table/normal-table/index.jsx
@@ -45,7 +45,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        format: 'array',    // 组件属性 - 数据格式
src/menu/components/tabs/antv-tabs/index.jsx
@@ -44,7 +44,6 @@
      let _tabs = {
        uuid: tabs.uuid,
        type: tabs.type,
        floor: tabs.floor,
        tabId: tabs.tabId || '',
        parentId: tabs.parentId || '',
        subtype: tabs.subtype,
@@ -53,9 +52,9 @@
        setting: {width: 24, position: 'top', tabStyle: 'line', name: tabs.name},
        style: { marginLeft: '8px', marginRight: '8px', marginTop: '8px', marginBottom: '8px' },
        subtabs: [
          { uuid: Utils.getuuid(), parentId: tabs.uuid, floor: tabs.floor, label: 'Tab 1', icon: '', components: [] },
          { uuid: Utils.getuuid(), parentId: tabs.uuid, floor: tabs.floor, label: 'Tab 2', icon: '', components: [] },
          { uuid: Utils.getuuid(), parentId: tabs.uuid, floor: tabs.floor, label: 'Tab 3', icon: '', components: [] }
          { uuid: Utils.getuuid(), parentId: tabs.uuid, label: 'Tab 1', icon: '', components: [] },
          { uuid: Utils.getuuid(), parentId: tabs.uuid, label: 'Tab 2', icon: '', components: [] },
          { uuid: Utils.getuuid(), parentId: tabs.uuid, label: 'Tab 3', icon: '', components: [] }
        ]
      }
      this.setState({
@@ -296,7 +295,6 @@
      tab = {
        uuid: '',
        parentId: tabs.uuid,
        floor: tabs.floor,
        label: '',
        icon: '',
        components: []
src/menu/components/tabs/paste/index.jsx
@@ -24,8 +24,7 @@
    this.setState({visible: true})
  }
  resetconfig = (item, Tab, copyBtns, uuids = {}) => {
    item.floor = Tab.floor + 1
  resetconfig = (item, Tab, copyBtns, uuids = {}, floor) => {
    item.tabId = Tab.uuid
    item.parentId = Tab.parentId
    
@@ -40,12 +39,12 @@
        tab.uuid = uuids[tab.uuid]
        tab.parentId = item.uuid
        if (item.floor >= 3) {
        if (floor >= 3) {
          tab.components = tab.components.filter(cell => cell.type !== 'tabs')
        }
        tab.components = tab.components.map(cell => {
          cell = this.resetconfig(cell, tab, copyBtns, uuids)
          cell = this.resetconfig(cell, tab, copyBtns, uuids, floor + 1)
          return cell
        })
      })
@@ -56,7 +55,6 @@
      item.name = item.setting.name
      item.components = item.components.map(cell => {
        cell.floor = Tab.floor + 1
        cell.tabId = Tab.uuid
        cell.parentId = Tab.parentId
@@ -102,8 +100,9 @@
      }
      let copyBtns = new Map()
      let floor = MenuUtils.getFloor(Tab.parentId)
      res = this.resetconfig(res, Tab, copyBtns)
      res = this.resetconfig(res, Tab, copyBtns, {}, floor)
      delete res.copyType
      
src/menu/components/tabs/tabcomponents/card.jsx
@@ -30,7 +30,7 @@
const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
  const originalIndex = findCard(id).index
  const [{ isDragging }, drag] = useDrag({
    item: { type: 'menu', id, originalIndex, floor: card.floor },
    item: { type: 'menu', id, originalIndex },
    collect: monitor => ({
      isDragging: monitor.isDragging(),
    }),
@@ -39,10 +39,10 @@
    accept: 'menu',
    canDrop: () => true,
    drop: (item) => {
      const { id: draggedId, originalIndex, floor } = item
      const { id: draggedId, originalIndex } = item
      if (originalIndex === undefined) {
        item.dropTargetId = id
      } else if (draggedId && floor === card.floor) {
      } else if (draggedId) {
        if (draggedId === id) return
        const { index: originIndex } = findCard(draggedId)
src/menu/components/tabs/tabcomponents/index.jsx
@@ -84,13 +84,16 @@
          })
          return
        }
      } else if (item.component === 'tabs' && config.floor === 3) {
      } else if (item.component === 'tabs') {
        let floor = MenuUtils.getFloor(config.parentId)
        if (floor >= 3 ) {
        notification.warning({
          top: 92,
          message: '标签页最多为三重结构!',
          duration: 5
        })
        return
        }
      }
      let name = ''
@@ -134,7 +137,6 @@
        width: item.width || 24,
        dataName: Utils.getdataName(),
        name: name,
        floor: config.floor ? (config.floor + 1) : 2, // 组件的层级
        isNew: true                                   // 新添加标志,用于初始化
      }
      
src/menu/components/timeline/normal-timeline/index.jsx
@@ -38,7 +38,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        format: 'array',   // 组件属性 - 数据格式
src/menu/components/tree/antd-tree/index.jsx
@@ -40,7 +40,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        dataName: card.dataName || '',
src/menu/datasource/index.jsx
@@ -45,45 +45,19 @@
    if (appType === 'mob') {
      let ms = null
      menu.components.forEach(item => {
        if (item.type === 'topbar' && (item.wrap.type === 'search' || (item.wrap.type === 'navbar' && item.wrap.search === 'true'))) {
        if (item.type === 'topbar' && item.wrap.type !== 'navbar' && item.search) {
          ms = item.search
        }
      })
      if (config.floor > 1) {
        let _search = null
        let filterComponent = (box) => {
          box.components.forEach(item => {
            if (_search) return
            if (item.uuid === config.uuid) {
              _search = box.slist.pop()
            } else if (item.type === 'group') {
              item.components.forEach(m => {
                if (m.uuid !== config.uuid) return
                _search = box.slist.pop()
              })
            } else if (item.type === 'tabs') {
              let able = item.setting.display === 'inline-block' && item.setting.position === 'top'
              item.subtabs.forEach(tab => {
                if (able && tab.hasSearch === 'icon' && tab.search) {
                  tab.slist = [...box.slist, tab.search]
                } else {
                  tab.slist = [...box.slist]
                }
                filterComponent(tab)
        } else if (item.type === 'search' && item.wrap.field) {
          search.push({
            type: 'text',
            label: item.wrap.label,
            field: item.wrap.field,
            match: item.wrap.match,
            required: item.wrap.required,
            value: item.wrap.initval || ''
              })
            }
          })
        }
        menu.slist = []
        filterComponent(menu)
        if (_search) {
          ms = _search
        }
      }
      if (ms) {
        if (ms.setting.type === 'search') {
@@ -124,7 +98,6 @@
        })
      }
    } else {
      if (config.floor > 1) {
        let _search = null
        let filterComponent = (box) => {
          box.components.forEach(item => {
@@ -152,7 +125,6 @@
        if (_search) {
          search = _search
        }
      } else {
        menu.components.forEach(item => {
          if (item.type !== 'search') return
src/menu/datasource/verifycard/index.jsx
@@ -42,7 +42,7 @@
        dataIndex: 'label',
        inputType: 'input',
        editable: true,
        width: '28%'
        width: '20%'
      },
      {
        title: '字段',
@@ -51,7 +51,7 @@
        editable: true,
        unique: true,
        copy: true,
        width: '28%'
        width: '20%'
      },
      {
        title: '数据类型',
@@ -90,8 +90,15 @@
          { value: 'datetime', text: 'datetime' },
        ],
        editable: true,
        width: '25%',
      }
        width: '20%',
      },
      {
        title: '备注',
        dataIndex: 'remark',
        inputType: 'textarea',
        editable: true,
        width: '20%'
      },
    ],
    scriptsColumns: [
      {
src/menu/menushell/card.jsx
@@ -30,7 +30,7 @@
const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
  const originalIndex = findCard(id).index
  const [{ isDragging }, drag] = useDrag({
    item: { type: 'menu', id, originalIndex, floor: card.floor },
    item: { type: 'menu', id, originalIndex },
    collect: monitor => ({
      isDragging: monitor.isDragging(),
    }),
@@ -39,10 +39,10 @@
    accept: 'menu',
    canDrop: () => true,
    drop: (item) => {
      const { id: draggedId, originalIndex, floor } = item
      const { id: draggedId, originalIndex } = item
      if (originalIndex === undefined) {
        item.dropTargetId = id
      } else if (draggedId && floor === card.floor) {
      } else if (draggedId) {
        if (draggedId === id) return
        const { index: originIndex } = findCard(draggedId)
src/menu/pastecontroller/index.jsx
@@ -38,7 +38,6 @@
        }
        tab.components = tab.components.map(cell => {
          cell.floor = tab.floor + 1
          cell.tabId = tab.uuid
          cell.parentId = tab.parentId
@@ -53,7 +52,6 @@
      item.name = item.setting.name
      item.components = item.components.map(cell => {
        cell.floor = item.floor
        cell.tabId = item.tabId || ''
        cell.parentId = item.parentId || ''
src/mob/components/menubar/normal-menubar/index.jsx
@@ -41,7 +41,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: '',
        parentId: '',
        format: 'object',   // 组件属性 - 数据格式
src/mob/components/navbar/normal-navbar/index.jsx
@@ -32,7 +32,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        format: 'object',   // 组件属性 - 数据格式
        pageable: false,    // 组件属性 - 是否可分页
        switchable: false,  // 组件属性 - 数据是否可切换
src/mob/components/search/single-search/index.jsx
@@ -39,7 +39,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        width: 24,
src/mob/components/tabs/antv-tabs/index.jsx
@@ -1,7 +1,7 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import { Tabs, Popover, Modal } from 'antd'
import { Tabs, Popover, Modal, notification } from 'antd'
import { ToolOutlined, PlusOutlined, EditOutlined, FontColorsOutlined, DeleteOutlined, CloseOutlined } from '@ant-design/icons'
import MKEmitter from '@/utils/events.js'
@@ -44,7 +44,6 @@
      let _tabs = {
        uuid: tabs.uuid,
        type: tabs.type,
        floor: tabs.floor,
        tabId: tabs.tabId || '',
        parentId: tabs.parentId || '',
        subtype: tabs.subtype,
@@ -53,9 +52,9 @@
        setting: {width: 24, position: 'top', tabStyle: 'line', name: tabs.name},
        style: { marginLeft: '8px', marginRight: '8px', marginTop: '8px', marginBottom: '8px' },
        subtabs: [
          { uuid: Utils.getuuid(), parentId: tabs.uuid, floor: tabs.floor, label: 'Tab 1', icon: '', components: [] },
          { uuid: Utils.getuuid(), parentId: tabs.uuid, floor: tabs.floor, label: 'Tab 2', icon: '', components: [] },
          { uuid: Utils.getuuid(), parentId: tabs.uuid, floor: tabs.floor, label: 'Tab 3', icon: '', components: [] }
          { uuid: Utils.getuuid(), parentId: tabs.uuid, label: 'Tab 1', icon: '', components: [] },
          { uuid: Utils.getuuid(), parentId: tabs.uuid, label: 'Tab 2', icon: '', components: [] },
          { uuid: Utils.getuuid(), parentId: tabs.uuid, label: 'Tab 3', icon: '', components: [] }
        ]
      }
@@ -254,6 +253,15 @@
  insert = (item, tab) => {
    let tabs = fromJS(this.state.tabs).toJS()
    if (item.type === 'search') {
      notification.warning({
        top: 92,
        message: '移动端搜索组件不可粘贴!',
        duration: 5
      })
      return
    }
    tabs.subtabs.forEach(stab => {
      if (stab.uuid === tab.uuid) {
        stab.components.push(item)
@@ -310,7 +318,6 @@
      tab = {
        uuid: '',
        parentId: tabs.uuid,
        floor: tabs.floor,
        label: '',
        icon: '',
        components: []
src/mob/components/tabs/tabcomponents/card.jsx
@@ -29,7 +29,7 @@
const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
  const originalIndex = findCard(id).index
  const [{ isDragging }, drag] = useDrag({
    item: { type: 'menu', id, originalIndex, floor: card.floor },
    item: { type: 'menu', id, originalIndex },
    collect: monitor => ({
      isDragging: monitor.isDragging(),
    }),
@@ -38,10 +38,10 @@
    accept: 'menu',
    canDrop: () => true,
    drop: (item) => {
      const { id: draggedId, originalIndex, floor } = item
      const { id: draggedId, originalIndex } = item
      if (originalIndex === undefined) {
        item.dropTargetId = id
      } else if (draggedId && floor === card.floor) {
      } else if (draggedId) {
        if (draggedId === id) return
        const { index: originIndex } = findCard(draggedId)
src/mob/components/tabs/tabcomponents/index.jsx
@@ -75,22 +75,27 @@
      
      item.added = true
      if (item.component === 'search') { // 搜索组件不可重复添加
        if (cards.filter(card => card.type === 'search').length > 0) {
          notification.warning({
            top: 92,
            message: '搜索条件不可重复添加!',
            duration: 5
          })
      if (item.component === 'search') { // 移动端标签页中不可添加搜索
        // if (cards.filter(card => card.type === 'search').length > 0) {
        //   notification.warning({
        //     top: 92,
        //     message: '搜索条件不可重复添加!',
        //     duration: 5
        //   })
        //   return
        // }
        item.added = false
          return
        }
      } else if (item.component === 'tabs' && config.floor === 3) {
      } else if (item.component === 'tabs') {
        let floor = MenuUtils.getFloor(config.parentId)
        if (floor >= 3 ) {
        notification.warning({
          top: 92,
          message: '标签页最多为三重结构!',
          duration: 5
        })
        return
        }
      }
      let name = ''
@@ -134,7 +139,6 @@
        width: item.width || 24,
        dataName: Utils.getdataName(),
        name: name,
        floor: config.floor ? (config.floor + 1) : 2, // 组件的层级
        isNew: true                                   // 新添加标志,用于初始化
      }
      
src/mob/components/topbar/normal-navbar/index.jsx
@@ -31,7 +31,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        width: 24,
        subtype: card.subtype,
        wrap: { type: 'navbar', height: 50, title: 'NavBar', back: 'true', logout: 'false' },
src/mob/components/topbar/normal-navbar/options.jsx
@@ -6,6 +6,12 @@
 */
export default function (wrap) {
  let menulist = sessionStorage.getItem('appMenus')
  let searchable = true
  window.GLOB.customMenu.components.forEach(item => {
    if (item.type === 'search') {
      searchable = false
    }
  })
  if (menulist) {
    try {
@@ -26,8 +32,8 @@
      required: false,
      options: [
        {value: 'navbar', label: '导航栏'},
        {value: 'search', label: '搜索框'},
        {value: 'searchIcon', label: '搜索标'},
        {value: 'search', label: '搜索框', disabled: !searchable},
        {value: 'searchIcon', label: '搜索标', disabled: !searchable},
      ],
    },
    {
src/mob/mobshell/card.jsx
@@ -31,7 +31,7 @@
const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
  const originalIndex = findCard(id).index
  const [{ isDragging }, drag] = useDrag({
    item: { type: 'menu', id, originalIndex, floor: card.floor },
    item: { type: 'menu', id, originalIndex },
    collect: monitor => ({
      isDragging: monitor.isDragging(),
    }),
@@ -40,10 +40,11 @@
    accept: 'menu',
    canDrop: () => true,
    drop: (item) => {
      const { id: draggedId, originalIndex, floor } = item
      const { id: draggedId, originalIndex } = item
      if (originalIndex === undefined) {
        item.dropTargetId = id
      } else if (draggedId && floor === card.floor) {
      } else if (draggedId) {
        if (draggedId === id) return
        const { index: originIndex } = findCard(draggedId)
src/mob/mobshell/index.jsx
@@ -79,6 +79,14 @@
      let style = null
      if (item.component === 'search') { // 搜索组件不可重复添加
        if (cards.filter(card => card.type === 'topbar' && card.wrap.type !== 'navbar').length > 0) {
          notification.warning({
            top: 92,
            message: '导航栏使用了搜索,不可添加搜索组件!',
            duration: 5
          })
          return
        }
        if (cards.filter(card => card.type === 'search').length > 0) {
          notification.warning({
            top: 92,
src/pc/components/login/normal-login/index.jsx
@@ -35,7 +35,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        tabId: card.tabId || '',
        parentId: card.parentId || '',
        dataName: card.dataName || '',
src/pc/components/navbar/normal-navbar/index.jsx
@@ -34,7 +34,6 @@
      let _card = {
        uuid: card.uuid,
        type: card.type,
        floor: card.floor,
        dataName: card.dataName || '',
        name: card.name,
        subtype: card.subtype,
src/pc/menushell/card.jsx
@@ -32,7 +32,7 @@
const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
  const originalIndex = findCard(id).index
  const [{ isDragging }, drag] = useDrag({
    item: { type: 'menu', id, originalIndex, floor: card.floor },
    item: { type: 'menu', id, originalIndex },
    collect: monitor => ({
      isDragging: monitor.isDragging(),
    }),
@@ -41,10 +41,11 @@
    accept: 'menu',
    canDrop: () => true,
    drop: (item) => {
      const { id: draggedId, originalIndex, floor } = item
      const { id: draggedId, originalIndex } = item
      if (originalIndex === undefined) {
        item.dropTargetId = id
      } else if (draggedId && floor === card.floor) {
      } else if (draggedId) {
        if (draggedId === id) return
        const { index: originIndex } = findCard(draggedId)
src/tabviews/custom/index.jsx
@@ -916,7 +916,8 @@
        } else {
          params.push(getStructDefaultParam(component, searchlist, params.length === 0))
        }
      } else if (component.floor === 1) {
      } else if (params) {
      // } else if (component.floor === 1) {
        component.setting.sync = 'false'
      }
src/tabviews/zshare/mutilform/index.jsx
@@ -101,10 +101,17 @@
      if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type)) {
        item.options = item.options || []
        item.options = item.options.map(cell => {
        // item.options = item.options.map(cell => {
        //   cell.value = cell.Value
        //   cell.label = cell.Text
        //   return cell
        // })
        item.options = item.options.filter(cell => {
          cell.value = cell.Value
          cell.label = cell.Text
          return cell
          return !cell.Hide
        })
        if (item.setAll === 'true' && ['select', 'link', 'radio'].includes(item.type)) { // 添加空值
          item.options.unshift({
src/templates/zshare/editTable/index.jsx
@@ -115,6 +115,8 @@
          {options.map((item, i) => (<Radio key={i} value={item.field || item.value}> {item.label || item.text} </Radio>))}
        </Radio.Group>
      )
    } else if (inputType === 'textarea') {
      return <Input.TextArea autoSize={true} placeholder=""/>
    } else {
      return <Input onPressEnter={() => this.getValue(form)}/>
    }
src/templates/zshare/editTable/index.scss
@@ -19,6 +19,9 @@
    > td:last-child {
      padding: 0px;
    }
    textarea.ant-input {
      vertical-align: middle;
    }
  }
  .editable-row.active {
    td {
src/templates/zshare/modalform/datatable/index.jsx
@@ -3,7 +3,7 @@
import { is, fromJS } from 'immutable'
import { DndProvider, DragSource, DropTarget } from 'react-dnd'
import { Table, Input, Popconfirm, Form, notification } from 'antd'
import { PlusOutlined, EditOutlined, DeleteOutlined } from '@ant-design/icons'
import { PlusOutlined, EditOutlined, DeleteOutlined, SwapOutlined } from '@ant-design/icons'
import Utils from '@/utils/utils.js'
import FileUpload from '@/tabviews/zshare/fileupload'
@@ -258,6 +258,7 @@
        ) : (
          <div className={'operation-btn' + (editingKey !== '' ? ' disabled' : '')}>
            <span className="primary" onClick={() => {editingKey === '' && this.edit(record.key)}}><EditOutlined /></span>
            <span className="hide-control" title="显示/隐藏" onClick={() => {editingKey === '' && this.handleHide(record.key)}}><SwapOutlined /></span>
            {editingKey === '' ? <Popconfirm
              overlayClassName="popover-confirm"
              title={this.props.dict['model.query.delete']}
@@ -360,6 +361,20 @@
    this.setState({ editingKey: key })
  }
  handleHide = (key) => {
    let _data = this.state.data.map(item => {
      if (item.key === key) {
        item.Hide = !item.Hide
      }
      return item
    })
    this.setState({
      data: _data
    }, () => {
      this.props.onChange(_data)
    })
  }
  moveRow = (dragIndex, hoverIndex) => {
    const { editingKey } = this.state
    let _data = fromJS(this.state.data).toJS()
@@ -418,7 +433,7 @@
              rowKey="key"
              dataSource={this.state.data}
              columns={columns}
              rowClassName="editable-row"
              rowClassName={(record) => record.Hide ? 'editable-row hide' : 'editable-row'}
              onRow={(record, index) => ({
                index,
                moveAble: !this.state.editingKey,
src/templates/zshare/modalform/datatable/index.scss
@@ -28,6 +28,11 @@
      }
    }
  }
  .editable-row.hide {
    td:not(:last-child) {
      text-decoration: line-through;
    }
  }
  .operation-btn {
    font-size: 16px;
    text-align: center;
@@ -41,6 +46,9 @@
    .primary {
      color: #1890ff;
    }
    .hide-control {
      color: rgb(142, 68, 173);
    }
    .danger {
      color: #ff4d4f;
    }
@@ -52,6 +60,9 @@
    .primary {
      color: rgba(0, 0, 0, .25);
    }
    .hide-control {
      color: rgba(0, 0, 0, .25);
    }
    .danger {
      color: rgba(0, 0, 0, .25);
    }
src/templates/zshare/modalform/modaleditable/index.jsx
@@ -222,6 +222,20 @@
    })
  }
  handleHide = (record) => {
    let _data = this.state.dataSource.map(item => {
      if (item.key === record.key) {
        item.Hide = !item.Hide
      }
      return item
    })
    this.setState({
      dataSource: _data
    }, () => {
      this.props.onChange(_data)
    })
  }
  handleDelete = key => {
    const { dataSource } = this.state
    let _data = dataSource.filter(item => item.key !== key)
@@ -336,6 +350,7 @@
            <div style={{fontSize: '15px'}}>
              <span className="operation-btn" onClick={() => this.handleUpDown(record, 'up')} style={{color: '#1890ff'}}><ArrowUpOutlined /></span>
              <span className="operation-btn" onClick={() => this.handleUpDown(record, 'down')} style={{color: '#ff4d4f'}}><ArrowDownOutlined /></span>
              <span className="operation-btn" title="显示/隐藏" onClick={() => this.handleHide(record)} style={{color: 'rgb(142, 68, 173)'}}><SwapOutlined /></span>
              <Popconfirm
                title="确定删除吗?"
                overlayClassName="popover-confirm"
@@ -420,7 +435,7 @@
        <PlusOutlined className="add-row" onClick={this.handleAdd} />
        <Table
          components={components}
          rowClassName={() => 'editable-row'}
          rowClassName={(record) => record.Hide ? 'editable-row hide' : 'editable-row'}
          bordered
          dataSource={dataSource}
          columns={columns}
src/templates/zshare/modalform/modaleditable/index.scss
@@ -37,9 +37,12 @@
    }
  }
  .operation-btn {
    margin-right: 15px;
    margin-right: 10px;
    cursor: pointer;
  }
  .editable-row.hide {
    text-decoration: line-through;
  }
  .ant-form-explain {
    font-size: 12px;
  }
src/utils/utils-custom.js
@@ -511,6 +511,35 @@
  }
  /**
   * @description 重置菜单配置,页面整体复制
   * @return {String}  components 配置信息
   */
  static getFloor = (id) => {
    let floor = 1
    let finish = false
    let reCheck = (components, f) => {
      components.forEach(item => {
        if (finish) return
        if (item.type === 'tabs') {
          if (item.uuid === id) {
            floor = f
            finish = true
          } else {
            item.subtabs.forEach(tab => {
              reCheck(tab.components, f + 1)
            })
          }
        }
      })
    }
    reCheck(window.GLOB.customMenu.components, 1)
    return floor
  }
  /**
   * @description 数据源名称,用于统一查询
   * @return {String}  name
   */
src/views/mobdesign/index.jsx
@@ -1464,6 +1464,15 @@
  insert = (item) => {
    let config = fromJS(this.state.config).toJS()
    if (item.type === 'search') {
      notification.warning({
        top: 92,
        message: '移动端搜索组件不可粘贴!',
        duration: 5
      })
      return
    }
    if (item.type === 'topbar') {
      if (config.components.findIndex(m => m.type === 'topbar') > -1) {
        notification.warning({