ttk-app-core
Version:
enterprise develop framework
240 lines (230 loc) • 13.9 kB
JavaScript
import { Map, fromJS } from 'immutable'
import { reducer as MetaReducer } from 'edf-meta-engine'
import config from './config'
import { getInitState } from './data'
class reducer {
constructor(option) {
this.metaReducer = option.metaReducer
}
init = (state, option) => {
let initState = getInitState()
return this.metaReducer.init(state, initState)
}
load = (state, option) => {
if(!option.name){ // isTab true
let activeKeyArr = []
state = this.metaReducer.sfs(state,{
"data.other.isTab": true,
"data.other.allOption": fromJS(option),
"data.form.activeKey": fromJS(option[0].code)
})
option.map(item => {
activeKeyArr.push({
id: item.code,
name: item.name
})
})
if(option[0].optionalDateRules) {
state = this.metaReducer.sf(state, 'data.other.dateHabitArr', fromJS(option[0].optionalDateRules))
if(option[0].mergeRule && option[0].dateRule){ // 选择过
if(option[0].mergeRule == '4000120002' || option[0].mergeRule == '4000120003' || option[0].mergeRule == '4000120004'){
state = this.metaReducer.sf(state, 'data.other.dateHabit', fromJS(option[0].optionalDateRules[1]))
}else if(option[0].mergeRule == '4000120001'){
state = this.metaReducer.sf(state, 'data.other.dateHabit', fromJS(option[0].optionalDateRules[0]))
}else if(option[0].mergeRule == '4000120005'){
state = this.metaReducer.sf(state, 'data.other.dateHabit', fromJS(option[0].optionalDateRules[4]))
}else if(option[0].mergeRule == '4000120006'){
state = this.metaReducer.sf(state, 'data.other.dateHabit', fromJS(option[0].optionalDateRules[3]))
}else if(option[0].mergeRule == '4000120007' || option[0].mergeRule == '4000120008'){
state = this.metaReducer.sf(state, 'data.other.dateHabit', fromJS(option[0].optionalDateRules[4]))
}else if(option[0].mergeRule == '4000120010'|| option[0].mergeRule == '4000120009'){
state = this.metaReducer.sf(state, 'data.other.dateHabit', fromJS(option[0].optionalDateRules[4]))
}
if(option[0].mergeRule) {
option[0].optionalMergeRules.map(item=>{
if(item.id == option[0].mergeRule) {
item.summarys.map(items=>{
items.label = items.name
items.value = items.name
})
state = this.metaReducer.sf(state, 'data.other.summarys', fromJS(item.summarys))
state = this.metaReducer.sf(state, 'data.other.summarysreceive', fromJS(item.summarys))
}
})
}
}else{ // 未选择过
state = this.metaReducer.sf(state, 'data.other.dateHabit', fromJS(option[0].optionalDateRules[0]))
}
if(option[0].dateRule) {
state = this.metaReducer.sf(state, 'data.form.dateHabitId', fromJS(option[0].dateRule))
}else{
state = this.metaReducer.sf(state, 'data.form.dateHabitId', fromJS(option[0].optionalDateRules[0][0].id))
}
}
if(option[0].optionalMergeRules) {
option[0].optionalMergeRules.map(i=>{
i.label=i.name
i.value=i.id
})
state = this.metaReducer.sfs(state, {
'data.other.habit': fromJS(option[0].optionalMergeRules),
'data.other.ts0': fromJS(option[0].ts),
'data.other.id0': fromJS(option[0].id)
})
state = this.metaReducer.sfs(state, {
'data.other.ts1': fromJS(option[1].ts),
'data.other.id1': fromJS(option[1].id)
})
if(option[0].mergeRule) {
state = this.metaReducer.sf(state, 'data.form.habitId', fromJS(option[0].mergeRule))
}else{
state = this.metaReducer.sf(state, 'data.form.habitId', fromJS(option[0].optionalMergeRules[0].id))
}
}
if(option[1].mergeRule == '4000120001') {
state = this.metaReducer.sf(state, 'data.other.dateHabitpay', fromJS(option[1].optionalDateRules[0]))
}
if(option[1].mergeRule == '4000120002' || option[1].mergeRule == '4000120003' || option[1].mergeRule == '4000120004') {
state = this.metaReducer.sf(state, 'data.other.dateHabitpay', fromJS(option[1].optionalDateRules[1]))
}
if(option[1].mergeRule == '4000120005') {
state = this.metaReducer.sf(state, 'data.other.dateHabitpay', fromJS(option[1].optionalDateRules[4]))
}
if(option[1].mergeRule == '4000120006' || option[1].mergeRule == '4000120009' || option[1].mergeRule == '4000120010') {
state = this.metaReducer.sf(state, 'data.other.dateHabitpay', fromJS(option[1].optionalDateRules[3]))
}
if(option[1].mergeRule == '4000120007' || option[1].mergeRule == '4000120008') {
state = this.metaReducer.sf(state, 'data.other.dateHabitpay', fromJS(option[1].optionalDateRules[4]))
}
if(option[0].mergeRule == '4000120001') {
state = this.metaReducer.sf(state, 'data.other.dateHabitreceive', fromJS(option[0].optionalDateRules[0]))
}
if(option[0].mergeRule == '4000120002' || option[0].mergeRule == '4000120003' || option[0].mergeRule == '4000120004') {
state = this.metaReducer.sf(state, 'data.other.dateHabitreceive', fromJS(option[0].optionalDateRules[1]))
}
if(option[0].mergeRule == '4000120005') {
state = this.metaReducer.sf(state, 'data.other.dateHabitreceive', fromJS(option[0].optionalDateRules[4]))
}
if(option[0].mergeRule == '4000120006' || option[0].mergeRule == '4000120009' || option[0].mergeRule == '4000120010') {
state = this.metaReducer.sf(state, 'data.other.dateHabitreceive', fromJS(option[0].optionalDateRules[3]))
}
if(option[0].mergeRule == '4000120007' || option[0].mergeRule == '4000120008') {
state = this.metaReducer.sf(state, 'data.other.dateHabitreceive', fromJS(option[0].optionalDateRules[4]))
}
state = this.metaReducer.sf(state, 'data.form.settleMerge', fromJS(option[0].settleMerge))
state = this.metaReducer.sf(state, 'data.other.habitreceive', fromJS(option[0].optionalMergeRules))
state = this.metaReducer.sf(state, 'data.other.habitpay', fromJS(option[1].optionalMergeRules))
state = this.metaReducer.sf(state, 'data.form.dateHabitIdreceive', fromJS(option[0].dateRule))
state = this.metaReducer.sf(state, 'data.form.dateHabitIdpay', fromJS(option[1].dateRule))
state = this.metaReducer.sf(state, 'data.form.habitIdreceive', fromJS(option[0].mergeRule))
state = this.metaReducer.sf(state, 'data.form.habitIdpay', fromJS(option[1].mergeRule))
state = this.metaReducer.sf(state, 'data.form.settleMergereceive', fromJS(option[0].settleMerge))
state = this.metaReducer.sf(state, 'data.form.settleMergepay', fromJS(option[1].settleMerge))
state = this.metaReducer.sf(state, "data.other.activeKey", fromJS(activeKeyArr))
}else{ // isTab false
state = this.metaReducer.sf(state, 'data.form.settleMerge', fromJS(option.settleMerge))
state = this.metaReducer.sf(state, "data.other.isTab", false)
state = this.metaReducer.sf(state, 'data.other.title', fromJS(option.name+':'))
state = this.metaReducer.sf(state, 'data.form.activeKey', fromJS(option.code))
if(option.optionalMergeRules) {
option.optionalMergeRules.map(item=>{
item.label=item.name
item.value=item.id
})
state = this.metaReducer.sfs(state, {
'data.other.habit': fromJS(option.optionalMergeRules),
'data.other.ts': fromJS(option.ts),
'data.other.id': fromJS(option.id)
})
if(option.mergeRule) {
state = this.metaReducer.sf(state, 'data.form.habitId', fromJS(option.mergeRule))
}else{
state = this.metaReducer.sf(state, 'data.form.habitId', fromJS(option.optionalMergeRules[0].id))
}
}
if(option.optionalDateRules) {
state = this.metaReducer.sf(state, 'data.other.dateHabitArr', fromJS(option.optionalDateRules))
if(option.mergeRule && option.dateRule){ // 选择过
if(option.mergeRule == '4000120002' || option.mergeRule == '4000120003' || option.mergeRule == '4000120004'){
state = this.metaReducer.sf(state, 'data.other.dateHabit', fromJS(option.optionalDateRules[1]))
}else if(option.mergeRule == '4000120001'){
state = this.metaReducer.sf(state, 'data.other.dateHabit', fromJS(option.optionalDateRules[0]))
}else if(option.mergeRule == '4000120005'){
state = this.metaReducer.sf(state, 'data.other.dateHabit', fromJS(option.optionalDateRules[4]))
}else if(option.mergeRule == '4000120006'){
state = this.metaReducer.sf(state, 'data.other.dateHabit', fromJS(option.optionalDateRules[3]))
}else if(option.mergeRule == '4000120007' || option.mergeRule == '4000120008'){
state = this.metaReducer.sf(state, 'data.other.dateHabit', fromJS(option.optionalDateRules[4]))
}else if(option.mergeRule == '4000120010'|| option.mergeRule == '4000120009'){
state = this.metaReducer.sf(state, 'data.other.dateHabit', fromJS(option.optionalDateRules[5]))
}
if(option.mergeRule) {
option.optionalMergeRules.map(item=>{
if(item.id == option.mergeRule) {
item.summarys.map(items=>{
items.label = items.name
items.value = items.name
})
state = this.metaReducer.sf(state, 'data.other.summarys', fromJS(item.summarys))
}
})
}
}else{ // 未选择过
state = this.metaReducer.sf(state, 'data.other.dateHabit', fromJS(option.optionalDateRules[0]))
option.optionalMergeRules.map(item=>{
if(item.id == '4000120001') {
item.summarys.map(items=>{
items.label = items.name
items.value = items.name
})
state = this.metaReducer.sf(state, 'data.other.summarys', fromJS(item.summarys))
}
})
}
if(option.dateRule) {
state = this.metaReducer.sf(state, 'data.form.dateHabitId', fromJS(option.dateRule))
}else{
state = this.metaReducer.sf(state, 'data.form.dateHabitId', fromJS(option.optionalDateRules[0][0].id))
}
}
}
return state
}
upDate = (state,option) => {
return state = this.metaReducer.sf(state, option.path, fromJS(option.value))
}
upDates = (state,value) => {
return state = this.metaReducer.sfs(state, {
'data.other.dateHabit': fromJS(value[0]),
'data.form.dateHabitId': fromJS(value[1])
})
}
// tab页
// radio change
upDateArr = (state,option) => {
state = this.metaReducer.sf(state, 'data.form.habitId', fromJS(option.value))
state = this.metaReducer.sf(state, option.path, fromJS(option.value))
return state
}
// radio 改变时,默认的下拉信息
upDatesArr = (state,value,path,pathId) => {
state = this.metaReducer.sfs(state, {
'data.other.dateHabit': fromJS(value[0]),
'data.form.dateHabitId': fromJS(value[1]),
})
state = this.metaReducer.sf(state, path, fromJS(value[0]))
state = this.metaReducer.sf(state, pathId, fromJS(value[1]))
return state
}
// select 选中项
upDatesArrSelect = (state,option) =>{
state = this.metaReducer.sf(state, option.path, fromJS(option.value))
state = this.metaReducer.sf(state, option.pathActive, fromJS(option.value))
return state
}
}
export default function creator(option) {
const metaReducer = new MetaReducer(option),
o = new reducer({ ...option, metaReducer })
return { ...metaReducer, ...o }
}