king
2023-07-12 f724c64b419f148985c0bd5a1153e3fc7d84b9e6
Merge branch 'develop'
70个文件已修改
37个文件已删除
9720 ■■■■■ 已修改文件
config/webpack.config.js 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/index.html 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/manifest.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/breadview/index.jsx 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/tabview/index.jsx 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/index.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/calendar/index.jsx 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/cardcellcomponent/dragaction/action.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/cardcellcomponent/dragaction/card.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/cardcomponent/index.jsx 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/data-card/index.jsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/doublecardcomponent/index.jsx 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/form/formaction/actionform/index.jsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/form/formaction/formconfig.jsx 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/form/formaction/index.scss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/form/simple-form/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/group/groupcomponents/card.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/actioncomponent/actionform/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/actioncomponent/formconfig.jsx 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/table/base-table/columns/index.jsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/tabs/tabcomponents/card.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/menushell/card.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/stylecontroller/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mob/components/formdragelement/index.scss 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mob/components/tabs/tabcomponents/card.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mob/mobshell/card.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pc/menushell/card.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/calendar/index.jsx 590 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/calendar/index.scss 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/calendar/board/index.jsx 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/calendar/board/index.scss 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/calendar/index.jsx 93 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/balcony/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/cardcellList/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/data-card/index.jsx 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/double-data-card/index.jsx 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/prop-card/index.jsx 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/table-card/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/tableHeader/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/carousel/data-card/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/carousel/prop-card/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/chart/antv-X6/index.jsx 124 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/chart/antv-bar-line/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/chart/antv-scatter/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/chart/custom-chart/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/form/simple-form/index.jsx 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/form/simple-form/index.scss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/form/step-form/index.jsx 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/form/step-form/index.scss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/form/tab-form/index.jsx 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/form/tab-form/index.scss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/group/normal-group/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/share/tabtransfer/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/table/base-table/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/table/edit-table/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/table/normal-table/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/timeline/normal-timeline/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/tree/antd-tree/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/popview/index.jsx 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/formtab/actionList/index.jsx 368 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/formtab/actionList/index.scss 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/formtab/formgroup/index.jsx 725 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/formtab/formgroup/index.scss 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/formtab/index.jsx 663 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/formtab/index.scss 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/excelInbutton/index.jsx 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/exceloutbutton/index.jsx 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/funczip/index.jsx 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/normalbutton/index.jsx 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/popupbutton/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/popupbutton/index.scss 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/printbutton/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/calendar/index.jsx 398 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/calendar/index.scss 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/calendarconfig/calcomponent/calendarform/index.jsx 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/calendarconfig/calcomponent/calendarform/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/calendarconfig/calcomponent/index.jsx 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/calendarconfig/calcomponent/index.scss 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/calendarconfig/index.jsx 842 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/calendarconfig/index.scss 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/calendarconfig/source.jsx 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/calendarconfig/tabcomponent/index.jsx 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/calendarconfig/tabcomponent/index.scss 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/calendarconfig/tabcomponent/tabform/index.jsx 230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/calendarconfig/tabcomponent/tabform/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/actionform/index.jsx 442 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/actionform/index.scss 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/dragelement/card.jsx 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/dragelement/index.jsx 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/dragelement/index.scss 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/dragelement/itemtypes.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/dragelement/source.jsx 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/groupform/index.jsx 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/groupform/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/index.jsx 1771 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/index.scss 394 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/settingform/index.jsx 361 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/settingform/index.scss 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/source.jsx 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/transferform/index.jsx 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/transferform/index.scss 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/treepageconfig/updatetable/index.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/option.js 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basedesign/index.jsx 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/billprint/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
config/webpack.config.js
@@ -49,6 +49,14 @@
const cssModuleRegex = /\.module\.css$/;
const sassRegex = /\.(scss|sass)$/;
const sassModuleRegex = /\.module\.(scss|sass)$/;
const sign = (() => {
  let uuid = []
  let options = '0123456789abcdefghigklmnopqrstuv'
  for (let i = 0; i < 8; i++) {
    uuid.push(options.substr(Math.floor(Math.random() * 0x20), 1))
  }
  return uuid.join('')
})()
// src => @
function resolves(dir) {
@@ -175,14 +183,14 @@
      // In development, it does not produce real files.
      // contenthash => hash
      filename: isEnvProduction
        ? 'static/js/[name].[hash:8].js'
        ? `static/js/[name].${sign}.js`
        : isEnvDevelopment && 'static/js/bundle.js',
      // TODO: remove this when upgrading to webpack 5
      futureEmitAssets: true,
      // There are also additional JS chunk files if you use code splitting.
      // contenthash => hash
      chunkFilename: isEnvProduction
        ? 'static/js/[name].[hash:8].chunk.js'
        ? `static/js/[name].${sign}.chunk.js`
        : isEnvDevelopment && 'static/js/[name].chunk.js',
      // We inferred the "public path" (such as / or /my-project) from homepage.
      // We use "/" in development.
@@ -354,7 +362,7 @@
              loader: require.resolve('url-loader'),
              options: {
                limit: imageInlineSizeLimit,
                name: 'static/media/[name].[hash:8].[ext]',
                name: `static/media/[name].${sign}.[ext]`,
              },
            },
            // Process application JS with Babel.
@@ -494,7 +502,7 @@
              // by webpacks internal loaders.
              exclude: [/\.(js|mjs|jsx|ts|tsx)$/, /\.html$/, /\.json$/],
              options: {
                name: 'static/media/[name].[hash:8].[ext]',
                name: `static/media/[name].${sign}.[ext]`,
              },
            },
            // ** STOP ** Are you adding a new loader?
@@ -568,8 +576,8 @@
          // Options similar to the same options in webpackOptions.output
          // both options are optional
          // contenthash => hash
          filename: 'static/css/[name].[hash:8].css',
          chunkFilename: 'static/css/[name].[hash:8].chunk.css',
          filename: `static/css/[name].${sign}.css`,
          chunkFilename: `static/css/[name].${sign}.chunk.css`,
        }),
      // Generate a manifest file which contains a mapping of all asset filenames
      // to their corresponding output file so that tools can pick it up without
public/index.html
@@ -3,12 +3,62 @@
  <head>
    <meta charset="utf-8" />
    <meta name="renderer" content="webkit">
    <!-- <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" /> -->
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="theme-color" content="#000000" />
    <link rel="shortcut icon" href="#">
    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
    <title></title>
    <script>
      let _href = window.location.href.split('#')[0]
      let l_version = localStorage.getItem(_href + 'version')
      let _ctime = parseInt(new Date().getTime() / 1000)
      let _time = ''
      if (l_version) {
        let vers = l_version.split('-')
        l_version = vers[0]
        _time = +vers[1]
      }
      if (_time && _ctime - _time < 180) {
        let meta1 = document.createElement('meta')
        let meta2 = document.createElement('meta')
        let meta3 = document.createElement('meta')
        let meta4 = document.createElement('meta')
        meta1.content = '0'
        meta1.httpEquiv = 'Expires'
        meta2.content = 'no-cache'
        meta2.httpEquiv = 'Pragma'
        meta3.content = 'no-cache'
        meta3.httpEquiv = 'Cache-Control'
        meta4.content = 'no-cache'
        meta4.httpEquiv = 'Cache'
        document.getElementsByTagName('head')[0].appendChild(meta1)
        document.getElementsByTagName('head')[0].appendChild(meta2)
        document.getElementsByTagName('head')[0].appendChild(meta3)
        document.getElementsByTagName('head')[0].appendChild(meta4)
      } else {
        fetch('./manifest.json', { cache: 'no-cache'})
          .then(response => response.json())
          .then(res => {
            if (res && res.mk_version) {
              let version = res.mk_version
              let nocache = false
              if (l_version && version !== l_version) {
                nocache = true
                localStorage.setItem(_href + 'version', version + '-' + _ctime)
              } else if (!l_version) {
                localStorage.setItem(_href + 'version', version + '-' + (_ctime - 360))
              }
              if (nocache) {
                window.location.reload()
              }
            }
          })
      }
    </script>
  </head>
  <body>
    <noscript>You need to enable JavaScript to run this app.</noscript>
