| | |
| | | import Api from '@/api' |
| | | import Utils from '@/utils/utils.js' |
| | | import UtilsDM from '@/utils/utils-datamanage.js' |
| | | import preImg from '@/assets/img/prev.png' |
| | | import nextImg from '@/assets/img/next.png' |
| | | import MKEmitter from '@/utils/events.js' |
| | | import TimerTask from '@/utils/timer-task.js' |
| | | import asyncComponent from '@/utils/asyncComponent' |
| | |
| | | config: null, // 图表配置信息 |
| | | search: null, // 搜索条件 |
| | | pageIndex: 1, // 页码 |
| | | pageSize: 10, |
| | | pageOptions: [], |
| | | activeKey: '', // 选中卡 |
| | | selectKeys: [], // 多选时选中卡片 |
| | | selectedData: [], // 选中数据,用于工具栏按钮 |
| | |
| | | } |
| | | |
| | | _config.setting.sub_field = subconfig.columns.map(col => col.field).join(',') |
| | | let pageOptions = ['10', '25', '50', '100', '500', '1000'] |
| | | |
| | | if (_config.wrap.pagestyle === 'page') { |
| | | let size = (_config.setting.pageSize || 10) + '' |
| | | if (!pageOptions.includes(size)) { |
| | | pageOptions.push(size) |
| | | pageOptions = pageOptions.sort((a, b) => a - b) |
| | | } |
| | | } |
| | | |
| | | this.setState({ |
| | | pageSize: _config.setting.pageSize || 10, |
| | | pageOptions, |
| | | selected, |
| | | precards, |
| | | nextcards, |
| | |
| | | Api.getLCacheConfig(config.uuid).then(res => { |
| | | if (!res || this.loaded) return |
| | | let _data = res.map((item, index) => { |
| | | let children = [] |
| | | |
| | | if (item[config.setting.subdata]) { |
| | | let _children = item[config.setting.subdata] |
| | | |
| | | delete item[config.setting.subdata] |
| | | |
| | | item.children = _children.map((cell, i) => { |
| | | _children.forEach((cell, i) => { |
| | | cell.key = i |
| | | cell.$$uuid = cell[config.setting.subKey] || '' |
| | | cell.$$parentId = item[config.setting.primaryKey] || '' |
| | | cell.$$BID = item[config.setting.primaryKey] || '' |
| | | cell.$$BData = {...item} |
| | | cell.$Index = i + 1 + '' |
| | | |
| | | return cell |
| | | if (cell.$$uuid) { |
| | | children.push(cell) |
| | | } |
| | | }) |
| | | } else { |
| | | item.children = [] |
| | | } |
| | | |
| | | item.children = children |
| | | |
| | | item.key = index |
| | | item.$$uuid = item[config.setting.primaryKey] || '' |
| | |
| | | |
| | | if (position === 'line') { |
| | | if (lines && lines.length === 1) { |
| | | this.loadLinedata(lines[0].$$uuid) |
| | | this.loadLinedata(lines[0].$$parentId || lines[0].$$uuid) |
| | | } else { |
| | | this.loadData(id) |
| | | } |
| | |
| | | } |
| | | |
| | | checkTopLine = (id) => { |
| | | const { config, data, selected } = this.state |
| | | const { config, data, selected, card } = this.state |
| | | let _opens = [...this.state.opens] |
| | | |
| | | if (!data || data.length === 0) { |
| | | this.setState({ |
| | |
| | | let keys = [] |
| | | let items = [] |
| | | let last = '' |
| | | |
| | | if (card.setting.display === 'collapse') { |
| | | _opens = [] |
| | | } |
| | | |
| | | data.forEach((item, i) => { |
| | | if (!item.$disabled && item.selected === 'true') { |
| | | items.push(item) |
| | | keys.push(i) |
| | | index = i |
| | | last = item |
| | | |
| | | if (card.setting.display === 'collapse') { |
| | | _opens.push(i) |
| | | } |
| | | } |
| | | }) |
| | | |
| | | this.setState({ |
| | | opens: _opens, |
| | | activeKey: index, |
| | | selectKeys: keys, |
| | | selectedData: items |
| | |
| | | return |
| | | } |
| | | |
| | | if (card.setting.display === 'collapse') { |
| | | _opens = [index] |
| | | } |
| | | |
| | | this.setState({ |
| | | opens: _opens, |
| | | activeKey: index, |
| | | selectKeys: [index], |
| | | selectedData: [data[index]] |
| | |
| | | |
| | | async loadData (id, type) { |
| | | const { mainSearch } = this.props |
| | | const { config, arr_field, pageIndex, search, BID, BData, selected, card } = this.state |
| | | const { config, arr_field, pageIndex, pageSize, search, BID, BData, selected, card } = this.state |
| | | |
| | | if (config.setting.supModule && !BID && config.wrap.supKey !== 'false') { // BID 不存在时,不做查询 |
| | | this.loaded = true |
| | |
| | | } |
| | | |
| | | let _orderBy = config.setting.order || '' |
| | | let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, pageIndex, config.setting.pageSize, BID) |
| | | let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID) |
| | | |
| | | let result = await Api.genericInterface(param) |
| | | if (result.status) { |
| | | let start = 1 |
| | | if (config.setting.laypage) { |
| | | start = config.setting.pageSize * (pageIndex - 1) + 1 |
| | | start = pageSize * (pageIndex - 1) + 1 |
| | | } |
| | | |
| | | this.loaded = true |
| | | if (config.$cache && pageIndex === 1) { |
| | | if (config.$cache && pageIndex === 1 && config.setting.onload !== 'false') { |
| | | Api.writeCacheConfig(config.uuid, result.data || '') |
| | | } |
| | | |
| | |
| | | if (type === 'plus') { |
| | | let _data = (this.state.data || []).concat(result.data || []) |
| | | data = _data.map((item, index) => { |
| | | let children = [] |
| | | |
| | | if (item[config.setting.subdata]) { |
| | | let _children = item[config.setting.subdata] |
| | | |
| | | delete item[config.setting.subdata] |
| | | |
| | | item.children = _children.map((cell, i) => { |
| | | |
| | | _children.forEach((cell, i) => { |
| | | cell.key = i |
| | | cell.$$uuid = cell[config.setting.subKey] || '' |
| | | cell.$$parentId = item[config.setting.primaryKey] || '' |
| | | cell.$$BID = item[config.setting.primaryKey] || '' |
| | | cell.$$BData = {...item} |
| | | cell.$Index = i + 1 + '' |
| | | |
| | | return cell |
| | | if (cell.$$uuid) { |
| | | children.push(cell) |
| | | } |
| | | }) |
| | | } else { |
| | | item.children = [] |
| | | } |
| | | |
| | | item.children = children |
| | | |
| | | item.key = index |
| | | item.$$uuid = item[config.setting.primaryKey] || '' |
| | |
| | | }) |
| | | } else { |
| | | data = result.data.map((item, index) => { |
| | | let children = [] |
| | | |
| | | if (item[config.setting.subdata]) { |
| | | let _children = item[config.setting.subdata] |
| | | |
| | | delete item[config.setting.subdata] |
| | | |
| | | item.children = _children.map((cell, i) => { |
| | | _children.forEach((cell, i) => { |
| | | cell.key = i |
| | | cell.$$uuid = cell[config.setting.subKey] || '' |
| | | cell.$$parentId = item[config.setting.primaryKey] || '' |
| | | cell.$$BID = item[config.setting.primaryKey] || '' |
| | | cell.$$BData = {...item} |
| | | cell.$Index = i + 1 + '' |
| | | |
| | | return cell |
| | | if (cell.$$uuid) { |
| | | children.push(cell) |
| | | } |
| | | }) |
| | | } else { |
| | | item.children = [] |
| | | } |
| | | |
| | | item.children = children |
| | | |
| | | item.key = index |
| | | item.$$uuid = item[config.setting.primaryKey] || '' |
| | |
| | | total: result.total, |
| | | loading: false |
| | | }) |
| | | |
| | | if (config.timer && config.clearField && result.data && result.data[0]) { |
| | | let vals = (config.clearValue || '').split(',') |
| | | if (vals.includes(result.data[0][config.clearField])) { |
| | | this.timer && this.timer.stop() |
| | | } |
| | | } |
| | | } else { |
| | | this.setState({ |
| | | loading: false |
| | |
| | | */ |
| | | async loadLinedata (id) { |
| | | const { mainSearch } = this.props |
| | | const { config, arr_field, pageIndex, search, BID, BData } = this.state |
| | | const { config, arr_field, pageIndex, pageSize, search, BID, BData } = this.state |
| | | |
| | | let searches = fromJS(search).toJS() |
| | | if (config.setting.useMSearch && mainSearch && mainSearch.length > 0) { // 主表搜索条件 |
| | |
| | | }) |
| | | |
| | | let _orderBy = config.setting.order || '' |
| | | let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, pageIndex, config.setting.pageSize, BID, id) |
| | | let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID, id) |
| | | |
| | | let result = await Api.genericInterface(param) |
| | | if (result.status) { |
| | |
| | | try { |
| | | data = data.map(item => { |
| | | if (item[config.setting.primaryKey] === _data[config.setting.primaryKey]) { |
| | | let children = [] |
| | | |
| | | if (_data[config.setting.subdata]) { |
| | | let _children = _data[config.setting.subdata] |
| | | |
| | | delete _data[config.setting.subdata] |
| | | |
| | | _data.children = _children.map((cell, i) => { |
| | | _children.forEach((cell, i) => { |
| | | cell.key = i |
| | | cell.$$uuid = cell[config.setting.subKey] || '' |
| | | cell.$$parentId = _data[config.setting.primaryKey] || '' |
| | | cell.$$BID = _data[config.setting.primaryKey] || '' |
| | | cell.$$BData = {..._data} |
| | | cell.$Index = i + 1 + '' |
| | | |
| | | return cell |
| | | if (cell.$$uuid) { |
| | | children.push(cell) |
| | | } |
| | | }) |
| | | } else { |
| | | _data.children = [] |
| | | } |
| | | |
| | | _data.children = children |
| | | |
| | | _data.key = item.key |
| | | _data.$$uuid = _data[config.setting.primaryKey] || '' |
| | |
| | | } |
| | | |
| | | loadMore = () => { |
| | | const { total, pageIndex, loading, config } = this.state |
| | | const { total, pageIndex, pageSize, loading } = this.state |
| | | |
| | | if (loading || config.setting.pageSize * pageIndex >= total) { |
| | | if (loading || pageSize * pageIndex >= total) { |
| | | return |
| | | } |
| | | |
| | |
| | | pageIndex: pageIndex + 1 |
| | | }, () => { |
| | | this.loadData('', 'plus') |
| | | }) |
| | | } |
| | | |
| | | prevPage = () => { |
| | | const { pageIndex } = this.state |
| | | |
| | | if (pageIndex === 1) return |
| | | |
| | | this.setState({ |
| | | pageIndex: pageIndex - 1 |
| | | }, () => { |
| | | this.loadData() |
| | | }) |
| | | } |
| | | |
| | | nextPage = () => { |
| | | const { config, pageIndex, total } = this.state |
| | | let _total = config.setting.pageSize * pageIndex |
| | | |
| | | if (_total >= total) return |
| | | |
| | | this.setState({ |
| | | pageIndex: pageIndex + 1 |
| | | }, () => { |
| | | this.loadData() |
| | | }) |
| | | } |
| | | |
| | |
| | | this.setState({ |
| | | search: list, |
| | | pageIndex: 1 |
| | | }, () => { |
| | | this.loadData() |
| | | }) |
| | | } |
| | | |
| | | pageSizeChange = (current, size) => { |
| | | this.setState({ |
| | | pageIndex: current, |
| | | pageSize: size |
| | | }, () => { |
| | | this.loadData() |
| | | }) |
| | |
| | | } |
| | | |
| | | render() { |
| | | const { config, precards, nextcards, loading, data, pageIndex, total, card, activeKey, BID, BData, selectedData, selectKeys, subcard, subconfig, wrapStyle, opens } = this.state |
| | | const { config, precards, nextcards, loading, data, pageIndex, pageSize, total, card, activeKey, BID, BData, selectedData, selectKeys, subcard, subconfig, wrapStyle, opens } = this.state |
| | | |
| | | if (config.wrap.empty === 'hidden' && (!data || data.length === 0)) return null |
| | | |
| | | let _total = 0 |
| | | let switchable = false |
| | | if (config.wrap.pagestyle === 'switch' && config.pageable && config.setting.laypage && total > config.setting.pageSize && data) { |
| | | _total = config.setting.pageSize * pageIndex |
| | | switchable = true |
| | | } |
| | | |
| | | let extendData = {$$BID: BID, $$BData: BData, $$selectedData: selectedData, $$type: 'extendCard'} |
| | | |
| | |
| | | /> : null |
| | | } |
| | | <div className={`data-zoom ${config.wrap.wrapClass}`}> |
| | | {switchable ? <div className={'prev-page ' + (pageIndex === 1 ? 'disabled' : '')} onClick={this.prevPage}><div><div><img src={preImg} alt=""/></div></div></div> : null} |
| | | <Row className={'card-row-list '}> |
| | | {precards.map((item, index) => ( |
| | | <Col key={'pre' + index} className="extend-card" span={item.setting.width || 6}> |
| | |
| | | </Col> |
| | | ))} |
| | | </Row> |
| | | {switchable ? <div className={'prev-page ' + (total <= _total ? 'disabled' : '')} onClick={this.nextPage}><div><div><img src={nextImg} alt=""/></div></div></div> : null} |
| | | {precards.length === 0 && nextcards.length === 0 && (!data || data.length === 0) ? <Empty description={false}/> : null} |
| | | </div> |
| | | {config.wrap.pagestyle === 'page' && config.setting.laypage && data ? <Pagination size="small" total={total} showTotal={t => `共 ${t} 条`} pageSize={config.setting.pageSize} onChange={this.changePageIndex} current={pageIndex}/> : null} |
| | | {config.wrap.pagestyle === 'more' && config.setting.laypage && data && data.length > 0 ? <div className={'mk-more' + (config.setting.pageSize * pageIndex >= total ? ' disabled' : '')} onClick={this.loadMore}>查看更多<DownOutlined/></div> : null} |
| | | {config.wrap.pagestyle === 'page' && config.setting.laypage && data ? <Pagination size="small" total={total} showTotal={(t, range) => `${range[0]}-${range[1]} 共 ${total} 条`} pageSize={pageSize} showSizeChanger={true} pageSizeOptions={this.state.pageOptions} onChange={this.changePageIndex} onShowSizeChange={this.pageSizeChange} current={pageIndex}/> : null} |
| | | {config.wrap.pagestyle === 'more' && config.setting.laypage && data && data.length > 0 ? <div className={'mk-more' + (pageSize * pageIndex >= total ? ' disabled' : '')} onClick={this.loadMore}>查看更多<DownOutlined/></div> : null} |
| | | </div> |
| | | ) |
| | | } |