/*pbHnlLNCpsWdx+f6QNDErXUJ9hVUkCPC2/wKKBoJVMo=*/ import React, { Component } from 'react'; import {createPage,high,base,ajax,deepClone,toast ,getMultiLang,createPageIcon} from 'nc-lightapp-front'; const { NCFormControl: FormControl,NCDatePicker:DatePicker,NCButton: Button,NCRadio:Radio,NCBreadcrumb:Breadcrumb, NCRow:Row,NCCol:Col,NCTree:Tree,NCMessage:Message,NCIcon:Icon,NCLoading:Loading,NCTable:Table,NCSelect:Select, NCCheckbox:Checkbox,NCNumber,AutoComplete,NCDropdown:Dropdown,NCPanel:Panel,NCForm,NCButtonGroup:ButtonGroup,NCAffix,NCDiv } = base; const { NCFormItem:FormItem } = NCForm; import { CheckboxItem,RadioItem,TextAreaItem,ReferItem,SelectItem,InputItem,DateTimePickerItem} from '../../../public/components/FormItems'; import createScript from '../../../public/components/uapRefer.js'; import ReportModal from './reportModal/reportModal'; import getDefaultAccountBook from '../../../public/components/getDefaultAccountBook.js'; import {rebuildBalanceItem,rebuildBalanceComfirm} from './rebuildBalancemodal/index'; import { buttonClick, initTemplate} from './events'; import PrintModal from '../../../public/components/printModal'; const { PrintOutput } = high; import { printRequire, mouldOutput } from '../../../public/components/printModal/events'; import HeaderArea from '../../../public/components/HeaderArea'; import { getTableHeight } from '../../../public/common/method.js'; import {changeToSimpletableDatas} from '../../../public/common/changeToSimpletableDatas.js'; import './index.less'; import '../../../public/reachercss/reacher.less'; import UploadTax from './uploadTax' import { cancelBtnClick } from '../../../busirecon/pages/list/events/buttonClick'; const config={ "isDataPowerEnable":'Y', "DataPowerOperationCode":'fi' }; class Reckon extends Component{ constructor(props){ super(props); this.tableId = 'reckoning'; this.state={ pk_periodscheme:"",//上传税务云参数 up_pk_accountingbook:{},//上传税务云pk pk_display:"",//上传税务云账簿名字 json:{}, period:'',//上传税务云期间 taxcloudurl:'',//上传税务云地址 isQueryShow:false,//上传税务云弹框 appcode:this.props.getUrlParam('c') || this.props.getSearchParam('c'), ShowHideFlag:false,//查询条件对话框 pk_accasoaDisabled:false,//控制科目是否可以编辑 accountingbook:{display:'',value:''}, reportDataSum:[],//结账汇总数据 reportData:[],//结账详情数据 listItem:{ },//表头字段 rebuildBalanceItem:{},//重建余额表的查询字段 yearList:[], periodList:[], reportSumTitle:'',//汇总报告title reportSumFont:{},//汇总报告字体 reportTitle:'',//报告title reportFont:{}, refersh:false,//刷新 columnsVerify:[], reckonintData:[], verBalanceVOData:{}, queryDataObj:{},//保存查询条件 resourceData_sum:[],//查询出来的历史数据 resourceColumns_sum:[],//查询出来的历史数据列字段 selectedData:{},//选中的数据 } } beSureBtnClick=()=>{ this.UploadTax.confirm(); } cancelBtnClick=()=>{ this.UploadTax.close(); } handleCloseTax = () =>{ this.setState({ isQueryShow: false }); this.props.modal.close('UploadTaxModal'); } //根据账簿请求会计年 月 getYearList = (pk_accountingbook) => { let self = this; let {rebuildBalanceItem,yearList}=self.state; let url = '/nccloud/gl/voucher/yearcombo.do'; let data = { "pk_accountingbook":pk_accountingbook }; ajax({ url, data, success: function (res) { const { data, error, success } = res; if(success){ self.setState({ yearList: data, }) }else { toast({ content: error.message, color: 'warning' }); } }, error: function (res) { toast({ content: res.message, color: 'warning' }); } }); } //根据账簿请求会计年 月 getPeriodList = (pk_accountingbook,year) => { let self = this; let url = '/nccloud/gl/voucher/periodcombo.do'; let data = { "pk_accountingbook":pk_accountingbook, "year":year, }; ajax({ url, data, success: function (res) { const { data, error, success } = res; if(success){ self.setState({ periodList: data, }) }else { toast({ content: error.message, color: 'warning' }); } }, error: function (res) { toast({ content: res.message, color: 'warning' }); } }); } //处理width changeWidth(arr){ arr.map((item,index)=>{ if(item.children){ this.changeWidth(item.children); }else{ item['width']=150; } }) return arr; } getHeadData=()=>{ let self=this; let {listItem,reckonintData}=self.state; let appcode=self.props.getSearchParam("c"); const headData=[ {itemName:this.state.json['20020RECON-000000'],itemType:'refer',itemKey:'pk_accountingbook',/* 国际化处理: 核算账簿*/ config:{refCode:"uapbd/refer/org/AccountBookTreeRef"},queryGridUrl:'/nccloud/gl/voucher/ref.do',refType:'grid'}, {itemName:this.state.json['20020RECON-000001'],itemType:'textInput',itemKey:'reckedMonth'},/* 国际化处理: 待结账月份:*/ ] return listItem.reckedMonth?( headData.map((item,i)=>{ let defValue=listItem[item.itemKey].value; switch (item.itemType) { case 'refer': let referUrl= item.config.refCode+'/index.js'; let defaultValue = { refname: listItem[item.itemKey].display, refpk: listItem[item.itemKey].value }; if(!self.state[item.itemKey]){ {createScript.call(self,referUrl,item.itemKey)} return
}else{ if(item.itemKey=='pk_accountingbook'){ return ( {self.state[item.itemKey]?(self.state[item.itemKey])( { fieldid:item.itemKey, value:defaultValue, isMultiSelectedEnabled:false, disabledDataShow:true, queryCondition:() => { return Object.assign({ "TreeRefActionExt":'nccloud.web.gl.ref.AccountBookRefSqlBuilder', "appcode":appcode },config) }, onChange:(v)=>{ let {accountingbook}=self.state; if(item.itemKey=='pk_accountingbook'){ if(v.refpk){ self.getReckoningData(v.refpk); }else{ reckonintData=[]; self.props.table.setAllTableData(self.tableId, { rows: []}); } accountingbook.value=v.refpk; accountingbook.display=v.refname; listItem[item.itemKey].value = v.refpk; listItem[item.itemKey].display = v.refname; this.setState({ listItem,accountingbook,reckonintData }) } } } ):
} ); } } break; case 'select': return( { return (item.itemChild) } } onChange={(v)=>{ listItem[item.itemKey].value = v this.setState({ listItem }) }} /> ) case 'textInput': return( {/* */} {/* */} {listItem['pk_accountingbook'].value? {defValue.split("/")[0]}{this.state.json['20020RECON-000031']}{defValue.split("/")[1]}{this.state.json['20020RECON-000032']} : } ) default: break; } }) ) :(
) } //结账检查报告 handleEndAccountReport=()=>{ let self=this; let {reportDataSum,reportSumTitle,reportSumFont,reportData,accountingbook,reportTitle,reportFont}=self.state; if(accountingbook.value==""||accountingbook.value==undefined){ toast({ content: self.state.json['20020RECON-000010'], color: 'warning' });/* 国际化处理: 请先选择核算账簿*/ return false; } let url ='/nccloud/gl/reckoning/reckoningreport.do'; let pk_accpont = {"pk_accountingbook":accountingbook.value}; ajax({ url:url, data:pk_accpont, success: function(response){ const { data,success } = response; //渲染已有账表数据遮罩 if (success) { if(response.data){ reportDataSum=data.reportSumMesg; reportSumTitle=data.sumDisMesg; reportSumFont=data.sumFont; reportData=data.reportMesg; reportTitle=data.disMesg; reportFont=data.font; self.setState({ reportDataSum,reportSumTitle,reportSumFont,reportData,reportTitle,reportFont, ShowHideFlag:true, },()=>{ self.props.modal.show('reprotModal'); }) } } } }); } //结账 handleEndAccount=()=>{ // this.refs.getSwordButton.print(); // return false; let self=this; let {reckonintData,listItem,reportDataSum,reportSumTitle,reportSumFont,reportData,accountingbook,reportTitle,reportFont}=self.state; if(accountingbook.value==""||accountingbook.value==undefined){ toast({ content: self.state.json['20020RECON-000010'], color: 'warning' });/* 国际化处理: 请先选择核算账簿*/ return false; } let url ='/nccloud/gl/reckoning/reckoning.do'; let pk_accpont = {"pk_accountingbook":accountingbook.value}; ajax({ url:url, data:pk_accpont, success: function(response){ const { data,success } = response; //渲染已有账表数据遮罩 if (success) { if(response.data){ let isReckoningble=data.isReckoningble; if(isReckoningble){ toast({ content: self.state.json['20020RECON-000011'], color: 'success' });/* 国际化处理: 结账成功*/ reckonintData=data.reckedYear; self.showSimpletableData(reckonintData); reckonintData.map((item,index)=>{ item.key=index; }) listItem['reckedMonth'].value=data.reckedMonth; self.setState({ reckonintData,listItem }) }else{ toast({ content: self.state.json['20020RECON-000012'], color: 'warning' });/* 国际化处理: 结账失败*/ reportDataSum=data.reportSumMesg; reportSumTitle=data.sumDisMesg; reportSumFont=data.sumFont; reportData=data.reportMesg; reportTitle=data.disMesg; reportFont=data.font; self.setState({ reportDataSum,reportSumTitle,reportSumFont,reportData,reportTitle,reportFont, ShowHideFlag:true, },()=>{ self.props.modal.show('reprotModal'); }) } } } } }); } //取消结账 handleUnendAccount=()=>{ let self=this; let {reckonintData,listItem,reportDataSum,reportData,accountingbook,reportTitle,reportFont}=self.state; if(accountingbook.value==""||accountingbook.value==undefined){ toast({ content: self.state.json['20020RECON-000010'], color: 'warning' });/* 国际化处理: 请先选择核算账簿*/ return false; } let url ='/nccloud/gl/reckoning/unreckoning.do'; let pk_accpont = {"pk_accountingbook":accountingbook.value}; ajax({ url:url, data:pk_accpont, success: function(response){ const { data,success } = response; //渲染已有账表数据遮罩 if (success) { if(response.data){ let isReckoningble=data.isReckoningble; toast({ content: self.state.json['20020RECON-000013'], color: 'success' });/* 国际化处理: 反结账成功*/ reckonintData=data.reckedYear; self.showSimpletableData(reckonintData); reckonintData.map((item,index)=>{ item.key=index; }) listItem['reckedMonth'].value=data.reckedMonth; self.setState({ reckonintData,listItem }) } } }, error:function(res){ toast({ content: res.message, color: 'danger' }); } }); } //重建余额表 handleRebuildbalance=()=>{ this.props.modal.show('rebuildbalance'); } //上传税务云 handleUploud=()=>{ let self = this; let {listItem, up_pk_accountingbook, taxcloudurl, period, pk_periodscheme, pk_display} = this.state; up_pk_accountingbook = {'pk_accountingbook':listItem.pk_accountingbook.value} pk_display = listItem.pk_accountingbook.display let url = '/nccloud/gl/pfxx/taxcloudconfig.do'; ajax({ url, data:up_pk_accountingbook, success: function (res) { taxcloudurl = res.data.url period = res.data.period pk_periodscheme = res.data.pk_periodscheme self.setState({ up_pk_accountingbook, taxcloudurl, pk_periodscheme, period, pk_display, isQueryShow:true },()=>{ self.props.modal.show('UploadTaxModal'); }) }, error: function (res) { toast({ content: res.message, color: 'warning' }); } }); } //打印 handlePrintReport() { this.setState({ showPrintModal: true }) } handlePrint(data) { let printUrl = '/nccloud/gl/accountrep/reckoningreportprint.do' let { queryDataObj, appcode,sumOrDetail,listItem} = this.state let { ctemplate, nodekey } = data queryDataObj.queryvo = data queryDataObj.pk_accountingbook=listItem['pk_accountingbook'].value; queryDataObj.year=listItem['reckedMonth'].value.split('/')[0]; queryDataObj.month=listItem['reckedMonth'].value.split('/')[1]; queryDataObj.issum='Y'; this.setState({ ctemplate: ctemplate, nodekey: nodekey }) printRequire(printUrl, appcode, nodekey, ctemplate, queryDataObj) this.setState({ showPrintModal: false }); } //模板输出 showOutputModal() { let outputUrl = '/nccloud/gl/accountrep/reckoningreportoutput.do' let { appcode, nodekey, ctemplate, queryDataObj ,listItem} = this.state; queryDataObj.pk_accountingbook=listItem['pk_accountingbook'].value; queryDataObj.year=listItem['reckedMonth'].value.split('/')[0]; queryDataObj.month=listItem['reckedMonth'].value.split('/')[1]; mouldOutput(outputUrl, appcode, nodekey, ctemplate, queryDataObj) } handleOutput() { } //关闭 handleClose=()=>{ this.setState({ ShowHideFlag: !this.state.ShowHideFlag, }) } GetRequest=(urlstr)=> { var url = decodeURIComponent(urlstr)//(window.parent.location.href); //获取url中"?"符后的字串 var theRequest = new Object(); if (url.indexOf("?") != -1) { var str = url.substr(url.indexOf("?")+1); var strs = str.split("&"); for(var i = 0; i < strs.length; i ++) { theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]); } } return theRequest; } //字段格式转换 keyValueChange=(defaultAccouontBook,data,listItem)=>{ data.forEach((item,i)=>{ let key; if(item.itemType=='refer'){ if(item.itemKey=='pk_accountingbook'){ key=[{ display:defaultAccouontBook.display, value:defaultAccouontBook.value }] }else if(item.itemKey=='pk_accasoa'){ key=[{ display:'', value:'' }] }else{ key={ display:'', value:'' } } }else if(item.itemType=='select'||item.itemType=='Dbselect'||item.itemType=='radio'){//下拉框赋初始值 key={ value:'' } }else{ key={ value:'' } if(item.itemType=='date'||item.itemType=='Dbdate'){ key={ value:'' } } } if(item.itemType=='Dbdate'||item.itemType=='DbtextInput'||item.itemType=='Dbselect'){ item.itemKey.map((k,index)=>{ let name= k; listItem[name]=key }); }else{ let name= item.itemKey; listItem[name]=key } }) this.setState({ listItem }) } //切换账簿请求数据和结账月份 getReckoningData=(pk_accountingbook)=>{ let self=this; let {reckonintData,listItem}=this.state; let url ='/nccloud/gl/reckoning/refreshperiod.do'; let pk_accpont = {"pk_accountingbook":pk_accountingbook} //let pk_accpont = {"pk_accountingbook": "1001A3100000000008MT"} ajax({ url:url, data:pk_accpont, success: function(response){ const { data,success } = response; //渲染已有账表数据遮罩 if (success) { if(response.data){ reckonintData=data.reckedYear; self.showSimpletableData(reckonintData); reckonintData.map((item,index)=>{ item.key=index; }) listItem['reckedMonth'].value=data.reckedMonth; } self.setState({ reckonintData }) } } }); } //渲染simpletable数据 showSimpletableData=(reckonintData)=>{ let simpleTableData=changeToSimpletableDatas(reckonintData)||[]; if(simpleTableData){ this.props.table.setAllTableData(this.tableId, {rows:simpleTableData}); }else{ this.props.table.setAllTableData(this.tableId, { rows: []}); } } componentDidMount(){ let self=this; let url = '/nccloud/gl/pfxx/taxcloudconfig.do'; ajax({ url:url, success: function(response){ self.props.button.setButtonDisabled(['uploadtaxcloud'], false); }, error : function(response){ self.props.button.setButtonDisabled(['uploadtaxcloud'], false); } }); } componentWillMount(){ let {listItem,rebuildBalanceItem,accountingbook}=this.state; let appcode=this.props.getSearchParam("c"); // let defaultAccouontBook=getDefaultAccountBook(appcode); getDefaultAccountBook(appcode).then((defaultAccouontBook)=>{ accountingbook=defaultAccouontBook; if(defaultAccouontBook.value){ this.getReckoningData(defaultAccouontBook.value); this.getYearList(defaultAccouontBook.value); } const headData=[ {itemName:this.state.json['20020RECON-000000'],itemType:'refer',itemKey:'pk_accountingbook',/* 国际化处理: 核算账簿*/ config:{refCode:"uapbd/refer/org/AccountBookTreeRef"},queryGridUrl:'/nccloud/gl/voucher/ref.do',refType:'grid'}, {itemName:this.state.json['20020RECON-000001'],itemType:'textInput',itemKey:'reckedMonth'},/* 国际化处理: 待结账月份:*/ ] const loadQuery=[ { itemName:this.state.json['20020RECON-000000'],/* 国际化处理: 核算账簿*/ itemType:'refer', itemKey:'pk_accountingbook', config:{refCode:"uapbd/refer/org/AccountBookTreeRef"}, showMast:true }, { itemName: this.state.json['20020RECON-000002'],/* 国际化处理: 会计科目*/ itemType: "refer", itemKey: "pk_accasoa", config: { refCode: "uapbd/refer/fiacc/AccountDefaultGridTreeRef" }, showMast:false }, {itemName:this.state.json['20020RECON-000003'],itemType:'Dbselect',itemKey:['year','period'],/* 国际化处理: 会计期间*/ itemChild:[] } // {itemName:'会计期间',itemType:'select',itemKey:'period', // itemChild:[] // } ] this.keyValueChange(defaultAccouontBook,loadQuery,rebuildBalanceItem); headData.forEach((item,i)=>{ let key; if(item.itemType=='refer'){ if(item.itemKey=='pk_accountingbook'){ key={ display:defaultAccouontBook.display, value:defaultAccouontBook.value } }else{ key={ display:'', value:'' } } }else if(item.itemType=='select'||item.itemType=='Dbselect'||item.itemType=='radio'){//下拉框赋初始值 key={ value:item.itemChild[0].value } }else{ key={ value:'' } if(item.itemType=='date'||item.itemType=='Dbdate'){ key={ value:'' } } } if(item.itemType=='Dbdate'||item.itemType=='DbtextInput'){ item.itemKey.map((k,index)=>{ let name= k; listItem[name]=key }); }else{ let name= item.itemKey; listItem[name]=key } }) this.setState({ listItem,accountingbook }) }) let callback= (json) =>{ this.Defaultcolumns = [ { title: (
{json['20020RECON-000004']}
),/* 国际化处理: 会计期间 */ dataIndex: "dispReckedMonth", key: "dispReckedMonth", width: 100, render: (text, record, index) => { return
{!text? :text}
} }, { title: (
{json['20020RECON-000005']}
),/* 国际化处理: 是否结账*/ dataIndex: "dispReckedOrNot", key: "dispReckedOrNot", width: 100, render: (text, record, index) => { return
{!text? :text}
} }, { title: (
{json['20020RECON-000006']}
),/* 国际化处理: 结账人*/ dataIndex: "endaccuser", key: "endaccuser", width: 100, render: (text, record, index) => { return
{!text? :text}
} }, { title: (
{json['20020RECON-000007']}
),/* 国际化处理: 结账时间*/ dataIndex: "endacctime", key: "endacctime", width: 100, render: (text, record, index) => { return
{!text? :text}
} }, { title: (
{json['20020RECON-000008']}
),/* 国际化处理: 取消结账*/ dataIndex: "unendaccuser", key: "unendaccuser", width: 100, render: (text, record, index) => { return
{!text? :text}
} }, { title: (
{json['20020RECON-000009']}
),/* 国际化处理: 取消结账时间*/ dataIndex: "unendacctime", key: "unendacctime", width: 100, render: (text, record, index) => { return
{!text? :text}
} } ]; this.setState({ json:json, },()=>{ initTemplate.call(this, this.props); }) } getMultiLang({moduleId:['20020RECON','uptoload'],domainName:'gl',currentLocale:'simpchn',callback}); } selectedChange=(props,newVal,oldVal)=>{//选中行发生变化 } showReporModal=()=>{ let{ShowHideFlag,reportDataSum,reportSumTitle,reportSumFont,reportData,reportTitle,reportFont}=this.state; let reportSum={ reportSumData:reportDataSum, reportSumTitle:reportSumTitle, reportSumFont:reportSumFont, } let reportDetail={ reportDetailData:reportData, reportDetailTitle:reportTitle, reportDetailFont:reportFont } return( ) } onRef=(ref)=>{ this.UploadTax=ref; } render(){ let {taxcloudurl, pk_periodscheme, up_pk_accountingbook, pk_display, period} = this.state let{accountingbook,columnsVerify,reckonintData,listItem,ShowHideFlag,isQueryShow, reportDataSum,reportSumTitle,reportSumFont,reportData,reportTitle,reportFont}=this.state; let {modal} = this.props; let { createModal } = modal; if(columnsVerify.length==0){ columnsVerify=this.Defaultcolumns?this.Defaultcolumns:[]; } let { table } = this.props; let { createSimpleTable } = table; let reportSum={ reportSumData:reportDataSum, reportSumTitle:reportSumTitle, reportSumFont:reportSumFont, } let reportDetail={ reportDetailData:reportData, reportDetailTitle:reportTitle, reportDetailFont:reportFont } const loadQuery=[ { itemName:this.state.json['20020RECON-000000'],/* 国际化处理: 核算账簿*/ itemType:'refer', itemKey:'pk_accountingbook', config:{refCode:"uapbd/refer/org/AccountBookTreeRef"}, showMast:true }, { itemName: this.state.json['20020RECON-000002'],/* 国际化处理: 会计科目*/ itemType: "refer", itemKey: "pk_accasoa", config: { refCode: "uapbd/refer/fiacc/AccountDefaultGridTreeRef" }, showMast:false }, {itemName:this.state.json['20020RECON-000003'],itemType:'Dbselect',itemKey:['year','period'],/* 国际化处理: 会计期间*/ itemChild:[] } ] return(
{this.getHeadData()}
} btnContent={ this.props.button.createButtonApp({ area: 'button_area', buttonLimit: 4, onButtonClick: buttonClick.bind(this), popContainer: document.querySelector('.header-button-area') }) } />
{createSimpleTable(this.tableId, { // showCheck: true, showIndex: true, selectedChange: this.selectedChange.bind(this) })}
{ShowHideFlag&&createModal('reprotModal',{ title:this.state.json['20020RECON-000026'],/* 国际化处理: 结账报告*/ content:this.showReporModal(), userControl: true, // 点确定按钮后,是否自动关闭弹出框.true:手动关。false:自动关 noFooter : true, //是否需要底部按钮,默认有footer,有false,没有true }) }
{this.state.json['20020RECON-000015']&&createModal('rebuildbalance', { className:"repeatexl", title: this.state.json['20020RECON-000015'],// 弹框表头信息/* 国际化处理: 重建余额表*/ content: rebuildBalanceItem(this,loadQuery), //弹框内容,可以是字符串或dom beSureBtnClick: rebuildBalanceComfirm.bind(this), //点击确定按钮事件 userControl: false, // 点确定按钮后,是否自动关闭弹出框.true:手动关。false:自动关 size: 'lg', // 模态框大小 sm/lg/xlg rightBtnName: this.state.json['20020RECON-000016'], //左侧按钮名称,默认关闭/* 国际化处理: 关闭*/ leftBtnName: this.state.json['20020RECON-000017'], //右侧按钮名称, 默认确认/* 国际化处理: 确认*/ })}
{ this.setState({ showPrintModal: false }) }} />
{isQueryShow&&createModal('UploadTaxModal',{ title:this.state.json['uptoload-000004'],/* 国际化处理: 上传税务云*/ content:( ), className:'senior', userControl: true, // 点确定按钮后,是否自动关闭弹出框.true:手动关。false:自动关 beSureBtnClick:this.beSureBtnClick,//点击确定按钮事件 cancelBtnClick:this.cancelBtnClick//取消按钮事件 }) }
) } } Reckon = createPage({ // initTemplate:initTemplate })(Reckon); ReactDOM.render(,document.querySelector('#app')); /*pbHnlLNCpsWdx+f6QNDErXUJ9hVUkCPC2/wKKBoJVMo=*/