public/manifest.json
@@ -5,5 +5,6 @@
  "start_url": ".",
  "display": "standalone",
  "theme_color": "#000000",
  "background_color": "#ffffff"
  "background_color": "#ffffff",
  "mk_version": "20230712"
}
src/components/breadview/index.jsx
@@ -18,7 +18,6 @@
const TreePage = asyncComponent(() => import('@/tabviews/treepage'))
const Iframe = asyncComponent(() => import('@/tabviews/iframe'))
const RoleManage = asyncComponent(() => import('@/tabviews/rolemanage'))
const FormTab = asyncComponent(() => import('@/tabviews/formtab'))
moment.locale('zh-cn')
@@ -100,8 +99,6 @@
      return (<CommonTable MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} param={view.param} changeTemp={this.changeTemp}/>)
    } else if (view.type === 'TreePage') {
      return (<TreePage MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} param={view.param}/>)
    } else if (view.type === 'FormTab') {
      return (<FormTab MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} param={view.param}/>)
    } else if (view.type === 'iframe') {
      return (<Iframe MenuID={view.MenuID} title={view.MenuName} url={view.src}/>)
    } else {
src/components/tabview/index.jsx
@@ -8,7 +8,7 @@
import 'moment/locale/zh-cn'
import asyncComponent from '@/utils/asyncLoadComponent'
// import NotFount from '@/components/404'
import NotFount from '@/components/404'
import options from '@/store/options.js'
import MKEmitter from '@/utils/events.js'
import Api from '@/api'
@@ -21,8 +21,6 @@
const TreePage = asyncComponent(() => import('@/tabviews/treepage'))
const Iframe = asyncComponent(() => import('@/tabviews/iframe'))
const RoleManage = asyncComponent(() => import('@/tabviews/rolemanage'))
const FormTab = asyncComponent(() => import('@/tabviews/formtab'))
const Calendar = asyncComponent(() => import('@/tabviews/calendar'))
moment.locale('zh-cn')
@@ -208,13 +206,10 @@
      return (<TreePage MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} param={view.param}/>)
    } else if (view.type === 'RolePermission') {
      return (<RoleManage MenuID={view.MenuID}/>)
    } else if (view.type === 'FormTab') {
      return (<FormTab MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} param={view.param}/>)
    } else if (view.type === 'iframe') {
      return (<Iframe MenuID={view.MenuID} title={view.MenuName} url={view.src}/>)
    } else {
      return (<Calendar MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} param={view.param}/>)
      // return (<NotFount />)
      return (<NotFount />)
    }
  }
src/index.js
@@ -8,7 +8,6 @@
import options, { styles } from '@/store/options.js'
import '@/assets/css/main.scss'
import '@/assets/css/action.scss'
// import '@/assets/css/minkeicon.css'
import '@/assets/css/viewstyle.scss'
if (window.location.href.indexOf('#/design') > -1) { // 编辑页面刷新时,跳转至主页
@@ -45,8 +44,6 @@
}
sessionStorage.removeItem('isEditState')
// 新系统文件置于admin中 ../options.json , { cache: 'no-cache'}
fetch('../options.json')
  .then(response => response.json())
@@ -159,7 +156,6 @@
    }
    let _href = window.location.href.split('#')[0]
    let _systemMsg = localStorage.getItem(_href + 'system')
    GLOB.navBar = 'shutter' // 默认为百叶窗
src/menu/components/calendar/index.jsx
@@ -175,9 +175,9 @@
    res.resetContrl = card.wrap.resetContrl || 'init'
    if (res.colorField && res.signs) {
      res.signs = res.signs.map(item => {
      res.signs = res.signs.map((item, i) => {
        try {
          let colors = item.color.match(/\d+/g)
          let colors = item.background.match(/\d+/g)
          if ((colors[0] * 0.299 + colors[1] * 0.578 + colors[2] * 0.114) * colors[3] < 192) {
            item.fontColor = '#ffffff'
          } else {
@@ -187,6 +187,13 @@
          item.fontColor = ''
        }
        item.style = {background: item.background}
        if (item.fontColor) {
          item.style.color = item.fontColor
        }
        item.$index = i + 1
        return item
      })
    }
src/menu/components/card/cardcellcomponent/dragaction/action.jsx
@@ -75,6 +75,8 @@
  if (card.style && card.style.clear === 'left') {
    _style_ = {clear: 'left'}
  } else if (card.style && card.style.clear === 'right') {
    _style_ = {float: 'right'}
  }
  let className = card.width || ''
src/menu/components/card/cardcellcomponent/dragaction/card.jsx
@@ -215,6 +215,8 @@
  if (card.style && card.style.clear === 'left') {
    _style_ = {clear: 'left'}
  } else if (card.style && card.style.clear === 'right') {
    _style_ = {float: 'right'}
  }
  let tableHCell = false
src/menu/components/card/cardcomponent/index.jsx
@@ -157,7 +157,7 @@
    const { card, side } = this.state
    let _style = null
    let options = ['height', 'background', 'border', 'padding', 'margin', 'shadow']
    let options = ['height', 'background', 'border', 'padding', 'margin', 'shadow', 'clear']
    if (side === 'front') {
      _style = card.style ? fromJS(card.style).toJS() : {}
    } else if (side === 'back') {
@@ -378,8 +378,16 @@
      tablerole = ' mk-table-header'
    }
    let _style_ = null
    if (card.style.clear === 'left') {
      _style_ = {clear: 'left'}
    } else if (card.style.clear === 'right') {
      _style_ = {float: 'right'}
    }
    return (
      <Col span={card.setting.width || 6}>
      <Col span={card.setting.width || 6} style={_style_}>
        <div className={'card-item ' + (card.setting.btnControl || '') + checkAll + tablerole} style={_style} onDoubleClick={(e) => {e.stopPropagation(); this.doubleClickCard()}} id={card.uuid}>
          <span className="circle-select"></span>
          <CardCellComponent cards={cards} cardCell={card} side={side} elements={elements} updateElement={this.updateCard}/>
src/menu/components/card/data-card/index.jsx
@@ -313,8 +313,12 @@
        }
      }
      MKEmitter.emit('changeModal', card, btn)
    } else if (btn.OpenType === 'popview' && appType !== 'mob') {
      MKEmitter.emit('changePopview', card, btn)
    } else if (btn.OpenType === 'popview') {
      if (appType === 'mob') {
        message.warning('滑动按钮不支持弹窗页面!')
      } else {
        MKEmitter.emit('changePopview', card, btn)
      }
    }
  }
src/menu/components/card/doublecardcomponent/index.jsx
@@ -127,6 +127,7 @@
    if (type === 'sub') {
      _style = fromJS(card.backStyle).toJS()
    } else {
      options.push('clear')
      _style = fromJS(card.style).toJS()
    }
