| | |
| | | |
| | | import Api from '@/api' |
| | | import Utils from '@/utils/utils.js' |
| | | import MKEmitter from '@/utils/events.js' |
| | | import './index.scss' |
| | | |
| | | const { Search } = Input |
| | |
| | | loading: true |
| | | }) |
| | | |
| | | let param = { |
| | | func: 'sPC_Get_TableData', |
| | | obj_name: 'data', |
| | | exec_type: 'y', |
| | | arr_field: config.arr_field, |
| | | default_sql: 'true', |
| | | custom_script: '', |
| | | menuname: config.label |
| | | } |
| | | let param = null |
| | | if (window.backend && window.GLOB.CacheData.has('sql_' + config.uuid)) { |
| | | let ex = window.GLOB.CacheData.get('sql_' + config.uuid) |
| | | let sysvals = { |
| | | time_id: Utils.getguid(), |
| | | mk_departmentcode: sessionStorage.getItem('departmentcode') || '', |
| | | mk_organization: sessionStorage.getItem('organization') || '', |
| | | mk_user_type: sessionStorage.getItem('mk_user_type') || '', |
| | | id: ID || '', |
| | | bid: BID || '', |
| | | datam: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '', |
| | | datam_begin: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '', |
| | | datam_end: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '', |
| | | orderby: orderBy || config.order || '', |
| | | pagesize: config.laypage === 'true' ? pageSize : '9999', |
| | | pageindex: pageIndex |
| | | } |
| | | if (window.GLOB.externalDatabase !== null) { |
| | | sysvals.db = window.GLOB.externalDatabase |
| | | } |
| | | |
| | | let sql = '' |
| | | let DateCount = '' |
| | | let _search = '' |
| | | let _orderBy = orderBy || config.order || '' |
| | | let _datasource = config.dataSource |
| | | let exps = [] |
| | | |
| | | if (config.searchKey && searchKey) { |
| | | let fields = config.searchKey.split(',').map(field => field + ` like '%${searchKey}%'`) |
| | | _search = 'where ' + fields.join(' OR ') |
| | | } |
| | | if (config.searchKey) { |
| | | if (!searchKey) { |
| | | exps.push({ |
| | | key: 'mk_search', |
| | | value: [] |
| | | }) |
| | | } else { |
| | | exps.push({ |
| | | key: 'mk_search', |
| | | value: [{ |
| | | key: config.searchKey, |
| | | match: '01', |
| | | type: /,/.test(config.searchKey) ? 'text_or' : 'text', |
| | | value: searchKey |
| | | }] |
| | | }) |
| | | } |
| | | config.searchKey.split(',').forEach(key => { |
| | | sysvals[key.toLowerCase()] = searchKey || '' |
| | | }) |
| | | } |
| | | |
| | | _datasource = _datasource.replace(/@BID@/ig, `'${BID || ''}'`) |
| | | _datasource = _datasource.replace(/@ID@/ig, `'${ID || ''}'`) |
| | | |
| | | if (config.laypage === 'true') { |
| | | sql = `/*system_query*/select top ${pageSize} ${config.arr_field} from (select ${config.arr_field} ,ROW_NUMBER() over(order by ${_orderBy}) as rows from ${_datasource} ${_search}) tmptable where rows > ${pageSize * (pageIndex - 1)} order by tmptable.rows ` |
| | | DateCount = `/*system_query*/select count(1) as total from ${_datasource} ${_search}` |
| | | } else if (_orderBy) { |
| | | sql = `/*system_query*/select ${config.arr_field} from (select ${config.arr_field} ,ROW_NUMBER() over(order by ${_orderBy}) as rows from ${_datasource} ${_search}) tmptable order by tmptable.rows ` |
| | | } else { |
| | | sql = `/*system_query*/select ${config.arr_field} from ${_datasource} ${_search} ` |
| | | } |
| | | |
| | | let departmentcode = sessionStorage.getItem('departmentcode') || '' |
| | | let organization = sessionStorage.getItem('organization') || '' |
| | | let mk_user_type = sessionStorage.getItem('mk_user_type') || '' |
| | | ex.reps.forEach(n => { |
| | | let key = n.toLowerCase() |
| | | if (sysvals.hasOwnProperty(key)) { |
| | | exps.push({ |
| | | key: n, |
| | | value: sysvals[key] |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | sql = `declare @mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20) |
| | | Select @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}' |
| | | ${sql}` |
| | | |
| | | // 测试系统打印查询语句 |
| | | if (window.GLOB.debugger === true) { |
| | | console.info(`/*${config.label} 数据源*/\n` + sql.replace(/\n\s{6}/ig, '\n')) |
| | | DateCount && console.info(`/*${config.label} 总数查询*/\n` + DateCount.replace(/\n\s{6}/ig, '\n')) |
| | | param = { |
| | | $backend: true, |
| | | $type: 's_Get_TableData', |
| | | data: [{ |
| | | id: ex.id, |
| | | menuname: config.label || '', |
| | | exps: exps, |
| | | md5_id: '' |
| | | }] |
| | | } |
| | | } else { |
| | | param = { |
| | | func: 'sPC_Get_TableData', |
| | | obj_name: 'data', |
| | | exec_type: window.GLOB.execType || 'y', |
| | | arr_field: config.arr_field, |
| | | default_sql: 'true', |
| | | custom_script: '', |
| | | menuname: config.label |
| | | } |
| | | |
| | | let sql = '' |
| | | let DateCount = '' |
| | | let _search = '' |
| | | let _orderBy = orderBy || config.order || '' |
| | | let _datasource = config.dataSource |
| | | |
| | | if (config.searchKey && searchKey) { |
| | | let fields = config.searchKey.split(',').map(field => field + ` like '%${searchKey}%'`) |
| | | _search = 'where ' + fields.join(' OR ') |
| | | } |
| | | |
| | | _datasource = _datasource.replace(/@BID@/ig, `'${BID || ''}'`) |
| | | _datasource = _datasource.replace(/@ID@/ig, `'${ID || ''}'`) |
| | | |
| | | if (config.laypage === 'true') { |
| | | sql = `/*system_query*/select top ${pageSize} ${config.arr_field} from (select ${config.arr_field} ,ROW_NUMBER() over(order by ${_orderBy}) as rows from ${_datasource} ${_search}) tmptable where rows > ${pageSize * (pageIndex - 1)} order by tmptable.rows ` |
| | | DateCount = `/*system_query*/select count(1) as total from ${_datasource} ${_search}` |
| | | } else if (_orderBy) { |
| | | sql = `/*system_query*/select ${config.arr_field} from (select ${config.arr_field} ,ROW_NUMBER() over(order by ${_orderBy}) as rows from ${_datasource} ${_search}) tmptable order by tmptable.rows ` |
| | | } else { |
| | | sql = `/*system_query*/select ${config.arr_field} from ${_datasource} ${_search} ` |
| | | } |
| | | |
| | | let departmentcode = sessionStorage.getItem('departmentcode') || '' |
| | | let organization = sessionStorage.getItem('organization') || '' |
| | | let mk_user_type = sessionStorage.getItem('mk_user_type') || '' |
| | | |
| | | sql = `declare @mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20) |
| | | Select @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}' |
| | | ${sql}` |
| | | |
| | | // 测试系统打印查询语句 |
| | | if (window.GLOB.debugger === true) { |
| | | window.mkInfo(`/*${config.label} 数据源*/\n` + sql.replace(/\n\s{6}/ig, '\n')) |
| | | DateCount && window.mkInfo(`/*${config.label} 总数查询*/\n` + DateCount.replace(/\n\s{6}/ig, '\n')) |
| | | } |
| | | |
| | | param.LText = Utils.formatOptions(sql, param.exec_type) |
| | | param.DateCount = Utils.formatOptions(DateCount, param.exec_type) |
| | | |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') |
| | | param.secretkey = Utils.encrypt('', param.timestamp) |
| | | |
| | | param.username = sessionStorage.getItem('User_Name') || '' |
| | | param.fullname = sessionStorage.getItem('Full_Name') || '' |
| | | } |
| | | |
| | | param.LText = Utils.formatOptions(sql) |
| | | param.DateCount = Utils.formatOptions(DateCount) |
| | | |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') |
| | | param.secretkey = Utils.encrypt('', param.timestamp) |
| | | |
| | | param.username = sessionStorage.getItem('User_Name') || '' |
| | | param.fullname = sessionStorage.getItem('Full_Name') || '' |
| | | |
| | | Api.getSystemCacheConfig(param, config.cache === 'true').then(result => { |
| | | if (result.status) { |
| | |
| | | } |
| | | |
| | | changeRow = (record) => { |
| | | const { config } = this.props |
| | | |
| | | if (record.$disabled) return |
| | | |
| | | let values = {[config.field]: record.$$uuid} |
| | | |
| | | if (config.linkSubField) { |
| | | config.linkSubField.forEach(m => { |
| | | values[m] = record[m] === undefined ? '' : record[m] |
| | | }) |
| | | } |
| | | |
| | | this.props.onChange(values, record.$$uuid) |
| | | this.props.onChange(record) |
| | | } |
| | | |
| | | changeTable = (pagination, filters, sorter) => { |
| | |
| | | |
| | | this.state = { |
| | | value: props.defaultValue, |
| | | showValue: props.showValue, |
| | | visible: false |
| | | } |
| | | } |
| | | |
| | | componentDidMount() { |
| | | const { autoFocus, config } = this.props |
| | | |
| | | MKEmitter.addListener('setFocus' + config.tableId, this.setFocus) |
| | | |
| | | if (autoFocus) { |
| | | this.trigger() |
| | | } |
| | | } |
| | | |
| | |
| | | this.setState = () => { |
| | | return |
| | | } |
| | | MKEmitter.removeListener('setFocus' + this.props.config.tableId, this.setFocus) |
| | | } |
| | | |
| | | selectChange = (values, val) => { |
| | | this.props.onChange(values) |
| | | this.setState({value: val, visible: false}) |
| | | setFocus = (lId, colId) => { |
| | | const { config, lineId } = this.props |
| | | |
| | | if (lId !== lineId || config.uuid !== colId) return |
| | | |
| | | if (config.$ctrl) { |
| | | MKEmitter.emit('colFocus' + config.tableId, lineId, config.uuid) |
| | | } |
| | | |
| | | this.setState({visible: true}) |
| | | } |
| | | |
| | | selectChange = (record) => { |
| | | const { config, lineId } = this.props |
| | | |
| | | let values = {[config.field]: record.$$uuid} |
| | | let showValue = '' |
| | | if (config.showField) { |
| | | showValue = record[config.showField] || '' |
| | | } |
| | | |
| | | if (config.linkSubField) { |
| | | config.linkSubField.forEach((m, i) => { |
| | | values[m] = record[m] !== undefined ? record[m] : '' |
| | | }) |
| | | } |
| | | |
| | | this.props.onChange(values, record.$$uuid) |
| | | |
| | | this.setState({visible: false, value: record.$$uuid, showValue}) |
| | | |
| | | if (config.$ctrl) { |
| | | MKEmitter.emit('colBlur' + config.tableId, lineId, config.uuid) |
| | | } |
| | | |
| | | this.props.onBlur && this.props.onBlur() |
| | | |
| | | if (/\$noAct/.test(config.enter)) return |
| | | |
| | | setTimeout(() => { |
| | | if (/\$next/.test(config.enter)) { |
| | | MKEmitter.emit('nextLine' + config.tableId, lineId, config.enter.replace('$next_', '')) |
| | | } else { |
| | | MKEmitter.emit('setFocus' + config.tableId, lineId, config.enter) |
| | | } |
| | | }, 10) |
| | | } |
| | | |
| | | trigger = (e) => { |
| | | const { config, lineId } = this.props |
| | | |
| | | e && e.stopPropagation() |
| | | |
| | | if (config.$ctrl) { |
| | | MKEmitter.emit('colFocus' + config.tableId, lineId, config.uuid) |
| | | } |
| | | |
| | | this.setState({visible: true}) |
| | | } |
| | | |
| | | clear = (e) => { |
| | | const { config } = this.props |
| | | const { config, lineId } = this.props |
| | | |
| | | e.stopPropagation() |
| | | |
| | | let values = {[config.field]: ''} |
| | | |
| | | if (config.linkSubField) { |
| | | config.linkSubField.forEach(m => { |
| | | config.linkSubField.forEach((m, i) => { |
| | | values[m] = '' |
| | | }) |
| | | } |
| | | |
| | | this.props.onChange(values) |
| | | this.setState({value: ''}) |
| | | } |
| | | this.props.onChange(values, '') |
| | | this.setState({value: '', showValue: ''}) |
| | | |
| | | cancel = () => { |
| | | const { mask } = this.props |
| | | |
| | | this.setState({visible: false}) |
| | | |
| | | if (mask) { |
| | | this.props.blur() |
| | | if (config.$ctrl) { |
| | | MKEmitter.emit('colBlur' + config.tableId, lineId, config.uuid) |
| | | } |
| | | } |
| | | |
| | | cancel = () => { |
| | | const { config, lineId } = this.props |
| | | |
| | | this.setState({visible: false}) |
| | | |
| | | if (config.$ctrl) { |
| | | MKEmitter.emit('colBlur' + config.tableId, lineId, config.uuid) |
| | | } |
| | | |
| | | this.props.onBlur && this.props.onBlur() |
| | | } |
| | | |
| | | render() { |
| | | const { mask, BID, ID, config } = this.props |
| | | const { value, visible } = this.state |
| | | const { autoFocus, BID, lineId, config } = this.props |
| | | const { showValue, value, visible } = this.state |
| | | |
| | | return <> |
| | | {mask ? <div className="mk-pop-select-mask" onClick={this.trigger}></div> : null} |
| | | {autoFocus ? <div className="mk-pop-select-mask" onClick={this.trigger}></div> : null} |
| | | <div className="mk-pop-select-wrap" onClick={this.trigger}> |
| | | {value} |
| | | {value && !mask ? <CloseCircleFilled onClick={this.clear} /> : null} |
| | | {showValue || value} |
| | | {value && !autoFocus ? <CloseCircleFilled onClick={this.clear} /> : null} |
| | | <TableOutlined onClick={this.trigger}/> |
| | | </div> |
| | | <Modal |
| | |
| | | {config.pops ? <Tabs> |
| | | {config.pops.map(tab => ( |
| | | <TabPane tab={tab.tabName} key={tab.uuid}> |
| | | <PopTable config={tab} BID={BID} ID={ID} value={value} onChange={this.selectChange}/> |
| | | <PopTable config={tab} BID={BID} ID={lineId} value={value} onChange={this.selectChange}/> |
| | | </TabPane> |
| | | ))} |
| | | </Tabs> : |
| | | <PopTable config={config} BID={BID} ID={ID} value={value} onChange={this.selectChange}/>} |
| | | <PopTable config={config} BID={BID} ID={lineId} value={value} onChange={this.selectChange}/>} |
| | | </Modal> |
| | | </> |
| | | } |