ttk-app-core
Version:
enterprise develop framework
191 lines (161 loc) • 6.79 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, 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 }
}