| | |
| | | param = this.getDefaultParam() |
| | | } |
| | | |
| | | this.handleTableId('mainTable', '', '') |
| | | |
| | | if (!param) { // 未获取参数时,不发请求 |
| | | return |
| | | } |
| | | |
| | | let result = await Api.genericInterface(param) |
| | | if (result.status) { |
| | | this.setState({ |
| | |
| | | pickup: false, |
| | | BIDs: { |
| | | ...BIDs, |
| | | mainTable: '' |
| | | mainTable: '', |
| | | mainTabledata: '' |
| | | } |
| | | }) |
| | | } else { |
| | |
| | | import options from '@/store/options.js' |
| | | import { modifyTabview } from '@/store/action' |
| | | |
| | | import ChartComponent from '@/tabviews/zshare/chartcomponent' |
| | | import SubTable from '@/tabviews/zshare/normalTable' |
| | | import SubSearch from '@/tabviews/zshare/topSearch' |
| | | import asyncComponent from '@/utils/asyncComponent' |
| | |
| | | const { TabPane } = Tabs |
| | | const SubAction = asyncComponent(() => import('@/tabviews/zshare/actionList')) |
| | | const CardComponent = asyncComponent(() => import('@/tabviews/zshare/cardcomponent')) |
| | | const ChartComponent = asyncSpinComponent(() => import('@/tabviews/zshare/chartcomponent')) |
| | | const SubTabTable = asyncSpinComponent(() => import('@/tabviews/subtabtable')) |
| | | |
| | | class SubTabViewTable extends Component { |
| | |
| | | search: Utils.initMainSearch(config.search) // 搜索条件初始化(含有时间格式,需要转化) |
| | | }, () => { |
| | | this.improveSearch() |
| | | |
| | | if (config.setting.onload !== 'false' && (!Tab.supMenu || BID) && valid) { // 初始化可加载 |
| | | if (config.setting.onload !== 'false' && (!Tab.supMenu || BID || Tab.isTreeNode) && valid) { // 初始化可加载 |
| | | this.loadmaindata() |
| | | } |
| | | }) |
| | |
| | | this.reloadtable() |
| | | this.props.handleMainTable('equaltab') |
| | | }else if (btn.execSuccess === 'mainline' && type === 'success') { |
| | | this.reloadtable() |
| | | this.props.handleMainTable('mainline') |
| | | } |
| | | } |
| | |
| | | import Utils from '@/utils/utils.js' |
| | | import options from '@/store/options.js' |
| | | |
| | | import ChartComponent from '@/tabviews/zshare/chartcomponent' |
| | | import asyncComponent from '@/utils/asyncComponent' |
| | | import asyncSpinComponent from '@/utils/asyncSpinComponent' |
| | | import SubTable from '@/tabviews/zshare/normalTable' |
| | | import SubSearch from '@/tabviews/zshare/topSearch' |
| | | import NotFount from '@/components/404' |
| | |
| | | const { TabPane } = Tabs |
| | | const SubAction = asyncComponent(() => import('@/tabviews/zshare/actionList')) |
| | | const CardComponent = asyncComponent(() => import('@/tabviews/zshare/cardcomponent')) |
| | | const ChartComponent = asyncSpinComponent(() => import('@/tabviews/zshare/chartcomponent')) |
| | | |
| | | class SubTabModalTable extends Component { |
| | | static propTpyes = { |
| | |
| | | settingVisible: false,// 自定义设置模态框 |
| | | triggerBtn: null, // 点击表格中或快捷键触发的按钮 |
| | | tabActive: null, // 标签页展开控制 |
| | | expandedKeys: [], // 展开的树节点 |
| | | selectedKeys: [] // 选中的树节点 |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | // 权限过滤 |
| | | config.tabgroups.forEach(group => { |
| | | group.sublist = group.sublist.filter(tab => permAction[tab.linkTab]) |
| | | group.sublist = group.sublist.filter(tab => { |
| | | if (tab.supMenu === 'mainTable') { |
| | | tab.isTreeNode = true |
| | | } |
| | | return permAction[tab.linkTab]} |
| | | ) |
| | | }) |
| | | config.tabgroups = config.tabgroups.filter(group => group.sublist.length > 0) |
| | | |
| | | if (_curUserConfig) { |
| | | config.setting = {...config.setting, ..._curUserConfig.setting} |
| | |
| | | * @description 主表数据加载 |
| | | */ |
| | | async loadmaindata () { |
| | | const { setting, BIDs } = this.state |
| | | const { setting, searchKey } = this.state |
| | | let param = '' |
| | | |
| | | this.setState({ |
| | |
| | | param = this.getCustomParam() |
| | | } else { |
| | | param = this.getDefaultParam() |
| | | } |
| | | |
| | | this.handleTableId('mainTable', '', '') |
| | | |
| | | if (!param) { // 未获取参数时,不发请求 |
| | | return |
| | | } |
| | | |
| | | let result = await Api.genericInterface(param) |
| | |
| | | } |
| | | }) |
| | | let _treedata = this.getTree(parentNodes, _options) |
| | | |
| | | let _treeNodes = [] |
| | | |
| | | if (!searchKey) { |
| | | _treeNodes = fromJS(_treedata).toJS() |
| | | } else { |
| | | _treeNodes = this.getFilterTree(fromJS(_treedata).toJS(), searchKey.toLowerCase()) |
| | | } |
| | | |
| | | this.setState({ |
| | | treedata: _treedata, |
| | | treeNodes: fromJS(_treedata).toJS(), |
| | | loading: false, |
| | | BIDs: { |
| | | ...BIDs, |
| | | mainTable: '' |
| | | } |
| | | treeNodes: _treeNodes, |
| | | loading: false |
| | | }) |
| | | } else { |
| | | this.setState({ |
| | |
| | | return nodes.map(item => { |
| | | if (item.children) { |
| | | return ( |
| | | <TreeNode icon={<Icon type="folder-open" />} title={item.title} key={item.key} dataRef={item}> |
| | | <TreeNode icon={<span><Icon type="folder-open" /><Icon type="folder" /></span>} title={item.title} key={item.key} dataRef={item}> |
| | | {this.renderTreeNodes(item.children)} |
| | | </TreeNode> |
| | | ) |
| | |
| | | }) |
| | | } |
| | | |
| | | selectTreeNode = (selectedKeys, {selected, node}) => { |
| | | const { config } = this.state |
| | | treeFilter = (value) => { |
| | | const { treedata } = this.state |
| | | |
| | | let selectId = selectedKeys[0] |
| | | let _data = fromJS(node.props.dataRef).toJS() |
| | | delete _data.children |
| | | let _treeNodes = [] |
| | | |
| | | let _tabgroups = [] |
| | | let _tabActive = {} |
| | | |
| | | config.tabgroups.forEach(group => { |
| | | let _group = fromJS(group).toJS() |
| | | _group.sublist = _group.sublist.filter(tab => !tab.level || (selected && tab.level === _data.level)) |
| | | |
| | | if (_group.sublist.length > 0) { |
| | | _tabActive[_group.uuid] = _group.sublist[0].uuid |
| | | _tabgroups.push(_group) |
| | | } |
| | | }) |
| | | if (!value) { |
| | | _treeNodes = fromJS(treedata).toJS() |
| | | } else { |
| | | _treeNodes = this.getFilterTree(fromJS(treedata).toJS(), value.toLowerCase()) |
| | | } |
| | | |
| | | this.setState({ |
| | | tabgroups: _tabgroups, |
| | | tabActive: _tabActive |
| | | searchKey: value, |
| | | treeNodes: _treeNodes |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * @description 获取结构树信息 |
| | | */ |
| | | getFilterTree = (parents, searchKey) => { |
| | | return parents.filter(node => { |
| | | if (!node.children) { |
| | | return (node.title.toLowerCase().indexOf(searchKey) >= 0 || node.key.toLowerCase().indexOf(searchKey) >= 0) |
| | | } else { |
| | | if (node.title.toLowerCase().indexOf(searchKey) >= 0 || node.key.toLowerCase().indexOf(searchKey) >= 0) { |
| | | return true |
| | | } |
| | | |
| | | node.children = this.getFilterTree(node.children, searchKey) |
| | | if (node.children.length === 0) { |
| | | return false |
| | | } else { |
| | | return true |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | selectTreeNode = (selectedKeys, {selected, node}) => { |
| | | const { config } = this.state |
| | | let _expandedKeys = fromJS(this.state.expandedKeys).toJS() |
| | | let _data = fromJS(node.props.dataRef).toJS() |
| | | |
| | | if (_expandedKeys.indexOf(_data.key) >= 0) { |
| | | _expandedKeys = _expandedKeys.filter(key => key !== _data.key) |
| | | } else { |
| | | if (_data.children) { |
| | | _expandedKeys.push(_data.key) |
| | | _expandedKeys = Array.from(new Set(_expandedKeys)) |
| | | } |
| | | } |
| | | |
| | | if (selected) { |
| | | this.handleTableId('mainTable', selectId, _data) |
| | | let _tabgroups = [] |
| | | let _tabActive = {} |
| | | |
| | | config.tabgroups.forEach(group => { |
| | | let _group = fromJS(group).toJS() |
| | | _group.sublist = _group.sublist.filter(tab => (!tab.level && tab.level !== 0) || tab.level === _data.level) |
| | | |
| | | if (_group.sublist.length > 0) { |
| | | _tabActive[_group.uuid] = _group.sublist[0].uuid |
| | | _tabgroups.push(_group) |
| | | } |
| | | }) |
| | | |
| | | delete _data.children |
| | | this.handleTableId('mainTable', _data.key, _data) |
| | | this.setState({ |
| | | tabgroups: _tabgroups, |
| | | tabActive: _tabActive, |
| | | expandedKeys: _expandedKeys, |
| | | selectedKeys: [_data.key] |
| | | }) |
| | | } else { |
| | | this.handleTableId('mainTable', '', '') |
| | | this.setState({ |
| | | expandedKeys: _expandedKeys, |
| | | selectedKeys: [_data.key] |
| | | }) |
| | | } |
| | | } |
| | | |
| | |
| | | this.setState({ |
| | | loadingview: true, |
| | | viewlost: false, |
| | | lostmsg: '', |
| | | config: {}, |
| | | userConfig: null, |
| | | userParam: null, |
| | | setting: null, |
| | | treedata: null, |
| | | treeNodes: null, |
| | | loading: false, |
| | | BIDs: {}, |
| | | expandedKeys: [], |
| | | selectedKeys: [] |
| | | }, () => { |
| | | this.loadconfig() |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * @description 表格刷新 |
| | | */ |
| | | reloadtable = () => { |
| | | this.setState({ |
| | | pageIndex: 1 |
| | | }, () => { |
| | | this.loadmaindata() |
| | | }) |
| | | } |
| | | |
| | |
| | | */ |
| | | handleMainTable = (type, tab) => { |
| | | if (type === 'maingrid' && tab.supMenu === 'mainTable') { |
| | | this.reloadtable() |
| | | this.loadmaindata() |
| | | } else if (type === 'mainline' && tab.supMenu === 'mainTable') { |
| | | this.reloadtable() |
| | | this.loadmaindata() |
| | | } else if ((type === 'maingrid' || type === 'mainline') && tab.supMenu) { |
| | | this.setState({ |
| | | refreshtabs: [type, tab.supMenu] |
| | |
| | | document.onkeydown = () => {} |
| | | } |
| | | |
| | | changeExpandedKeys = (expandedKeys) => { |
| | | this.setState({ |
| | | expandedKeys: expandedKeys |
| | | }) |
| | | } |
| | | |
| | | // 右键展开节点下的全部分支 |
| | | changeExpandedAllKeys = ({event, node}) => { |
| | | const { expandedKeys } = this.state |
| | | let _node = node.props.dataRef |
| | | event.stopPropagation() |
| | | |
| | | let keys = [] |
| | | this.getExpandKeys(_node, keys) |
| | | |
| | | this.setState({ |
| | | expandedKeys: Array.from(new Set([...keys, ...expandedKeys])), |
| | | }) |
| | | } |
| | | |
| | | getExpandKeys = (node, keys) => { |
| | | if (node.children) { |
| | | keys.push(node.key) |
| | | node.children.forEach(_node => { |
| | | this.getExpandKeys(_node, keys) |
| | | }) |
| | | } |
| | | } |
| | | |
| | | render() { |
| | | const { setting, loadingview, viewlost, config, triggerBtn, userConfig, tabActive, tabgroups, treeNodes, treedata } = this.state |
| | | const { setting, loadingview, viewlost, config, triggerBtn, userConfig, tabActive, tabgroups, treeNodes, treedata, expandedKeys, selectedKeys } = this.state |
| | | |
| | | return ( |
| | | <div className="tree-page" id={this.state.ContainerId}> |
| | |
| | | title={ |
| | | <span className="tree-title"> |
| | | <span className="title">{setting.title}</span> |
| | | {setting.searchable !== 'false' ? <Search onSearch={this.treeFilter} /> : null} |
| | | {setting.searchable !== 'false' ? <Search allowClear onSearch={this.treeFilter} /> : null} |
| | | </span> |
| | | } |
| | | bordered={false} |
| | |
| | | <Tree |
| | | blockNode |
| | | onSelect={this.selectTreeNode} |
| | | expandedKeys={expandedKeys} |
| | | selectedKeys={selectedKeys} |
| | | onRightClick={this.changeExpandedAllKeys} |
| | | onExpand={this.changeExpandedKeys} |
| | | showIcon={setting.showIcon === 'true'} |
| | | showLine={setting.showLine === 'true'} |
| | | > |
| | |
| | | .tree-card { |
| | | min-height: calc(100vh - 125px); |
| | | box-shadow: 0px 0px 2px #dddddd; |
| | | // cursor: url(http://gtms02.alicdn.com/tps/i2/T1_PMSFLBaXXcu5FDa-20-20.png) 10 10,pointer!important; |
| | | |
| | | .ant-card-head { |
| | | padding: 0 10px; |
| | | .ant-card-head-title { |
| | |
| | | width: 100%; |
| | | color: #1890ff; |
| | | .ant-input-affix-wrapper { |
| | | width: calc(100% - 140px); |
| | | display: inline-block; |
| | | width: 62%; |
| | | margin-top: 0px; |
| | | float: right; |
| | | height: 28px; |
| | | text-align: right; |
| | | vertical-align: top; |
| | | |
| | | .ant-input { |
| | | max-width: 130px; |
| | | width: 100%; |
| | | border-radius: 20px; |
| | | height: 30px; |
| | | height: 28px; |
| | | text-align: left; |
| | | } |
| | | .ant-input-suffix { |
| | | margin-top: 3px; |
| | | .ant-input-clear-icon { |
| | | display: none; |
| | | } |
| | | } |
| | | .ant-input-affix-wrapper:hover { |
| | | .ant-input-clear-icon { |
| | | display: inline-block; |
| | | } |
| | | } |
| | | |
| | | .title { |
| | | width: 38%; |
| | | display: inline-block; |
| | | max-width: 50%; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | white-space: nowrap; |
| | |
| | | min-height: calc(100vh - 180px); |
| | | overflow-x: auto; |
| | | padding-bottom: 20px; |
| | | |
| | | .ant-tree-node-content-wrapper-close > span > span > .anticon-folder-open { |
| | | display: none; |
| | | } |
| | | .ant-tree-node-content-wrapper-open > span > span > .anticon-folder { |
| | | display: none; |
| | | } |
| | | } |
| | | .tree-box::-webkit-scrollbar { |
| | | height: 10px; |
| | |
| | | } |
| | | } else if (btn.sql) { |
| | | param.ID = primaryId |
| | | param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, '', param, data[0], logcolumns, this.props.Tab)) // 数据源 |
| | | param.LText = Utils.getSysDefaultSql(btn, setting, '', param, data[0], logcolumns, this.props.Tab) // 数据源 |
| | | |
| | | if (this.props.dataManager) { // 数据权限 |
| | | param.LText = param.LText.replace(/\$@/ig, '/*') |
| | | param.LText = param.LText.replace(/@\$/ig, '*/') |
| | | } else { |
| | | param.LText = param.LText.replace(/@\$|\$@/ig, '') |
| | | } |
| | | |
| | | param.LText = Utils.formatOptions(param.LText) |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | | } |
| | |
| | | } |
| | | |
| | | param.ID = primaryId || Utils.getguid() |
| | | param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, data[0], logcolumns, this.props.Tab)) // 数据源 |
| | | param.LText = Utils.getSysDefaultSql(btn, setting, formdata, param, data[0], logcolumns, this.props.Tab) // 数据源 |
| | | |
| | | if (this.props.dataManager) { // 数据权限 |
| | | param.LText = param.LText.replace(/\$@/ig, '/*') |
| | | param.LText = param.LText.replace(/@\$/ig, '*/') |
| | | } else { |
| | | param.LText = param.LText.replace(/@\$|\$@/ig, '') |
| | | } |
| | | |
| | | param.LText = Utils.formatOptions(param.LText) |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | | } else if (btn.sql) { |
| | | param.ID = primaryId |
| | | param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, data[0], logcolumns, this.props.Tab)) // 数据源 |
| | | param.LText = Utils.getSysDefaultSql(btn, setting, formdata, param, data[0], logcolumns, this.props.Tab) // 数据源 |
| | | |
| | | if (this.props.dataManager) { // 数据权限 |
| | | param.LText = param.LText.replace(/\$@/ig, '/*') |
| | | param.LText = param.LText.replace(/@\$/ig, '*/') |
| | | } else { |
| | | param.LText = param.LText.replace(/@\$|\$@/ig, '') |
| | | } |
| | | |
| | | param.LText = Utils.formatOptions(param.LText) |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | | } |
| | |
| | | } |
| | | } else if (btn.sql) { |
| | | param.ID = primaryId |
| | | param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, '', param, cell, logcolumns, this.props.Tab)) // 数据源 |
| | | param.LText = Utils.getSysDefaultSql(btn, setting, '', param, cell, logcolumns, this.props.Tab) // 数据源 |
| | | |
| | | if (this.props.dataManager) { // 数据权限 |
| | | param.LText = param.LText.replace(/\$@/ig, '/*') |
| | | param.LText = param.LText.replace(/@\$/ig, '*/') |
| | | } else { |
| | | param.LText = param.LText.replace(/@\$|\$@/ig, '') |
| | | } |
| | | |
| | | param.LText = Utils.formatOptions(param.LText) |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | | } |
| | |
| | | } |
| | | } else if (btn.sql && btn.sqlType === 'insert') { // 系统函数添加时,生成uuid |
| | | param.ID = _formPrimaryId || Utils.getguid() |
| | | param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, cell, logcolumns, this.props.Tab)) // 数据源 |
| | | param.LText = Utils.getSysDefaultSql(btn, setting, formdata, param, cell, logcolumns, this.props.Tab) // 数据源 |
| | | |
| | | if (this.props.dataManager) { // 数据权限 |
| | | param.LText = param.LText.replace(/\$@/ig, '/*') |
| | | param.LText = param.LText.replace(/@\$/ig, '*/') |
| | | } else { |
| | | param.LText = param.LText.replace(/@\$|\$@/ig, '') |
| | | } |
| | | |
| | | param.LText = Utils.formatOptions(param.LText) |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | | } else if (btn.sql) { |
| | | param.ID = primaryId |
| | | param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, cell, logcolumns, this.props.Tab)) // 数据源 |
| | | param.LText = Utils.getSysDefaultSql(btn, setting, formdata, param, cell, logcolumns, this.props.Tab) // 数据源 |
| | | |
| | | if (this.props.dataManager) { // 数据权限 |
| | | param.LText = param.LText.replace(/\$@/ig, '/*') |
| | | param.LText = param.LText.replace(/@\$/ig, '*/') |
| | | } else { |
| | | param.LText = param.LText.replace(/@\$|\$@/ig, '') |
| | | } |
| | | |
| | | param.LText = Utils.formatOptions(param.LText) |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | | } |
| | |
| | | param.BID = this.props.BID |
| | | } |
| | | |
| | | if (this.props.dataManager) { // 数据权限 |
| | | result.sql = result.sql.replace(/\$@/ig, '/*') |
| | | result.sql = result.sql.replace(/@\$/ig, '*/') |
| | | } else { |
| | | result.sql = result.sql.replace(/@\$|\$@/ig, '') |
| | | } |
| | | |
| | | param.LText = Utils.formatOptions(result.sql) |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | |
| | | param.custom_script = param.custom_script.replace(item.reg, item.value) |
| | | }) |
| | | |
| | | if (this.props.dataManager) { // 数据权限 |
| | | param.custom_script = param.custom_script.replace(/\$@/ig, '/*') |
| | | param.custom_script = param.custom_script.replace(/@\$/ig, '*/') |
| | | } else { |
| | | param.custom_script = param.custom_script.replace(/@\$|\$@/ig, '') |
| | | } |
| | | |
| | | param.custom_script = Utils.formatOptions(param.custom_script) |
| | | } |
| | | |
| | | if (this.props.dataManager) { // 数据权限 |
| | | LText = LText.replace(/\$@/ig, '/*') |
| | | LText = LText.replace(/@\$/ig, '*/') |
| | | } else { |
| | | LText = LText.replace(/@\$|\$@/ig, '') |
| | | } |
| | | |
| | | param.LText = Utils.formatOptions(LText) |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | |
| | | return ( |
| | | <div className="header-edit-box"> |
| | | <div className="mask"> |
| | | <div className="tipcard card1" style={{backgroundImage: card1}}> |
| | | <div className="tipcard card1" style={{backgroundImage: 'url(' + card1 + ')'}}> |
| | | 拖动一级菜单可调整顺序,顺序调整后,请点击确定按钮保存。 |
| | | </div> |
| | | <div className="tipcard card2" style={{backgroundImage: card2}}> |
| | | <div className="tipcard card2" style={{backgroundImage: 'url(' + card2 + ')'}}> |
| | | 鼠标经过菜单时会显示编辑图标,点击编辑可修改和删除菜单。 |
| | | </div> |
| | | <div className="tipcard card3" style={{backgroundImage: card3}}> |
| | | <div className="tipcard card3" style={{backgroundImage: 'url(' + card3 + ')'}}> |
| | | 点击解除冻结按钮,可还原已删除的一级菜单。 |
| | | </div> |
| | | <div className="tipcard card4" style={{backgroundImage: card4}}> |
| | | <div className="tipcard card4" style={{backgroundImage: 'url(' + card4 + ')'}}> |
| | | 点击添加图标,可新增一级菜单。 |
| | | </div> |
| | | <div className="tipcard card5" style={{backgroundImage: card5}}> |
| | | <div className="tipcard card5" style={{backgroundImage: 'url(' + card5 + ')'}}> |
| | | <p>编辑状态中,菜单之外区域会锁定,查看系统数据请点击。</p> |
| | | <div> |
| | | <a target="blank" href="#/main" >新页面</a> |
| | |
| | | import enUS from '@/locales/en-US/header.js' |
| | | import './index.scss' |
| | | |
| | | import card1 from '@/assets/img/card-bg2.jpg' |
| | | import card2 from '@/assets/img/card-bg5.jpg' |
| | | import card3 from '@/assets/img/card-bg8.jpg' |
| | | import card4 from '@/assets/img/card-bg7.jpg' |
| | | import card5 from '@/assets/img/card-bg6.jpg' |
| | | |
| | | const { confirm } = Modal |
| | | |
| | | class EditMenu extends Component { |
| | |
| | | return ( |
| | | <div className="second-edit-box"> |
| | | <div className="mask"> |
| | | <div className="tipcard card1"> |
| | | <div className="tipcard card1" style={{backgroundImage: 'url(' + card1 + ')'}}> |
| | | 拖动二级菜单可调整顺序,顺序调整后,请点击确定按钮保存。 |
| | | </div> |
| | | <div className="tipcard card2"> |
| | | <div className="tipcard card2" style={{backgroundImage: 'url(' + card2 + ')'}}> |
| | | 点击编辑图标可修改菜单属性,点击删除图标可删除菜单。 |
| | | </div> |
| | | <div className="tipcard card3"> |
| | | <div className="tipcard card3" style={{backgroundImage: 'url(' + card3 + ')'}}> |
| | | 点击解除冻结按钮,可还原已删除的二级菜单。 |
| | | </div> |
| | | <div className="tipcard card4"> |
| | | <div className="tipcard card4" style={{backgroundImage: 'url(' + card4 + ')'}}> |
| | | 点击添加图标,可新增二级菜单。 |
| | | </div> |
| | | <div className="tipcard card5"> |
| | | <div className="tipcard card5" style={{backgroundImage: 'url(' + card5 + ')'}}> |
| | | <p>编辑状态中,菜单之外区域会锁定,查看系统数据请点击。</p> |
| | | <div> |
| | | <a target="blank" href="#/main" >新页面</a> |
| | |
| | | top: 20vh; |
| | | width: 230px; |
| | | min-height: 100px; |
| | | background-image: url('../../../assets/img/card-bg2.jpg'); |
| | | color: #000000; |
| | | font-style: oblique; |
| | | } |
| | |
| | | top: 20vh; |
| | | width: 230px; |
| | | min-height: 100px; |
| | | background-image: url('../../../assets/img/card-bg5.jpg'); |
| | | color: #000000; |
| | | padding: 20px 30px; |
| | | font-style: oblique; |
| | |
| | | top: 50vh; |
| | | width: 230px; |
| | | min-height: 140px; |
| | | background-image: url('../../../assets/img/card-bg8.jpg'); |
| | | color: #000000; |
| | | padding: 20px 30px; |
| | | font-style: oblique; |
| | |
| | | top: 50vh; |
| | | width: 230px; |
| | | min-height: 140px; |
| | | background-image: url('../../../assets/img/card-bg7.jpg'); |
| | | color: #000000; |
| | | padding: 20px 30px; |
| | | font-style: oblique; |
| | |
| | | top: 20vh; |
| | | width: 130px; |
| | | min-height: 240px; |
| | | background-image: url('../../../assets/img/card-bg6.jpg'); |
| | | color: #000000; |
| | | padding: 40px 15px 10px; |
| | | p { |
| | |
| | | import asyncLoadComponent from '@/utils/asyncLoadComponent' |
| | | import './index.scss' |
| | | |
| | | import card1 from '@/assets/img/card-bg2.jpg' |
| | | import card2 from '@/assets/img/card-bg5.jpg' |
| | | import card3 from '@/assets/img/card-bg8.jpg' |
| | | import card4 from '@/assets/img/card-bg7.jpg' |
| | | import card5 from '@/assets/img/card-bg6.jpg' |
| | | |
| | | const ComTableConfig = asyncLoadComponent(() => import('@/templates/comtableconfig')) |
| | | const TreePageConfig = asyncLoadComponent(() => import('@/templates/treepageconfig')) |
| | | const FormTabConfig = asyncLoadComponent(() => import('@/templates/formtabconfig')) |
| | |
| | | <div className="third-edit-box"> |
| | | {!this.state.tabview ? |
| | | <div className="mask"> |
| | | <div className="tipcard card1"> |
| | | <div className="tipcard card1" style={{backgroundImage: 'url(' + card1 + ')'}}> |
| | | 拖动三级菜单可调整顺序,顺序调整后,请点击确定按钮保存。 |
| | | </div> |
| | | <div className="tipcard card2"> |
| | | <div className="tipcard card2" style={{backgroundImage: 'url(' + card2 + ')'}}> |
| | | 点击编辑图标会根据菜单模板,进入相应的模板编辑页面,点击删除图标可删除菜单。 |
| | | </div> |
| | | <div className="tipcard card3"> |
| | | <div className="tipcard card3" style={{backgroundImage: 'url(' + card3 + ')'}}> |
| | | 点击解除冻结按钮,可还原已删除的三级菜单。 |
| | | </div> |
| | | <div className="tipcard card4"> |
| | | <div className="tipcard card4" style={{backgroundImage: 'url(' + card4 + ')'}}> |
| | | 点击添加图标,会显示系统模板和已使用模板,选择已使用模板时,会复制已添加菜单的配置信息。 |
| | | </div> |
| | | <div className="tipcard card5"> |
| | | <div className="tipcard card5" style={{backgroundImage: 'url(' + card5 + ')'}}> |
| | | <p>编辑状态中,菜单之外区域会锁定,查看系统数据请点击。</p> |
| | | <div> |
| | | <a target="blank" href="#/main" >新页面</a> |
| | |
| | | top: 20vh; |
| | | width: 250px; |
| | | min-height: 100px; |
| | | background-image: url('../../../assets/img/card-bg2.jpg'); |
| | | color: #000000; |
| | | font-style: oblique; |
| | | } |
| | |
| | | top: 20vh; |
| | | width: 250px; |
| | | min-height: 100px; |
| | | background-image: url('../../../assets/img/card-bg5.jpg'); |
| | | color: #000000; |
| | | padding: 20px 30px; |
| | | font-style: oblique; |
| | |
| | | top: 50vh; |
| | | width: 250px; |
| | | min-height: 150px; |
| | | background-image: url('../../../assets/img/card-bg8.jpg'); |
| | | color: #000000; |
| | | padding: 20px 30px; |
| | | font-style: oblique; |
| | |
| | | top: 50vh; |
| | | width: 250px; |
| | | min-height: 150px; |
| | | background-image: url('../../../assets/img/card-bg7.jpg'); |
| | | color: #000000; |
| | | padding: 20px 30px; |
| | | font-style: oblique; |
| | |
| | | top: 20vh; |
| | | width: 130px; |
| | | min-height: 240px; |
| | | background-image: url('../../../assets/img/card-bg6.jpg'); |
| | | color: #000000; |
| | | padding: 40px 15px 10px; |
| | | p { |
| | |
| | | func: 's_debug_sql', |
| | | LText: this.state.verifySql + _initsql + values.sql + tail |
| | | } |
| | | |
| | | param.LText = param.LText.replace(/@\$|\$@/ig, '') |
| | | |
| | | param.LText = Utils.formatOptions(param.LText) |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | |
| | | if (group.uuid === _group.uuid) { |
| | | isuptab = false |
| | | group.sublist.forEach(tab => { // 可关联的同级标签 |
| | | if (tab.level) { |
| | | if (tab.level || tab.level === 0) { |
| | | levels[tab.uuid] = tab.level |
| | | } |
| | | |
| | |
| | | }) |
| | | } else if (isuptab) { |
| | | group.sublist.forEach(tab => { |
| | | if (tab.level) { |
| | | if (tab.level || tab.level === 0) { |
| | | levels[tab.uuid] = tab.level |
| | | } |
| | | |
| | |
| | | if (!values.linkTab) { // 没有关联标签(新建时),创建新标签Id |
| | | values.linkTab = Utils.getuuid() |
| | | } |
| | | if (values.level === undefined) { |
| | | values.level = '' |
| | | } |
| | | |
| | | resolve(values) |
| | | } else { |
| | |
| | | label: '显示级别', |
| | | tooltip: '标签显示控制,选择指定级别时显示标签,级别为空时始终显示。', |
| | | initVal: card.level, |
| | | min: 1, |
| | | min: 0, |
| | | max: 10, |
| | | required: false, |
| | | forbid: type !== 'TreePage', |
| | |
| | | LText: this.props.initsql + values.sql |
| | | } |
| | | |
| | | // 数据权限 |
| | | param.LText = param.LText.replace(/@\$|\$@/ig, '') |
| | | |
| | | param.LText = Utils.formatOptions(param.LText) |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | |
| | | LText: this.props.initsql + _initsql + values.sql + tail |
| | | } |
| | | |
| | | // 数据权限 |
| | | param.LText = param.LText.replace(/@\$|\$@/ig, '') |
| | | |
| | | param.LText = Utils.formatOptions(param.LText) |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |