| | |
| | | pageSize: 10, // 每页数据条数 |
| | | orderBy: '', // 排序 |
| | | search: '', // 搜索条件数组,使用时需分场景处理 |
| | | statFValue: [] // 合计值 |
| | | statFValue: [], // 合计值 |
| | | allSearch: null |
| | | } |
| | | |
| | | loaded = false |
| | |
| | | |
| | | _config.style = _config.style || {} |
| | | |
| | | let allSearch = null |
| | | if (_config.colsCtrls && _config.colsCtrls.length > 0) { |
| | | allSearch = [{key: 'BID', value: BID || ''}] |
| | | allSearch.push(..._config.$searches) |
| | | if (_config.setting.useMSearch) { |
| | | let mainSearch = window.GLOB.SearchBox.get(_config.$searchId) || [] |
| | | allSearch.push(...mainSearch) |
| | | } |
| | | } else { |
| | | _config.colsCtrls = null |
| | | } |
| | | |
| | | this.setState({ |
| | | pageSize: setting.pageSize || 10, |
| | | BID: BID || '', |
| | |
| | | setting: setting, |
| | | actions: _config.action, |
| | | columns: _config.cols, |
| | | search: _config.$searches |
| | | search: _config.$searches, |
| | | allSearch |
| | | }) |
| | | } |
| | | |
| | |
| | | total = data[data.length - 1].mk_total || 0 |
| | | } |
| | | |
| | | let allSearch = null |
| | | if (config.colsCtrls) { |
| | | allSearch = [{key: 'BID', value: BID || ''}] |
| | | allSearch.push(...searches) |
| | | } |
| | | |
| | | this.setState({ |
| | | data: data, |
| | | selectedData: [], |
| | | allSearch: allSearch, |
| | | total: total, |
| | | loading: false |
| | | }) |
| | |
| | | /** |
| | | * @description 获取单行数据 |
| | | */ |
| | | async loadmainLinedata (id) { |
| | | async loadLinedata (id, position) { |
| | | const { setting, config, search, orderBy, BID, pageIndex, pageSize, BData } = this.state |
| | | |
| | | if (config.forbidLine) { |
| | |
| | | |
| | | let result = await Api.genericInterface(param) |
| | | if (result.status) { |
| | | if (position === 'line_grid' && (!result.data || !result.data[0])) { |
| | | this.loadmaindata(true, 'false') |
| | | return |
| | | } |
| | | |
| | | let data = fromJS(this.state.data).toJS() |
| | | let selectedData = fromJS(this.state.selectedData).toJS() |
| | | |
| | |
| | | if (!id) { |
| | | this.reloadtable() |
| | | } else { |
| | | this.loadmainLinedata(id) |
| | | this.loadLinedata(id) |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | if (config.uuid !== menuId) return |
| | | |
| | | if (position === 'line') { |
| | | if (position === 'line' || position === 'line_grid') { |
| | | if (lines && lines.length === 1) { |
| | | this.loadmainLinedata(lines[0].$$uuid) |
| | | this.loadLinedata(lines[0].$$uuid, position) |
| | | } else { |
| | | this.reloadtable(btn, id) |
| | | } |
| | |
| | | } |
| | | |
| | | render() { |
| | | const { BID, setting, actions, config, columns, selectedData, BData, data } = this.state |
| | | const { BID, setting, actions, config, columns, selectedData, BData, data, allSearch } = this.state |
| | | |
| | | let style = {...config.style} |
| | | if (config.wrap.empty === 'hidden' && (!data || data.length === 0)) { |
| | |
| | | } |
| | | |
| | | let content = <> |
| | | {config.search && config.search.length ? |
| | | {config.search.length ? |
| | | <MainSearch BID={BID} config={config} refreshdata={this.refreshbysearch}/> : null |
| | | } |
| | | {actions.length > 0 ? <MainAction |
| | |
| | | BData={BData} |
| | | columns={config.columns} |
| | | selectedData={selectedData} |
| | | /> : <div className="mk-action-space" style={{height: '25px'}}></div>} |
| | | <div className={'main-table-box ' + (!actions || actions.length === 0 ? 'no-action' : '')}> |
| | | <MainTable |
| | | setting={setting} |
| | | columns={columns} |
| | | MenuID={config.uuid} |
| | | data={this.state.data} |
| | | fields={config.columns} |
| | | total={this.state.total} |
| | | lineMarks={config.lineMarks} |
| | | loading={this.state.loading} |
| | | refreshdata={this.refreshbytable} |
| | | statFValue={this.state.statFValue} |
| | | chgSelectData={(selects) => this.setState({selectedData: selects})} |
| | | /> |
| | | </div> |
| | | /> : (setting.tableType || config.search.length > 0 ? <div className="mk-action-space" style={{height: '25px'}}></div> : null)} |
| | | <MainTable |
| | | setting={setting} |
| | | columns={columns} |
| | | MenuID={config.uuid} |
| | | allSearch={allSearch} |
| | | data={this.state.data} |
| | | fields={config.columns} |
| | | total={this.state.total} |
| | | colsCtrls={config.colsCtrls} |
| | | lineMarks={config.lineMarks} |
| | | loading={this.state.loading} |
| | | refreshdata={this.refreshbytable} |
| | | statFValue={this.state.statFValue} |
| | | chgSelectData={(selects) => this.setState({selectedData: selects})} |
| | | /> |
| | | </> |
| | | |
| | | return ( |