New file |
| | |
| | | import { Component } from 'react' |
| | | import moment from 'moment' |
| | | |
| | | import Api from '@/api' |
| | | import Utils from '@/utils/utils.js' |
| | | import MKEmitter from '@/utils/events.js' |
| | | |
| | | class QueryLog extends Component { |
| | | state = { |
| | | logs: [] |
| | | } |
| | | |
| | | componentDidMount () { |
| | | if (window.GLOB.systemType === 'production') { |
| | | MKEmitter.addListener('queryTrigger', this.queryTrigger) |
| | | setTimeout(() => { |
| | | this.sendLog() |
| | | }, 300000) |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @description 组件销毁,清除state更新 |
| | | */ |
| | | componentWillUnmount () { |
| | | this.setState = () => { |
| | | return |
| | | } |
| | | MKEmitter.removeListener('queryTrigger', this.queryTrigger) |
| | | } |
| | | |
| | | sendLog = () => { |
| | | const { logs } = this.state |
| | | |
| | | if (logs && logs.length > 0 && sessionStorage.getItem('isEditState') !== 'true') { |
| | | let logMap = new Map() |
| | | |
| | | logs.forEach(item => { |
| | | if (logMap.has(item.menuId)) { |
| | | let _item = logMap.get(item.menuId) |
| | | _item.times++ |
| | | logMap.set(item.menuId, _item) |
| | | } else { |
| | | item.times = 1 |
| | | logMap.set(item.menuId, item) |
| | | } |
| | | }) |
| | | let userid = sessionStorage.getItem('UserID') || '' |
| | | let LText = [...logMap.values()].map(item => `select '${item.menuId}','${item.times}','${item.name}','${window.GLOB.appkey}','${userid}'`) |
| | | |
| | | let param = { |
| | | func: 's_get_users_operation_log', |
| | | exec_type: 'y', // 后台解码 |
| | | LText: LText.join(' union all ') |
| | | } |
| | | |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') |
| | | param.secretkey = Utils.encrypt('', param.timestamp) |
| | | param.LText = Utils.formatOptions(param.LText) |
| | | |
| | | Api.getSystemConfig(param) |
| | | |
| | | this.setState({logs: []}) |
| | | } |
| | | |
| | | setTimeout(() => { |
| | | this.sendLog() |
| | | }, 300000) |
| | | } |
| | | |
| | | queryTrigger = (item) => { |
| | | this.setState({logs: [...this.state.logs, item]}) |
| | | } |
| | | |
| | | render () { |
| | | return null |
| | | } |
| | | } |
| | | |
| | | export default QueryLog |
| | |
| | | import { modifyTabview, resetEditLevel, modifyMenuTree, modifyMainMenu } from '@/store/action' |
| | | import { SySMenuList } from './config' |
| | | import options from '@/store/options.js' |
| | | import MKEmitter from '@/utils/events.js' |
| | | import zhCN from '@/locales/zh-CN/main.js' |
| | | import enUS from '@/locales/en-US/main.js' |
| | | import Api from '@/api' |
| | |
| | | }) |
| | | } |
| | | |
| | | changemenu(e) { |
| | | changemenu(menu) { |
| | | if (this.props.editState && this.props.editLevel !== 'HS') { |
| | | e.preventDefault() |
| | | return |
| | | } |
| | | |
| | | let menu = JSON.parse(e.target.dataset.item) |
| | | |
| | | if (menu.OpenType === 'newpage' || menu.OpenType === 'NewPage') { |
| | | e.preventDefault() |
| | | window.open(menu.src) |
| | | } else if (menu.OpenType === 'blank') { |
| | | menu.selected = true |
| | | this.props.modifyTabview([menu]) |
| | | e.preventDefault() |
| | | } else { |
| | | let tabs = fromJS(this.props.tabviews).toJS() |
| | | tabs = tabs.filter(tab => { |
| | |
| | | tabs.push(menu) |
| | | this.props.modifyTabview(tabs) |
| | | }) |
| | | |
| | | e.preventDefault() |
| | | } |
| | | |
| | | if (window.GLOB.systemType === 'production') { |
| | | MKEmitter.emit('queryTrigger', {menuId: menu.MenuID, name: '菜单'}) |
| | | } |
| | | } |
| | | |
| | |
| | | {item.children.map(cell => { |
| | | return ( |
| | | <Menu.Item key={cell.MenuID}> |
| | | <a href={cell.src} id={cell.MenuID} data-item={JSON.stringify(cell)} onClick={this.changemenu.bind(this)}>{cell.MenuName}</a> |
| | | <a href={cell.src} id={cell.MenuID} onClick={() => this.changemenu(cell)}>{cell.MenuName}</a> |
| | | </Menu.Item> |
| | | ) |
| | | })} |
| | |
| | | duration: 5 |
| | | }) |
| | | return |
| | | } |
| | | |
| | | if (btn.verify && btn.verify.sheet && btn.verify.columns && btn.verify.columns.length > 0) { |
| | | let primaryId = '' // 导入时行Id |
| | | if (btn.Ot === 'requiredSgl') { |
| | | primaryId = data[0][setting.primaryKey] || '' |
| | | } |
| | | |
| | | this.setState({ |
| | | primaryId: primaryId |
| | | }, () => { |
| | | this.refs.excelIn.exceltrigger() |
| | | }) |
| | | } else { |
| | | } else if (!btn.verify || !btn.verify.sheet || !btn.verify.columns || btn.verify.columns.length === 0) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: 'excel导入验证信息未设置!', |
| | | duration: 5 |
| | | }) |
| | | return |
| | | } |
| | | |
| | | let primaryId = '' // 导入时行Id |
| | | if (btn.Ot === 'requiredSgl') { |
| | | primaryId = data[0][setting.primaryKey] || '' |
| | | } |
| | | |
| | | this.setState({ |
| | | primaryId: primaryId |
| | | }, () => { |
| | | this.refs.excelIn.exceltrigger() |
| | | }) |
| | | |
| | | if (window.GLOB.systemType === 'production') { |
| | | MKEmitter.emit('queryTrigger', {menuId: btn.uuid, name: '导入Excel'}) |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | MKEmitter.emit('getexceloutparam', btn.$menuId, btn.uuid) |
| | | if (window.GLOB.systemType === 'production') { |
| | | MKEmitter.emit('queryTrigger', {menuId: btn.uuid, name: '导出Excel'}) |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | Remark = data[0].Remark || '' |
| | | } |
| | | |
| | | let _name = '新页面' |
| | | |
| | | if (btn.pageTemplate === 'billprint') { |
| | | _name = '单据打印' |
| | | if (btn.Ot === 'required' && data && data.length > 0) { |
| | | data.forEach((item, i) => { |
| | | let _id = item[setting.primaryKey] || '' |
| | |
| | | } else if (btn.pageTemplate === 'pay') { |
| | | let _p = `ID=${Id}&userid=${sessionStorage.getItem('UserID')}&LoginUID=${sessionStorage.getItem('LoginUID')}&logo=${window.GLOB.doclogo}&name=${sessionStorage.getItem('Full_Name')}&icp=${window.GLOB.ICP}©Right=${window.GLOB.copyRight}` |
| | | let url = '#/pay/' + window.btoa(window.encodeURIComponent(_p)) |
| | | _name = '支付' |
| | | |
| | | confirm({ |
| | | title: '请在付款页面完成订单支付。', |
| | |
| | | |
| | | window.open(url) |
| | | } |
| | | |
| | | if (window.GLOB.systemType === 'production') { |
| | | MKEmitter.emit('queryTrigger', {menuId: btn.uuid, name: _name}) |
| | | } |
| | | } |
| | | |
| | | render() { |
| | |
| | | this.improveAction() |
| | | }) |
| | | } |
| | | |
| | | if (window.GLOB.systemType === 'production') { |
| | | let _change = { |
| | | prompt: '提示框', |
| | | exec: '直接执行', |
| | | pop: '弹窗(表单)' |
| | | } |
| | | MKEmitter.emit('queryTrigger', {menuId: btn.uuid, name: _change[btn.OpenType]}) |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | primaryId: primaryId, |
| | | visible: true |
| | | }) |
| | | |
| | | if (window.GLOB.systemType === 'production') { |
| | | MKEmitter.emit('queryTrigger', {menuId: btn.uuid, name: '弹窗(标签)'}) |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | } else { |
| | | this.triggerPrint(data) |
| | | } |
| | | |
| | | if (window.GLOB.systemType === 'production') { |
| | | MKEmitter.emit('queryTrigger', {menuId: btn.uuid, name: '标签打印'}) |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | }) |
| | | |
| | | MKEmitter.emit('openNewTab') |
| | | if (window.GLOB.systemType === 'production') { |
| | | MKEmitter.emit('queryTrigger', {menuId: btn.uuid, name: '标签页'}) |
| | | } |
| | | } |
| | | |
| | | render() { |
| | |
| | | import { ConfigProvider } from 'antd' |
| | | import enUS from 'antd/es/locale/en_US' |
| | | import zhCN from 'antd/es/locale/zh_CN' |
| | | |
| | | import Header from '@/components/header' |
| | | import Sidemenu from '@/components/sidemenu' |
| | | import Tabview from '@/components/tabview' |
| | | import QueryLog from '@/components/querylog' |
| | | |
| | | import './index.scss' |
| | | |
| | |
| | | <Header key="header"/> |
| | | <Sidemenu key="sidemenu"/> |
| | | <Tabview key="tabview"/> |
| | | <QueryLog /> |
| | | </ConfigProvider> |
| | | </div> |
| | | ) |