king
2020-01-17 a0a285c90987eb9b1591f90333f3aeb15659ded2
2020-01-17
19个文件已修改
298 ■■■■■ 已修改文件
public/options.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/index.js 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/header/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/sidemenu/editsecmenu/index.jsx 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/sidemenu/editthdmenu/index.jsx 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/sidemenu/index.jsx 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/sidemenu/menuelement/card.jsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/sidemenu/menuelement/index.jsx 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/locales/en-US/comtable.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/locales/zh-CN/comtable.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/options.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/commontable/index.jsx 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/subtable/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/tableshare/mutilform/index.jsx 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/modalconfig/index.jsx 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/modalconfig/modalform/index.jsx 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/tableshare/transferform/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/utils.js 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login/index.jsx 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/options.js
@@ -12,5 +12,5 @@
  bgColor: '',
  lineColor: '',
  website: '',
  style: '' // 默认为黑色,可选为white
  style: ''
}
src/api/index.js
@@ -1,8 +1,8 @@
import axios from 'axios'
import qs from 'qs'
import {notification } from 'antd'
// import md5 from 'md5'
// import Utils from '@/utils/utils.js'
import md5 from 'md5'
import Utils from '@/utils/utils.js'
import options from '@/store/options.js'
axios.defaults.crossDomain = true
@@ -26,10 +26,10 @@
})
const setCurrentUrl = () => {
  if (!!(window.history && window.history.pushState)) {
    window.history.replaceState(null, null, window.location.href.split('#')[0] + '#/login')
    window.location.reload()
  }
  // if (!!(window.history && window.history.pushState)) {
  //   window.history.replaceState(null, null, window.location.href.split('#')[0] + '#/login')
  //   window.location.reload()
  // }
}
let GlobMap = new Map()
@@ -93,14 +93,22 @@
  /**
   * @description 登录系统, 获取用户信息
   */
  getusermsg (username, password) {
  getusermsg (username, password, isCloud = false) {
    let param = {
      // func: 'webapi_login',
      UserName: username,
      Password: password,
      Type: 'X'
    }
    param.Password = Utils.formatOptions(param.Password)
    if (isCloud && options.cloudLoginApi) {
      param.rduri = options.cloudLoginApi
    }
    return axios({
      url: 'webapi/getjsonresult',
      data: {
        DBT: 'proc',
        DBS: 'webapi_login',
        DBP: JSON.stringify({ 'UserName': username, 'Password': password })
      }
      url: '/webapi/dologon',
      data: param
    })
  }
@@ -169,6 +177,7 @@
    delete _param.timestamp
    delete _param.secretkey
    _param = JSON.stringify(_param)
    _param  = md5(_param)
    if (GlobMap.has(_param)) {
      return Promise.resolve(GlobMap.get(_param))
src/components/header/index.jsx
@@ -249,7 +249,7 @@
      loginLoading: true
    })
    this.loginRef.handleConfirm().then(param => {
      Api.getusermsg(param.username, param.password).then(res => {
      Api.getusermsg(param.username, param.password, true).then(res => {
        if (res.status) {
          sessionStorage.setItem('CloudUserID', res.UserID)
          sessionStorage.setItem('CloudSessionUid', Utils.getuuid())
src/components/sidemenu/editsecmenu/index.jsx
@@ -15,39 +15,39 @@
import './index.scss'
const { confirm } = Modal
let previewList = null
class EditMenu extends Component {
  static propTpyes = {
    menulist: PropTypes.any, // 二级菜单列表
    menulist: PropTypes.any,      // 二级菜单列表
    supMenuList: PropTypes.array, // 一级菜单列表
    supMenu: PropTypes.object, // 二级菜单所对应的一级菜单
    reload: PropTypes.func, // 刷新二级菜单数据
    exitEdit: PropTypes.func // 退出编辑
    supMenu: PropTypes.object,    // 二级菜单所对应的一级菜单
    reload: PropTypes.func,       // 刷新二级菜单数据
    exitEdit: PropTypes.func      // 退出编辑
  }
  state = {
    show: true,
    type: '', // 编辑类型,add or edit
    title: '', // 模态框标题
    visible: null, // 模态框是否可见
    formlist: null, // 表单信息
    editMenu: null, // 编辑菜单
    thawmenulist: null, // 已冻结的二级菜单
    thawMvisible: false, // 解除冻结模态框
    confirmLoading: false, // 提交中。。。
    dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS,
    menulist: null,       // 菜单列表
    type: '',             // 编辑类型,add or edit
    title: '',            // 模态框标题
    visible: null,        // 模态框是否可见
    formlist: null,       // 表单信息
    editMenu: null,       // 编辑菜单
    thawmenulist: null,   // 已冻结的二级菜单
    thawMvisible: false,  // 解除冻结模态框
    confirmLoading: false // 提交中。。。
  }
  handlePreviewList = (List) => {
    // 菜单顺序改变时,保存中间状态
    previewList = List
    this.setState({
      menulist: List
    })
  }
  handleMenu = (menu) => {
    // 菜单编辑:修改、删除,如菜单顺序已改变,提示保存菜单顺序
    const _this = this
    if (previewList && !is(fromJS(previewList), fromJS(this.state.subMenulist))) {
    if (!is(fromJS(this.props.menulist), fromJS(this.state.menulist))) {
      notification.warning({
        top: 92,
        message: this.state.dict['header.menu.presave'],
@@ -187,11 +187,11 @@
        }
      })
    } else if (type === 'confirm') { // 确定时入顺序改变,则提示保存,否则退出编辑
      if (previewList && !is(fromJS(previewList), fromJS(this.state.subMenulist))) {
      if (!is(fromJS(this.props.menulist), fromJS(this.state.menulist))) {
        let _this = this
        let param  = {
          func: 'sPC_Menu_SortUpt',
          LText: previewList.map((item, index) => {
          LText: this.state.menulist.map((item, index) => {
            return 'select \'' + item.MenuID + '\' as Menuid,' + (index + 1) * 10 + ' as sort'
          })
        }
@@ -362,15 +362,16 @@
  }
  UNSAFE_componentWillMount () {
    previewList = null
    this.setState({
      menulist: this.props.menulist
    })
  }
  UNSAFE_componentWillReceiveProps (nextProps) {
    if (!is(fromJS(this.props.menulist), fromJS(nextProps.menulist))) {
      this.setState({show: false})
      setTimeout(() => {
        this.setState({show: true})
      }, 10)
      this.setState({
        menulist: nextProps.menulist
      })
    }
  }
@@ -397,13 +398,13 @@
            </div>
          </div>
        </div>
        {this.state.show && <DndProvider backend={HTML5Backend}>
        <DndProvider backend={HTML5Backend}>
          <DragElement
            list={this.props.menulist}
            list={this.state.menulist}
            handlePreviewList={this.handlePreviewList}
            handleMenu={this.handleMenu}
          />
        </DndProvider>}
        </DndProvider>
        <div className="menu-add" onClick={() => {this.handleSubBtn('add')}}>
          <Icon type="plus" />
        </div>
src/components/sidemenu/editthdmenu/index.jsx
@@ -30,8 +30,6 @@
  CommonTable: nortable
}
let previewList = null // 初始菜单列表
class EditMenu extends Component {
  static propTpyes = {
    reload: PropTypes.func,      // 菜单修改后刷新
@@ -43,7 +41,6 @@
  state = {
    dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS,
    show: true,            // 控制菜单刷新
    thawmenulist: null,    // 已冻结的二级菜单
    type: '',              // 操作类型,新建或编辑菜单
    tabview: '',           // 选择模板窗口(template)、基础表格配置(CommonTable)、表单(Modal)、子表(SubTable)
@@ -59,6 +56,7 @@
    preview: null,         // 图片预览url
    pretemplate: null,     // 预览模板
    btnParam: null,        // 编辑按钮的配置信息
    menulist: null,        // 编辑中的菜单
    sysTemplates: sysTemps // 系统模板
  }
@@ -66,7 +64,9 @@
   * @description 菜单顺序改变时,保存中间状态
   */
  handlePreviewList = (List) => {
    previewList = List
    this.setState({
      menulist: List
    })
  }
  /**
@@ -77,7 +77,8 @@
   */
  handleMenu = (menu) => {
    const _this = this
    if (previewList && !is(fromJS(previewList), fromJS(this.state.subMenulist))) {
    if (!is(fromJS(this.props.menulist), fromJS(this.state.menulist))) {
      notification.warning({
        top: 92,
        message: this.state.dict['header.menu.presave'],
@@ -168,7 +169,7 @@
  handleSubBtn = (type) => {
    // 操作按钮:添加、解除冻结、确认及关闭
    if (type === 'add') { // 点击添加时,展开模板
      if (previewList && !is(fromJS(previewList), fromJS(this.state.subMenulist))) {
      if (!is(fromJS(this.props.menulist), fromJS(this.state.menulist))) {
        notification.warning({
          top: 92,
          message: this.state.dict['header.menu.presave'],
@@ -179,7 +180,7 @@
      this.setState({tabview: 'template', type: 'add'})
      document.getElementById('root').style.overflowY = 'hidden'
    } else if (type === 'thaw') {
      if (previewList && !is(fromJS(previewList), fromJS(this.state.subMenulist))) {
      if (!is(fromJS(this.props.menulist), fromJS(this.state.menulist))) {
        notification.warning({
          top: 92,
          message: this.state.dict['header.menu.presave'],
@@ -213,11 +214,11 @@
        }
      })
    } else if (type === 'confirm') {
      if (previewList && !is(fromJS(previewList), fromJS(this.state.subMenulist))) {
      if (!is(fromJS(this.props.menulist), fromJS(this.state.menulist))) {
        let _this = this
        let param  = {
          func: 'sPC_Menu_SortUpt',
          LText: previewList.map((item, index) => {
          LText: this.state.menulist.map((item, index) => {
            return 'select \'' + item.MenuID + '\' as Menuid,' + (index + 1) * 10 + ' as sort'
          })
        }
@@ -500,17 +501,18 @@
  }
  UNSAFE_componentWillMount () {
    previewList = null
    this.getUsedTemplate()
    this.setState({
      menulist: this.props.menulist
    })
  }
  UNSAFE_componentWillReceiveProps (nextProps) {
    if (!is(fromJS(this.props.menulist), fromJS(nextProps.menulist))) {
      previewList = null
      this.setState({show: false})
      setTimeout(() => {
        this.setState({show: true})
      }, 10)
      this.setState({
        menulist: nextProps.menulist
      })
    }
  }
@@ -543,13 +545,13 @@
          <Icon type={this.props.supMenu.PageParam.Icon} />
          <span>{this.props.supMenu.text}</span>
        </div>
        {this.state.show && <DndProvider backend={HTML5Backend}>
        <DndProvider backend={HTML5Backend}>
          <DragElement
            list={this.props.menulist}
            list={this.state.menulist}
            handlePreviewList={this.handlePreviewList}
            handleMenu={this.handleMenu}
          />
        </DndProvider>}
        </DndProvider>
        <div className="menu-add" onClick={() => {this.handleSubBtn('add')}}>
          <Icon type="plus" />
        </div>
src/components/sidemenu/index.jsx
@@ -73,29 +73,35 @@
      }
      let parentID = submenuId ? submenuId : result.data[0].ParentID // 展开二级菜单ID
      let menulist = result.data.map((item, i) => {
      let menulist = result.data.map(item => {
        let _smenu = {}
        _smenu.id = i
        _smenu.id = item.ParentID
        _smenu.MenuID = item.ParentID
        _smenu.text = item.MenuNameP
        try {
          _smenu.PageParam = JSON.parse(item.PageParamP)
        } catch (e) {
          _smenu.PageParam = {Icon: 'folder'}
        }
        if (item.FunMenu) {
          _smenu.children = item.FunMenu.map((child, n) => {
          _smenu.children = item.FunMenu.map(child => {
            let _tmenu = {}
            let _msg = window.btoa('mm=' + menu.MenuID + '&sm=' + _smenu.MenuID + '&tm=' + child.MenuID + '&ud=' + msg) // 待完善
            _tmenu.src = '#/main/' + _msg
            // 打开新页面链接
            _tmenu.src = '#/main/' + window.btoa('mm=' + menu.MenuID + '&sm=' + _smenu.MenuID + '&tm=' + child.MenuID + '&ud=' + msg)
            if (child.LinkUrl === 'CommonTable') {
              _tmenu.type = 'CommonTable'
            } else if (child.LinkUrl === 'DataManage') {
              _tmenu.type = 'DataManage'
              _tmenu.forbidden = true
            // } else if (child.LinkUrl === 'bda/rdt?pageno=rolemenus&MenuNo=RoleMenuM') {
            //   _tmenu.type = 'RoleManage'
            //   _tmenu.forbidden = true
            } else if (child.LinkUrl.split('?')[0] === 'Main/Index' || child.LinkUrl.split('?')[0] === 'bda/rdt') {
              _tmenu.type = 'iframe'
              _tmenu.forbidden = true
            }
            if (_tmenu.type !== 'iframe') {
@@ -109,7 +115,7 @@
              _tmenu.LinkUrl = child.LinkUrl
            }
            _tmenu.id = n
            _tmenu.id = child.MenuID
            _tmenu.MenuID = child.MenuID
            _tmenu.MenuNo = child.MenuNo
            _tmenu.MenuName = child.MenuName
src/components/sidemenu/menuelement/card.jsx
@@ -4,7 +4,7 @@
import ItemTypes from './itemtypes'
import './index.scss'
const Card = ({ id, icon, text, menutype, moveCard, findCard, editCard, closeCard }) => {
const Card = ({ id, card, moveCard, findCard, editCard, closeCard }) => {
  const originalIndex = findCard(id).index
  const [{ isDragging }, drag] = useDrag({
    item: { type: ItemTypes.CARD, id, originalIndex },
@@ -34,10 +34,10 @@
  return (
    <div className="side-card" style={{ opacity }}>
      <div ref={node => drag(drop(node))}>
        {icon && <Icon type={icon} />}
        {text}
        {card.PageParam && card.PageParam.Icon && <Icon type={card.PageParam.Icon} />}
        {card.text}
      </div>
      {menutype === 'CommonTable' ? <Icon className="edit" type="edit" onClick={edit} /> : null}
      {!card.forbidden ? <Icon className="edit" type="edit" onClick={edit} /> : null}
      <Icon className="close" type="close" onClick={close} />
    </div>
  )
src/components/sidemenu/menuelement/index.jsx
@@ -1,5 +1,6 @@
import React, { useState } from 'react'
import { useDrop } from 'react-dnd'
import { is, fromJS } from 'immutable'
import update from 'immutability-helper'
import Card from './card'
import ItemTypes from './itemtypes'
@@ -10,8 +11,11 @@
  const moveCard = (id, atIndex) => {
    const { card, index } = findCard(id)
    const _cards = update(cards, { $splice: [[index, 1], [atIndex, 0, card]] })
    setCards(_cards)
    handlePreviewList(_cards)
  }
  if (!is(fromJS(cards), fromJS(list))) {
    setCards(list)
  }
  const findCard = id => {
@@ -46,10 +50,8 @@
      {cards.map(card => (
        <Card
          key={card.id}
          id={`${card.id}`}
          icon={card.PageParam && card.PageParam.Icon}
          menutype={card.type}
          text={card.text}
          id={card.id}
          card={card}
          moveCard={moveCard}
          editCard={editCard}
          closeCard={closeCard}
src/locales/en-US/comtable.js
@@ -172,6 +172,17 @@
  'header.form.request.method': '请求方式',
  'header.form.readonly': '是否只读',
  'header.form.field.required': '是否必填',
  'header.form.field.ishidden': '是否隐藏',
  'header.modal.form.edit': '表单-编辑',
  'header.modal.search.edit': '搜索条件-编辑',
  'header.modal.action.edit': '按钮-编辑',
  'header.modal.action.copy': '按钮-复制',
  'header.modal.column.edit': '显示列-编辑',
  'header.modal.colspan.edit': '合并列-编辑',
  'header.modal.gridbtn.edit': '操作列-编辑',
  'header.modal.tabs.edit': '标签-编辑',
  'header.modal.func.innerface': '内部接口: 可自定义数据处理函数,函数名称需以@ableField等字符开始;未设置时会调用系统函数,使用系统函数需完善数据源及操作类型;',
  'header.modal.func.outface': '外部接口: 可自定义数据处理函数,提交数据经过内部函数处理后,传入外部接口,未设置时,数据会直接传入外部接口。',
  'form.required.input': 'Please enter the ',
  'form.required.select': '请选择'
}
src/locales/zh-CN/comtable.js
@@ -172,6 +172,7 @@
  'header.form.request.method': '请求方式',
  'header.form.readonly': '是否只读',
  'header.form.field.required': '是否必填',
  'header.form.field.ishidden': '是否隐藏',
  'header.modal.form.edit': '表单-编辑',
  'header.modal.search.edit': '搜索条件-编辑',
  'header.modal.action.edit': '按钮-编辑',
src/store/options.js
@@ -2,6 +2,9 @@
export default {
  AppId: '201912040924165801464FF1788654BC5AC73',
  cloudServiceApi: 'http://qingqiumarket.cn/mkwms/webapi/dostar',
  cloudLoginApi: 'http://qingqiumarket.cn/mkwms/webapi/dologon',
  // cloudServiceApi: 'http://cloud.mk9h.cn/webapi/dostar',
  // cloudLoginApi: 'http://cloud.mk9h.cn/webapi/dologon',
  cloudDatabase: 'sqlserver',
  localDatabase: 'mysql'
}
src/tabviews/commontable/index.jsx
@@ -187,7 +187,7 @@
      }, () => {
        this.improveSearch()
        if (config.setting.onload !== 'false') {
        if (config.setting.onload !== 'false') { // 初始化可加载
          this.loadmaindata()
        }
      })
@@ -318,6 +318,10 @@
    this.handleTableId('mainTable', '')
    if (!param) { // 未获取参数时,不发请求
      return
    }
    let result = await Api.genericInterface(param)
    if (result.status) {
      this.setState({
@@ -378,6 +382,15 @@
  getDefaultParam = () => {
    const { arr_field, pageIndex, pageSize, orderColumn, orderType, search, setting } = this.state
    if (!arr_field) {
      notification.warning({
        top: 92,
        message: '未设置显示列!',
        duration: 10
      })
      return null
    }
    let _search = Utils.joinMainSearchkey(search)
    _search = _search ? 'where ' + _search : ''
src/tabviews/subtable/index.jsx
@@ -66,7 +66,7 @@
   */
  async loadconfig () {
    const { permAction } = this.props
    console.log(permAction)
    let param = {
      func: 'sPC_Get_LongParam',
      MenuID: this.props.MenuID
src/tabviews/tableshare/mutilform/index.jsx
@@ -139,7 +139,7 @@
    })
  }
  resetform = (formlist, supfields, index) => {
  resetform = (formlist, supfields, index, fieldsvalue) => {
    index++
    let subfields = []
@@ -148,7 +148,8 @@
        if (item.type === 'link' && item.linkField === supfield.field) {
          item.options = item.oriOptions.filter(option => option.parentId === supfield.initval)
          item.initval = item.options[0] ? item.options[0].Value : ''
          item.hiden = true
          fieldsvalue[item.field] = item.initval
  
          subfields.push(item)
        }
@@ -157,9 +158,10 @@
    })
    if (subfields.length === 0 || index > 6) {
      this.props.form.setFieldsValue(fieldsvalue)
      return formlist
    } else {
      return this.resetform(formlist, subfields, index)
      return this.resetform(formlist, subfields, index, fieldsvalue)
    }
  }
@@ -167,11 +169,13 @@
    let formlist = JSON.parse(JSON.stringify(this.state.formlist))
    let subfields = []
    let fieldsvalue = {}
    formlist = formlist.map(item => {
      if (item.type === 'link' && item.linkField === _field.field) {
        item.options = item.oriOptions.filter(option => option.parentId === value)
        item.initval = item.options[0] ? item.options[0].Value : ''
        item.hiden = true
        fieldsvalue[item.field] = item.initval
        subfields.push(item)
      }
@@ -190,16 +194,10 @@
    if (subfields.length === 0) return
    formlist = this.resetform(formlist, subfields, 0)
    formlist = this.resetform(formlist, subfields, 0, fieldsvalue)
    this.setState({
      formlist: formlist
    }, () => {
      this.setState({
        formlist: formlist.map(item => {
          item.hiden = false
          return item
        })
      })
    })
  }
@@ -226,8 +224,8 @@
    }
    this.state.formlist.forEach((item, index) => {
      if ((!item.field && item.type !== 'title') || item.hiden) return
      if ((!item.field && item.type !== 'title') || item.hidden === 'true') return
      if (item.type === 'title') {
        fields.push(
          <Col span={24} key={index}>
@@ -500,6 +498,17 @@
      this.props.form.validateFieldsAndScroll((err, values) => {
        if (!err) {
          let search = []
          // 隐藏表单
          this.state.formlist.forEach(item => {
            if (item.hidden !== 'true' || !item.field) return
            search.push({
              type: this.state.datatype[item.field],
              readonly: this.state.readtype[item.field],
              key: item.field,
              value: item.initval
            })
          })
          Object.keys(values).forEach(key => {
            if (this.state.datatype[key] === 'datetime') {
              let _value = ''
src/templates/modalconfig/index.jsx
@@ -535,6 +535,19 @@
          }]
        },
        {
          type: 'radio',
          key: 'hidden',
          label: this.state.dict['header.form.field.ishidden'],
          initVal: card.hidden || 'false',
          options: [{
            value: 'true',
            text: this.state.dict['header.form.true']
          }, {
            value: 'false',
            text: this.state.dict['header.form.false']
          }]
        },
        {
          type: 'multiselect',
          key: 'linkSubField',
          label: this.state.dict['header.form.linkForm'],
src/templates/modalconfig/modalform/index.jsx
@@ -26,7 +26,7 @@
    let type = formlist.filter(cell => cell.key === 'type')[0].initVal
    let resourceType = formlist.filter(cell => cell.key === 'resourceType')[0].initVal
    let _options = ['label', 'field', 'initval', 'type', 'readonly', 'required'] // 默认显示项
    let _options = ['label', 'field', 'initval', 'type', 'readonly', 'required', 'hidden'] // 默认显示项
    if ((type === 'multiselect' || type === 'select' || type === 'link') && resourceType === '0') { // 选择类型、自定义资源
      _options = [..._options, 'resourceType', 'options']
@@ -55,9 +55,8 @@
          form.type = 'select'
        } else if (type === 'number' && form.key === 'initval') {
          form.type = 'number'
          form.initVal = 0
        }
        form.hidden = !_options.includes(form.key)
        form.show = _options.includes(form.key)
        return form
      })
    })
@@ -78,7 +77,7 @@
  openTypeChange = (key, value) => {
    if (key === 'type') {
      let _options = ['label', 'field', 'initval', 'type', 'readonly', 'required']
      let _options = ['label', 'field', 'initval', 'type', 'readonly', 'required', 'hidden']
      if ((value === 'multiselect' || value === 'select' || value === 'link') && this.state.resourceType === '0') { // 选择类型、自定义资源
        _options = [..._options, 'resourceType', 'options']
@@ -101,20 +100,18 @@
      this.setState({
        openType: value,
        formlist: this.state.formlist.map(form => {
          form.hidden = !_options.includes(form.key)
          form.show = _options.includes(form.key)
          if (form.key === 'initval') {
            if (dateOptions.hasOwnProperty(value)) {
              form.options = dateOptions[value]
              form.type = 'select'
              form.initVal = ''
            } else if (value === 'number') {
              form.type = 'number'
              form.initVal = 0
            } else {
              form.type = 'text'
              form.initVal = ''
            }
            form.hidden = true
            form.initVal = ''
            form.show = false
          }
          return form
        })
@@ -122,7 +119,7 @@
        this.setState({
          formlist: this.state.formlist.map(form => {
            if (form.key === 'initval' && value !== 'fileupload' && value !== 'funcvar') {
              form.hidden = false
              form.show = true
            }
            return form
          })
@@ -151,7 +148,7 @@
      this.setState({
        resourceType: value,
        formlist: this.state.formlist.map(form => {
          form.hidden = !_options.includes(form.key)
          form.show = _options.includes(form.key)
          return form
        })
      })
@@ -163,7 +160,7 @@
    const fields = []
    this.state.formlist.forEach((item, index) => {
      if (item.hidden) return
      if (!item.show) return
      if (item.type === 'text') { // 文本搜索
        let rules = []
src/templates/tableshare/transferform/index.jsx
@@ -27,7 +27,7 @@
  UNSAFE_componentWillMount() {
    let datas = new Map()
    this.props.columns.forEach(item => {
      if (item.field) {
      if (item.field && item.Hide !== 'true') {
        datas.set(item.uuid, item)
      }
    })
src/utils/utils.js
@@ -166,25 +166,11 @@
    value = value.replace(/%/ig, 'mpercent')
    value = value.replace(/(^\s|\s$)/ig, '')
    // value = value.replace(/>/ig, 'greateror')
    //   .replace(/</ig, 'lessor')
    //   .replace(/!=/ig, 'noequal')
    //   .replace(/=/ig, 'equal')
    //   .replace(/,/ig, 'comma')
    //   .replace(/>=/ig, 'greaterorequal')
    //   .replace(/<=/ig, 'lessorequal')
    //   .replace(/@/ig, 'matk')
    //   .replace(/\(/ig, 'mlbrktsk')
    //   .replace(/\)/ig, 'mrbrktsk')
    //   .replace(/\*/ig, 'mastrsk')
    //   .replace(/'/ig, 'mqotek')
    //   .replace(/\s/ig, 'mspace')
    // 1、encode编码(中文字符超出base64加密范围),2、base64加密
    value = window.btoa(window.encodeURIComponent(value))
    // 随机插入字符
    let index = Math.floor(Math.random() * value.length)
    // 插入字符
    let index = Math.floor(value.length / 2)
    value = value.slice(0, index) + salt + value.slice(index)
    // base64加密
@@ -625,7 +611,7 @@
      _sql += `declare @UserName  nvarchar(50),@FullName nvarchar(50)
        select @UserName=UserName,@FullName=FullName from SUsers where UID=@UserID 
        `
      _sql += `insert into ${btn.sql} (${keys},createuserid,CreateUser,CreateStaff,BID) select ${values},@BID,@userid,@username,@fullname`
      _sql += `insert into ${btn.sql} (${keys},createuserid,CreateUser,CreateStaff,BID) select ${values},@userid,@username,@fullname,@BID`
    } else if (btn.OpenType === 'pop' && btn.sqlType === 'update') {
      let _form = []
      formdata.forEach(item => {
src/views/login/index.jsx
@@ -84,6 +84,9 @@
          }
        } else {
          message.warning(res.message)
          this.setState({
            isDisabled: false
          })
        }
      })
    } else {