ttk-app-core
Version:
enterprise develop framework
137 lines (115 loc) • 4.69 kB
JavaScript
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 }
}