ttk-app-core
Version:
enterprise develop framework
196 lines (159 loc) • 9.29 kB
JavaScript
import { Map, fromJS, toJS } from 'immutable'
import { reducer as MetaReducer } from 'edf-meta-engine'
import config from './config'
import { getInitState } from './data'
import moment from 'moment'
import utils from 'edf-utils'
class reducer {
constructor(option) {
this.metaReducer = option.metaReducer
this.config = config.current
}
init = (state, option) => {
const initState = getInitState()
return this.metaReducer.init(state, initState)
}
update = (state, { path, value }) => {
return this.metaReducer.sf(state, path, fromJS(value))
}
searchUpdate = (state, value) => {
return this.metaReducer.sf(state, 'data.searchValue', fromJS(value))
}
settingOptionsUpdate = (state, {visible, data}) => {
state = this.metaReducer.sf(state, 'data.assetStatList', fromJS(data))
state = this.metaReducer.sf(state, 'data.showTableSetting', visible)
state = this.getColumnDetails(state, data)
return state
}
getColumnDetails = (state, columnDetails) => {
let newColumn = {}
columnDetails.map((item,index) => {
newColumn[item.fieldName] = item.isVisible
})
state = this.metaReducer.sf(state, 'data.columnsNameObj', fromJS(newColumn))
return state
}
tableSettingVisible = (state, { value, data }) => {
state = this.metaReducer.sf(state, 'data.showTableSetting', value)
data = this.metaReducer.gf(state, 'data.assetStatList')
return state
}
load = (state, value) => {
state = this.metaReducer.sf(state, 'data.list', fromJS(value.assetList))
// if (value.codeAndNameList) {
// state = this.metaReducer.sf(state, 'data.other.codeAndNameList', fromJS(value.codeAndNameList))
// }
//state = this.metaReducer.sf(state, 'data.filter', fromJS(response.filter))
return state
}
initOption = (state, value) => {
//资产属性和资产类别
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.assetStatList`, 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))
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.systemDate) {
let contextDate = value.systemDate,
currentOrg = this.metaReducer.context.get("currentOrg")
if(currentOrg.periodDate && moment(currentOrg.periodDate)<=moment(value.systemDate)){
contextDate = currentOrg.periodDate
}
state = this.metaReducer.sf(state, 'data.filter.startBuyData', fromJS(utils.moment.stringToMoment(contextDate)).endOf('month').format('YYYY-MM'))
state = this.metaReducer.sf(state, 'data.filter.endBuyData', fromJS(utils.moment.stringToMoment(contextDate)).endOf('month').format('YYYY-MM'))
state = this.metaReducer.sf(state, 'data.searchValue.date_start', fromJS(utils.moment.stringToMoment(contextDate).endOf('month')))
state = this.metaReducer.sf(state, 'data.other.oldSearchValue.date_start', fromJS(utils.moment.stringToMoment(contextDate).endOf('month')))
state = this.metaReducer.sf(state, 'data.searchValue.date_end', fromJS(utils.moment.stringToMoment(contextDate).endOf('month')))
state = this.metaReducer.sf(state, 'data.other.oldSearchValue.date_end', fromJS(utils.moment.stringToMoment(contextDate).endOf('month')))
}
state = this.metaReducer.sf(state, 'data.list', fromJS(value.assetList))
//初始化时刷新列表
if(value.assetList) {
let list = value.assetList
//高级查询资产下拉项
let assets = this.getLabelList(list, true)
state = this.metaReducer.sf(state, `data.other.assets`, fromJS(assets))
state = this.metaReducer.sf(state, `data.list`, fromJS(list)) //资产列表
}
return state
}
// load = (state, value) => {
// //资产属性和资产类别
// 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.assetStatList`, fromJS(value.columnDto.columnDetails))
// state = this.metaReducer.sf(state, `data.other.ts`, fromJS(value.columnDto.ts))
// 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.systemDate) {
// state = this.metaReducer.sf(state, 'data.filter.startBuyData', fromJS(utils.moment.stringToMoment(value.systemDate)).endOf('month').format('YYYY-MM'))
// state = this.metaReducer.sf(state, 'data.filter.endBuyData', fromJS(utils.moment.stringToMoment(value.systemDate)).endOf('month').format('YYYY-MM'))
// state = this.metaReducer.sf(state, 'data.searchValue.date_start', fromJS(utils.moment.stringToMoment(value.systemDate).endOf('month')))
// state = this.metaReducer.sf(state, 'data.other.oldSearchValue.date_start', fromJS(utils.moment.stringToMoment(value.systemDate).endOf('month')))
// state = this.metaReducer.sf(state, 'data.searchValue.date_end', fromJS(utils.moment.stringToMoment(value.systemDate).endOf('month')))
// state = this.metaReducer.sf(state, 'data.other.oldSearchValue.date_end', fromJS(utils.moment.stringToMoment(value.systemDate).endOf('month')))
// }
// state = this.metaReducer.sf(state, 'data.list', fromJS(value.assetList))
// //初始化时刷新列表
// if(value.assetList) {
// let list = value.assetList
// //高级查询资产下拉项
// let assets = this.getLabelList(list, true)
// state = this.metaReducer.sf(state, `data.other.assets`, fromJS(assets))
// state = this.metaReducer.sf(state, `data.list`, fromJS(list)) //资产列表
// }
// 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.assetStatList', 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){
if(!(item.seq =='合计')) newList.push({ value: item.assetPropertyId, label: item.assetPropertyId + item.assetClassName})
}else{
newList.push({ value: item.id, label: item.name })
}
})
}
return newList
}
}
export default function creator(option) {
const metaReducer = new MetaReducer(option),
o = new reducer({ ...option, metaReducer })
return { ...metaReducer, ...o }
}