UNPKG

ttk-app-core

Version:
175 lines (167 loc) 7.95 kB
import {Map, fromJS} from 'immutable' import {reducer as MetaReducer} from 'edf-meta-engine' import config from './config' import {getInitState} from './data' import {consts} from 'edf-consts' class reducer { constructor(option) { this.metaReducer = option.metaReducer this.config = config.current } init = (state, option) => { const initState = getInitState() return this.metaReducer.init(state, initState) } load = (state, option) => { if (option.response) { if (option.response.propertyId) { option.queryData.dataList.filter((data) => { if(data.id == option.response.propertyId){ option.response.property = data } }) if (option.queryData && option.queryData.detailList) { let a = option.queryData.detailList.filter((data) => { return option.response.propertyId == data.propertyId }) state = this.metaReducer.sf(state, 'data.other.propertyDetailFilter', fromJS(a)) } } if (option.response.propertyDetail) { // option.response.propertyDetail = { // id: option.response.propertyDetail, // name: option.response.propertyDetailName // } option.queryData.detailList.filter((data) => { if(data.id == option.response.propertyDetail){ option.response.propertyDetail = data } }) state = this.metaReducer.sf(state, 'data.isProperty', fromJS(true)) } if (option.response.unitId) { option.response.unit = { id: option.response.unitId, name: option.response.unitName } // option.queryData.unitList.filter((data) => { // if(data.id == option.response.unitId){ // option.response.unit = data // } // }) } if (option.response.rate) { option.response.rate = { id: option.response.rate, name: option.response.rateName } // option.queryData.rateList.filter((data) => { // if(data.id == option.response.rate){ // option.response.rate = data // } // }) } if (Object.keys(option.response).length == 0) { option.response.isEnable = true state = this.metaReducer.sf(state, 'data.form', fromJS(option.response)) } else { state = this.metaReducer.sf(state, 'data.form', fromJS(option.response)) } // state = this.metaReducer.sf(state, 'data.form', fromJS(option.response)) } if (option.code) { state = this.metaReducer.sf(state, 'data.form.code', fromJS(option.code)) } if (option.queryData) { if (option.queryData.dataList) { state = this.metaReducer.sf(state, 'data.other.property', fromJS(option.queryData.dataList)) } if (option.queryData.detailList) { state = this.metaReducer.sf(state, 'data.other.propertyDetail', fromJS(option.queryData.detailList)) } if (option.queryData.rateList) { state = this.metaReducer.sf(state, 'data.other.rate', fromJS(option.queryData.rateList)) } if (option.queryData.unitList) { state = this.metaReducer.sf(state, 'data.other.unit', fromJS(option.queryData.unitList)) } } if(option.taxCode){ state = this.metaReducer.sf(state, 'data.taxCode', fromJS(option.taxCode)) } return state } unit = (state, list, select) => { state = this.metaReducer.sf(state, 'data.other.unit', fromJS(list)) state = this.metaReducer.sf(state, 'data.form.unit', fromJS(select)) return state } propertyChange = (state, v, a) => { let generalTaxPayer = consts.VATTAXPAYER_generalTaxPayer, smallScaleTaxPayer = consts.VATTAXPAYER_smallScaleTaxPayer, rateList = this.metaReducer.gf(state, 'data.other.rate'), rate = {}, name if (v.vatTaxpayer) { if (v.name == '服务' || v.name == '无形资产') { let dataArr = a state = this.metaReducer.sf(state, 'data.other.propertyDetailFilter', fromJS(a)) state = this.metaReducer.sf(state, 'data.isProperty', fromJS(true)) } else { state = this.metaReducer.sf(state, 'data.isProperty', fromJS(false)) } } if (this.metaReducer.context.get("currentOrg").vatTaxpayer == generalTaxPayer) { //一般模纳税人 if (v.name == "服务" || v.name == "固定资产-不动产" || v.name == '交通运输服务' || v.name == '邮政服务' || v.name == '基础电信服务' || v.name == '建筑服务' || v.name == '不动产租赁服务' || v.name == '土地使用权') { name = "11%" } else if (v.name == "无形资产" || v.name == '增值电信服务' || v.name == '信息技术服务' || v.name == '金融服务' || v.name == '生活服务' || v.name == '其他服务' || v.name == '专利权' || v.name == '商标权' || v.name == '著作权' || v.name == '非专利技术' || v.name == '特许权使用费' || v.name == '其他') { name = "6%" } else { name = "17%" } } else if (this.metaReducer.context.get("currentOrg").vatTaxpayer == smallScaleTaxPayer) { //小规模纳税人 if (v.name == "固定资产-不动产" || v.name == "土地使用权" || v.name == "不动产租赁服务") { name = "5%" } else { name = "3%" } } if (rateList) { rateList.toJS().map(item => { if (item.name == name) { state = this.metaReducer.sf(state, 'data.form.rate', fromJS(item)) } }) } if (v.vatTaxpayer) { state = this.metaReducer.sf(state, 'data.form.property', fromJS(v)) state = this.metaReducer.sf(state, 'data.form.propertyDetail', '') } else { state = this.metaReducer.sf(state, 'data.form.propertyDetail', fromJS(v)) } return state } taxCodeLoad = (state, taxCode) => { if(taxCode.data){state = this.metaReducer.sf(state, 'data.taxCode.data', fromJS(taxCode.data))} state = this.metaReducer.sf(state, 'data.taxCode.fetching', fromJS(taxCode.fetching)) return state } taxCodeChange = (state, code) => { // console.log('手机',code) if(code){ let str = code.split(","); state = this.metaReducer.sf(state, 'data.form.taxClassificationId', fromJS(str[1])) state = this.metaReducer.sf(state, 'data.form.taxClassificationName', fromJS(str[0])) }else { state = this.metaReducer.sf(state, 'data.form.taxClassificationId', fromJS('')) state = this.metaReducer.sf(state, 'data.form.taxClassificationName', fromJS('')) } return state } } export default function creator(option) { const metaReducer = new MetaReducer(option), o = new reducer({...option, metaReducer}) return {...metaReducer, ...o} }