1 文件已重命名
27个文件已修改
1个文件已添加
| | |
| | | GLOB.externalDatabase = config.externalDatabase ? `[${config.externalDatabase}]..` : '' |
| | | } else { |
| | | GLOB.externalDatabase = null |
| | | |
| | | } |
| | | |
| | | // 只有业务系统才可以设置为正式系统 |
| | |
| | | if (link === 'dynamic' || link === 'static' || link === 'custom') { |
| | | _options.push('linkurl', 'joint') |
| | | } else if (link === 'page') { |
| | | _options.push('copyMenuId', 'joint') |
| | | _options.push('copyMenuId', 'joint', 'open') |
| | | } else if (link === 'linkpage') { |
| | | _options.push('linkmenu', 'joint') |
| | | _options.push('linkmenu', 'joint', 'open') |
| | | } |
| | | } |
| | | } else if (eleType === 'icon') { |
| | |
| | | ] |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | key: 'link', |
| | | label: '链接', |
| | | initVal: card.link || '', |
| | | tooltip: '动态地址为绑定字段值。', |
| | | required: false, |
| | | forbid: isApp, |
| | | options: [ |
| | | { value: '', text: '无' }, |
| | | { value: 'dynamic', text: '动态' }, |
| | | { value: 'static', text: '静态' } |
| | | ] |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'link', |
| | | label: '链接', |
| | | initVal: card.link || '', |
| | | required: false, |
| | | forbid: !isApp, |
| | | options: [ |
| | | { value: '', text: '无' }, |
| | | { value: 'page', text: '菜单' }, |
| | | { value: 'linkpage', text: '关联菜单' }, |
| | | { value: 'custom', text: '链接' } |
| | | ] |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'linkmenu', |
| | | label: '关联菜单', |
| | | initVal: card.linkmenu || '', |
| | | required: true, |
| | | forbid: !isApp, |
| | | options: appMenus |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'copyMenuId', |
| | | label: '复制菜单', |
| | | initVal: card.copyMenuId || '', |
| | | required: false, |
| | | forbid: !isApp, |
| | | options: appMenus |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'linkurl', |
| | | label: '链接地址', |
| | | initVal: card.linkurl || '', |
| | | required: true, |
| | | options: [] |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'format', |
| | | label: '格式化', |
| | |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | key: 'link', |
| | | label: '链接', |
| | | initVal: card.link || '', |
| | | tooltip: '动态地址为绑定字段值。', |
| | | required: false, |
| | | forbid: isApp, |
| | | options: [ |
| | | { value: '', text: '无' }, |
| | | { value: 'dynamic', text: '动态' }, |
| | | { value: 'static', text: '静态' } |
| | | ] |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'link', |
| | | label: '链接', |
| | | initVal: card.link || '', |
| | | required: false, |
| | | forbid: !isApp, |
| | | options: [ |
| | | { value: '', text: '无' }, |
| | | { value: 'page', text: '菜单' }, |
| | | { value: 'linkpage', text: '关联菜单' }, |
| | | { value: 'custom', text: '链接' } |
| | | ] |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'linkmenu', |
| | | label: '关联菜单', |
| | | initVal: card.linkmenu || '', |
| | | required: true, |
| | | forbid: !isApp, |
| | | options: appMenus |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | key: 'open', |
| | | label: '打开方式', |
| | | initVal: card.open || 'blank', |
| | | required: false, |
| | | forbid: !isApp, |
| | | options: [ |
| | | { value: 'blank', text: '新页面' }, |
| | | { value: 'self', text: '当前页面' } |
| | | ] |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'copyMenuId', |
| | | label: '复制菜单', |
| | | initVal: card.copyMenuId || '', |
| | | required: false, |
| | | forbid: !isApp, |
| | | options: appMenus |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | key: 'joint', |
| | | label: Formdict['model.form.paramJoint'], |
| | | initVal: card.joint || 'true', |
| | |
| | | text: Formdict['model.false'] |
| | | }] |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'linkurl', |
| | | label: '链接地址', |
| | | initVal: card.linkurl || '', |
| | | required: true, |
| | | options: [] |
| | | }, |
| | | ] |
| | | |
| | | return forms |
| | |
| | | import { getActionForm } from '@/menu/components/share/actioncomponent/formconfig' |
| | | |
| | | import MKEmitter from '@/utils/events.js' |
| | | import MenuUtils from '@/menu/utils/menuUtils.js' |
| | | import MenuUtils from '@/utils/utils-custom.js' |
| | | import ElementForm from './elementform' |
| | | import DragElement from './dragaction' |
| | | import './index.scss' |
| | |
| | | width: 5px; |
| | | } |
| | | } |
| | | .ant-carousel { |
| | | .slick-dots li button { |
| | | background: #1890ff; |
| | | } |
| | | } |
| | | |
| | | .card-item:hover { |
| | | box-shadow: 0px 0px 2px #1890ff; |
| | |
| | | * @param {object} card // 图表对象 |
| | | */ |
| | | export function getBaseForm (card) { |
| | | let menulist = sessionStorage.getItem('fstMenuList') |
| | | let isApp = sessionStorage.getItem('appType') === 'pc' |
| | | let menulist = null |
| | | |
| | | if (isApp) { |
| | | menulist = sessionStorage.getItem('appMenus') |
| | | } else { |
| | | menulist = sessionStorage.getItem('fstMenuList') |
| | | } |
| | | |
| | | if (menulist) { |
| | | try { |
| | | menulist = JSON.parse(menulist) |
| | | if (isApp) { |
| | | menulist = menulist.map(item => { |
| | | item.value = item.MenuID |
| | | item.text = item.MenuName |
| | | return item |
| | | }) |
| | | } |
| | | } catch { |
| | | menulist = [] |
| | | } |
| | |
| | | initVal: card.linkmenu || [], |
| | | tooltip: '在使用柱形图且未启用自定义设置时有效。', |
| | | required: false, |
| | | forbid: isApp, |
| | | options: menulist |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'linkmenu', |
| | | label: '关联菜单', |
| | | initVal: card.linkmenu || '', |
| | | tooltip: '双击饼图,会打开关联的菜单。', |
| | | required: false, |
| | | forbid: !isApp, |
| | | options: menulist |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | key: 'open', |
| | | label: '打开方式', |
| | | initVal: card.open || 'blank', |
| | | required: false, |
| | | forbid: !isApp, |
| | | options: [ |
| | | { value: 'blank', text: '新窗口' }, |
| | | { value: 'self', text: '当前窗口' } |
| | | ] |
| | | } |
| | | ] |
| | | } |
| | |
| | | * @param {object} card // 图表对象 |
| | | */ |
| | | export function getBaseForm (card) { |
| | | let menulist = sessionStorage.getItem('fstMenuList') |
| | | let isApp = sessionStorage.getItem('appType') === 'pc' |
| | | let menulist = null |
| | | |
| | | if (isApp) { |
| | | menulist = sessionStorage.getItem('appMenus') |
| | | } else { |
| | | menulist = sessionStorage.getItem('fstMenuList') |
| | | } |
| | | |
| | | if (menulist) { |
| | | try { |
| | | menulist = JSON.parse(menulist) |
| | | if (isApp) { |
| | | menulist = menulist.map(item => { |
| | | item.value = item.MenuID |
| | | item.text = item.MenuName |
| | | return item |
| | | }) |
| | | } |
| | | } catch { |
| | | menulist = [] |
| | | } |
| | |
| | | initVal: card.linkmenu || [], |
| | | tooltip: '双击饼图,会打开关联的菜单。', |
| | | required: false, |
| | | forbid: isApp, |
| | | options: menulist |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'linkmenu', |
| | | label: '关联菜单', |
| | | initVal: card.linkmenu || '', |
| | | tooltip: '双击饼图,会打开关联的菜单。', |
| | | required: false, |
| | | forbid: !isApp, |
| | | options: menulist |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | key: 'open', |
| | | label: '打开方式', |
| | | initVal: card.open || 'blank', |
| | | required: false, |
| | | forbid: !isApp, |
| | | options: [ |
| | | { value: 'blank', text: '新窗口' }, |
| | | { value: 'self', text: '当前窗口' } |
| | | ] |
| | | } |
| | | ] |
| | | } |
| | |
| | | |
| | | import MKEmitter from '@/utils/events.js' |
| | | import ActionForm from './actionform' |
| | | import MenuUtils from '@/menu/utils/menuUtils.js' |
| | | import MenuUtils from '@/utils/utils-custom.js' |
| | | import CreateFunc from '@/templates/zshare/createfunc' |
| | | import DragElement from './dragaction' |
| | | import './index.scss' |
| | |
| | | |
| | | import Utils from '@/utils/utils.js' |
| | | import MKEmitter from '@/utils/events.js' |
| | | import MenuUtils from '@/menu/utils/menuUtils.js' |
| | | import MenuUtils from '@/utils/utils-custom.js' |
| | | import Card from './card' |
| | | import './index.scss' |
| | | |
| | |
| | | |
| | | import { formRule } from '@/utils/option.js' |
| | | import Utils from '@/utils/utils.js' |
| | | import MenuUtils from '@/menu/utils/menuUtils.js' |
| | | import MenuUtils from '@/utils/utils-custom.js' |
| | | import CodeMirror from '@/templates/zshare/codemirror' |
| | | import './index.scss' |
| | | |
| | |
| | | |
| | | import Utils from '@/utils/utils.js' |
| | | import MKEmitter from '@/utils/events.js' |
| | | import MenuUtils from '@/menu/utils/menuUtils.js' |
| | | import MenuUtils from '@/utils/utils-custom.js' |
| | | import Card from './card' |
| | | import './index.scss' |
| | | |
| | |
| | | import Pie2 from '@/assets/mobimg/nightingale.png' |
| | | import Mainsearch from '@/assets/mobimg/mainsearch.png' |
| | | import Carousel from '@/assets/mobimg/carousel.png' |
| | | import Carousel1 from '@/assets/mobimg/carousel1.png' |
| | | |
| | | // 组件配置信息 |
| | | export const menuOptions = [ |
| | |
| | | { type: 'menu', url: card1, component: 'card', subtype: 'datacard', title: '数据卡', width: 24 }, |
| | | { type: 'menu', url: card2, component: 'card', subtype: 'propcard', title: '属性卡', width: 24 }, |
| | | { type: 'menu', url: Carousel, component: 'carousel', subtype: 'datacard', title: '轮播-动态数据', width: 24, forbid: ['billPrint'] }, |
| | | { type: 'menu', url: Carousel, component: 'carousel', subtype: 'propcard', title: '轮播-静态数据', width: 24, forbid: ['billPrint'] }, |
| | | { type: 'menu', url: Carousel1, component: 'carousel', subtype: 'propcard', title: '轮播-静态数据', width: 24, forbid: ['billPrint'] }, |
| | | { type: 'menu', url: NormalTable, component: 'table', subtype: 'normaltable', title: '常用表', width: 24 }, |
| | | { type: 'menu', url: TableCard, component: 'table', subtype: 'tablecard', title: '表格', width: 12 }, |
| | | { type: 'menu', url: line, component: 'line', subtype: 'line', title: '折线图', width: 24 }, |
| | |
| | | const WrapComponent = asyncIconComponent(() => import('./wrapsetting')) |
| | | const MenuComponent = asyncIconComponent(() => import('./menusetting')) |
| | | const LinkComponent = asyncIconComponent(() => import('./linksetting')) |
| | | const CopyComponent = asyncIconComponent(() => import('@/menu/components/share/copycomponent')) |
| | | const UserComponent = asyncIconComponent(() => import('@/menu/components/share/usercomponent')) |
| | | |
| | | const { SubMenu } = Menu |
| | | |
| | |
| | | |
| | | changeMenu = (menu) => { |
| | | MKEmitter.emit('changeEditMenu', { |
| | | fixed: menu.property === 'menu', |
| | | MenuID: menu.property === 'linkmenu' ? menu.linkMenuId : menu.MenuID, |
| | | copyMenuId: menu.property === 'menu' ? menu.copyMenuId : '', |
| | | MenuNo: menu.MenuNo, |
| | | MenuName: menu.name, |
| | | }) |
| | | } |
| | | |
| | |
| | | <MenuComponent config={card} updateConfig={this.updateComponent} /> |
| | | <LinkComponent config={card} updateConfig={this.updateComponent} /> |
| | | <WrapComponent config={card} updateConfig={this.updateComponent} /> |
| | | <CopyComponent type="normalnarbar" card={card}/> |
| | | <Icon className="style" title="调整样式" onClick={this.changeStyle} type="font-colors" /> |
| | | <UserComponent config={card}/> |
| | | <Icon className="close" title="删除组件" type="delete" onClick={() => this.props.deletecomponent(card.uuid)} /> |
| | | </div> |
| | | } trigger="hover"> |
| | |
| | | |
| | | state = { |
| | | property: this.props.menu.property || 'link', |
| | | linkIntId: this.props.menu.linkIntId || '', |
| | | appMenus: [], |
| | | } |
| | | |
| | |
| | | return new Promise((resolve, reject) => { |
| | | this.props.form.validateFieldsAndScroll((err, values) => { |
| | | if (!err) { |
| | | if (values.linkmenuid) { |
| | | values.linkIntId = this.state.linkIntId || '' |
| | | } |
| | | resolve(values) |
| | | } else { |
| | | reject(err) |
| | |
| | | let val = e.target.value |
| | | |
| | | this.setState({property: val}) |
| | | } |
| | | |
| | | changeLinkMenu = (val, { props }) => { |
| | | this.setState({linkIntId: props.intid}) |
| | | } |
| | | |
| | | render() { |
| | |
| | | message: '请选择关联菜单!' |
| | | }] |
| | | })( |
| | | <Select onChange={this.changeLinkMenu}> |
| | | {appMenus.map(item => (<Select.Option key={item.MenuID} intid={item.menuid_int} value={item.MenuID}>{item.MenuName}</Select.Option>))} |
| | | <Select> |
| | | {appMenus.map(item => (<Select.Option key={item.MenuID} value={item.MenuID}>{item.MenuName}</Select.Option>))} |
| | | </Select> |
| | | )} |
| | | </Form.Item> |
| | |
| | | |
| | | state = { |
| | | property: this.props.menu.property || 'menu', |
| | | linkIntId: this.props.menu.linkIntId || '', |
| | | appMenus: [], |
| | | } |
| | | |
| | |
| | | return new Promise((resolve, reject) => { |
| | | this.props.form.validateFieldsAndScroll((err, values) => { |
| | | if (!err) { |
| | | if (values.linkmenuid) { |
| | | values.linkIntId = this.state.linkIntId || '' |
| | | } |
| | | resolve(values) |
| | | } else { |
| | | reject(err) |
| | |
| | | let val = e.target.value |
| | | |
| | | this.setState({property: val}) |
| | | } |
| | | |
| | | changeLinkMenu = (val, { props }) => { |
| | | this.setState({linkIntId: props.intid}) |
| | | } |
| | | |
| | | render() { |
| | |
| | | message: '请选择关联菜单!' |
| | | }] |
| | | })( |
| | | <Select onChange={this.changeLinkMenu}> |
| | | {appMenus.map(item => (<Select.Option key={item.MenuID} intid={item.menuid_int} value={item.MenuID}>{item.MenuName}</Select.Option>))} |
| | | <Select> |
| | | {appMenus.map(item => (<Select.Option key={item.MenuID} value={item.MenuID}>{item.MenuName}</Select.Option>))} |
| | | </Select> |
| | | )} |
| | | </Form.Item> |
| | |
| | | } |
| | | |
| | | state = { |
| | | appMenus: [], |
| | | logointid: this.props.wrap.linkIntId || '' |
| | | appMenus: [] |
| | | } |
| | | |
| | | UNSAFE_componentWillMount () { |
| | |
| | | } |
| | | |
| | | handleConfirm = () => { |
| | | const { logointid } = this.state |
| | | // 表单提交时检查输入值是否正确 |
| | | return new Promise((resolve, reject) => { |
| | | this.props.form.validateFieldsAndScroll((err, values) => { |
| | | if (!err) { |
| | | values.linkIntId = '' |
| | | |
| | | if (values.logolink && logointid) { |
| | | values.linkIntId = logointid |
| | | } |
| | | |
| | | resolve(values) |
| | | } else { |
| | | reject(err) |
| | |
| | | const { wrap } = this.props |
| | | const { getFieldDecorator } = this.props.form |
| | | const { appMenus } = this.state |
| | | |
| | | const formItemLayout = { |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | |
| | | })( |
| | | <Select |
| | | showSearch |
| | | onChange={(val, { props }) => this.setState({logointid: props.intid})} |
| | | filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0} |
| | | > |
| | | <Select.Option key="empty" intid={''} value={''}>无</Select.Option> |
| | | {appMenus.map(option => |
| | | <Select.Option key={option.MenuID} intid={option.menuid_int} value={option.MenuID}>{option.MenuName}</Select.Option> |
| | | <Select.Option key={option.MenuID} value={option.MenuID}>{option.MenuName}</Select.Option> |
| | | )} |
| | | </Select> |
| | | )} |
| | |
| | | |
| | | import Utils from '@/utils/utils.js' |
| | | import MKEmitter from '@/utils/events.js' |
| | | import MenuUtils from '@/menu/utils/menuUtils.js' |
| | | import MenuUtils from '@/utils/utils-custom.js' |
| | | import Card from './card' |
| | | import './index.scss' |
| | | |
| | |
| | | import Mainsearch from '@/assets/mobimg/mainsearch.png' |
| | | import Navbar from '@/assets/mobimg/navbar.png' |
| | | import Carousel from '@/assets/mobimg/carousel.png' |
| | | import Carousel1 from '@/assets/mobimg/carousel1.png' |
| | | |
| | | // 组件配置信息 |
| | | export const menuOptions = [ |
| | |
| | | { type: 'menu', url: card1, component: 'card', subtype: 'datacard', title: '数据卡', width: 24 }, |
| | | { type: 'menu', url: card2, component: 'card', subtype: 'propcard', title: '属性卡', width: 24 }, |
| | | { type: 'menu', url: Carousel, component: 'carousel', subtype: 'datacard', title: '轮播-动态数据', width: 24 }, |
| | | { type: 'menu', url: Carousel, component: 'carousel', subtype: 'propcard', title: '轮播-静态数据', width: 24 }, |
| | | { type: 'menu', url: Carousel1, component: 'carousel', subtype: 'propcard', title: '轮播-静态数据', width: 24 }, |
| | | { type: 'menu', url: NormalTable, component: 'table', subtype: 'normaltable', title: '常用表', width: 24 }, |
| | | { type: 'menu', url: TableCard, component: 'table', subtype: 'tablecard', title: '表格', width: 12 }, |
| | | { type: 'menu', url: line, component: 'line', subtype: 'line', title: '折线图', width: 24 }, |
| | |
| | | } else if (btn.OpenType === 'pop') { |
| | | this.updateStatus('start') |
| | | |
| | | let modal = this.state.btnconfig |
| | | if (!modal && btn.modal) { |
| | | modal = this.handleModelConfig(btn.modal) |
| | | } |
| | | |
| | | this.setState({ |
| | | tabledata: data, |
| | | btnconfig: btn.modal ? btn.modal : this.state.btnconfig |
| | | btnconfig: modal |
| | | }, () => { |
| | | this.improveAction() |
| | | }) |
| | |
| | | }) |
| | | } |
| | | |
| | | handleModelConfig = (config) => { |
| | | let roleId = sessionStorage.getItem('role_id') || '' // 角色ID |
| | | if (config.groups.length > 0) { |
| | | config.groups.forEach(group => { |
| | | group.sublist = group.sublist.map(cell => { |
| | | // 数据源sql语句,预处理, 权限黑名单字段设置为隐藏表单 |
| | | if (['select', 'link', 'multiselect', 'radio', 'checkbox', 'checkcard'].includes(cell.type) && cell.resourceType === '1') { |
| | | let _option = Utils.getSelectQueryOptions(cell) |
| | | |
| | | // 外联数据库替换 |
| | | if (window.GLOB.externalDatabase !== null) { |
| | | _option.sql = _option.sql.replace(/@db@/ig, window.GLOB.externalDatabase) |
| | | } |
| | | |
| | | cell.data_sql = Utils.formatOptions(_option.sql) |
| | | cell.base_sql = window.btoa(window.encodeURIComponent(_option.sql)) |
| | | cell.arr_field = _option.field |
| | | } |
| | | |
| | | // 字段权限黑名单 |
| | | if (!cell.blacklist || cell.blacklist.length === 0) return cell |
| | | if (cell.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0) { |
| | | cell.hidden = 'true' |
| | | } |
| | | |
| | | return cell |
| | | }) |
| | | }) |
| | | } else { |
| | | config.fields = config.fields.map(cell => { |
| | | // 数据源sql语句,预处理,权限黑名单字段设置为隐藏表单 |
| | | if (['select', 'link', 'multiselect', 'radio', 'checkbox', 'checkcard'].includes(cell.type) && cell.resourceType === '1') { |
| | | let _option = Utils.getSelectQueryOptions(cell) |
| | | |
| | | cell.data_sql = Utils.formatOptions(_option.sql) |
| | | cell.base_sql = window.btoa(window.encodeURIComponent(_option.sql)) |
| | | cell.arr_field = _option.field |
| | | } |
| | | |
| | | // 字段权限黑名单 |
| | | if (!cell.blacklist || cell.blacklist.length === 0) return cell |
| | | if (cell.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0) { |
| | | cell.hidden = 'true' |
| | | } |
| | | |
| | | return cell |
| | | }) |
| | | } |
| | | return config |
| | | } |
| | | |
| | | /** |
| | | * @description 获取按钮配置信息 |
| | | */ |
| | |
| | | }) |
| | | this.updateStatus('over') |
| | | } else { |
| | | let roleId = sessionStorage.getItem('role_id') || '' // 角色ID |
| | | if (_LongParam.groups.length > 0) { |
| | | _LongParam.groups.forEach(group => { |
| | | group.sublist = group.sublist.map(cell => { |
| | | // 数据源sql语句,预处理, 权限黑名单字段设置为隐藏表单 |
| | | if (['select', 'link', 'multiselect', 'radio', 'checkbox', 'checkcard'].includes(cell.type) && cell.resourceType === '1') { |
| | | let _option = Utils.getSelectQueryOptions(cell) |
| | | |
| | | // 外联数据库替换 |
| | | if (window.GLOB.externalDatabase !== null) { |
| | | _option.sql = _option.sql.replace(/@db@/ig, window.GLOB.externalDatabase) |
| | | } |
| | | |
| | | cell.data_sql = Utils.formatOptions(_option.sql) |
| | | cell.base_sql = window.btoa(window.encodeURIComponent(_option.sql)) |
| | | cell.arr_field = _option.field |
| | | } |
| | | |
| | | // 字段权限黑名单 |
| | | if (!cell.blacklist || cell.blacklist.length === 0) return cell |
| | | if (cell.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0) { |
| | | cell.hidden = 'true' |
| | | } |
| | | |
| | | return cell |
| | | }) |
| | | }) |
| | | } else { |
| | | _LongParam.fields = _LongParam.fields.map(cell => { |
| | | // 数据源sql语句,预处理,权限黑名单字段设置为隐藏表单 |
| | | if (['select', 'link', 'multiselect', 'radio', 'checkbox', 'checkcard'].includes(cell.type) && cell.resourceType === '1') { |
| | | let _option = Utils.getSelectQueryOptions(cell) |
| | | |
| | | cell.data_sql = Utils.formatOptions(_option.sql) |
| | | cell.base_sql = window.btoa(window.encodeURIComponent(_option.sql)) |
| | | cell.arr_field = _option.field |
| | | } |
| | | |
| | | // 字段权限黑名单 |
| | | if (!cell.blacklist || cell.blacklist.length === 0) return cell |
| | | if (cell.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0) { |
| | | cell.hidden = 'true' |
| | | } |
| | | |
| | | return cell |
| | | }) |
| | | } |
| | | _LongParam = this.handleModelConfig(_LongParam) |
| | | |
| | | this.setState({ |
| | | btnconfig: _LongParam |
| | |
| | | |
| | | if (btn.execMode === 'pop') { |
| | | this.updateStatus('start') |
| | | let modal = this.state.btnconfig |
| | | if (!modal && btn.modal) { |
| | | modal = this.handleModelConfig(btn.modal) |
| | | } |
| | | |
| | | this.setState({ |
| | | tabledata: data, |
| | | btnconfig: btn.modal ? btn.modal : this.state.btnconfig |
| | | btnconfig: modal |
| | | }, () => { |
| | | this.improveAction() |
| | | }) |
| | |
| | | }) |
| | | } |
| | | |
| | | handleModelConfig = (config) => { |
| | | let roleId = sessionStorage.getItem('role_id') || '' // 角色ID |
| | | if (config.groups.length > 0) { |
| | | config.groups.forEach(group => { |
| | | group.sublist = group.sublist.map(cell => { |
| | | // 数据源sql语句,预处理, 权限黑名单字段设置为隐藏表单 |
| | | if (['select', 'link', 'multiselect', 'radio', 'checkbox', 'checkcard'].includes(cell.type) && cell.resourceType === '1') { |
| | | let _option = Utils.getSelectQueryOptions(cell) |
| | | |
| | | // 外联数据库替换 |
| | | if (window.GLOB.externalDatabase !== null) { |
| | | _option.sql = _option.sql.replace(/@db@/ig, window.GLOB.externalDatabase) |
| | | } |
| | | |
| | | cell.data_sql = Utils.formatOptions(_option.sql) |
| | | cell.base_sql = window.btoa(window.encodeURIComponent(_option.sql)) |
| | | cell.arr_field = _option.field |
| | | } |
| | | |
| | | // 字段权限黑名单 |
| | | if (!cell.blacklist || cell.blacklist.length === 0) return cell |
| | | if (cell.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0) { |
| | | cell.hidden = 'true' |
| | | } |
| | | |
| | | return cell |
| | | }) |
| | | }) |
| | | } else { |
| | | config.fields = config.fields.map(cell => { |
| | | // 数据源sql语句,预处理,权限黑名单字段设置为隐藏表单 |
| | | if (['select', 'link', 'multiselect', 'radio', 'checkbox', 'checkcard'].includes(cell.type) && cell.resourceType === '1') { |
| | | let _option = Utils.getSelectQueryOptions(cell) |
| | | |
| | | cell.data_sql = Utils.formatOptions(_option.sql) |
| | | cell.base_sql = window.btoa(window.encodeURIComponent(_option.sql)) |
| | | cell.arr_field = _option.field |
| | | } |
| | | |
| | | // 字段权限黑名单 |
| | | if (!cell.blacklist || cell.blacklist.length === 0) return cell |
| | | if (cell.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0) { |
| | | cell.hidden = 'true' |
| | | } |
| | | |
| | | return cell |
| | | }) |
| | | } |
| | | return config |
| | | } |
| | | |
| | | /** |
| | | * @description 获取按钮配置信息 |
| | | */ |
| | |
| | | }) |
| | | this.updateStatus('over') |
| | | } else { |
| | | let roleId = sessionStorage.getItem('role_id') || '' // 角色ID |
| | | if (_LongParam.groups.length > 0) { |
| | | _LongParam.groups.forEach(group => { |
| | | group.sublist = group.sublist.map(cell => { |
| | | // 数据源sql语句,预处理 |
| | | if (['select', 'link', 'multiselect', 'radio', 'checkbox', 'checkcard'].includes(cell.type) && cell.resourceType === '1') { |
| | | let _option = Utils.getSelectQueryOptions(cell) |
| | | |
| | | // 外联数据库替换 |
| | | if (window.GLOB.externalDatabase !== null) { |
| | | _option.sql = _option.sql.replace(/@db@/ig, window.GLOB.externalDatabase) |
| | | } |
| | | |
| | | cell.data_sql = Utils.formatOptions(_option.sql) |
| | | cell.base_sql = window.btoa(window.encodeURIComponent(_option.sql)) |
| | | cell.arr_field = _option.field |
| | | } |
| | | |
| | | // 字段权限黑名单 |
| | | if (!cell.blacklist || cell.blacklist.length === 0) return cell |
| | | if (cell.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0) { |
| | | cell.hidden = 'true' |
| | | } |
| | | |
| | | return cell |
| | | }) |
| | | }) |
| | | } else { |
| | | _LongParam.fields = _LongParam.fields.map(cell => { |
| | | // 数据源sql语句,预处理 |
| | | if (['select', 'link', 'multiselect', 'radio', 'checkbox', 'checkcard'].includes(cell.type) && cell.resourceType === '1') { |
| | | let _option = Utils.getSelectQueryOptions(cell) |
| | | |
| | | cell.data_sql = Utils.formatOptions(_option.sql) |
| | | cell.base_sql = window.btoa(window.encodeURIComponent(_option.sql)) |
| | | cell.arr_field = _option.field |
| | | } |
| | | |
| | | // 字段权限黑名单 |
| | | if (!cell.blacklist || cell.blacklist.length === 0) return cell |
| | | if (cell.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0) { |
| | | cell.hidden = 'true' |
| | | } |
| | | |
| | | return cell |
| | | }) |
| | | } |
| | | _LongParam = this.handleModelConfig(_LongParam) |
| | | |
| | | this.setState({ |
| | | btnconfig: _LongParam |
| | |
| | | import MenuForm from './menuform' |
| | | import TransferForm from '@/templates/zshare/basetransferform' |
| | | import Utils from '@/utils/utils.js' |
| | | import MenuUtils from '@/menu/utils/menuUtils.js' |
| | | import MenuUtils from '@/utils/utils-custom.js' |
| | | import DragElement from '../menuelement' |
| | | import asyncLoadComponent from '@/utils/asyncLoadComponent' |
| | | import './index.scss' |
| | |
| | | } |
| | | |
| | | state = { |
| | | fields: null |
| | | fields: null, |
| | | appType: sessionStorage.getItem('appType') |
| | | } |
| | | |
| | | UNSAFE_componentWillMount () { |
| | |
| | | |
| | | render() { |
| | | const { config, dict } = this.props |
| | | const { fields } = this.state |
| | | const { fields, appType } = this.state |
| | | const { getFieldDecorator } = this.props.form |
| | | |
| | | const formItemLayout = { |
| | |
| | | )} |
| | | </Form.Item> |
| | | </Col> |
| | | {!this.props.isSubTab ? <Col span={12}> |
| | | {!this.props.isSubTab && appType !== 'pc' ? <Col span={12}> |
| | | <Form.Item label="挂载对象"> |
| | | {getFieldDecorator('container', { |
| | | initialValue: config.setting.container || 'tab' |
File was renamed from src/menu/utils/menuUtils.js |
| | |
| | | getUuids(c) |
| | | }) |
| | | } else { |
| | | if (item.action && item.action.length) { |
| | | if (item.action && item.action.length > 0) { |
| | | item.action.forEach(act => { |
| | | if (!act.origin) { |
| | | uuids.push(act.uuid) |
| | |
| | | } |
| | | }) |
| | | _card.backElements && _card.backElements.forEach(cell => { |
| | | if (cell.eleType === 'button') { |
| | | uuids.push(cell.uuid) |
| | | } |
| | | }) |
| | | }) |
| | | } else if (item.type === 'carousel') { |
| | | item.subcards.forEach(_card => { |
| | | _card.elements && _card.elements.forEach(cell => { |
| | | if (cell.eleType === 'button') { |
| | | uuids.push(cell.uuid) |
| | | } |
| | |
| | | */ |
| | | static resetConfig = (components) => { |
| | | return components.map(item => { |
| | | if (item.type === 'navbar') { |
| | | return item |
| | | } |
| | | |
| | | item.uuid = this.getuuid() |
| | | |
| | | if (item.type === 'tabs') { |
| | |
| | | return cell |
| | | }) |
| | | item.components = this.resetConfig(item.components) |
| | | } else if (item.type === 'card' || (item.type === 'table' && item.subtype === 'tablecard')) { |
| | | } else if (item.type === 'card' || item.type === 'carousel' || (item.type === 'table' && item.subtype === 'tablecard')) { |
| | | item.subcards.forEach(card => { |
| | | card.uuid = this.getuuid() |
| | | if (card.elements) { |
| | |
| | | import antdEnUS from 'antd/es/locale/en_US' |
| | | import antdZhCN from 'antd/es/locale/zh_CN' |
| | | import MKEmitter from '@/utils/events.js' |
| | | import MenuUtils from '@/menu/utils/menuUtils.js' |
| | | import MenuUtils from '@/utils/utils-custom.js' |
| | | import asyncComponent from '@/utils/asyncComponent' |
| | | import { modifyCustomMenu } from '@/store/action' |
| | | |
| | |
| | | import { is, fromJS } from 'immutable' |
| | | import moment from 'moment' |
| | | import HTML5Backend from 'react-dnd-html5-backend' |
| | | import { ConfigProvider, notification, Modal, Collapse, Switch, Button, Icon } from 'antd' |
| | | import { ConfigProvider, notification, Modal, Collapse, Switch, Button, Icon, message, Spin } from 'antd' |
| | | |
| | | import Api from '@/api' |
| | | import Utils from '@/utils/utils.js' |
| | |
| | | import antdEnUS from 'antd/es/locale/en_US' |
| | | import antdZhCN from 'antd/es/locale/zh_CN' |
| | | import MKEmitter from '@/utils/events.js' |
| | | import MenuUtils from '@/menu/utils/menuUtils.js' |
| | | import MenuUtils from '@/utils/utils-custom.js' |
| | | import asyncComponent from '@/utils/asyncComponent' |
| | | import { modifyCustomMenu } from '@/store/action' |
| | | |
| | |
| | | state = { |
| | | localedict: sessionStorage.getItem('lang') !== 'en-US' ? antdZhCN : antdEnUS, |
| | | dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | loading: true, |
| | | MenuId: '', |
| | | MenuName: '', |
| | | MenuNo: '', |
| | |
| | | this.setState({ |
| | | MenuId: param.MenuID |
| | | }, () => { |
| | | this.getMenuParam() |
| | | this.getMenuParam(param) |
| | | }) |
| | | } |
| | | } catch { |
| | |
| | | changeEditMenu = (menu) => { |
| | | const { oriConfig, config } = this.state |
| | | |
| | | if (!is(fromJS(oriConfig), fromJS(config))) { |
| | | if (!oriConfig || !is(fromJS(oriConfig), fromJS(config))) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: '配置已修改,请保存!', |
| | | message: '配置信息未保存!', |
| | | duration: 5 |
| | | }) |
| | | return |
| | | } |
| | | |
| | | this.props.history.push('/pcdesign/' + window.btoa(window.encodeURIComponent(JSON.stringify({MenuID: menu.MenuID, copyMenuId: menu.copyMenuId || '', type: 'view'})))) |
| | | let param = { |
| | | MenuID: menu.MenuID, |
| | | copyMenuId: menu.copyMenuId || '', |
| | | type: 'view' |
| | | } |
| | | |
| | | if (menu.fixed && menu.MenuNo && menu.MenuName) { |
| | | param.fixed = true |
| | | param.MenuNo = menu.MenuNo |
| | | param.MenuName = menu.MenuName |
| | | } |
| | | |
| | | this.props.history.push('/pcdesign/' + window.btoa(window.encodeURIComponent(JSON.stringify(param)))) |
| | | } |
| | | |
| | | getAppMessage = () => { |
| | |
| | | }) |
| | | } else { |
| | | sessionStorage.setItem('appViewList', JSON.stringify(appViewList)) |
| | | sessionStorage.setItem('appHomeId', homeId) |
| | | this.props.history.replace('/pcdesign/' + window.btoa(window.encodeURIComponent(JSON.stringify({MenuID: homeId, type: 'view'})))) |
| | | } |
| | | }) |
| | | } else { |
| | | sessionStorage.setItem('appViewList', JSON.stringify(appViewList)) |
| | | sessionStorage.setItem('appHomeId', homeId) |
| | | this.props.history.replace('/pcdesign/' + window.btoa(window.encodeURIComponent(JSON.stringify({MenuID: homeId, type: 'view'})))) |
| | | } |
| | | }) |
| | |
| | | initPopview = (card, btn) => { |
| | | const { oriConfig, config } = this.state |
| | | |
| | | if (!is(fromJS(oriConfig), fromJS(config))) { |
| | | if (!oriConfig || !is(fromJS(oriConfig), fromJS(config))) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: '配置已修改,请保存!', |
| | | message: '配置信息未保存!', |
| | | duration: 5 |
| | | }) |
| | | return |
| | |
| | | return |
| | | } |
| | | |
| | | if (!is(fromJS(oriConfig), fromJS(config))) { |
| | | if (!oriConfig || !is(fromJS(oriConfig), fromJS(config))) { |
| | | confirm({ |
| | | title: '配置已修改,放弃保存吗?', |
| | | title: '配置信息未保存,确定关闭吗?', |
| | | content: '', |
| | | onOk() { |
| | | window.close() |
| | |
| | | } |
| | | } |
| | | |
| | | getMenuParam = () => { |
| | | getMenuParam = (urlParam) => { |
| | | const { MenuId } = this.state |
| | | |
| | | let param = { |
| | |
| | | } |
| | | |
| | | Api.getSystemConfig(param).then(result => { |
| | | if (result.status) { |
| | | if (!result.status) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: result.message, |
| | | duration: 5 |
| | | }) |
| | | this.setState({loading: false}) |
| | | return |
| | | } else if (!result.LongParam && urlParam.copyMenuId) { |
| | | this.getCopyParam(urlParam) |
| | | } else { |
| | | let config = null |
| | | let isCreate = false |
| | | |
| | | try { |
| | | config = result.LongParam ? JSON.parse(window.decodeURIComponent(window.atob(result.LongParam))) : null |
| | |
| | | } |
| | | |
| | | if (!config) { |
| | | isCreate = true |
| | | config = { |
| | | version: 1.0, |
| | | uuid: MenuId, |
| | |
| | | config.MenuID = MenuId |
| | | config.open_edition = result.open_edition || '' |
| | | |
| | | if (urlParam.fixed) { |
| | | config.fixed = true |
| | | config.MenuName = urlParam.MenuName |
| | | config.MenuNo = urlParam.MenuNo |
| | | } |
| | | |
| | | let indeComs = [] |
| | | config.components.forEach(item => { |
| | | if (item.type === 'navbar') { |
| | |
| | | |
| | | if (indeComs.length === 0) { |
| | | this.setState({ |
| | | oriConfig: config, |
| | | oriConfig: isCreate ? null : config, |
| | | config: fromJS(config).toJS(), |
| | | loading: false |
| | | }) |
| | | |
| | | this.props.modifyCustomMenu(config) |
| | | } else { |
| | | this.jointComponents(config, indeComs) |
| | | this.jointComponents(config, indeComs, isCreate) |
| | | } |
| | | } else { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: result.message, |
| | | duration: 5 |
| | | }) |
| | | } |
| | | }) |
| | | this.getAppMenus() |
| | | } |
| | | |
| | | getAppMenus = () => { |
| | | let _param = { |
| | | func: 's_get_app_menus', |
| | | TypeCharOne: sessionStorage.getItem('kei_no'), |
| | |
| | | }) |
| | | } |
| | | |
| | | jointComponents = (config, indeComs) => { |
| | | getCopyParam = (urlParam) => { |
| | | const { MenuId } = this.state |
| | | |
| | | let param = { |
| | | func: 'sPC_Get_LongParam', |
| | | TypeCharOne: sessionStorage.getItem('kei_no'), |
| | | typename: 'pc', |
| | | MenuID: urlParam.copyMenuId |
| | | } |
| | | |
| | | Api.getSystemConfig(param).then(result => { |
| | | if (!result.status) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: result.message, |
| | | duration: 5 |
| | | }) |
| | | this.setState({loading: false}) |
| | | return |
| | | } else if (!result.LongParam) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: '未查询到复制菜单配置信息!', |
| | | duration: 5 |
| | | }) |
| | | } |
| | | |
| | | let config = null |
| | | |
| | | try { |
| | | config = result.LongParam ? JSON.parse(window.decodeURIComponent(window.atob(result.LongParam))) : null |
| | | } catch (e) { |
| | | console.warn('Parse Failure') |
| | | config = null |
| | | } |
| | | |
| | | |
| | | if (!config) { |
| | | config = { |
| | | version: 1.0, |
| | | uuid: MenuId, |
| | | MenuID: MenuId, |
| | | Template: 'webPage', |
| | | enabled: false, |
| | | MenuName: '', |
| | | MenuNo: '', |
| | | tables: [], |
| | | components: [], |
| | | viewType: 'menu', |
| | | style: { |
| | | backgroundColor: '#ffffff', backgroundImage: '', paddingLeft: '20px', paddingRight: '20px' |
| | | } |
| | | } |
| | | } else { |
| | | config.components = MenuUtils.resetConfig(config.components) |
| | | message.success('复制成功,保存后生效。') |
| | | } |
| | | |
| | | config.uuid = MenuId |
| | | config.MenuID = MenuId |
| | | config.open_edition = '' |
| | | |
| | | let indeComs = [] |
| | | config.components.forEach(item => { |
| | | if (item.type === 'navbar') { |
| | | indeComs.push(fromJS(item).toJS()) |
| | | } |
| | | }) |
| | | |
| | | if (indeComs.length === 0) { |
| | | this.setState({ |
| | | oriConfig: null, |
| | | config: fromJS(config).toJS(), |
| | | loading: false |
| | | }) |
| | | |
| | | this.props.modifyCustomMenu(config) |
| | | } else { |
| | | this.jointComponents(config, indeComs, true) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | jointComponents = (config, indeComs, isCreate) => { |
| | | let deffers = indeComs.map(item => { |
| | | return new Promise(resolve => { |
| | | Api.getSystemConfig({ |
| | |
| | | message: res.message, |
| | | duration: 5 |
| | | }) |
| | | return |
| | | } |
| | | |
| | | resolve(res) |
| | |
| | | } |
| | | |
| | | this.setState({ |
| | | oriConfig: fromJS(config).toJS(), |
| | | config: config |
| | | oriConfig: isCreate ? null : fromJS(config).toJS(), |
| | | config: config, |
| | | loading: false |
| | | }) |
| | | |
| | | this.props.modifyCustomMenu(config) |
| | |
| | | top: 92, |
| | | message: '请完善菜单基本信息!', |
| | | duration: 5 |
| | | }) |
| | | sessionStorage.setItem('settingshow', 'true') |
| | | this.setState({ |
| | | settingshow: true, |
| | | activeKey: 'basedata' |
| | | }) |
| | | return |
| | | } |
| | |
| | | if (!res) return |
| | | |
| | | if (delButtons.length === 0) { |
| | | return { |
| | | status: true |
| | | } |
| | | return { status: true, nonexec: true } |
| | | } else { |
| | | let appHomeId = sessionStorage.getItem('appHomeId') |
| | | let _param = { |
| | | func: 'sPC_MainMenu_Del', |
| | | MenuID: delButtons.join(',') |
| | | MenuID: delButtons.filter(id => id !== appHomeId).join(',') |
| | | } |
| | | return Api.getSystemConfig(_param) |
| | | } |
| | |
| | | duration: 5 |
| | | }) |
| | | return false |
| | | } else if (!res.nonexec) { // 执行删除后刷新菜单列表 |
| | | this.getAppMenus() |
| | | } |
| | | |
| | | let ids = thawButtons.filter(item => btnIds.indexOf(item) !== -1) |
| | | if (ids.length === 0) { |
| | | return { |
| | | status: true |
| | | } |
| | | return { status: true } |
| | | } else { |
| | | return Api.getSystemConfig({ |
| | | func: 'sPC_MainMenu_ReDel', |
| | |
| | | refreshView = () => { |
| | | const { oriConfig, config } = this.state |
| | | |
| | | if (!is(fromJS(oriConfig), fromJS(config))) { |
| | | if (!oriConfig || !is(fromJS(oriConfig), fromJS(config))) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: '配置已修改,请保存!', |
| | | message: '配置信息未保存!', |
| | | duration: 5 |
| | | }) |
| | | return |
| | | } |
| | | |
| | | // Api.getSystemConfig({ |
| | | // func: 'sPC_MainMenu_Del', |
| | | // MenuID: '1614740497468ku800sbg853vupf65v4' |
| | | // }) |
| | | |
| | | sessionStorage.removeItem('sysRoles') |
| | | sessionStorage.removeItem('permFuncField') |
| | |
| | | window.location.reload() |
| | | } |
| | | |
| | | setHomeView = () => { |
| | | const { oriConfig, config } = this.state |
| | | |
| | | if (!oriConfig || !is(fromJS(oriConfig), fromJS(config))) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: '配置信息未保存!', |
| | | duration: 5 |
| | | }) |
| | | return |
| | | } |
| | | |
| | | let param = { |
| | | func: 's_kei_link_keyids_addupt', |
| | | BID: sessionStorage.getItem('appId'), |
| | | exec_type: 'y', |
| | | LText: '' |
| | | } |
| | | |
| | | let appViewList = sessionStorage.getItem('appViewList') |
| | | appViewList = appViewList ? JSON.parse(appViewList) : [] |
| | | appViewList = appViewList.filter(item => item.keys_type !== 'index') |
| | | |
| | | appViewList.unshift({ |
| | | appkey: window.GLOB.appkey || '', |
| | | bid: sessionStorage.getItem('appId') || '', |
| | | kei_no: sessionStorage.getItem('kei_no') || '', |
| | | keys_id: config.MenuID, |
| | | keys_type: 'index', |
| | | remark: config.MenuName |
| | | }) |
| | | |
| | | param.LText = appViewList.map(item => `select '${item.keys_id}','${item.keys_type}','${item.kei_no}','${item.appkey}','${item.bid}','${sessionStorage.getItem('CloudUserID')}','${item.remark}'`) |
| | | param.LText = param.LText.join(' union all ') |
| | | param.LText = Utils.formatOptions(param.LText) |
| | | |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') |
| | | param.secretkey = Utils.encrypt('', param.timestamp) |
| | | |
| | | confirm({ |
| | | title: '确定设置本页面为首页吗?', |
| | | content: '', |
| | | onOk() { |
| | | Api.getSystemConfig(param).then(result => { |
| | | if (!result.status) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: result.message, |
| | | duration: 5 |
| | | }) |
| | | } else { |
| | | sessionStorage.setItem('appHomeId', config.MenuID) |
| | | sessionStorage.setItem('appViewList', JSON.stringify(appViewList)) |
| | | } |
| | | }) |
| | | }, |
| | | onCancel() {} |
| | | }) |
| | | } |
| | | |
| | | render () { |
| | | const { localedict, activeKey, settingshow, controlshow, dict, MenuId, config, menuloading, customComponents } = this.state |
| | | const { localedict, loading, activeKey, settingshow, controlshow, dict, MenuId, config, menuloading, customComponents } = this.state |
| | | |
| | | return ( |
| | | <ConfigProvider locale={localedict}> |
| | | <div className={'mk-pc-view '} id="mk-menu-design-view"> |
| | | {loading ? <Spin className="view-spin" size="large" /> : null} |
| | | <DndProvider backend={HTML5Backend}> |
| | | <div className={'menu-setting ' + (!settingshow ? 'hidden' : '')}> |
| | | <div className="draw"> |
| | |
| | | <SysInterface config={config} updateConfig={this.updateConfig}/> |
| | | <PictureController/> |
| | | <Quotecomponent config={config} updateConfig={this.updateConfig}/> |
| | | <Button className="mk-border-green" icon="home" onClick={this.setHomeView}>设为首页</Button> |
| | | <Button className="mk-border-danger" icon="redo" onClick={this.refreshView}>强制刷新</Button> |
| | | <Button type="default" onClick={this.closeView}>{dict['mob.return']}</Button> |
| | | </div> |
| | |
| | | .mk-pc-view { |
| | | background: #000; |
| | | min-height: 100vh; |
| | | |
| | | >.view-spin { |
| | | position: absolute; |
| | | z-index: 3; |
| | | left: calc(50% - 16px); |
| | | top: calc(50vh - 70px); |
| | | } |
| | | .modal-form-board { |
| | | padding-top: 0; |
| | | } |
| | | .menu-setting { |
| | | position: fixed; |
| | | left: 0; |
| | |
| | | message: dict['mob.required.input'] + dict['mob.menu'] + dict['mob.name'] + '!' |
| | | } |
| | | ] |
| | | })(<Input placeholder="" autoComplete="off" onChange={this.changeName}/>)} |
| | | })(<Input placeholder="" disabled={!!(config.fixed && config.MenuName)} autoComplete="off" onChange={this.changeName}/>)} |
| | | </Form.Item> |
| | | </Col> |
| | | <Col span={24}> |
| | |
| | | message: dict['mob.required.input'] + dict['mob.menu'] + dict['mob.param'] + '!' |
| | | } |
| | | ] |
| | | })(<Input placeholder="" autoComplete="off" onChange={this.changeNo}/>)} |
| | | })(<Input placeholder="" disabled={!!(config.fixed && config.MenuName)} autoComplete="off" onChange={this.changeNo}/>)} |
| | | </Form.Item> |
| | | </Col> |
| | | <Col span={24}> |