ttk-app-core
Version:
enterprise develop framework
145 lines (122 loc) • 5.86 kB
JavaScript
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 }
}