@@ -264,8 +265,16 @@
      mainBox = 'flex-card '
    }
    let _style_ = null
    if (card.style.clear === 'left') {
      _style_ = {clear: 'left'}
    } else if (card.style.clear === 'right') {
      _style_ = {float: 'right'}
    }
    return (
      <Col span={card.setting.width || 24}>
      <Col span={card.setting.width || 24} style={_style_}>
        <div className="card-item-wrap" style={_wrapStyle}>
          <div className={`card-item ${card.setting.btnControl || ''} ${checkAll} mk-${card.setting.display} ${mainBox}`} style={_style} onDoubleClick={(e) => {e.stopPropagation(); this.doubleClickCard()}} id={card.uuid}>
            <span className="circle-select"></span>
src/menu/components/form/formaction/actionform/index.jsx
@@ -51,13 +51,13 @@
    let reReadonly = {}
    if (this.record.type === 'prev') {
      shows = ['type', 'label', 'enable', 'actionType']
      shows = ['typeName', 'label', 'actionType']
    } else if (this.record.type === 'next') {
      shows = ['type', 'label', 'enable', 'actionType']
      shows = ['typeName', 'label', 'actionType']
    } else if (this.record.type === 'close') {
      shows = ['type', 'label', 'enable']
      shows = ['typeName', 'label']
    } else {
      shows = ['type', 'label', 'intertype', 'Ot', 'execSuccess', 'syncComponent', 'anchors', 'linkmenu', 'enable', 'output', 'reload'] // 选项列表
      shows = ['typeName', 'label', 'intertype', 'Ot', 'execSuccess', 'syncComponent', 'anchors', 'linkmenu', 'output', 'reload'] // 选项列表
      
      if (this.record.intertype === 'custom') {
        shows.pop()
src/menu/components/form/formaction/formconfig.jsx
@@ -6,6 +6,7 @@
export function getActionForm (card, functip, tableName, usefulFields, modules, anchors) {
  const appType = sessionStorage.getItem('appType')
  let viewType = sessionStorage.getItem('editMenuType') // 弹窗 popview
  let _type = '提交'
  if (card.type === 'prev') {
    _type = '上一步'
@@ -42,10 +43,29 @@
    }
  }
  let refresh = []
  if (viewType === 'popview') { // 弹窗标签
    refresh.push({
      value: 'closepoptab', // 关闭弹窗标签
      text: '关闭弹窗'
    })
    refresh.push({
      value: 'popclose',  // 执行弹窗关闭时的刷新
      text: '刷新源组件'
    })
  }
  return [
    {
      type: 'tip',
      key: 'type',
      label: '按钮类型',
      initVal: card.type,
      forbid: true
    },
    {
      type: 'tip',
      key: 'typeName',
      label: '按钮类型',
      initVal: _type
    },
@@ -310,7 +330,7 @@
      }, {
        value: 'mainline',
        text: '刷新上级组件 - 行'
      }]
      }, ...refresh]
    },
    {
      type: (appType === 'pc' || appType === 'mob') ? 'select' : 'cascader',
src/menu/components/form/formaction/index.scss
@@ -10,6 +10,7 @@
  .submit {
    border: none;
    height: auto;
    border-style: solid;
  }
  .skip {
    color: rgba(0, 0, 0, 0.85);
src/menu/components/form/simple-form/index.jsx
@@ -69,7 +69,7 @@
        scripts: [],
        subcards: [{
          uuid: Utils.getuuid(),
          setting: {title: '空', align: 'left_right', enable: 'true'},
          setting: {title: '', align: 'left_right', enable: 'true'},
          style: {},
          fields: [],
          subButton: {label: '提交', type: 'submit', intertype: 'system', reload: 'false', sqlType: 'update', sql: '', Ot: 'notRequired', execSuccess: 'never', enable: 'true', style: {backgroundColor: '#1890ff', color: '#ffffff', paddingLeft: '25px', paddingRight: '25px', paddingTop: '5px', paddingBottom: '5px'}},
src/menu/components/group/groupcomponents/card.jsx
@@ -64,6 +64,8 @@
  if (card.style && card.style.clear === 'left') {
    style.clear = 'left'
  } else if (card.style && card.style.clear === 'right') {
    style.float = 'right'
  }
  const getCardComponent = () => {
src/menu/components/share/actioncomponent/actionform/index.jsx
@@ -388,6 +388,8 @@
        shows.push('placement')
      } else if (this.record.display === 'drawer') {
        shows.push('placement')
      } else if (this.record.display === 'modal') {
        shows.push('popshow')
      }
      if (this.record.popClose === 'grid') {
        shows.push('resetPageIndex')
src/menu/components/share/actioncomponent/formconfig.jsx
@@ -961,6 +961,22 @@
    },
    {
      type: 'radio',
      key: 'popshow',
      label: '弹窗展示',
      initVal: card.popshow || 'default',
      tooltip: '小窗口展示将隐藏标题及底部按钮。',
      required: false,
      options: [{
        value: 'default',
        text: '默认'
      }, {
        value: 'miniview',
        text: '小窗口'
      }],
      forbid: appType === 'mob'
    },
    {
      type: 'radio',
      key: 'maskStyle',
      label: '蒙层样式',
      initVal: card.maskStyle || 'default',
@@ -1939,6 +1955,21 @@
      }]
    },
    {
      type: 'radio',
      key: 'popshow',
      label: '弹窗展示',
      initVal: card.popshow || 'default',
      tooltip: '小窗口展示将隐藏标题及底部按钮。',
      required: false,
      options: [{
        value: 'default',
        text: '默认'
      }, {
        value: 'miniview',
        text: '小窗口'
      }]
    },
    {
      type: 'text',
      key: 'preFunc',
      label: '前置函数',
src/menu/components/table/base-table/columns/index.jsx
@@ -326,7 +326,13 @@
      col.label = '序号'
    }
    _columns.splice(hoverIndex, 0, col)
    let hIndex = +hoverIndex
    if (_columns.length > 0 && hIndex + 1 === _columns.length) {
      _columns.push(col)
    } else {
      _columns.splice(hIndex, 0, col)
    }
    this.setState({
      columns: _columns
src/menu/components/tabs/tabcomponents/card.jsx
@@ -67,6 +67,8 @@
  if (card.style && card.style.clear === 'left') {
    style.clear = 'left'
  } else if (card.style && card.style.clear === 'right') {
    style.float = 'right'
  }
  const getCardComponent = () => {
src/menu/menushell/card.jsx
@@ -70,6 +70,8 @@
  if (card.style && card.style.clear === 'left') {
    style.clear = 'left'
  } else if (card.style && card.style.clear === 'right') {
    style.float = 'right'
  }
  const getCardComponent = () => {
src/menu/stylecontroller/index.jsx
@@ -953,6 +953,7 @@
                    <Radio.Group style={{whiteSpace: 'nowrap'}} defaultValue={card.clear || 'none'} onChange={(e) => this.changeNormalStyle(e.target.value, 'clear')}>
                      <Radio value="none">左浮动</Radio>
                      <Radio value="left">不浮动</Radio>
                      <Radio value="right">右浮动</Radio>
                    </Radio.Group>
                  </Form.Item>
                </Col>
src/mob/components/formdragelement/index.scss
@@ -8,8 +8,10 @@
    padding-left: 0px;
    padding-right: 0px;
  }
  >.ant-col:not(.ant-col-24) {
  >.ant-col {
    padding-right: 10px;
  }
  >.ant-col:not(.ant-col-24) {
    .am-list-line .am-input-label {
      width: auto;
      padding-right: 10px;
src/mob/components/tabs/tabcomponents/card.jsx
@@ -63,6 +63,8 @@
  if (card.style && card.style.clear === 'left') {
    style.clear = 'left'
  } else if (card.style && card.style.clear === 'right') {
    style.float = 'right'
  }
  const getCardComponent = () => {
src/mob/mobshell/card.jsx
@@ -70,6 +70,8 @@
  if (card.style && card.style.clear === 'left') {
    style.clear = 'left'
  } else if (card.style && card.style.clear === 'right') {
    style.float = 'right'
  }
  let col = 'ant-col-' + (card.width || 24)
src/pc/menushell/card.jsx
@@ -69,6 +69,8 @@
  if (card.style && card.style.clear === 'left') {
    style.clear = 'left'
  } else if (card.style && card.style.clear === 'right') {
    style.float = 'right'
  }
  
  let col = ' ant-col ant-col-' + (card.width || 24)
src/tabviews/calendar/index.jsx
File was deleted
src/tabviews/calendar/index.scss
File was deleted
src/tabviews/custom/components/calendar/board/index.jsx
@@ -1,10 +1,11 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import { Select, Radio, Row, Col } from 'antd'
import { Select, Radio, Row, Col, Popover, Badge } from 'antd'
import moment from 'moment'
import 'moment/locale/zh-cn'
import MKEmitter from '@/utils/events.js'
import './index.scss'
const { Option } = Select
@@ -55,16 +56,53 @@
  }
  UNSAFE_componentWillReceiveProps(nextProps) {
    if (!is(fromJS(this.props.config.wrap), fromJS(nextProps.config.wrap))) {
    const { datelist } = this.state
    if (!is(fromJS(this.props.data), fromJS(nextProps.data))) {
      this.setState({
        levels: nextProps.config.wrap.levels,
        level: nextProps.config.wrap.levels[0]
        datelist: this.mountdata(datelist, nextProps.data)
      })
    }
  }
  shouldComponentUpdate (nextProps, nextState) {
    return !is(fromJS(this.state), fromJS(nextState))
  }
  mountdata = (datelist, data) => {
    return fromJS(datelist).toJS().map(month => {
      month.subData = []
      data.forEach(item => {
        if (item.$startM <= month.time && item.$endM >= month.time) {
          month.subData.push(item)
        }
      })
      month.children = month.children.map(week => {
        week.children = week.children.map(day => {
          if (day.$disable) return day
          day.subData = []
          day.style = null
          day.$level = 100
          data.forEach(item => {
            if (item.$start <= day.time && item.$end >= day.time) {
              day.subData.push(item)
              if (!day.style) {
                day.style = item.$style
                day.$level = item.$level
              } else if (item.$level < day.$level) {
                day.style = item.$style
                day.$level = item.$level
              }
            }
          })
          return day
        })
        return week
      })
      return month
    })
  }
  getNongLi = (nyear, nmonth, nday, week) => {
@@ -307,7 +345,7 @@
  
          let item = {
            day: _day,
            time: times[0] + times[1] + _day,
            time: +(times[0] + times[1] + _day),
            label: _day,
            subData: [],
            $disable: true,
@@ -323,7 +361,7 @@
        let item = {
          day: _day,
          time: selectYear + month + _day,
          time: +(selectYear + month + _day),
          label: i,
          subData: [],
          ...nl
@@ -348,7 +386,7 @@
  
        let item = {
          day: _day,
          time: times[0] + times[1] + _day,
          time: +(times[0] + times[1] + _day),
          label: i,
          subData: [],
          $disable: true,
@@ -366,7 +404,7 @@
      datelist.push({
        month: month,
        time: selectYear + month,
        time: +(selectYear + month),
        label: monthName[month],
        children: _weeklist,
        subData: []
@@ -381,11 +419,19 @@
  }
  yearChange = (value) => {
    const { data } = this.props
    const { selectMonth } = this.state
    let datelist = this.getDateList(value)
    if (data.length > 0) {
      datelist = this.mountdata(datelist, data)
    }
    let monthlist = datelist.filter(item => item.month === selectMonth)[0].children.filter(cell => !cell.children[0].$disable || !cell.children[6].$disable)
    this.setState({ selectYear: value, datelist, monthlist })
    this.props.yearChange(value)
  }
  monthChange = (value) => {
@@ -402,12 +448,86 @@
    })
  }
  triggerDay = (d) => {
    const { config } = this.props
    if (!config.setting.linkbtn) return
    let id = d.time + ''
    id = id.substr(0, 4) + '-' + id.substr(4, 2) + '-' + id.substr(6)
    MKEmitter.emit('triggerBtnId', config.setting.linkbtn, [{$$uuid: id}])
  }
  openView = (data, e) => {
    const { config } = this.props
    if (!config.wrap.click) return
    e && e.stopPropagation()
    if (config.wrap.click === 'menus') {
      let menu = null
      if (config.wrap.menus && config.wrap.menus.length > 0) {
        let s = data[config.wrap.menuType] + ''
        config.wrap.menus.forEach(m => {
          if (s !== m.sign) return
          menu = m
        })
      }
      if (!menu) return
      let newtab = {
        MenuID: menu.MenuID,
        MenuName: menu.MenuName,
        MenuNo: menu.MenuNo || '',
        type: menu.tabType,
        param: {$BID: data.$$uuid || ''}
      }
      Object.keys(data).forEach(key => {
        if (/^\$/.test(key)) return
        newtab.param[key] = data[key]
      })
      MKEmitter.emit('modifyTabs', newtab, true)
    } else if (config.wrap.click === 'menu') {
      let menuId = config.wrap.MenuID || config.wrap.menu.slice(-1)[0]
      let menu = window.GLOB.mkThdMenus.filter(m => m.MenuID === menuId)[0]
      if (!menu && config.wrap.MenuName && config.wrap.tabType) {
        menu = {
          MenuID: menuId,
          MenuName: config.wrap.MenuName,
          MenuNo: config.wrap.MenuNo || '',
          type: config.wrap.tabType
        }
      }
      if (!menu) return
      let newtab = {
        ...menu,
        param: {$BID: data.$$uuid || ''}
      }
      Object.keys(data).forEach(key => {
        if (/^\$/.test(key)) return
        newtab.param[key] = data[key]
      })
      MKEmitter.emit('modifyTabs', newtab, true)
    }
  }
  render() {
    const { config } = this.props
    const { level, selectYear, selectMonth, yearlist, levels, datelist, monthlist } = this.state
    const _levelName = {day: '日', month: '月', year: '年'}
    return (
      <div className="mk-calendar">
      <div className={'mk-calendar' + (config.setting.linkbtn ? ' open-pop' : '') + (config.wrap.click ? ' open-menu' : '')}>
        <div className="mk-calendar-control">
          <Select value={selectYear} onChange={this.yearChange}>
            {yearlist.map(item => (<Option key={item} value={item}>{item}年</Option>))}
@@ -448,8 +568,23 @@
                      <tr key={m}>
                        {cell.children.map((d, i) => (
                          <td key={i}>
                            <div className={'day-wrap' + (d.$disable ? ' disabled' : '')}>
                              {d.label}
                            <div style={d.style} className={'day-wrap' + (d.$disable ? ' disabled' : '')} onClick={() => !d.$disable && this.triggerDay(d)}>
                              {d.subData.length > 0 ? <Popover mouseEnterDelay={0.3} overlayClassName={'calendar-day-pop' + (config.wrap.click ? ' open-menu' : '')} content={
                                <div onClick={(e) => e.stopPropagation()}>
                                  {d.subData.map((data, index) => (
                                    <div key={index} className="message" onClick={() => this.openView(data)}>
                                      <Badge color={data.$color} text={
                                        <span>
                                          {data.$message}
                                          <span style={{color: 'rgba(0,0,0,.45)'}}>({data.$startTime + ' ~ ' + data.$endTime})</span>
                                        </span>}
                                      />
                                    </div>
                                  ))}
                                </div>
                              } trigger="hover">
                                {d.label}
                              </Popover> : d.label}
                            </div>
                          </td>
                        ))}
@@ -472,7 +607,7 @@
                  <tr key={m}>
                    {cell.children.map((d, i) => (
                      <td key={i}>
                        <div className={'month-wrap' + (d.$disable ? ' disabled' : '')}>
                        <div className={'month-wrap' + (d.$disable ? ' disabled' : '')} onClick={() => !d.$disable && this.triggerDay(d)}>
                          <div className="header">
                            <div className="message">
                              {d.label}
@@ -483,7 +618,13 @@
                              <span className="right">{d.jr}</span>
                            </div>
                          </div>
                          <ul className="content"></ul>
                          <ul className="content">
                            {d.subData.map((data, index) => (
                              <li key={index} className="message" onClick={(e) => this.openView(data, e)}>
                                <Badge color={data.$color} text={data.$message} />
                              </li>
                            ))}
                          </ul>
                        </div>
                      </td>
                    ))}
@@ -499,7 +640,13 @@
                  <div className="header">
                    {item.label}
                  </div>
                  <ul className="content"></ul>
                  <ul className="content">
                    {item.subData.map((data, index) => (
                      <li key={index} className="message" onClick={() => this.openView(data)}>
                        <Badge color={data.$color} text={`${data.$message} (${data.$startTime} ~ ${data.$endTime})`}/>
                      </li>
                    ))}
                  </ul>
                </div>
              </Col>
            ))}
src/tabviews/custom/components/calendar/board/index.scss
@@ -111,15 +111,28 @@
                }
                .content {
                  padding: 0 10px 10px;
                  height: 70px;
                  height: 55px;
                  overflow-y: auto;
                  position: absolute;
                  left: 0;
                  right: 0;
                  .message {
                    width: 100%;
                    white-space: nowrap;
                    overflow: hidden;
                    .ant-badge {
                      width: 100%;
                    }
                    .ant-badge-status-text {
                      color: inherit;
                      font-size: 13px;
                      width: calc(100% - 15px);
                      overflow: hidden;
                      word-break: break-word;
                      white-space: nowrap;
                      text-overflow: ellipsis;
                      height: 21px;
                      display: inline-block;
                      vertical-align: top;
                    }
                  } 
                }
@@ -163,7 +176,6 @@
      .year-wrap {
        width: calc(100% - 2px);
        box-shadow: 0px 0px 3px var(--mk-sys-color2);
        cursor: pointer;
        transition: background 0.1s;
        .header {
          text-align: center;
@@ -182,7 +194,20 @@
            width: 100%;
            overflow: hidden;
            margin-bottom: 5px;
            text-overflow: ellipsis;
            .ant-badge {
              width: 100%;
            }
            .ant-badge-status-text {
              font-size: 13px;
              width: calc(100% - 15px);
              overflow: hidden;
              word-break: break-word;
              white-space: nowrap;
              text-overflow: ellipsis;
              height: 21px;
              display: inline-block;
              vertical-align: top;
            }
          } 
        }
        .content::-webkit-scrollbar {
@@ -206,6 +231,28 @@
    }
  }
}
.mk-calendar:not(.open-pop) {
  .day-wrap {
    cursor: default!important;
  }
  .month-wrap {
    cursor: default!important;
  }
}
.mk-calendar.open-menu {
  .month-wrap, .year-wrap {
    .content {
      .message {
        cursor: pointer;
      }
    }
  }
}
.calendar-day-pop.open-menu {
  .message {
    cursor: pointer;
  }
}
.calendar-day-pop {
  .message {
    .ant-badge-status-text {
@@ -215,10 +262,17 @@
      vertical-align: middle;
    }
  }
  .ant-popover-inner {
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
  }
  .ant-popover-inner-content {
    min-height: 100px;
    padding: 0px;
    min-height: 45px;
    max-height: 200px;
    overflow-y: auto;
    >div {
      padding: 12px 16px;
    }
  }
  .ant-popover-inner-content::-webkit-scrollbar {
    width: 5px;
src/tabviews/custom/components/calendar/index.jsx
@@ -8,12 +8,12 @@
import asyncComponent from '@/utils/asyncComponent'
import UtilsDM from '@/utils/utils-datamanage.js'
import MKEmitter from '@/utils/events.js'
import CalendarBoard from './board'
import './index.scss'
const NormalHeader = asyncComponent(() => import('@/tabviews/custom/components/share/normalheader'))
const MainSearch = asyncComponent(() => import('@/tabviews/zshare/topSearch'))
const PopupButton = asyncComponent(() => import('@/tabviews/zshare/actionList/popupbutton'))
const CalendarBoard = asyncComponent(() => import('./board'))
class NormalCalendar extends Component {
  static propTpyes = {
@@ -25,7 +25,7 @@
    BID: '',                   // 上级ID
    config: null,              // 图表配置信息
    loading: false,            // 数据加载状态
    data: null,                // 数据
    data: [],                // 数据
    search: '',
    year: new Date().getFullYear(),
    BData: ''
@@ -55,6 +55,16 @@
      _config.setting.$re_year = true
    }
    if (_config.wrap.colorField && (!_config.wrap.signs || _config.wrap.signs.length === 0)) {
      _config.wrap.colorField = ''
    }
    if (_config.action[0] && _config.action[0].config && _config.action[0].config.enabled) {
      _config.setting.linkbtn = _config.action[0].uuid
    } else {
      _config.action = []
    }
    this.setState({
      BID: BData ? (BData.$BID || '') : '',
      BData: BData,
@@ -81,13 +91,19 @@
      Api.getLCacheConfig(config.uuid).then(res => {
        if (!res || this.loaded) return
        this.setState({data: res.map((item, index) => {
        let data = []
        res.forEach((item, index) => {
          item.key = index
          item.$$uuid = item[config.setting.primaryKey] || ''
          item.$Index = index + 1 + ''
          return item
        })})
          let pass = this.resetLine(item)
          if (pass) {
            data.push(item)
          }
        })
        this.setState({data: data})
      })
    }
  }
@@ -196,19 +212,24 @@
        Api.writeCacheConfig(config.uuid, result.data || '')
      }
      let data = result.data.map((item, index) => {
      let data = []
      result.data.forEach((item, index) => {
        item.key = index
        item.$$uuid = item[config.setting.primaryKey] || ''
        item.$$BID = BID || ''
        return item
        let pass = this.resetLine(item)
        if (pass) {
          data.push(item)
        }
      })
      this.setState({
        data: data,
        loading: false
      })
      if (result.message) {
        if (result.ErrCode === 'Y') {
          Modal.success({
@@ -242,9 +263,57 @@
    }
  }
  resetLine = (item) => {
    const { config: { wrap } } = this.state
    let startTime = item[wrap.timeField] || ''
    let endTime = item[wrap.endField || wrap.timeField] || ''
    item.$message = item[wrap.remarkField]
    if (!/^(1|2)\d{3}(-|\/)\d{2}(-|\/)\d{2}/.test(startTime)) return false
    if (!/^(1|2)\d{3}(-|\/)\d{2}(-|\/)\d{2}/.test(endTime)) return false
    if (!item.$message) return false
    if (wrap.colorField) {
      let sign = item[wrap.colorField] || ''
      wrap.signs.forEach(cell => {
        if (cell.sign !== sign) return
        item.$style = cell.style
        item.$color = cell.background
        item.$level = cell.$index
      })
    }
    let equal = endTime.substr(0, 4) === startTime.substr(0, 4)
    item.$startM = +(startTime.substr(0, 4) + startTime.substr(5, 2))
    item.$endM = +(endTime.substr(0, 4) + endTime.substr(5, 2))
    item.$start = +(startTime.substr(0, 4) + startTime.substr(5, 2) + startTime.substr(8, 2))
    item.$end = +(endTime.substr(0, 4) + endTime.substr(5, 2) + endTime.substr(8, 2))
    item.$startTime = equal ? `${startTime.substr(5, 2)}-${startTime.substr(8, 2)}` : `${startTime.substr(0, 4)}-${startTime.substr(5, 2)}-${startTime.substr(8, 2)}`
    item.$endTime = equal ?  `${endTime.substr(5, 2)}-${endTime.substr(8, 2)}` : `${endTime.substr(0, 4)}-${endTime.substr(5, 2)}-${endTime.substr(8, 2)}`
    return true
  }
  refreshbysearch = (searches) => {
    this.setState({
      search: searches
    }, () => {
      this.loadData()
    })
  }
  yearChange = (value) => {
    const { config } = this.state
    if (!config.setting.$re_year) return
    this.setState({
      year: value
    }, () => {
      this.loadData()
    })
@@ -257,7 +326,7 @@
      <div className="normal-calendar-box" id={'anchor' + config.uuid} style={{...config.style}}>
        {loading ?
          <div className="loading-mask">
            {data ? <div className="ant-spin-blur"></div> : null}
            <div className="ant-spin-blur"></div>
            <Spin />
          </div> : null
        }
@@ -268,7 +337,7 @@
        {config.action[0] ? 
          <PopupButton disabled={false} BID={BID} btn={config.action[0]} BData={BData} setting={config.setting} selectedData={[]}/> : null
        }
        <CalendarBoard config={config} />
        <CalendarBoard config={config} data={data} yearChange={this.yearChange}/>
      </div>
    )
  }
src/tabviews/custom/components/card/balcony/index.jsx
@@ -247,10 +247,6 @@
      } else {
        this.loadData()
      }
      if (position === 'popclose') {                                      // 标签关闭刷新
        btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
      }
    }
  }
src/tabviews/custom/components/card/cardcellList/index.jsx
@@ -266,6 +266,8 @@
      if (card.style && card.style.clear === 'left') {
        _style_ = {clear: 'left'}
      } else if (card.style && card.style.clear === 'right') {
        _style_ = {float: 'right'}
      }
      if (card.eleType === 'sequence') {
src/tabviews/custom/components/card/data-card/index.jsx
@@ -95,6 +95,14 @@
        }
      }
      if (item.style.clear === 'left') {
        item.wStyle = {clear: 'left'}
      } else if (item.style.clear === 'right') {
        item.wStyle = {float: 'right'}
      }
      delete item.style.clear
      if (item.$cardType !== 'extendCard') {
        _card = item
      } else if (!_card) {
@@ -372,10 +380,6 @@
      } else {
        this.loadData(id)
      }
    }
    if (position === 'popclose') { // 执行启动弹窗的按钮所选择的刷新项
      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
@@ -1042,7 +1046,7 @@
          {switchable ? <div className={'prev-page ' + (pageIndex === 1 ? 'disabled' : '')} onClick={this.prevPage}><div><div><img src={preImg} alt=""/></div></div></div> : null}
          <Row className={'card-row-list ' + config.wrap.layout}>
            {precards.map((item, index) => (
              <Col key={'pre' + index} className="extend-card" span={item.setting.width || 6}>
              <Col key={'pre' + index} className="extend-card" style={item.wStyle} span={item.setting.width || 6}>
                {item.setting.cardRole === 'header' ? <TableHeader card={item} data={extendData} refresh={this.refreshByHeader}>
                  {item.setting.checkAll === 'show' ? <span onClick={this.checkAll} className={'circle-select' + checkAll}></span> : null}
                </TableHeader> : <CardItem card={item} cards={config} data={extendData}>
@@ -1066,7 +1070,7 @@
              }
              return (
                <Col className={className} key={index} span={card.setting.width}>
                <Col className={className} key={index} style={card.wStyle} span={card.setting.width}>
                  <CardItem card={card} cards={config} data={item} onClick={() => {this.changeCard(index, item)}}>
                    <span className="circle-select"></span>
                  </CardItem>
@@ -1074,7 +1078,7 @@
              )
            })}
            {nextcards.map((item, index) => (
              <Col key={'next' + index} className="extend-card" span={item.setting.width || 6}>
              <Col key={'next' + index} className="extend-card" style={item.wStyle} span={item.setting.width || 6}>
                {item.setting.cardRole === 'header' ? <TableHeader card={item} data={extendData} refresh={this.refreshByHeader}>
                  {item.setting.checkAll === 'show' ? <span onClick={this.checkAll} className={'circle-select' + checkAll}></span> : null}
                </TableHeader> : <CardItem card={item} cards={config} data={extendData}>
src/tabviews/custom/components/card/double-data-card/index.jsx
@@ -93,6 +93,14 @@
        }
      }
      if (item.style.clear === 'left') {
        item.wStyle = {clear: 'left'}
      } else if (item.style.clear === 'right') {
        item.wStyle = {float: 'right'}
      }
      delete item.style.clear
      if (item.$cardType !== 'extendCard') {
        _card = item
      } else if (!_card) {
@@ -320,10 +328,6 @@
      })
    } else {
      this.loadData(id)
    }
    if (position === 'popclose') { // 执行启动弹窗的按钮所选择的刷新项
      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
@@ -1042,7 +1046,7 @@
          <div className={`data-zoom ${config.wrap.wrapClass}`} style={config.wrap.minWidth ? {minWidth: config.wrap.minWidth} : null}>
            <Row className={'card-row-list '}>
              {precards.map((item, index) => (
                <Col key={'pre' + index} className="extend-card" span={item.setting.width || 6}>
                <Col key={'pre' + index} className="extend-card" style={item.wStyle} span={item.setting.width || 6}>
                  {item.setting.cardRole === 'header' ? <TableHeader card={item} data={extendData} refresh={this.refreshByHeader}>
                    {item.setting.checkAll === 'show' ? <span onClick={this.checkAll} className={'circle-select' + checkAll}></span> : null}
                  </TableHeader> : <CardItem card={item} cards={config} data={extendData}>
@@ -1074,7 +1078,7 @@
                }
                return (
                  <Col key={index} span={card.setting.width}>
                  <Col key={index} span={card.setting.width} style={card.wStyle}>
                    <div className={className} style={wrapStyle}>
                      <CardItem card={card} cards={config} data={item} onDoubleClick={() => this.onDoubleClick(index, subClass)} onClick={() => {this.changeCard(index, item, subClass)}}>
                        <span className="circle-select"></span>
@@ -1091,7 +1095,7 @@
                )
              })}
              {nextcards.map((item, index) => (
                <Col key={'next' + index} className="extend-card" span={item.setting.width || 6}>
                <Col key={'next' + index} className="extend-card" style={item.wStyle} span={item.setting.width || 6}>
                  {item.setting.cardRole === 'header' ? <TableHeader card={item} data={extendData} refresh={this.refreshByHeader}>
                    {item.setting.checkAll === 'show' ? <span onClick={this.checkAll} className={'circle-select' + checkAll}></span> : null}
                  </TableHeader> : <CardItem card={item} cards={config} data={extendData}>
src/tabviews/custom/components/card/prop-card/index.jsx
@@ -95,6 +95,14 @@
          card.setting.click = ''
        }
      }
      if (card.style.clear === 'left') {
        card.wStyle = {clear: 'left'}
      } else if (card.style.clear === 'right') {
        card.wStyle = {float: 'right'}
      }
      delete card.style.clear
    })
    let selected = _config.wrap.selected || 'false'
@@ -322,10 +330,6 @@
    } else {
      this.loadData()
    }
    if (position === 'popclose') { // 执行启动弹窗的按钮所选择的刷新项
      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  refreshLineData = (menuId, btn, uuid, count) => {
@@ -536,7 +540,7 @@
            }
            return (
              <Col className={className} key={index} span={item.setting.width || 6} offset={item.offset || 0}>
              <Col className={className} key={index} style={item.wStyle} span={item.setting.width || 6} offset={item.offset || 0}>
                <CardItem card={item} cards={config} data={data} onClick={() => {this.changeCard(index, item)}}/>
              </Col>
            )
src/tabviews/custom/components/card/table-card/index.jsx
@@ -211,10 +211,6 @@
    } else {
      this.loadData()
    }
    if (position === 'popclose') { // 执行启动弹窗的按钮所选择的刷新项
      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  refreshLineData = (menuId, btn, uuid, count) => {
src/tabviews/custom/components/card/tableHeader/index.jsx
@@ -70,6 +70,8 @@
      if (item.style && item.style.clear === 'left') {
        _style_ = {clear: 'left'}
      } else if (item.style && item.style.clear === 'right') {
        _style_ = {float: 'right'}
      }
      let val = ''
src/tabviews/custom/components/carousel/data-card/index.jsx
@@ -222,10 +222,6 @@
    } else {
      this.loadData()
    }
    if (position === 'popclose') { // 执行启动弹窗的按钮所选择的刷新项
      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  resetParentParam = (MenuID, id, data) => {
src/tabviews/custom/components/carousel/prop-card/index.jsx
@@ -225,10 +225,6 @@
    } else {
      this.loadData()
    }
    if (position === 'popclose') { // 执行启动弹窗的按钮所选择的刷新项
      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  resetParentParam = (MenuID, id, data) => {
src/tabviews/custom/components/chart/antv-X6/index.jsx
@@ -2,7 +2,7 @@
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import { Spin, Tooltip, message, Modal, notification } from 'antd'
import { UndoOutlined, RedoOutlined, VerticalAlignTopOutlined, VerticalAlignBottomOutlined, SaveOutlined, ZoomInOutlined, ZoomOutOutlined, OneToOneOutlined, QuestionCircleOutlined } from '@ant-design/icons'
import { UndoOutlined, RedoOutlined, VerticalAlignTopOutlined, VerticalAlignBottomOutlined, SaveOutlined, ZoomInOutlined, ZoomOutOutlined, OneToOneOutlined, QuestionCircleOutlined, ClearOutlined } from '@ant-design/icons'
import { Graph, Shape } from '@antv/x6'
import { Stencil } from '@antv/x6-plugin-stencil'
import { Transform } from '@antv/x6-plugin-transform'
@@ -17,10 +17,11 @@
import MKEmitter from '@/utils/events.js'
import asyncComponent from '@/utils/asyncComponent'
import NormalHeader from '@/tabviews/custom/components/share/normalheader'
import lanes from '@/menu/components/chart/antv-X6/lane.json'
import xflows from '@/menu/components/chart/antv-X6/xflow.json'
// import lanes from '@/menu/components/chart/antv-X6/lane.json'
// import xflows from '@/menu/components/chart/antv-X6/xflow.json'
import './index.scss'
const { confirm } = Modal
const NodeUpdate = asyncComponent(() => import('./nodeupdate'))
const groups = {
@@ -483,13 +484,14 @@
  }
  async loadData () {
    const { config, BID } = this.state
    const { BID } = this.state
    if (config.setting.supModule && !BID) { // BID 不存在时,不做查询
    if (!BID) {
      if (!is(fromJS(this.data), fromJS([]))) {
        this.cells = []
        this.handleData()
      }
      this.setState({empty: true})
      return
    }
@@ -497,35 +499,27 @@
      loading: true
    })
    if (config) {
      if (config.plot.subtype === 'xflow') {
        this.cells = xflows
      } else {
        this.cells = lanes
      }
      this.handleData()
      setTimeout(() => {
        this.setState({
          loading: false
        })
      }, 2000)
      return
    }
    let param = {
      func: '',
      BID: BID
      func: 's_get_works_flow_local_param_v6',
      ID: BID
    }
    let result = await Api.genericInterface(param)
    if (result.status) {
      let item = result.data && result.data[0] ? result.data[0] : null
      let cells = []
      if (item && item.long_param) {
        let long_param = JSON.parse(window.decodeURIComponent(window.atob(item.long_param)))
        cells = long_param.cells || []
      }
      this.cells = cells
      this.handleData()
      this.setState({
        loading: false
      })
      this.cells = result.data || []
      this.handleData()
      if (result.message) {
        if (result.ErrCode === 'Y') {
@@ -1357,13 +1351,68 @@
  }
  save = () => {
    // let nodes = this.mkGraph.toJSON()
    // this.mkGraph.toPNG((dataUri) => {
    //   Api.fileuploadbase64({
    //     Base64Img: dataUri
    //   }).then(res => {
    //   })
    // }, {padding: 20})
    const { BID } = this.state
    if (!BID) {
      Modal.error({
        title: '未获取到流程ID,不可保存!',
      })
      return
    }
    this.setState({
      loading: true
    })
    let nodes = this.mkGraph.toJSON()
    this.mkGraph.toPNG((dataUri) => {
      let param = {
        func: 's_works_flow_param_upt_v6',
        long_param: window.btoa(window.encodeURIComponent(JSON.stringify(nodes))),
        flow_image: dataUri,
        ID: BID,
        BID: ''
      }
      Api.genericInterface(param).then(res => {
        if (res.status) {
          notification.success({
            top: 92,
            message: '保存成功!',
            duration: 2
          })
        } else {
          notification.error({
            top: 92,
            message: res.message,
            duration: 10
          })
        }
        this.setState({
          loading: false
        })
      })
    }, {padding: 20})
  }
  clearNode = () => {
    let cells = this.mkGraph.getCells()
    const that = this
    if (cells.length === 0) return
    confirm({
      title: '确定清空元素吗?',
      content: '清空后不可恢复。',
      okText: '确定',
      cancelText: '取消',
      onOk() {
        that.mkGraph.removeCells(cells)
        that.mkGraph.cleanHistory()
      },
      onCancel() {}
    })
  }
  deleteLane = (cell, graph) => {
@@ -1693,11 +1742,13 @@
    if (config.plot.function === 'show') {
      if (config.plot.empty === 'hidden' && this.cells.length === 0) {
        style.display = 'none'
        style.position = 'absolute'
        style.width = '100%'
        style.zIndex = -1
      }
      return (
        <div className="custom-x6-plot-box" id={'anchor' + config.uuid} style={config.style}>
        <div className="custom-x6-plot-box" id={'anchor' + config.uuid} style={style}>
          {loading ?
            <div className="loading-mask">
              <div className="ant-spin-blur"></div>
@@ -1744,6 +1795,9 @@
            <Tooltip title="前进">
              <RedoOutlined onClick={this.setprev}/>
            </Tooltip>
            <Tooltip title="清空">
              <ClearOutlined onClick={this.clearNode}/>
            </Tooltip>
            <Tooltip overlayStyle={{maxWidth: 260}} title="快捷键:复制(ctrl+c)、剪切(ctrl+x)、粘贴(ctrl+v)、后退(ctrl+z)、前进(ctrl+shift+z)、删除(backspace 或 delete)">
              <QuestionCircleOutlined />
            </Tooltip>
src/tabviews/custom/components/chart/antv-bar-line/index.jsx
@@ -442,10 +442,6 @@
    } else {
      this.loadData()
    }
    if (position === 'popclose') { // 执行启动弹窗的按钮所选择的刷新项
      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  reloadData = (menuId) => {
src/tabviews/custom/components/chart/antv-scatter/index.jsx
@@ -182,10 +182,6 @@
    } else {
      this.loadData()
    }
    if (position === 'popclose') { // 执行启动弹窗的按钮所选择的刷新项
      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  reloadData = (menuId) => {
src/tabviews/custom/components/chart/custom-chart/index.jsx
@@ -170,10 +170,6 @@
    } else {
      this.loadData()
    }
    if (position === 'popclose') { // 执行启动弹窗的按钮所选择的刷新项
      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  reloadData = (menuId) => {
src/tabviews/custom/components/form/simple-form/index.jsx
@@ -158,7 +158,7 @@
    if (group.uuid !== menuId) return
    if (position === 'mainline' && config.setting.supModule && BID) {
    if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) {
      MKEmitter.emit('reloadData', config.setting.supModule, BID)
    } else {
      this.loadData()
@@ -226,6 +226,7 @@
      }, () => {
        this.setState({data: {$$empty: true}})
      })
      MKEmitter.emit('resetSelectLine', config.uuid, '', '')
      return
    }
@@ -256,6 +257,8 @@
        this.setState({data: _data})
      })
      MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid, _data)
      if (result.message) {
        if (result.ErrCode === 'Y') {
          Modal.success({
src/tabviews/custom/components/form/simple-form/index.scss
@@ -17,6 +17,7 @@
    .submit {
      min-width: 70px;
      border: none;
      border-style: solid;
    }
  }
  .mk-form-action.no-button {
src/tabviews/custom/components/form/step-form/index.jsx
@@ -205,7 +205,7 @@
    if (group.uuid !== menuId) return
    if (position === 'mainline' && config.setting.supModule && BID) {
    if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) {
      MKEmitter.emit('reloadData', config.setting.supModule, BID)
    } else {
      this.loadData()
@@ -285,6 +285,7 @@
      }, () => {
        this.setState({data: {$$empty: true}})
      })
      MKEmitter.emit('resetSelectLine', config.uuid, '', '')
      return
    }
@@ -334,6 +335,8 @@
        this.setState({group: _group})
      })
      MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid, _data)
      if (result.message) {
        if (result.ErrCode === 'Y') {
          Modal.success({
src/tabviews/custom/components/form/step-form/index.scss
@@ -71,6 +71,7 @@
    .submit {
      min-width: 70px;
      border: none;
      border-style: solid;
    }
    .skip {
      color: rgba(0, 0, 0, 0.85);
src/tabviews/custom/components/form/tab-form/index.jsx
@@ -175,7 +175,7 @@
    if (group.uuid !== menuId) return
    if (position === 'mainline' && config.setting.supModule && BID) {
    if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) {
      MKEmitter.emit('reloadData', config.setting.supModule, BID)
    } else {
      this.loadData()
@@ -242,6 +242,7 @@
      }, () => {
        this.setState({data: {$$empty: true}})
      })
      MKEmitter.emit('resetSelectLine', config.uuid, '', '')
      return
    }
@@ -272,6 +273,8 @@
        this.setState({data: _data})
      })
      MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid, _data)
      if (result.message) {
        if (result.ErrCode === 'Y') {
          Modal.success({
src/tabviews/custom/components/form/tab-form/index.scss
@@ -60,6 +60,7 @@
    .submit {
      min-width: 70px;
      border: none;
      border-style: solid;
    }
  }
  .mk-form-action.no-button {
src/tabviews/custom/components/group/normal-group/index.jsx
@@ -158,6 +158,8 @@
      if (item.style && item.style.clear === 'left') {
        style = {clear: 'left'}
      } else if (item.style && item.style.clear === 'right') {
        style = {float: 'right'}
      }
      if (item.type === 'card' && item.subtype === 'datacard') {
src/tabviews/custom/components/share/tabtransfer/index.jsx
@@ -184,6 +184,8 @@
      if (item.style && item.style.clear === 'left') {
        style = {clear: 'left'}
      } else if (item.style && item.style.clear === 'right') {
        style = {float: 'right'}
      }
      if (item.type === 'card' && item.subtype === 'datacard') {
src/tabviews/custom/components/table/base-table/index.jsx
@@ -543,10 +543,6 @@
    } else {
      this.reloadtable(btn, id)
    }
    if (position === 'popclose') { // 执行启动弹窗的按钮所选择的刷新项
      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  UNSAFE_componentWillReceiveProps(nextProps) {
src/tabviews/custom/components/table/edit-table/index.jsx
@@ -511,10 +511,6 @@
    } else {
      this.reloadtable(btn)
    }
    if (position === 'popclose') { // 执行启动弹窗的按钮所选择的刷新项
      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  refreshLineData = (menuId, btn, uuid, count) => {
src/tabviews/custom/components/table/normal-table/index.jsx
@@ -615,10 +615,6 @@
    } else {
      this.reloadtable(btn, id)
    }
    if (position === 'popclose') { // 执行启动弹窗的按钮所选择的刷新项
      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  refreshLineData = (menuId, btn, uuid, count) => {
src/tabviews/custom/components/timeline/normal-timeline/index.jsx
@@ -204,10 +204,6 @@
    } else {
      this.loadData()
    }
    if (position === 'popclose') { // 执行启动弹窗的按钮所选择的刷新项
      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  refreshLineData = (menuId, btn, uuid, count) => {
src/tabviews/custom/components/tree/antd-tree/index.jsx
@@ -218,10 +218,6 @@
    } else {
      this.loadData()
    }
    if (position === 'popclose') { // 执行启动弹窗的按钮所选择的刷新项
      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  /**
src/tabviews/custom/index.jsx
@@ -1289,6 +1289,8 @@
      if (item.style && item.style.clear === 'left') {
        style = {clear: 'left'}
      } else if (item.style && item.style.clear === 'right') {
        style = {float: 'right'}
      }
      if (item.type === 'card' && item.subtype === 'datacard') {
src/tabviews/custom/popview/index.jsx
@@ -497,6 +497,7 @@
          group.subButton.OpenType = 'formSubmit'
          group.subButton.execError = 'never'
          group.subButton.logLabel = item.$menuname + '-' + group.subButton.label
          group.subButton.$tabId = Tab.uuid
          if (!group.subButton.Ot) {
            group.subButton.Ot = item.wrap.datatype === 'static' ? 'notRequired' : 'requiredSgl'
@@ -916,6 +917,8 @@
      if (item.style && item.style.clear === 'left') {
        style = {clear: 'left'}
      } else if (item.style && item.style.clear === 'right') {
        style = {float: 'right'}
      }
      if (item.type === 'card' && item.subtype === 'datacard') {
src/tabviews/formtab/actionList/index.jsx
File was deleted
src/tabviews/formtab/actionList/index.scss
File was deleted
src/tabviews/formtab/formgroup/index.jsx
File was deleted
src/tabviews/formtab/formgroup/index.scss
File was deleted
src/tabviews/formtab/index.jsx
File was deleted
src/tabviews/formtab/index.scss
File was deleted
src/tabviews/zshare/actionList/excelInbutton/index.jsx
@@ -216,6 +216,10 @@
      let node = document.getElementById('tab' + id)
      node && node.click()
    }
    if (btn.execSuccess === 'popclose' && btn.$tabId) { // 标签关闭刷新
      MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  /**
@@ -257,6 +261,10 @@
    } else if (btn.execError !== 'never') {
      MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.execError, btn, '', this.state.selines)
    }
    if (btn.execError === 'popclose' && btn.$tabId) { // 标签关闭刷新
      MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  /**
src/tabviews/zshare/actionList/exceloutbutton/index.jsx
@@ -557,6 +557,29 @@
      return col
    })
    if (data && data[0]) {
      let errors = []
      columns.forEach(col => {
        if (col.Column && data[0][col.Column] === undefined) {
          errors.push(col.Text)
        }
      })
      if (errors.length) {
        notification.error({
          top: 92,
          message: '数据中缺少字段:' + errors.join('、'),
          duration: 5
        })
        this.setState({
          loading: false
        })
        return
      }
    }
    
    try {
      if (imgCol) {
@@ -1143,6 +1166,10 @@
      let node = document.getElementById('tab' + id)
      node && node.click()
    }
    if (btn.execSuccess === 'popclose' && btn.$tabId) { // 标签关闭刷新
      MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  /**
@@ -1184,6 +1211,10 @@
    } else if (btn.execError !== 'never') {
      MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.execError, btn, '', [])
    }
    if (btn.execError === 'popclose' && btn.$tabId) { // 标签关闭刷新
      MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  render() {
src/tabviews/zshare/actionList/funczip/index.jsx
@@ -348,6 +348,10 @@
    if (btn.execSuccess !== 'never') {
      MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.execSuccess, btn)
    }
    if (btn.execSuccess === 'popclose' && btn.$tabId) { // 标签关闭刷新
      MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  /**
@@ -399,6 +403,10 @@
    if (btn.execError !== 'never') {
      MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.execError, btn)
    }
    if (btn.execError === 'popclose' && btn.$tabId) { // 标签关闭刷新
      MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  render() {
src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -2148,6 +2148,10 @@
      MKEmitter.emit('modifyTabs', newtab, true)
    }
    if (btn.execSuccess === 'popclose' && btn.$tabId) { // 标签关闭刷新
      MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  triggerNote = (res) => {
@@ -2566,6 +2570,10 @@
    if (window.GLOB.breakpoint) {
      MKEmitter.emit('refreshDebugTable')
    }
    if (btn.execError === 'popclose' && btn.$tabId) { // 标签关闭刷新
      MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  handleModelConfig = (config) => {
src/tabviews/zshare/actionList/popupbutton/index.jsx
@@ -186,7 +186,7 @@
    if (btn.Ot === 'requiredSgl' && setting.primaryKey) {
      _data = data[0]
      primaryId = _data[setting.primaryKey] || ''
      primaryId = _data.$$uuid || _data[setting.primaryKey] || ''
    }
    this.setState({
@@ -248,7 +248,7 @@
        ratio = ratio + 'vw'
      }
      return <Modal
        wrapClassName={'popview-modal ' + (!btn.$view ? '' : 'custom-popview')}
        wrapClassName={'popview-modal ' + (!btn.$view ? '' : 'custom-popview ') + (btn.popshow || '')}
        title={btn.label}
        width={ratio}
        maskClosable={btn.clickouter === 'close'}
src/tabviews/zshare/actionList/popupbutton/index.scss
@@ -1,5 +1,5 @@
.custom-popview.popview-modal {
  >.ant-modal-content >.ant-modal-body {
  .ant-modal-content .ant-modal-body {
    padding: 0;
    .custom-page-wrap {
      min-height: 200px;
@@ -9,6 +9,19 @@
    }
  }
}
.custom-popview.popview-modal.miniview {
  .ant-modal-header {
    display: none;
  }
  .ant-modal-footer {
    display: none;
  }
  .ant-modal-body {
    padding: 0px;
    border-radius: 4px;
    max-height: calc(100vh - 110px);
  }
}
.table-drawer-popview {
  .close-drawer {
    position: absolute;
src/tabviews/zshare/actionList/printbutton/index.jsx
@@ -1914,6 +1914,10 @@
    if (btn.execSuccess !== 'never') {
      MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.execSuccess, btn, '', this.state.selines)
    }
    if (btn.execSuccess === 'popclose' && btn.$tabId) { // 标签关闭刷新
      MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
  /**
src/tabviews/zshare/calendar/index.jsx
File was deleted
src/tabviews/zshare/calendar/index.scss
File was deleted
src/templates/calendarconfig/calcomponent/calendarform/index.jsx
File was deleted
src/templates/calendarconfig/calcomponent/calendarform/index.scss
src/templates/calendarconfig/calcomponent/index.jsx
File was deleted
src/templates/calendarconfig/calcomponent/index.scss
File was deleted
src/templates/calendarconfig/index.jsx
File was deleted
src/templates/calendarconfig/index.scss
File was deleted
src/templates/calendarconfig/source.jsx
File was deleted
src/templates/calendarconfig/tabcomponent/index.jsx
File was deleted
src/templates/calendarconfig/tabcomponent/index.scss
File was deleted
src/templates/calendarconfig/tabcomponent/tabform/index.jsx
File was deleted
src/templates/calendarconfig/tabcomponent/tabform/index.scss
src/templates/formtabconfig/actionform/index.jsx
File was deleted
src/templates/formtabconfig/actionform/index.scss
File was deleted
src/templates/formtabconfig/dragelement/card.jsx
File was deleted
src/templates/formtabconfig/dragelement/index.jsx
File was deleted
src/templates/formtabconfig/dragelement/index.scss
File was deleted
src/templates/formtabconfig/dragelement/itemtypes.js
File was deleted
src/templates/formtabconfig/dragelement/source.jsx
File was deleted
src/templates/formtabconfig/groupform/index.jsx
File was deleted
src/templates/formtabconfig/groupform/index.scss
src/templates/formtabconfig/index.jsx
File was deleted
src/templates/formtabconfig/index.scss
File was deleted
src/templates/formtabconfig/settingform/index.jsx
File was deleted
src/templates/formtabconfig/settingform/index.scss
File was deleted
src/templates/formtabconfig/source.jsx
File was deleted
src/templates/formtabconfig/transferform/index.jsx
File was deleted
src/templates/formtabconfig/transferform/index.scss
File was deleted
src/templates/treepageconfig/updatetable/index.jsx
@@ -111,6 +111,7 @@
      interface: config.setting.interface || '',
      dataresource: config.setting.dataresource || '',
      tableName: config.setting.tableName || '',
      sysInterface: config.setting.sysInterface || 'false',
      order: config.setting.order || '',
      execute: config.setting.default || 'true',
      primaryKey: config.setting.valueField || '',
@@ -741,7 +742,7 @@
      type: 'admin',
      OpenType: config.OpenType,
      PageParam: {Template: 'CustomPage', OpenType: 'newtab', hidden: config.hidden},
      MenuType: 'CustomPage'
      MenuType: 'custom'
    }
    let url = window.btoa(window.encodeURIComponent(JSON.stringify(urlparam)))
    config.tbkey = key
@@ -794,7 +795,6 @@
      if (res.status) {
        delete urlparam.type
        delete urlparam.MenuType
        let _param = window.btoa(window.encodeURIComponent(JSON.stringify(urlparam)))
@@ -807,7 +807,6 @@
          onOk: () => {
            if (save) {
              delete urlparam.type
              delete urlparam.MenuType
              let _param = window.btoa(window.encodeURIComponent(JSON.stringify(urlparam)))
src/utils/option.js
@@ -1,6 +1,6 @@
import nortable from '@/assets/img/normaltable.jpg'
// import mainsubtable from '@/assets/img/mainsubtable.jpg'
import treepage from '@/assets/img/treepage.jpg'
// import treepage from '@/assets/img/treepage.jpg'
import customImg from '@/assets/img/custom.jpg'
import newpage from '@/assets/img/newpage.jpg'
import rolemanage from '@/assets/img/rolemanage.jpg'
@@ -73,13 +73,13 @@
    baseconfig: '',
    isSystem: true
  },
  {
    title: '树形页面',
    type: 'TreePage',
    url: treepage,
    baseconfig: '',
    isSystem: true
  },
  // {
  //   title: '树形页面',
  //   type: 'TreePage',
  //   url: treepage,
  //   baseconfig: '',
  //   isSystem: true
  // },
  {
    title: '外部页面',
    type: 'NewPage',
src/views/basedesign/index.jsx
@@ -14,7 +14,6 @@
const Header = asyncComponent(() => import('@/menu/header'))
const ComTableConfig = asyncLoadComponent(() => import('@/templates/comtableconfig'))
const TreePageConfig = asyncLoadComponent(() => import('@/templates/treepageconfig'))
const FormTabConfig = asyncLoadComponent(() => import('@/templates/formtabconfig'))
const ModalConfig = asyncLoadComponent(() => import('@/templates/modalconfig'))
const SubTable = asyncLoadComponent(() => import('@/templates/subtableconfig'))
@@ -229,14 +228,6 @@
              tabConfig={this.state.tabConfig}
              btnTab={this.state.btnTab}
              btnTabConfig={this.state.btnTabConfig}
              config={this.state.subConfig}
              handleView={this.handleView}
            /> : null
          }
          {this.state.tabview === 'FormTab' ?
            <FormTabConfig
              menu={this.state.editMenu}
              btnTab={this.state.btnTab}
              config={this.state.subConfig}
              handleView={this.handleView}
            /> : null
src/views/billprint/index.jsx
@@ -876,6 +876,8 @@
      if (item.style && item.style.clear === 'left') {
        style = {clear: 'left'}
      } else if (item.style && item.style.clear === 'right') {
        style = {float: 'right'}
      }
      if (item.type === 'bar' || item.type === 'line') {
src/views/login/index.jsx
@@ -293,7 +293,7 @@
        document.getElementsByTagName('head')[0].removeChild(JSONP)
      },500)
    })
}
  }
  componentDidMount () {
    // md5("/ws/location/v1/ip?callback=callbackFunction&key=key&output=jsonp secret key")