UNPKG

ttk-app-core

Version:

@ttk/recat enterprise develop framework

139 lines (132 loc) 3.93 kB
import { Map, fromJS, List } from 'immutable' // 所有的reducers函数在框架初始化时都会被框架自动调用一次,以初始化state数据。调用时action的值为{type:0.022444457651 },type是一个小于1的随机值 export function tempState(state = Map({ isEdit: false, loading: false }), action) { switch (action.type) { case 'setEdit': return state.sf(['isEdit'], action.data) case 'setLoading': return state.sf(['loading'], action.data) default: return state } } export function selectKey(state = List(['0']), action) { switch (action.type) { case 'init': return state.set('0', action.data) default: return state } } export function validateState(state = Map({ code: { state: 'success', message: '' }, // 编码 name: { state: 'success', message: '' }, // 名称 sortNo: { state: 'success', message: '' }, // 顺序 busTypeId: { state: 'success', message: '' }, // 业务类型 url: { state: 'success', message: '' } // 路径 }), action) { switch (action.type) { case 'update': return state.sfs(fromJS(action.data)) default: return state } } const defaultForm = { parentName: null, // 上级菜单 functionType: 'menu', // 类型 code: null, // 编码 name: null, // 名称 sortNo: null, // 顺序 busTypeId: null, // 业务类型 url: null, //路径 imageUrl: null, // icon isShow: 'Y', // 是否可见 isValid: 'Y', //状态 remark: null, // 备注 accessAuthorityPaths: null, //允许访问接口 applicationId: 0, target: '_top' } export function formObj(state = Map(fromJS(defaultForm) ), action) { switch (action.type) { case 'update': return state.sfs(fromJS(action.data)) case 'reset': if (!action.data) return Map(fromJS(defaultForm)) return Map(fromJS({ ...defaultForm, ...action.data })) default: return state } } export function busType(state = List(), action) { switch (action.type) { case 'init': return List(fromJS(JSON.parse(action.data))) default: return state } } export function treeData(state = List(), action) { let temp switch (action.type) { case 'update': return List(fromJS(action.data)) case 'updateChildren': temp = updateChildren(state.toJS(), action.data) return List(fromJS(temp)) case 'addChildren': return addChildren(state, action.data) default: return state } } function updateChildren(list, { functioinId, children, subNodeFlag, ...orther }) { return list.map(item => { if (item.functioinId === functioinId) { item = Object.assign(item, orther) if (children !== undefined) item.children = children if (subNodeFlag !== undefined) item.subNodeFlag = subNodeFlag return item } else { if (item && item.children) { let temp = item temp.children = updateChildren(item.children, { functioinId, children, subNodeFlag, ...orther }) return temp } else { return item } } }) } function addChildren(state, { parentId, ...orther }) { return state.map((value, key) => { let temp if (value.gf(['functioinId']) === parentId) { if (value.has('children')) { temp = value.update('children', children => children.push({ parentId, ...orther })) } else { temp = value.set('children', fromJS([{ parentId, ...orther }])) } temp = temp.set('subNodeFlag', '1') return temp } else { if (value.has('children')) { temp = value.update('children', children=>{ // console.log('jjjjjjechil dren: ', t, '---------', children, '==>>>>', children.toJS()) return addChildren(children, { parentId, ...orther }) } ) }else{ temp = value } } return temp }) }