UNPKG

ttk-app-core

Version:
191 lines (161 loc) 6.79 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, form}) => { //查询列表时刷新列表 if(value.assetList){ let assetList = value.assetList state = this.setPages(state, value.page) state = this.metaReducer.sf(state, `data.list`, fromJS(assetList)) } //更新高级查询中的资产下拉列表 if(value.codeAndNameList){ let assets = this.getLabelList(value.codeAndNameList, true) state = this.metaReducer.sf(state, `data.other.assets`, fromJS(assets)) const assetsList = this.metaReducer.gf(state, 'data.other.assets').toJS() let oldSearchValue = this.metaReducer.gf(state, 'data.other.oldSearchValue').toJS() if('assets' in oldSearchValue){ const flag = assetsList.find(item => item.value == oldSearchValue.assets)             if( !flag ){ form.setFieldsValue({assets: ''})             } } } /*if(value.systemDate) { let contextDate = value.systemDate, currentOrg = this.metaReducer.context.get("currentOrg") if(currentOrg.periodDate){ contextDate = currentOrg.periodDate } state = this.metaReducer.sf(state, 'data.searchValue.endDate', fromJS(utils.moment.stringToMoment(contextDate).endOf('month'))) state = this.metaReducer.sf(state, 'data.other.oldSearchValue.endDate', fromJS(utils.moment.stringToMoment(contextDate).endOf('month'))) state = this.metaReducer.sf(state, 'data.searchValue.startDate', fromJS(utils.moment.stringToMoment(contextDate).startOf('month'))) state = this.metaReducer.sf(state, 'data.other.oldSearchValue.startDate', fromJS(utils.moment.stringToMoment(contextDate).startOf('month'))) }*/ //初始化时刷新列表 if(value.assets) { let list = value.assets //高级查询资产下拉项 //let assets = this.getLabelList(list, true) //state = this.metaReducer.sf(state, `data.other.assets`, fromJS(assets)) state = this.setPages(state, value.page) state = this.metaReducer.sf(state, `data.list`, fromJS(list)) //资产列表 } //增加方式 if (value.assetAddType) { let assetAddType = this.getLabelList(value.assetAddType) state = this.metaReducer.sf(state, `data.other.assetAddType`, fromJS(assetAddType)) } //资产属性和资产类别 if (value.assetProperty && value.assetClass) { let assetProperty = this.getLabelList(value.assetProperty), assetClassAll = this.getLabelList(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.searchValue.assetProperty`, fromJS(all)) state = this.metaReducer.sf(state, `data.form.assetClass`, fromJS(all)) state = this.metaReducer.sf(state, `data.searchValue.assetClass`, fromJS(all)) } //折旧方法 if (value.deprMethod) { let deprMethod = this.getLabelList(value.deprMethod) state = this.metaReducer.sf(state, `data.other.deprMethod`, fromJS(deprMethod)) } //栏目设置 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) => { if(page){ state = this.metaReducer.sf(state, `data.page`, fromJS({ current: page.currentPage, total: page.totalCount, pageSize: page.pageSize })) } return state } sortReduce = (state, value) => { state = this.metaReducer.sf(state, `data.other.sort`, fromJS(value)) return state } selectAll = (state, checked, gridName) => { _hmt && _hmt.push(['_trackEvent', '资产', '资产卡片列表', '勾选框全选']) state = this.extendReducer.gridReducer.selectAll(state, checked, gridName) return state } selectRow = (state, rowIndex, checked) => { _hmt && _hmt.push(['_trackEvent', '资产', '资产卡片列表', '勾选框']) state = this.metaReducer.sf(state, `data.list.${rowIndex}.selected`, checked) 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 } onColumnResizeEnd = (state, res) => { if(res[0]){ state = this.metaReducer.sf(state, 'data.other.columnDto', fromJS(res[0].columnDetails)) } return state } getLabelList = (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 if(isAsset){ newList.push({ value: item.cardId, label: item.code + '-' + item.name}) }else{ newList.push({ value: item.id, label: item.name }) } }) } return newList } setStatus = (state, path, value) => { state = this.metaReducer.sf(state, path, value) return state } } 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 } }