| | |
| | | state = { |
| | | menulist: null, // 一级菜单 |
| | | visible: false, // 修改密码模态框 |
| | | dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | confirmLoading: false, |
| | | userName: sessionStorage.getItem('User_Name'), |
| | | logourl: window.GLOB.mainlogo, |
| | |
| | | } |
| | | |
| | | state = { |
| | | dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | mainMenuList: null, // 一级菜单,编辑调整上级菜单时获取 |
| | | subMenulist: [], // 二级菜单 |
| | | editMenu: null, // 编辑三级菜单时设置 |
| | |
| | | 'main.excel.content.maxlimit': '内容超长', |
| | | 'main.excel.content.limitmin': '小于最小值', |
| | | 'main.excel.content.limitmax': '大于最大值', |
| | | 'main.form.link.error': '关联菜单设置错误!', |
| | | 'main.form.link.error': '联动菜单设置错误!', |
| | | 'main.form.picture.check': '查看图片', |
| | | 'form.required.input': 'Please input ', |
| | | 'form.required.select': 'Please select ' |
| | |
| | | 'header.menu.func.create': 'Create stored procedures', |
| | | 'header.menu.interface.create': 'Create the interface', |
| | | 'header.menu.tab': 'Tab', |
| | | 'header.menu.tab.subtable': 'Child table', |
| | | 'model.menu.tab.subtable': 'Child table', |
| | | 'header.menu.datasource': 'The data source', |
| | | 'header.menu.maintable': 'The main table', |
| | | 'header.menu.query': 'The query', |
| | | 'header.menu.printTemplate': 'Printed template', |
| | | 'header.form.tabType': 'The tag type', |
| | | 'model.form.tabType': 'The tag type', |
| | | 'header.form.search.placeholder': 'Please add search criteria', |
| | | 'header.form.modal.placeholder': 'Please add the form', |
| | | 'header.form.action.placeholder': 'Please add buttons', |
| | | 'header.form.tab.placeholder': 'Please add tabs', |
| | | 'header.form.column.placeholder': 'Please add columns', |
| | | 'header.form.column.source': 'Columns', |
| | | 'header.form.column.target': 'Have been added', |
| | | 'header.form.column.itemUnit': 'Item', |
| | | 'header.form.column.itemsUnit': 'Items', |
| | | 'header.form.column.action': 'Action', |
| | | 'model.form.column.action': 'Action', |
| | | 'header.form.name': 'Name', |
| | | 'header.form.title': 'Title', |
| | | 'header.form.field': 'Field', |
| | | 'header.form.field.placeholder': 'Please enter a field name', |
| | | 'header.form.innerFunc': 'Internal function', |
| | | 'header.form.innerFunc': 'Internal func', |
| | | 'header.form.outerFunc': 'External function', |
| | | 'header.form.callbackFunc': 'Callback function', |
| | | 'header.form.position': 'Position', |
| | | 'header.form.execSuccess': 'Success', |
| | | 'header.form.execError': 'Failure', |
| | | 'model.form.afterSuccess': 'Success', |
| | | 'model.form.afterError': 'Failure', |
| | | 'header.form.messageTip': 'Message', |
| | | 'header.form.errorTime': 'Residence time', |
| | | 'header.form.refresh': 'Refresh', |
| | |
| | | 'header.form.popClose': 'Label closing', |
| | | 'header.form.toolbar': 'The toolbar', |
| | | 'header.form.grid': 'Table', |
| | | 'header.form.intertype': 'The interface type', |
| | | 'header.form.intertype': 'Interface type', |
| | | 'header.form.interface': 'Address of the interface', |
| | | 'header.form.sysInterface': 'The system interface', |
| | | 'header.form.interface.inner': 'Internal', |
| | | 'header.form.interface.outer': 'External', |
| | | 'header.form.pageTemplate': 'The page template', |
| | | 'header.form.type': 'Type', |
| | | 'header.form.text': 'Text', |
| | | 'model.form.text': 'Text', |
| | | 'header.form.description': '描述', |
| | | 'header.form.textarea': '多行文本', |
| | | 'model.form.textarea': 'Multiline text', |
| | | 'header.form.fileupload': '文件上传', |
| | | 'header.form.funcvar': '函数变量', |
| | | 'header.form.linkForm': '关联表单', |
| | | 'header.form.picture': '图片', |
| | | 'header.form.number': '数字', |
| | | 'model.form.picture': 'Picture', |
| | | 'model.form.number': 'Number', |
| | | 'header.form.letter': '字母', |
| | | 'header.form.letter&number': '字母+数字', |
| | | 'header.form.colspan': '合并列', |
| | | 'header.form.select': 'Select', |
| | | 'header.form.multiselect': '多选', |
| | | 'header.form.link': '关联菜单', |
| | | 'header.form.dateday': 'Date(Day)', |
| | | 'header.form.datetime': 'Date(Second)', |
| | | 'header.form.dateweek': '日期(周)', |
| | | 'header.form.datemonth': '日期(月)', |
| | | 'header.form.dateyear': '日期(年)', |
| | | 'header.form.daterange': '日期(区间)', |
| | | 'model.form.colspan': 'The columns of the merger', |
| | | 'model.form.select': 'Select', |
| | | 'model.form.multiselect': 'Multi-select', |
| | | 'model.form.href': 'Link', |
| | | 'model.form.link': 'Linkage menu', |
| | | 'model.form.dateday': 'Date(Day)', |
| | | 'model.form.datetime': 'Date(Second)', |
| | | 'model.form.dateweek': 'Date(Week)', |
| | | 'model.form.datemonth': 'Date(Month)', |
| | | 'model.form.daterange': 'Date(Range)', |
| | | 'model.form.dategroup': 'Date(Group)', |
| | | 'header.form.initval': 'Initial Value', |
| | | 'header.form.decimal': '小数位', |
| | | 'header.form.format': '格式化', |
| | |
| | | 'header.form.requiredOnce': '多行拼接', |
| | | 'header.form.openType': '打开方式', |
| | | 'header.form.pop': '弹窗', |
| | | 'header.form.popform': '弹窗(表单)', |
| | | 'header.form.popview': '弹窗(标签)', |
| | | 'header.form.tab': '标签页', |
| | | 'model.form.popform': 'Popup form', |
| | | 'model.form.popview': 'Pop-up tag', |
| | | 'model.form.tab': 'The tag page', |
| | | 'header.form.linkTab': '关联标签', |
| | | 'header.form.subTab': '下级标签', |
| | | 'header.form.supTab': '上级标签', |
| | | 'header.form.equalTab': '同级标签', |
| | | 'header.form.currenttab': '当前菜单', |
| | | 'header.form.excelIn': 'Excel导入', |
| | | 'header.form.excelOut': 'Excel导出', |
| | | 'header.form.newpage': '新页面', |
| | | 'header.form.newpage.type': '页面类型', |
| | | 'header.form.newpage.inner': '新页面(内部)', |
| | | 'header.form.newpage.outer': '新页面(外部)', |
| | | 'header.form.newpage.url': '页面地址', |
| | | 'model.form.excelIn': 'Import excel', |
| | | 'model.form.excelOut': 'Export excel', |
| | | 'model.form.newpage': 'The new page', |
| | | 'model.form.newpage.type': 'Page type', |
| | | 'model.form.newpage.url': 'Page address', |
| | | 'header.form.blank': '当前页跳转', |
| | | 'header.form.prompt': '提示框', |
| | | 'header.form.exec': '直接执行', |
| | | 'model.form.prompt': 'Prompt', |
| | | 'model.form.exec': 'Direct execution', |
| | | 'header.form.icon': '图标', |
| | | 'header.form.class': '颜色', |
| | | 'header.form.align': '对齐方式', |
| | |
| | | 'header.form.resourceType': '选项来源', |
| | | 'header.form.custom': '自定义', |
| | | 'header.form.datasource': '数据源', |
| | | 'header.form.tablename': '表名', |
| | | 'model.form.tablename': 'Table name', |
| | | 'header.form.actionhelp.tablename': '使用系统函数时,请填写数据源。', |
| | | 'header.form.actionhelp.sqlType': '使用系统函数时,请选择类型。', |
| | | 'header.form.action.type': '操作类型', |
| | |
| | | 'header.form.vertical2': '纵向(2列)', |
| | | 'header.form.topPicBottomText': '上图下文', |
| | | 'header.form.leftPicRightText': '左图右文', |
| | | 'header.form.selectItem.error': '下拉选项设置错误!', |
| | | 'model.form.selectItem.error': '下拉选项设置错误!', |
| | | 'header.form.request.method': '请求方式', |
| | | 'header.form.readonly': '是否只读', |
| | | 'header.form.field.required': '是否必填', |
| | |
| | | 'header.form.pagination': '分页', |
| | | 'header.form.regular': '正则校验', |
| | | 'header.form.quickadd': '快捷添加', |
| | | 'header.form.funcbutton': '功能按钮', |
| | | 'model.form.funcbutton': 'Function button', |
| | | 'header.form.funcType': '功能类型', |
| | | 'header.form.func.changeuser': '切换用户', |
| | | 'header.form.func.print': '打印', |
| | | 'header.form.execMode': '执行方式', |
| | | 'model.form.execMode': 'Mode', |
| | | 'header.form.thawbutton': '解冻按钮', |
| | | 'header.form.maxRows': '最大行数', |
| | | 'header.form.paste': '粘贴', |
| | | 'header.form.ratio': '比例', |
| | | 'header.form.blacklist': '黑名单', |
| | | 'header.form.linkmenu': '关联菜单', |
| | | 'model.form.linkmenu': 'Association', |
| | | 'header.form.clickscale': '点击缩放', |
| | | 'header.form.easyCode': 'EasyCode', |
| | | 'header.modal.form.edit': '表单-编辑', |
| | |
| | | 'header.modal.action.copy': '按钮-复制', |
| | | 'header.modal.form.copy': '表单-复制', |
| | | 'header.modal.column.edit': '显示列-编辑', |
| | | 'header.modal.colspan.edit': '合并列-编辑', |
| | | 'header.modal.gridbtn.edit': '操作列-编辑', |
| | | 'header.modal.tabs.edit': '标签-编辑', |
| | | 'model.field.exist': '字段已存在', |
| | | 'model.name.exist': '名称已存在', |
| | | 'form.required.input': 'Please enter the ', |
| | | 'form.required.select': '请选择', |
| | | 'form.required.select': 'Please select a ', |
| | | 'form.required.add': 'Please add ', |
| | | 'model.tooltip.table.guide': '此处可以添加页面配置相关的常用表,可通过工具栏中的添加按钮,可批量添加表格相关字段。', |
| | | 'model.tooltip.search.guide': '在左侧工具栏《搜索》中,选择对应搜索框拖至此处添加;或点击按钮《添加搜索条件》批量添加,选择批量添加时,需提前选择使用表。', |
| | | 'model.tooltip.action.guide': '在左侧工具栏《按钮》中,选择对应类型的按钮拖至此处添加,如选择按钮类型为表单、新标签页等含有配置页面的按钮,可在左侧工具栏-按钮-可配置按钮处,点击按钮完成相关配置。注:当设置按钮显示位置为表格时,显示列会增加操作列。', |
| | |
| | | 'main.excel.content.maxlimit': '内容超长', |
| | | 'main.excel.content.limitmin': '小于最小值', |
| | | 'main.excel.content.limitmax': '大于最大值', |
| | | 'main.form.link.error': '关联菜单设置错误!', |
| | | 'main.form.link.error': '联动菜单设置错误!', |
| | | 'main.form.picture.check': '查看图片', |
| | | 'form.required.input': '请输入', |
| | | 'form.required.select': '请选择' |
| | |
| | | 'header.menu.func.create': '创建存储过程', |
| | | 'header.menu.interface.create': '创建接口', |
| | | 'header.menu.tab': '标签页', |
| | | 'header.menu.tab.subtable': '子表', |
| | | 'model.menu.tab.subtable': '子表', |
| | | 'header.menu.datasource': '数据来源', |
| | | 'header.menu.maintable': '主表', |
| | | 'header.menu.query': '查询', |
| | | 'header.menu.printTemplate': '打印模板', |
| | | 'header.form.tabType': '标签类型', |
| | | 'model.form.tabType': '标签类型', |
| | | 'header.form.search.placeholder': '请添加搜索条件', |
| | | 'header.form.modal.placeholder': '请添加表单', |
| | | 'header.form.action.placeholder': '请添加按钮', |
| | | 'header.form.tab.placeholder': '请添加标签页', |
| | | 'header.form.column.placeholder': '请添加显示列', |
| | | 'header.form.column.source': '显示列', |
| | | 'header.form.column.target': '已添加', |
| | | 'header.form.column.itemUnit': '项', |
| | | 'header.form.column.itemsUnit': '项', |
| | | 'header.form.column.action': '操作', |
| | | 'model.form.column.action': '操作', |
| | | 'header.form.name': '名称', |
| | | 'header.form.title': '标题', |
| | | 'header.form.field': '字段', |
| | |
| | | 'header.form.outerFunc': '外部函数', |
| | | 'header.form.callbackFunc': '回调函数', |
| | | 'header.form.position': '显示位置', |
| | | 'header.form.execSuccess': '执行成功', |
| | | 'header.form.execError': '执行失败', |
| | | 'model.form.afterSuccess': '成功后', |
| | | 'model.form.afterError': '失败后', |
| | | 'header.form.messageTip': '信息提示', |
| | | 'header.form.errorTime': '停留时间', |
| | | 'header.form.refresh': '刷新', |
| | |
| | | 'header.form.interface.outer': '外部', |
| | | 'header.form.pageTemplate': '页面模板', |
| | | 'header.form.type': '类型', |
| | | 'header.form.text': '文本', |
| | | 'model.form.text': '文本', |
| | | 'header.form.description': '描述', |
| | | 'header.form.textarea': '多行文本', |
| | | 'model.form.textarea': '多行文本', |
| | | 'header.form.fileupload': '文件上传', |
| | | 'header.form.funcvar': '函数变量', |
| | | 'header.form.linkForm': '关联表单', |
| | | 'header.form.picture': '图片', |
| | | 'header.form.number': '数字', |
| | | 'model.form.picture': '图片', |
| | | 'model.form.number': '数字', |
| | | 'header.form.letter': '字母', |
| | | 'header.form.letter&number': '字母+数字', |
| | | 'header.form.colspan': '合并列', |
| | | 'header.form.select': '下拉选择', |
| | | 'header.form.multiselect': '下拉多选', |
| | | 'header.form.link': '关联菜单', |
| | | 'header.form.dateday': '日期(天)', |
| | | 'header.form.datetime': '日期(秒)', |
| | | 'header.form.dateweek': '日期(周)', |
| | | 'header.form.datemonth': '日期(月)', |
| | | 'header.form.dateyear': '日期(年)', |
| | | 'header.form.daterange': '日期(区间)', |
| | | 'model.form.colspan': '合并列', |
| | | 'model.form.select': '下拉选择', |
| | | 'model.form.multiselect': '下拉多选', |
| | | 'model.form.href': '链接', |
| | | 'model.form.link': '联动菜单', |
| | | 'model.form.dateday': '日期(天)', |
| | | 'model.form.datetime': '日期(秒)', |
| | | 'model.form.dateweek': '日期(周)', |
| | | 'model.form.datemonth': '日期(月)', |
| | | 'model.form.daterange': '日期(区间)', |
| | | 'model.form.dategroup': '日期(组合)', |
| | | 'header.form.initval': '初始值', |
| | | 'header.form.decimal': '小数位', |
| | | 'header.form.format': '格式化', |
| | |
| | | 'header.form.requiredOnce': '多行拼接', |
| | | 'header.form.openType': '打开方式', |
| | | 'header.form.pop': '弹窗', |
| | | 'header.form.popform': '弹窗(表单)', |
| | | 'header.form.popview': '弹窗(标签)', |
| | | 'header.form.tab': '标签页', |
| | | 'model.form.popform': '弹窗(表单)', |
| | | 'model.form.popview': '弹窗(标签)', |
| | | 'model.form.tab': '标签页', |
| | | 'header.form.linkTab': '关联标签', |
| | | 'header.form.subTab': '下级标签', |
| | | 'header.form.supTab': '上级标签', |
| | | 'header.form.equalTab': '同级标签', |
| | | 'header.form.currenttab': '当前菜单', |
| | | 'header.form.excelIn': '导入Excel', |
| | | 'header.form.excelOut': '导出Excel', |
| | | 'header.form.newpage': '新页面', |
| | | 'header.form.newpage.type': '页面类型', |
| | | 'header.form.newpage.inner': '新页面(内部)', |
| | | 'header.form.newpage.outer': '新页面(外部)', |
| | | 'header.form.newpage.url': '页面地址', |
| | | 'model.form.excelIn': '导入Excel', |
| | | 'model.form.excelOut': '导出Excel', |
| | | 'model.form.newpage': '新页面', |
| | | 'model.form.newpage.type': '页面类型', |
| | | 'model.form.newpage.url': '页面地址', |
| | | 'header.form.blank': '当前页跳转', |
| | | 'header.form.prompt': '提示框', |
| | | 'header.form.exec': '直接执行', |
| | | 'model.form.prompt': '提示框', |
| | | 'model.form.exec': '直接执行', |
| | | 'header.form.icon': '图标', |
| | | 'header.form.class': '颜色', |
| | | 'header.form.align': '对齐方式', |
| | |
| | | 'header.form.resourceType': '选项来源', |
| | | 'header.form.custom': '自定义', |
| | | 'header.form.datasource': '数据源', |
| | | 'header.form.tablename': '表名', |
| | | 'model.form.tablename': '表名', |
| | | 'header.form.actionhelp.tablename': '使用系统函数时,请填写表名,使用自定义函数时,可忽略。', |
| | | 'header.form.actionhelp.sqlType': '使用系统函数时,请选择操作类型,使用自定义函数时,可忽略。', |
| | | 'header.form.action.type': '操作类型', |
| | |
| | | 'header.form.vertical2': '纵向(2列)', |
| | | 'header.form.topPicBottomText': '上图下文', |
| | | 'header.form.leftPicRightText': '左图右文', |
| | | 'header.form.selectItem.error': '下拉选项设置错误!', |
| | | 'model.form.selectItem.error': '下拉选项设置错误!', |
| | | 'header.form.request.method': '请求方式', |
| | | 'header.form.readonly': '是否只读', |
| | | 'header.form.field.required': '是否必填', |
| | |
| | | 'header.form.pagination': '分页', |
| | | 'header.form.regular': '正则校验', |
| | | 'header.form.quickadd': '快捷添加', |
| | | 'header.form.funcbutton': '功能按钮', |
| | | 'model.form.funcbutton': '功能按钮', |
| | | 'header.form.funcType': '功能类型', |
| | | 'header.form.func.changeuser': '切换用户', |
| | | 'header.form.func.print': '打印', |
| | | 'header.form.execMode': '执行方式', |
| | | 'model.form.execMode': '执行方式', |
| | | 'header.form.thawbutton': '解冻按钮', |
| | | 'header.form.maxRows': '最大行数', |
| | | 'header.form.paste': '粘贴', |
| | | 'header.form.ratio': '比例', |
| | | 'header.form.blacklist': '黑名单', |
| | | 'header.form.linkmenu': '关联菜单', |
| | | 'model.form.linkmenu': '关联菜单', |
| | | 'header.form.clickscale': '点击缩放', |
| | | 'header.form.easyCode': '助记码', |
| | | 'header.modal.form.edit': '表单-编辑', |
| | |
| | | 'header.modal.action.copy': '按钮-复制', |
| | | 'header.modal.form.copy': '表单-复制', |
| | | 'header.modal.column.edit': '显示列-编辑', |
| | | 'header.modal.colspan.edit': '合并列-编辑', |
| | | 'header.modal.gridbtn.edit': '操作列-编辑', |
| | | 'header.modal.tabs.edit': '标签-编辑', |
| | | 'model.field.exist': '字段已存在', |
| | | 'model.name.exist': '名称已存在', |
| | | 'form.required.input': '请输入', |
| | | 'form.required.select': '请选择', |
| | | 'form.required.add': '请添加', |
| | | 'model.tooltip.table.guide': '此处可以添加页面配置相关的常用表,可通过工具栏中的添加按钮,可批量添加表格相关字段。', |
| | | 'model.tooltip.search.guide': '在左侧工具栏《搜索》中,选择对应搜索框拖至此处添加;或点击按钮《添加搜索条件》批量添加,选择批量添加时,需提前选择使用表。', |
| | | 'model.tooltip.action.guide': '在左侧工具栏《按钮》中,选择对应类型的按钮拖至此处添加,如选择按钮类型为表单、新标签页等含有配置页面的按钮,可在左侧工具栏-按钮-可配置按钮处,点击按钮完成相关配置。注:当设置按钮显示位置为表格时,显示列会增加操作列。', |
New file |
| | |
| | | import React, {Component} from 'react' |
| | | // import PropTypes from 'prop-types' |
| | | import { is, fromJS } from 'immutable' |
| | | import { Collapse } from 'antd' |
| | | |
| | | import zhCN from '@/locales/zh-CN/mob.js' |
| | | import enUS from '@/locales/en-US/mob.js' |
| | | import './index.scss' |
| | | |
| | | const { Panel } = Collapse |
| | | |
| | | class MobController extends Component { |
| | | // static propTpyes = { |
| | | // collapse: PropTypes.bool, |
| | | // } |
| | | state = { |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | } |
| | | |
| | | shouldComponentUpdate (nextProps, nextState) { |
| | | return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState)) |
| | | } |
| | | |
| | | render () { |
| | | |
| | | return ( |
| | | <div className="mob-controller"> |
| | | <Collapse expandIconPosition="right"> |
| | | <Panel header="字体" key="0"> |
| | | 字体修改 |
| | | </Panel> |
| | | <Panel header="背景" key="1"> |
| | | 背景 |
| | | </Panel> |
| | | <Panel header="边距" key="2"> |
| | | 边距 |
| | | </Panel> |
| | | <Panel header="其他" key="3"> |
| | | 其他 |
| | | </Panel> |
| | | </Collapse> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
| | | |
| | | export default MobController |
New file |
| | |
| | | .mob-controller { |
| | | width: 100%; |
| | | height: 100%; |
| | | overflow: hidden; |
| | | >.ant-collapse { |
| | | border-top: 0; |
| | | |
| | | > .ant-collapse-item > .ant-collapse-header { |
| | | padding: 10px 40px 10px 16px; |
| | | } |
| | | } |
| | | } |
| | |
| | | class MobLogin extends Component { |
| | | static propTpyes = { |
| | | card: PropTypes.object, |
| | | editId: PropTypes.any, |
| | | triggerEdit: PropTypes.func, |
| | | onDoubleClick: PropTypes.func |
| | | } |
| | |
| | | } |
| | | |
| | | editLogo = (e) => { |
| | | const { card } = this.props |
| | | e.stopPropagation() |
| | | let element = { |
| | | uuid: card.logo.uuid, |
| | | items: ['picture'], |
| | | item: fromJS(card.logo).toJS() |
| | | } |
| | | this.props.triggerEdit(element) |
| | | } |
| | | |
| | | editTitle = (e) => { |
| | | const { card } = this.props |
| | | e.stopPropagation() |
| | | let element = { |
| | | uuid: card.title.uuid, |
| | | items: ['font'], |
| | | item: fromJS(card.title).toJS() |
| | | } |
| | | this.props.triggerEdit(element) |
| | | } |
| | | |
| | | editMsg = (e) => { |
| | | const { card } = this.props |
| | | e.stopPropagation() |
| | | let element = { |
| | | uuid: card.copyright.uuid, |
| | | items: ['font'], |
| | | item: fromJS(card.copyright).toJS() |
| | | } |
| | | this.props.triggerEdit(element) |
| | | } |
| | | |
| | | editBox = (e) => { |
| | | const { card } = this.props |
| | | e.stopPropagation() |
| | | let element = { |
| | | uuid: card.box.uuid, |
| | | items: ['font', 'padding', 'background'], |
| | | item: fromJS(card.box).toJS() |
| | | } |
| | | this.props.triggerEdit(element) |
| | | } |
| | | |
| | | render () { |
| | | const { card } = this.props |
| | | const { card, editId } = this.props |
| | | const { getFieldProps } = this.props.form |
| | | const { rember } = this.state |
| | | |
| | | console.log(editId) |
| | | return ( |
| | | <div className="mob-login" onClick={this.editBox} style={{paddingTop: `calc(17vh - 10px)`}}> |
| | | <div className="logo" onClick={this.editLogo}> |
| | | <div className={'logo ' + (editId === card.logo.uuid ? 'editing' : '')} onClick={this.editLogo}> |
| | | <img src={card.logo.content} alt=""/> |
| | | </div> |
| | | <div className="plat-name" onClick={this.editTitle}>明科商业智能开放平台</div> |
| | | <div className={'plat-name ' + (editId === card.title.uuid ? 'editing' : '')} onClick={this.editTitle}>明科商业智能开放平台</div> |
| | | <InputItem |
| | | placeholder="UserName" |
| | | prefixListCls="mk-login-item am-list" |
| | |
| | | <div className="clear-both"></div> |
| | | </div> |
| | | <Button type="primary" onDoubleClick={() => this.props.doubleClickCard(card.login)}>登录</Button> |
| | | <div className="company-msg" onClick={this.editMsg}> |
| | | <div className={'company-msg ' + (editId === card.copyright.uuid ? 'editing' : '')} onClick={this.editMsg}> |
| | | <p>Copyright©2017 所有相关版权归 北京明科普华信息技术有限公司</p> |
| | | </div> |
| | | </div> |
| | |
| | | max-width: 100%; |
| | | } |
| | | } |
| | | .logo:hover { |
| | | .logo.editing { |
| | | border: 1px solid #1890ff; |
| | | box-shadow: 0px 0px 2px #1890ff; |
| | | } |
| | | .logo:not(.editing):hover { |
| | | border-color: #535353; |
| | | } |
| | | |
| | | .plat-name { |
| | | max-width: 280px; |
| | | min-height: 10px; |
| | |
| | | font-weight: bold; |
| | | border: 1px dotted transparent; |
| | | } |
| | | .plat-name:hover { |
| | | .plat-name.editing { |
| | | border: 1px solid #1890ff; |
| | | box-shadow: 0px 0px 2px #1890ff; |
| | | } |
| | | .plat-name:not(.editing):hover { |
| | | border-color: #535353; |
| | | } |
| | | .mk-login-item.am-list-item { |
| | |
| | | text-align: center; |
| | | border: 1px dotted transparent; |
| | | } |
| | | .company-msg:hover { |
| | | .company-msg.editing { |
| | | border: 1px solid #1890ff; |
| | | box-shadow: 0px 0px 2px #1890ff; |
| | | } |
| | | .company-msg:not(.editing):hover { |
| | | border-color: #535353; |
| | | } |
| | | } |
| | |
| | | // const Home = asyncComponent(() => import('@/mob/home')) |
| | | const Login = asyncComponent(() => import('@/mob/login')) |
| | | |
| | | const Card = ({ id, card, moveCard, findCard, editCard, delCard, hasDrop, doubleClickCard }) => { |
| | | const Card = ({ id, card, moveCard, findCard, editId, editCard, delCard, hasDrop, doubleClickCard }) => { |
| | | const originalIndex = findCard(id).index |
| | | const [{ isDragging }, drag] = useDrag({ |
| | | item: { type: 'mob', id, originalIndex }, |
| | |
| | | const getCardComponent = () => { |
| | | if (card.type === 'login') { |
| | | if (card.subtype === 'mob-login-1') { |
| | | return (<Login card={card} triggerEdit={editCard} onDoubleClick={doubleClickCard} />) |
| | | return (<Login card={card} triggerEdit={editCard} editId={editId} onDoubleClick={doubleClickCard} />) |
| | | } |
| | | } |
| | | } |
| | |
| | | import { useDrop } from 'react-dnd' |
| | | import { is, fromJS } from 'immutable' |
| | | import update from 'immutability-helper' |
| | | import { message } from 'antd' |
| | | import { message, Empty } from 'antd' |
| | | |
| | | import Utils from '@/utils/utils.js' |
| | | import Card from './card' |
| | | import './index.scss' |
| | | |
| | | const Container = ({config, handleList, editCard, deleteCard, doubleClickCard }) => { |
| | | const Container = ({config, editId, handleList, editCard, deleteCard, doubleClickCard }) => { |
| | | let target = null |
| | | |
| | | const [cards, setCards] = useState(config.components) |
| | |
| | | index: cards.indexOf(card), |
| | | } |
| | | } |
| | | |
| | | // const doubleClickBtn = id => { |
| | | // const { card } = findCard(id) |
| | | // doubleClickCard(card) |
| | | // } |
| | | |
| | | // const editCard = id => { |
| | | // const { card } = findCard(id) |
| | | // handleMenu(card) |
| | | // } |
| | | |
| | | // const delCard = id => { |
| | | // const { card } = findCard(id) |
| | | // deleteMenu(card) |
| | | // } |
| | | |
| | | const hasDrop = (item) => { |
| | | target = item |
| | |
| | | id={card.uuid} |
| | | key={card.uuid} |
| | | card={card} |
| | | editId={editId} |
| | | moveCard={moveCard} |
| | | editCard={editCard} |
| | | delCard={deleteCard} |
| | | findCard={findCard} |
| | | hasDrop={hasDrop} |
| | | // doubleClickCard={doubleClickBtn} |
| | | doubleClickCard={doubleClickCard} |
| | | /> |
| | | ))} |
| | | {/* {cards.length === 0 ? |
| | | <div className="common-drawarea-placeholder"> |
| | | {placeholder} |
| | | </div> : null |
| | | } */} |
| | | {cards.length === 0 ? |
| | | <Empty description="请添加组件" /> : null |
| | | } |
| | | </div> |
| | | ) |
| | | } |
| | |
| | | display: inline-block; |
| | | } |
| | | } |
| | | >.ant-empty { |
| | | padding-top: 40px; |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | state = { |
| | | dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | empty: true, |
| | | chartId: Utils.getuuid(), |
| | | chartData: [], |
| | |
| | | }) |
| | | } |
| | | |
| | | // 保存初始列表,用于关联菜单控制 |
| | | // 保存初始列表,用于联动菜单控制 |
| | | item.oriOptions = fromJS(item.options).toJS() |
| | | |
| | | // 下级表单控制-字段写入 |
| | |
| | | import zhCN from '@/locales/zh-CN/model.js' |
| | | import enUS from '@/locales/en-US/model.js' |
| | | |
| | | const CommonDict = (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS |
| | | const CommonDict = localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS |
| | | |
| | | class CommonTableBaseData { |
| | | baseConfig = { |
| | |
| | | Align: 'center', |
| | | IsSort: 'false', |
| | | uuid: Utils.getuuid(), |
| | | label: CommonDict['header.form.column.action'], |
| | | label: CommonDict['model.form.column.action'], |
| | | type: 'action', |
| | | style: 'button', |
| | | show: 'horizontal', |
| | |
| | | searchItems = [ |
| | | { |
| | | type: 'search', |
| | | label: CommonDict['header.form.text'], |
| | | label: CommonDict['model.form.text'], |
| | | subType: 'text', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'search', |
| | | label: CommonDict['header.form.select'], |
| | | label: CommonDict['model.form.select'], |
| | | subType: 'select', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'search', |
| | | label: CommonDict['header.form.multiselect'], |
| | | label: CommonDict['model.form.multiselect'], |
| | | subType: 'multiselect', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'search', |
| | | label: CommonDict['header.form.link'], |
| | | label: CommonDict['model.form.link'], |
| | | subType: 'link', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'search', |
| | | label: CommonDict['header.form.dateday'], |
| | | label: CommonDict['model.form.dateday'], |
| | | subType: 'date', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'search', |
| | | label: CommonDict['header.form.dateweek'], |
| | | label: CommonDict['model.form.dateweek'], |
| | | subType: 'dateweek', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'search', |
| | | label: CommonDict['header.form.datemonth'], |
| | | label: CommonDict['model.form.datemonth'], |
| | | subType: 'datemonth', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'search', |
| | | label: CommonDict['header.form.daterange'], |
| | | label: CommonDict['model.form.daterange'], |
| | | subType: 'daterange', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'search', |
| | | label: '日期(组合)', |
| | | label: CommonDict['model.form.dategroup'], |
| | | subType: 'group', |
| | | url: '' |
| | | } |
| | |
| | | actionItems = [ |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.popform'], |
| | | label: CommonDict['model.form.popform'], |
| | | subType: 'pop', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.prompt'], |
| | | label: CommonDict['model.form.prompt'], |
| | | subType: 'prompt', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.exec'], |
| | | label: CommonDict['model.form.exec'], |
| | | subType: 'exec', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.excelIn'], |
| | | label: CommonDict['model.form.excelIn'], |
| | | subType: 'excelIn', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.excelOut'], |
| | | label: CommonDict['model.form.excelOut'], |
| | | subType: 'excelOut', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.popview'], |
| | | label: CommonDict['model.form.popview'], |
| | | subType: 'popview', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.tab'], |
| | | label: CommonDict['model.form.tab'], |
| | | subType: 'tab', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.newpage'], |
| | | label: CommonDict['model.form.newpage'], |
| | | subType: 'innerpage', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.funcbutton'], |
| | | label: CommonDict['model.form.funcbutton'], |
| | | subType: 'funcbutton', |
| | | url: '' |
| | | } |
| | |
| | | columnItems = [ |
| | | { |
| | | type: 'columns', |
| | | label: CommonDict['header.form.text'], |
| | | label: CommonDict['model.form.text'], |
| | | subType: 'text', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'columns', |
| | | label: CommonDict['header.form.number'], |
| | | label: CommonDict['model.form.number'], |
| | | subType: 'number', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'columns', |
| | | label: CommonDict['header.form.picture'], |
| | | label: CommonDict['model.form.picture'], |
| | | subType: 'picture', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'columns', |
| | | label: CommonDict['header.form.textarea'], |
| | | label: CommonDict['model.form.textarea'], |
| | | subType: 'textarea', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'columns', |
| | | label: CommonDict['header.form.colspan'], |
| | | label: CommonDict['model.form.href'], |
| | | subType: 'link', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'columns', |
| | | label: CommonDict['model.form.colspan'], |
| | | subType: 'colspan', |
| | | url: '' |
| | | } |
| | |
| | | tabItems = [ |
| | | { |
| | | type: 'tabs', |
| | | label: CommonDict['header.menu.tab.subtable'], |
| | | label: CommonDict['model.menu.tab.subtable'], |
| | | subType: 'SubTable', |
| | | } |
| | | ] |
| | |
| | | item.options = [ |
| | | { |
| | | value: 'prompt', |
| | | text: this.props.dict['header.form.prompt'] |
| | | text: this.props.dict['model.form.prompt'] |
| | | }, { |
| | | value: 'exec', |
| | | text: this.props.dict['header.form.exec'] |
| | | text: this.props.dict['model.form.exec'] |
| | | } |
| | | ] |
| | | if (card.btnType === 'cancel') { |
| | |
| | | const { Panel } = Collapse |
| | | const { Option } = Select |
| | | const { confirm } = Modal |
| | | const CommonDict = (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS |
| | | const CommonDict = localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS |
| | | |
| | | class ComTableConfig extends Component { |
| | | static propTpyes = { |
| | |
| | | import zhCN from '@/locales/zh-CN/model.js' |
| | | import enUS from '@/locales/en-US/model.js' |
| | | |
| | | const CommonDict = (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS |
| | | const CommonDict = localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS |
| | | |
| | | class CommonTableBaseData { |
| | | baseConfig = { |
| | |
| | | actionItems = [ |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.prompt'], |
| | | label: CommonDict['model.form.prompt'], |
| | | subType: 'prompt', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.exec'], |
| | | label: CommonDict['model.form.exec'], |
| | | subType: 'exec', |
| | | url: '' |
| | | } |
| | |
| | | tabItems = [ |
| | | { |
| | | type: 'tabs', |
| | | label: CommonDict['header.menu.tab.subtable'], |
| | | label: CommonDict['model.menu.tab.subtable'], |
| | | subType: 'SubTable', |
| | | } |
| | | ] |
| | |
| | | editMvisible: false, // 编辑菜单模态框 |
| | | thawMvisible: false, // 解除冻结模态框 |
| | | confirmLoading: false, // 提交中。。。 |
| | | dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | } |
| | | |
| | | handlePreviewList = (List) => { |
| | |
| | | } |
| | | |
| | | state = { |
| | | dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | menulist: null, // 菜单列表 |
| | | type: '', // 编辑类型,add or edit |
| | | title: '', // 模态框标题 |
| | |
| | | } |
| | | |
| | | state = { |
| | | dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | thawmenulist: null, // 已冻结的二级菜单 |
| | | type: '', // 操作类型,新建或编辑菜单 |
| | | thawMvisible: false, // 解除冻结模态框 |
| | |
| | | const { Panel } = Collapse |
| | | const { Option } = Select |
| | | const { confirm } = Modal |
| | | const CommonDict = (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS |
| | | const CommonDict = localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS |
| | | |
| | | class ComModalConfig extends Component { |
| | | static propTpyes = { |
| | |
| | | import zhCN from '@/locales/zh-CN/model.js' |
| | | import enUS from '@/locales/en-US/model.js' |
| | | |
| | | const CommonDict = (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS |
| | | const CommonDict = localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS |
| | | |
| | | export const BaseConfig = { |
| | | type: 'Modal', |
| | |
| | | export const SearchItems = [ |
| | | { |
| | | type: 'form', |
| | | label: CommonDict['header.form.text'], |
| | | label: CommonDict['model.form.text'], |
| | | subType: 'text', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'form', |
| | | label: CommonDict['header.form.number'], |
| | | label: CommonDict['model.form.number'], |
| | | subType: 'number', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'form', |
| | | label: CommonDict['header.form.select'], |
| | | label: CommonDict['model.form.select'], |
| | | subType: 'select', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'form', |
| | | label: CommonDict['header.form.multiselect'], |
| | | label: CommonDict['model.form.multiselect'], |
| | | subType: 'multiselect', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'form', |
| | | label: CommonDict['header.form.link'], |
| | | label: CommonDict['model.form.link'], |
| | | subType: 'link', |
| | | url: '' |
| | | }, |
| | |
| | | }, |
| | | { |
| | | type: 'form', |
| | | label: CommonDict['header.form.dateday'], |
| | | label: CommonDict['model.form.dateday'], |
| | | subType: 'date', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'form', |
| | | label: CommonDict['header.form.datemonth'], |
| | | label: CommonDict['model.form.datemonth'], |
| | | subType: 'datemonth', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'form', |
| | | label: CommonDict['header.form.datetime'], |
| | | label: CommonDict['model.form.datetime'], |
| | | subType: 'datetime', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'form', |
| | | label: CommonDict['header.form.textarea'], |
| | | label: CommonDict['model.form.textarea'], |
| | | subType: 'textarea', |
| | | url: '' |
| | | }, |
| | |
| | | formlist: _formlist |
| | | }, () => { |
| | | if (value === 'excelIn') { |
| | | _fieldval.label = this.props.dict['header.form.excelIn'] |
| | | _fieldval.label = this.props.dict['model.form.excelIn'] |
| | | _fieldval.class = 'border-dgreen' |
| | | } else if (value === 'excelOut') { |
| | | _fieldval.label = this.props.dict['header.form.excelOut'] |
| | | _fieldval.label = this.props.dict['model.form.excelOut'] |
| | | _fieldval.class = 'dgreen' |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | state = { |
| | | dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | card: null, // 编辑中元素 |
| | | formlist: null, // 表单信息 |
| | | actionlist: null, // 按钮组 |
| | |
| | | Align: 'center', |
| | | IsSort: 'false', |
| | | uuid: Utils.getuuid(), |
| | | label: this.state.dict['header.form.column.action'], |
| | | label: this.state.dict['model.form.column.action'], |
| | | type: 'action', |
| | | style: 'button', |
| | | show: 'horizontal', |
| | |
| | | Align: 'center', |
| | | IsSort: 'false', |
| | | uuid: Utils.getuuid(), |
| | | label: this.state.dict['header.form.column.action'], |
| | | label: this.state.dict['model.form.column.action'], |
| | | type: 'action', |
| | | style: 'button', |
| | | show: 'horizontal', |
| | |
| | | Align: 'center', |
| | | IsSort: 'false', |
| | | uuid: Utils.getuuid(), |
| | | label: this.state.dict['header.form.column.action'], |
| | | label: this.state.dict['model.form.column.action'], |
| | | type: 'action', |
| | | style: 'button', |
| | | show: 'horizontal', |
| | |
| | | <Modal |
| | | title={dict['model.action'] + '-' + (card && card.copyType === 'action' ? dict['model.copy'] : dict['model.edit'])} |
| | | visible={visible} |
| | | width={750} |
| | | width={800} |
| | | maskClosable={false} |
| | | onCancel={this.editModalCancel} |
| | | footer={[ |
| | |
| | | <Form {...formItemLayout}> |
| | | <Row gutter={24}> |
| | | <Col span={8}> |
| | | <Form.Item label={'Excel表名'}> |
| | | <Form.Item label={this.props.dict['model.form.tablename']}> |
| | | {getFieldDecorator('sheet', { |
| | | initialValue: verify.sheet || '', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: this.props.dict['form.required.input'] + this.props.dict['header.form.tablename'] + '!' |
| | | message: this.props.dict['form.required.input'] + this.props.dict['model.form.tablename'] + '!' |
| | | } |
| | | ] |
| | | })(<Input placeholder="" autoComplete="off" />)} |
| | |
| | | } |
| | | |
| | | state = { |
| | | dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | modaltype: '', |
| | | formlist: null, |
| | | cardwidth: 0, |
| | |
| | | } |
| | | |
| | | state = { |
| | | dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | visible: true |
| | | } |
| | | |
| | |
| | | <Col span={12}> |
| | | <Form.Item label={this.props.dict['header.form.type']}> |
| | | {getFieldDecorator('type', { |
| | | initialValue: this.props.dict['header.form.colspan'], |
| | | initialValue: this.props.dict['model.form.colspan'], |
| | | rules: [ |
| | | { |
| | | required: true, |
| | |
| | | text: this.props.dict['header.form.button'] |
| | | }, { |
| | | MenuID: 'text', |
| | | text: this.props.dict['header.form.text'] |
| | | text: this.props.dict['model.form.text'] |
| | | }] |
| | | }, |
| | | { |
| | |
| | | } |
| | | |
| | | state = { |
| | | dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | columnlist: null, // 显示列 |
| | | loading: false, // 查询显示列关联菜单 |
| | | loading: false, // 查询显示列联动菜单 |
| | | showField: false, // 显示列字段 |
| | | modaltype: '', // 模态框控制 |
| | | card: null // 编辑中元素 |
| | |
| | | <Modal |
| | | title={dict['header.modal.column.edit']} |
| | | visible={modaltype === 'columns'} |
| | | width={750} |
| | | width={800} |
| | | maskClosable={false} |
| | | onOk={this.handleSubmit} |
| | | onCancel={this.editModalCancel} |
| | |
| | | </Modal> |
| | | {/* 合并列编辑 */} |
| | | <Modal |
| | | title={dict['header.modal.colspan.edit']} |
| | | title={dict['model.modal.colspan'] + '-' + dict['model.edit']} |
| | | visible={modaltype === 'colspan'} |
| | | width={750} |
| | | width={800} |
| | | maskClosable={false} |
| | | onOk={this.handleSubmit} |
| | | onCancel={this.editModalCancel} |
| | |
| | | <Modal |
| | | title={dict['header.modal.gridbtn.edit']} |
| | | visible={modaltype === 'gridbtn'} |
| | | width={700} |
| | | width={800} |
| | | maskClosable={false} |
| | | onOk={this.handleSubmit} |
| | | onCancel={this.editModalCancel} |
| | |
| | | } |
| | | |
| | | state = { |
| | | dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | fields: [], // 字段集 |
| | | tableVisible: false, // 模态框控制 |
| | | } |
| | |
| | | } |
| | | |
| | | state = { |
| | | dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | searchlist: null, // 搜索条件集 |
| | | sqlVerifing: false, // sql验证中 |
| | | visible: false, // 模态框控制 |
| | |
| | | if (!err) { |
| | | let isvalid = true |
| | | values.uuid = this.props.card.uuid |
| | | // 下拉菜单或关联菜单 |
| | | // 下拉菜单或联动菜单 |
| | | if ((values.type === 'multiselect' || values.type === 'select' || values.type === 'link') && values.resourceType === '0') { |
| | | values.options = this.refs.editTable.state.dataSource |
| | | values.dataSource = '' |
| | |
| | | } else { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: this.props.dict['header.form.selectItem.error'], |
| | | message: this.props.dict['model.form.selectItem.error'], |
| | | duration: 5 |
| | | }) |
| | | } |
| | |
| | | } |
| | | |
| | | state = { |
| | | dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | menu: null, // 菜单信息 |
| | | formlist: null, // 表单信息 |
| | | visible: false, // 模态框控制 |
| | |
| | | } |
| | | |
| | | state = { |
| | | dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | tables: [], // 系统表 |
| | | tableFields: [], // 已选表字段集 |
| | | selectedTables: [], // 已选表 |
| | |
| | | } |
| | | |
| | | state = { |
| | | dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | tabgroups: [], // 标签组 |
| | | card: [], // 编辑标签 |
| | | group: [], // 编辑组 |
| | |
| | | handleMenu={(card) => this.handleTab(card, group)} |
| | | deleteMenu={(card) => this.deleteElement(card, group)} |
| | | doubleClickCard={this.props.setSubConfig} |
| | | placeholder={this.state.dict['header.form.tab.placeholder']} |
| | | placeholder={dict['form.required.add'] + dict['model.form.tab']} |
| | | /> |
| | | </div>) |
| | | })} |
| | | {/* 标签编辑 */} |
| | | <Modal |
| | | title={this.state.dict['header.modal.tabs.edit']} |
| | | title={dict['header.modal.tabs.edit']} |
| | | visible={visible} |
| | | width={750} |
| | | maskClosable={false} |
| | |
| | | destroyOnClose |
| | | > |
| | | <TabForm |
| | | dict={this.state.dict} |
| | | dict={dict} |
| | | card={this.state.card} |
| | | tabs={this.props.tabs} |
| | | levels={this.state.levels} |
| | |
| | | |
| | | const { Panel } = Collapse |
| | | const { confirm } = Modal |
| | | const CommonDict = (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS |
| | | |
| | | const SettingComponent = asyncComponent(() => import('@/templates/sharecomponent/settingcomponent')) |
| | | const TableComponent = asyncComponent(() => import('@/templates/sharecomponent/tablecomponent')) |
| | |
| | | } |
| | | |
| | | state = { |
| | | dict: CommonDict, // 字典 |
| | | dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, // 字典 |
| | | config: null, // 页面配置 |
| | | visible: false, // 搜索条件、按钮、显示列,模态框显示控制 |
| | | tableFields: [], // 已选表字段集 |
| | |
| | | import zhCN from '@/locales/zh-CN/model.js' |
| | | import enUS from '@/locales/en-US/model.js' |
| | | |
| | | const CommonDict = (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS |
| | | const CommonDict = localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS |
| | | |
| | | class SubTableBaseData { |
| | | baseConfig = { |
| | |
| | | Align: 'center', |
| | | IsSort: 'false', |
| | | uuid: Utils.getuuid(), |
| | | label: CommonDict['header.form.column.action'], |
| | | label: CommonDict['model.form.column.action'], |
| | | type: 'action', |
| | | style: 'button', |
| | | show: 'horizontal', |
| | |
| | | searchItems = [ |
| | | { |
| | | type: 'search', |
| | | label: CommonDict['header.form.text'], |
| | | label: CommonDict['model.form.text'], |
| | | subType: 'text', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'search', |
| | | label: CommonDict['header.form.select'], |
| | | label: CommonDict['model.form.select'], |
| | | subType: 'select', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'search', |
| | | label: CommonDict['header.form.multiselect'], |
| | | label: CommonDict['model.form.multiselect'], |
| | | subType: 'multiselect', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'search', |
| | | label: CommonDict['header.form.link'], |
| | | label: CommonDict['model.form.link'], |
| | | subType: 'link', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'search', |
| | | label: CommonDict['header.form.dateday'], |
| | | label: CommonDict['model.form.dateday'], |
| | | subType: 'date', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'search', |
| | | label: CommonDict['header.form.dateweek'], |
| | | label: CommonDict['model.form.dateweek'], |
| | | subType: 'dateweek', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'search', |
| | | label: CommonDict['header.form.datemonth'], |
| | | label: CommonDict['model.form.datemonth'], |
| | | subType: 'datemonth', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'search', |
| | | label: CommonDict['header.form.daterange'], |
| | | label: CommonDict['model.form.daterange'], |
| | | subType: 'daterange', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'search', |
| | | label: '日期(组合)', |
| | | label: CommonDict['model.form.dategroup'], |
| | | subType: 'group', |
| | | url: '' |
| | | } |
| | |
| | | actionItems = [ |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.popform'], |
| | | label: CommonDict['model.form.popform'], |
| | | subType: 'pop', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.popview'], |
| | | label: CommonDict['model.form.popview'], |
| | | subType: 'popview', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.prompt'], |
| | | label: CommonDict['model.form.prompt'], |
| | | subType: 'prompt', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.exec'], |
| | | label: CommonDict['model.form.exec'], |
| | | subType: 'exec', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.excelIn'], |
| | | label: CommonDict['model.form.excelIn'], |
| | | subType: 'excelIn', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.excelOut'], |
| | | label: CommonDict['model.form.excelOut'], |
| | | subType: 'excelOut', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'action', |
| | | label: CommonDict['header.form.funcbutton'], |
| | | label: CommonDict['model.form.funcbutton'], |
| | | subType: 'funcbutton', |
| | | url: '' |
| | | } |
| | |
| | | columnItems = [ |
| | | { |
| | | type: 'columns', |
| | | label: CommonDict['header.form.text'], |
| | | label: CommonDict['model.form.text'], |
| | | subType: 'text', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'columns', |
| | | label: CommonDict['header.form.picture'], |
| | | label: CommonDict['model.form.picture'], |
| | | subType: 'picture', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'columns', |
| | | label: CommonDict['header.form.number'], |
| | | label: CommonDict['model.form.number'], |
| | | subType: 'number', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'columns', |
| | | label: CommonDict['header.form.textarea'], |
| | | label: CommonDict['model.form.textarea'], |
| | | subType: 'textarea', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'columns', |
| | | label: CommonDict['header.form.colspan'], |
| | | label: CommonDict['model.form.href'], |
| | | subType: 'link', |
| | | url: '' |
| | | }, |
| | | { |
| | | type: 'columns', |
| | | label: CommonDict['model.form.colspan'], |
| | | subType: 'colspan', |
| | | url: '' |
| | | } |
| | |
| | | tabItems = [ |
| | | { |
| | | type: 'tabs', |
| | | label: CommonDict['header.menu.tab.subtable'], |
| | | label: CommonDict['model.menu.tab.subtable'], |
| | | subType: 'SubTable', |
| | | } |
| | | ] |
| | |
| | | required: true, |
| | | options: [{ |
| | | MenuID: 'newtab', |
| | | text: Formdict['header.form.tab'] |
| | | text: Formdict['model.form.tab'] |
| | | }, { |
| | | MenuID: 'newpage', |
| | | text: Formdict['header.form.newpage'] |
| | | text: Formdict['model.form.newpage'] |
| | | }, { |
| | | MenuID: 'currenttab', |
| | | text: Formdict['header.form.currenttab'] |
| | |
| | | required: true, |
| | | options: [{ |
| | | value: 'text', |
| | | text: Formdict['header.form.text'] |
| | | text: Formdict['model.form.text'] |
| | | }, { |
| | | value: 'select', |
| | | text: Formdict['header.form.select'] |
| | | text: Formdict['model.form.select'] |
| | | }, { |
| | | value: 'multiselect', |
| | | text: Formdict['header.form.multiselect'] |
| | | text: Formdict['model.form.multiselect'] |
| | | }, { |
| | | value: 'link', |
| | | text: Formdict['header.form.link'] |
| | | text: Formdict['model.form.link'] |
| | | }, { |
| | | value: 'date', |
| | | text: Formdict['header.form.dateday'] |
| | | text: Formdict['model.form.dateday'] |
| | | }, { |
| | | value: 'dateweek', |
| | | text: Formdict['header.form.dateweek'] |
| | | text: Formdict['model.form.dateweek'] |
| | | }, { |
| | | value: 'datemonth', |
| | | text: Formdict['header.form.datemonth'] |
| | | text: Formdict['model.form.datemonth'] |
| | | }, { |
| | | value: 'daterange', |
| | | text: Formdict['header.form.daterange'] |
| | | text: Formdict['model.form.daterange'] |
| | | }, { |
| | | value: 'group', |
| | | text: '日期(组合)' |
| | | text: Formdict['model.form.dategroup'] |
| | | }] |
| | | }, |
| | | { |
| | |
| | | let opentypes = [ |
| | | { |
| | | value: 'pop', |
| | | text: Formdict['header.form.popform'] |
| | | text: Formdict['model.form.popform'] |
| | | }, { |
| | | value: 'prompt', |
| | | text: Formdict['header.form.prompt'] |
| | | text: Formdict['model.form.prompt'] |
| | | }, { |
| | | value: 'exec', |
| | | text: Formdict['header.form.exec'] |
| | | text: Formdict['model.form.exec'] |
| | | }, { |
| | | value: 'excelIn', |
| | | text: Formdict['header.form.excelIn'] |
| | | text: Formdict['model.form.excelIn'] |
| | | }, { |
| | | value: 'excelOut', |
| | | text: Formdict['header.form.excelOut'] |
| | | text: Formdict['model.form.excelOut'] |
| | | }, { |
| | | value: 'popview', |
| | | text: Formdict['header.form.popview'] |
| | | text: Formdict['model.form.popview'] |
| | | } |
| | | ] |
| | | |
| | | if (type === 'subtable') { |
| | | opentypes.push({ |
| | | value: 'funcbutton', |
| | | text: Formdict['header.form.funcbutton'] |
| | | text: Formdict['model.form.funcbutton'] |
| | | }) |
| | | } else { |
| | | opentypes.push({ |
| | | value: 'tab', |
| | | text: Formdict['header.form.tab'] |
| | | text: Formdict['model.form.tab'] |
| | | }, { |
| | | value: 'innerpage', |
| | | text: Formdict['header.form.newpage'] |
| | | text: Formdict['model.form.newpage'] |
| | | }, { |
| | | value: 'funcbutton', |
| | | text: Formdict['header.form.funcbutton'] |
| | | text: Formdict['model.form.funcbutton'] |
| | | }) |
| | | } |
| | | |
| | |
| | | { |
| | | type: 'text', |
| | | key: 'sql', |
| | | label: Formdict['header.form.tablename'], |
| | | label: Formdict['model.form.tablename'], |
| | | initVal: card.sql || config.setting.tableName || '', |
| | | tooltip: Formdict['header.form.actionhelp.tablename'], |
| | | required: false |
| | |
| | | { |
| | | type: 'select', |
| | | key: 'execMode', |
| | | label: Formdict['header.form.execMode'], |
| | | label: Formdict['model.form.execMode'], |
| | | initVal: card.execMode || 'exec', |
| | | required: true, |
| | | options: [{ |
| | | value: 'exec', |
| | | text: Formdict['header.form.exec'] |
| | | text: Formdict['model.form.exec'] |
| | | }, { |
| | | value: 'prompt', |
| | | text: Formdict['header.form.prompt'] |
| | | text: Formdict['model.form.prompt'] |
| | | }, { |
| | | value: 'pop', |
| | | text: Formdict['header.form.popform'] |
| | | text: Formdict['model.form.popform'] |
| | | }] |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'tabType', |
| | | label: Formdict['header.form.tabType'], |
| | | label: Formdict['model.form.tabType'], |
| | | initVal: card.tabType || 'SubTable', |
| | | required: true, |
| | | options: [{ |
| | | value: 'SubTable', |
| | | text: Formdict['header.menu.tab.subtable'] |
| | | text: Formdict['model.menu.tab.subtable'] |
| | | }] |
| | | }, |
| | | { |
| | |
| | | { |
| | | type: 'select', |
| | | key: 'pageTemplate', |
| | | label: Formdict['header.form.newpage.type'], |
| | | label: Formdict['model.form.newpage.type'], |
| | | initVal: card.pageTemplate || '', |
| | | required: true, |
| | | options: [{ |
| | |
| | | { |
| | | type: 'text', |
| | | key: 'url', |
| | | label: Formdict['header.form.newpage.url'], |
| | | label: Formdict['model.form.newpage.url'], |
| | | initVal: card.url || '', |
| | | required: true |
| | | }, |
| | |
| | | { |
| | | type: 'select', |
| | | key: 'execSuccess', |
| | | label: Formdict['header.form.execSuccess'], |
| | | label: Formdict['model.form.afterSuccess'], |
| | | initVal: card.execSuccess || 'never', |
| | | required: true, |
| | | options: [{ |
| | |
| | | { |
| | | type: 'select', |
| | | key: 'execError', |
| | | label: Formdict['header.form.execError'], |
| | | label: Formdict['model.form.afterError'], |
| | | initVal: card.execError || 'never', |
| | | required: true, |
| | | options: [{ |
| | |
| | | { |
| | | type: 'text', |
| | | key: 'sheet', |
| | | label: Formdict['header.form.tablename'], |
| | | label: Formdict['model.form.tablename'], |
| | | initVal: card.sheet || config.setting.tableName || '', |
| | | required: true |
| | | }, |
| | |
| | | required: true, |
| | | options: [{ |
| | | value: 'text', |
| | | text: Formdict['header.form.text'] |
| | | text: Formdict['model.form.text'] |
| | | }, { |
| | | value: 'number', |
| | | text: Formdict['header.form.number'] |
| | | text: Formdict['model.form.number'] |
| | | }, { |
| | | value: 'picture', |
| | | text: Formdict['header.form.picture'] |
| | | text: Formdict['model.form.picture'] |
| | | }, { |
| | | value: 'textarea', |
| | | text: Formdict['header.form.textarea'] |
| | | text: Formdict['model.form.textarea'] |
| | | }] |
| | | }, |
| | | { |
| | |
| | | { |
| | | type: 'cascader', |
| | | key: 'linkmenu', |
| | | label: Formdict['header.form.linkmenu'], |
| | | label: Formdict['model.form.linkmenu'], |
| | | initVal: card.linkmenu || [], |
| | | required: false, |
| | | options: menulist |
| | |
| | | required: true, |
| | | options: [{ |
| | | value: 'text', |
| | | text: Formdict['header.form.text'] |
| | | text: Formdict['model.form.text'] |
| | | }, { |
| | | value: 'number', |
| | | text: Formdict['header.form.number'] |
| | | text: Formdict['model.form.number'] |
| | | }, { |
| | | value: 'select', |
| | | text: Formdict['header.form.select'] |
| | | text: Formdict['model.form.select'] |
| | | }, { |
| | | value: 'multiselect', |
| | | text: Formdict['header.form.multiselect'] |
| | | text: Formdict['model.form.multiselect'] |
| | | }, { |
| | | value: 'link', |
| | | text: Formdict['header.form.link'] |
| | | text: Formdict['model.form.link'] |
| | | }, { |
| | | value: 'fileupload', |
| | | text: Formdict['header.form.fileupload'] |
| | | }, { |
| | | value: 'date', |
| | | text: Formdict['header.form.dateday'] |
| | | text: Formdict['model.form.dateday'] |
| | | }, { |
| | | value: 'datemonth', |
| | | text: Formdict['header.form.datemonth'] |
| | | text: Formdict['model.form.datemonth'] |
| | | }, { |
| | | value: 'datetime', |
| | | text: Formdict['header.form.datetime'] |
| | | text: Formdict['model.form.datetime'] |
| | | }, { |
| | | value: 'textarea', |
| | | text: Formdict['header.form.textarea'] |
| | | text: Formdict['model.form.textarea'] |
| | | }, { |
| | | value: 'funcvar', |
| | | text: Formdict['header.form.funcvar'] |
| | |
| | | text: Formdict['header.form.empty'] |
| | | }, { |
| | | value: 'number', |
| | | text: Formdict['header.form.number'] |
| | | text: Formdict['model.form.number'] |
| | | }, { |
| | | value: 'letter', |
| | | text: Formdict['header.form.letter'] |
| | |
| | | type: 'select', |
| | | key: 'supField', |
| | | label: '上级表单', |
| | | tooltip: '上级表单为下拉选择或关联菜单,设置上级表单后,该表单受控于上级菜单,注:受控关系在该表单隐藏时失效。', |
| | | tooltip: '上级表单为下拉选择或联动菜单,设置上级表单后,该表单受控于上级菜单,注:受控关系在该表单隐藏时失效。', |
| | | initVal: card.supField || '', |
| | | required: false, |
| | | readonly: false, |
| | |
| | | { |
| | | type: 'multiselect', |
| | | key: 'linkSubField', |
| | | label: Formdict['header.form.linkForm'], |
| | | label: Formdict['model.form.link'], |
| | | initVal: card.linkSubField || [], |
| | | options: inputfields |
| | | }, |
| | |
| | | { |
| | | type: 'select', |
| | | key: 'type', |
| | | label: Formdict['header.form.tabType'], |
| | | label: Formdict['model.form.tabType'], |
| | | initVal: card.type || 'SubTable', |
| | | required: true, |
| | | options: [{ |
| | | value: 'SubTable', |
| | | text: Formdict['header.menu.tab.subtable'] |
| | | text: Formdict['model.menu.tab.subtable'] |
| | | }] |
| | | }, |
| | | { |
| | |
| | | if (!err) { |
| | | let isvalid = true |
| | | values.uuid = this.props.card.uuid |
| | | // 下拉菜单或关联菜单 |
| | | // 下拉菜单或联动菜单 |
| | | if ((values.type === 'multiselect' || values.type === 'select' || values.type === 'link') && values.resourceType === '0') { |
| | | values.options = this.refs.editTable.state.dataSource |
| | | values.dataSource = '' |
| | |
| | | isvalid = false |
| | | notification.warning({ |
| | | top: 92, |
| | | message: this.props.dict['header.form.selectItem.error'], |
| | | message: this.props.dict['model.form.selectItem.error'], |
| | | duration: 5 |
| | | }) |
| | | } |
| | |
| | | |
| | | const LoginForm = asyncLoadComponent(() => import('./loginform')) |
| | | const LoginCloudForm = asyncLoadComponent(() => import('./logincloudform')) |
| | | const iszhCN = !localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN' |
| | | const iszhCN = localStorage.getItem('lang') !== 'en-US' |
| | | |
| | | class Login extends Component { |
| | | state = { |
| | |
| | | import { DndProvider } from 'react-dnd' |
| | | import { fromJS } from 'immutable' |
| | | import HTML5Backend from 'react-dnd-html5-backend' |
| | | import { SketchPicker } from 'react-color' |
| | | // import { SketchPicker } from 'react-color' |
| | | import { Icon, Tabs, notification, Modal } from 'antd' |
| | | |
| | | import Api from '@/api' |
| | |
| | | const { confirm } = Modal |
| | | |
| | | const Header = asyncComponent(() => import('@/mob/header')) |
| | | const Controller = asyncComponent(() => import('@/mob/controller')) |
| | | const MobShell = asyncComponent(() => import('@/mob/mobshell')) |
| | | const SourceWrap = asyncComponent(() => import('@/mob/modelsource')) |
| | | const DataSource = asyncComponent(() => import('@/mob/datasource')) |
| | |
| | | appConfig: null, |
| | | saveIng: false, |
| | | config: null, |
| | | pageIndex: 0 |
| | | pageIndex: 0, |
| | | editElem: null |
| | | } |
| | | |
| | | UNSAFE_componentWillMount() { |
| | |
| | | |
| | | editCard = (element) => { |
| | | console.log(element) |
| | | this.setState({ |
| | | editElem: element |
| | | }) |
| | | } |
| | | |
| | | updateConfig = (config) => { |
| | |
| | | } |
| | | |
| | | render () { |
| | | const { saveIng, appType, config } = this.state |
| | | const { saveIng, appType, config, editElem } = this.state |
| | | |
| | | return ( |
| | | <div className="mobile-view"> |
| | |
| | | </div> |
| | | {appType === 'mob' && config ? |
| | | <div className="mob-shell"> |
| | | <MobShell config={config} deleteCard={this.deleteCard} editCard={this.editCard} handleList={this.updateConfig} /> |
| | | <MobShell config={config} deleteCard={this.deleteCard} editCard={this.editCard} editId={editElem ? editElem.uuid : ''} handleList={this.updateConfig} /> |
| | | </div> : null |
| | | } |
| | | <div className="mob-setting"> |
| | | {config ? <Tabs defaultActiveKey="2" animated={false} size="small"> |
| | | <TabPane tab="配置" key="1"> |
| | | <SketchPicker /> |
| | | {/* <SketchPicker /> */} |
| | | <Controller /> |
| | | </TabPane> |
| | | <TabPane tab="数据源" key="2"> |
| | | <DataSource config={config} updateConfig={this.updateConfig} /> |