UNPKG

ttk-app-core

Version:
137 lines (115 loc) 4.69 kB
import { Map, fromJS } from 'immutable' import { reducer as MetaReducer } from 'edf-meta-engine' import config from './config' import extend from './extend' import { getInitState } from './data' import utils from 'edf-utils' class reducer { constructor(option) { this.metaReducer = option.metaReducer this.extendReducer = option.extendReducer this.config = config.current } init = (state, option) => { const initState = getInitState() return this.metaReducer.init(state, initState) } load = (state, value) => { if(value.glAssetDtolist !== undefined){ let list = value.glAssetDtolist if(value.glAssetDtolist === null) list = [] state = this.metaReducer.sf(state, `data.list`, fromJS(list)) } if(value.page) state = this.setPages(state, value.page) if(value.submitShow !== undefined){ state = this.metaReducer.sf(state, `data.other.submitShow`, fromJS(value.submitShow)) } if(value.depreciationShow !== undefined){ state = this.metaReducer.sf(state, `data.other.depreciationShow`, fromJS(value.depreciationShow)) } if(value.isTasking !== undefined){ state = this.metaReducer.sf(state, `data.other.isTasking`, fromJS(value.isTasking)) } if(value.systemDate) { state = this.metaReducer.sf(state, 'data.filter.period', fromJS(utils.moment.stringToMoment(value.systemDate)).endOf('month').format('YYYY-MM')) state = this.metaReducer.sf(state, 'data.systemDate', fromJS(value.systemDate)) } if(value.date) state = this.metaReducer.sf(state, `data.filter.period`, fromJS(value.date)) if (value.assetProperty && value.assetClass) { let assetProperty = this.getList(value.assetProperty), assetClassAll = this.getList(value.assetClass, false, true), assetClass = [] let all = { label: '全部', value: 0 } assetProperty.unshift(all) state = this.metaReducer.sf(state, `data.other.assetProperty`, fromJS(assetProperty)) state = this.metaReducer.sf(state, `data.other.assetClass`, fromJS([all])) state = this.metaReducer.sf(state, `data.other.assetClassAll`, fromJS(assetClassAll)) state = this.metaReducer.sf(state, `data.form.assetProperty`, fromJS(all)) state = this.metaReducer.sf(state, `data.form.assetClass`, fromJS(all)) } //栏目设置 if (value.columnDto) { state = this.metaReducer.sf(state, 'data.other.columnDto', fromJS(value.columnDto.columnDetails)) state = this.metaReducer.sf(state, 'data.other.ts', fromJS(value.columnDto.ts)) state = this.metaReducer.sf(state, 'data.other.code', fromJS(value.columnDto.code)) } return state } //设置分页 setPages = (state, page) => { state = this.metaReducer.sf(state, `data.page`, fromJS({ current: page.currentPage, total: page.totalCount, pageSize: page.pageSize })) return state } assetPropertyChange = (state, list, path, option) => { state = this.metaReducer.sf(state, `data.list`, fromJS(list)) state = this.metaReducer.sf(state, path, fromJS(option)) return state } settingOptionsUpdate = (state, {visible, data}) => { state = this.metaReducer.sf(state, 'data.other.columnDto', fromJS(data)) state = this.metaReducer.sf(state, 'data.showTableSetting', visible) return state } update = (state, { path, value }) => { return this.metaReducer.sf(state, path, fromJS(value)) } tableSettingVisible = (state, { value, data }) => { state = this.metaReducer.sf(state, 'data.showTableSetting', value) data = this.metaReducer.gf(state, 'data.other.columnDto') return state } sortReduce = (state, value) => { state = this.metaReducer.sf(state, `data.other.sort`, fromJS(value)) return state } onColumnResizeEnd = (state, res) => { if(res[0]){ state = this.metaReducer.sf(state, 'data.other.columnDto', fromJS(res[0].columnDetails)) } return state } getList = (list, isAsset, isAssetClass) => { let newList = [] if (list && Array.isArray(list)) { list.map(item => { if(isAssetClass){ newList.push({ value: item.id, label: item.name, assetPropertyId: item.assetPropertyId }) }else{ newList.push({ value: item.id, label: isAsset ? item.code + item.name : item.name }) } }) } return newList } } export default function creator(option) { const metaReducer = new MetaReducer(option), extendReducer = extend.reducerCreator({ ...option, metaReducer }), o = new reducer({ ...option, metaReducer, extendReducer }), ret = { ...metaReducer, ...extendReducer.gridReducer, ...o } return { ...ret } }