UNPKG

ttk-app-core

Version:
145 lines (122 loc) 5.86 kB
import { Map, fromJS } from 'immutable' import { reducer as MetaReducer } from 'edf-meta-engine' import config from './config' import { getInitState, getLastMonth, PROJECT_TYPE_TAX, PROJECT_TYPE_FINANCE } from './data' import moment from 'moment' import { fetch, number, history } from 'edf-utils' class reducer { constructor(option) { this.metaReducer = option.metaReducer this.config = config.current } init = (state, option) => { if (!option.periodDate) { option.periodDate = moment(new Date()).format('YYYY-MM') } const initState = getInitState(option.periodDate) state = this.metaReducer.init(state, initState) return this.metaReducer.sf(state, 'data.tableKey', Math.random()) } load = (state, response, hasReadSJInfo, zsxmDtos) => { state = this.metaReducer.sf(state, 'data.tableCheckbox', fromJS({checkboxValue: [], selectedOption: []})) if (hasReadSJInfo != undefined) { state = this.metaReducer.sf(state, 'data.other.hasReadSJInfo', hasReadSJInfo) } if (response.orgDto) { state = this.metaReducer.sf(state, 'data.other.currentOrg', fromJS(response.orgDto)) } if (response && response.enabledYearMonth) { state = this.metaReducer.sf(state, 'data.other.disabledDate', response.enabledYearMonth) } for (var i = 0; i < response.list.length; i++) { if (response.list[i].projectType == PROJECT_TYPE_TAX) { // 增值税报表已申报 if (response.list[i].state == 1) { if (!isNaN(response.list[i].taxAmount)) { if (response.list[i].taxAmount != 0) { response.list[i].taxAmount = number.addThousPos(response.list[i].taxAmount) } } } else if (response.list[i].state == 0) { if (response.list[i].taxAmount == 0) { response.list[i].taxAmount = '' } } } else if (response.list[i].projectType == PROJECT_TYPE_FINANCE) { response.list[i].taxAmount = '— —' } } state = this.metaReducer.sf(state, 'data.list', fromJS(response.list)) if (zsxmDtos && zsxmDtos.length > 0) { state = this.updateQingceDeclareStatus(state, zsxmDtos) } return state } getEnabledYearMonth = (currentOrg) => { let enabledYearMonth = currentOrg ? currentOrg.enabledYear + '-' + currentOrg.enabledMonth.toString().padStart(2, '0') : '' return enabledYearMonth } checkboxChange = (state, option) => { state = this.metaReducer.sf(state, 'data.tableCheckbox', fromJS(option)) return state } update = (state, { path, value }) => { return this.metaReducer.sf(state, path, fromJS(value)) } updateQingceZlbsxlDm = (state, option) => { let list = this.metaReducer.gf(state, 'data.list') list = list.map(item => { if (item.get('kjzdzzDm') == option.kjzdzzDm) { item = item.set('taxProjectCode', option.taxProjectCode) .set('taxProjectName', option.taxProjectName) .set('zlbsxlDm', option.zlbsxlDm) .set('accountingStandardsId', option.accountingStandardsId) return item } else { return item } }) return this.metaReducer.sf(state, 'data.list', list) } updateQingceDeclareStatus = (state, zsxmDtos) => { for (var i = 0; i < zsxmDtos.length; i++) { if (zsxmDtos[i].projectType == PROJECT_TYPE_TAX) { if (zsxmDtos[i].declareStatus == false) { zsxmDtos[i].declareUnsuccessMessage = '数据校验不通过,请打开报表填写界面查看详情,修正后再申报。' } else { zsxmDtos[i].declareUnsuccessMessage = undefined } state = this.updateList(state, zsxmDtos[i].reportId, zsxmDtos[i].declareUnsuccessMessage) } else if (zsxmDtos[i].projectType == PROJECT_TYPE_FINANCE){ let list = this.metaReducer.gf(state, 'data.list') let qingceItem = list.toJS().find(item => item.id = zsxmDtos[i].reportId) // 财报未申报时,申报失败时增加消息提示 if (qingceItem && qingceItem.state == 0) { if (zsxmDtos[i].declareStatus == false) { zsxmDtos[i].declareUnsuccessMessage = '数据校验不通过,请打开报表填写界面查看详情,修正后再申报。' } else { zsxmDtos[i].declareUnsuccessMessage = undefined } } state = this.updateList(state, zsxmDtos[i].reportId, zsxmDtos[i].declareUnsuccessMessage) } } return state } updateList = (state, reportId, declareUnsuccessMessage) => { let list = this.metaReducer.gf(state, 'data.list') list = list.map(item => { if (item.get('id') == reportId) { return item.set('declareUnsuccessMessage', declareUnsuccessMessage) } else { return item } }) return this.metaReducer.sf(state, 'data.list', list) } } export default function creator(option) { const metaReducer = new MetaReducer(option), o = new reducer({ ...option, metaReducer }) return { ...metaReducer, ...o } }