tk2312-web/src/sscivm/invoiceSale/invoiceSale/card/invoiceSaleCard.js

376 lines
18 KiB
JavaScript

/*UFigk5STJwm8UdgGL1uB/XekbNt/WrTNa19WDhPxAaU=*/
import React, {
Component
} from "react";
import {
formDownload,
createPage,
getMultiLang,
base,
high,
createBillHeadInfo,
toast
} from "nc-lightapp-front";
import "./index.less";
import initTemplate from "./events/initTemplate.js";
import headBtnClick from "./events/headBtnClick";
import presetVar from './presetVar'
import InvoiceComponent from '../../../invoiceComponent/compoundComponent/component'
import LinkBill from '../../linkBill/list/index'
import handlePageInfoChange from "./events/handlePageInfoChange";
import LinkBillModal from 'ssccommon/components/linkbill/linkbillmodal/LinkBillModal';
import viewBill from './common/viewBill'
import { setForm, setCardTable, setEditTable } from 'ssccommon/utils/setComponentUsed';
import showListMessage from "../../../invoiceApplication/invoiceApl/list/common/showListMessage";
import listRequestApi from '../list/requestApi'
import requestApi from './requestApi'
import { replace, get } from "lodash";
const { NCRefreshBtn, NCAffix, NCDiv } = base;
const DATA_SOURCE = `SSCIVM.INVOICE.RECEIVE.DATASOURCE`;
class InvoiceSaleCard extends Component {
constructor(props) {
super(props);
this.state = {
multiLang: {}, // 多语对象
pageStatus: 'browse', //页面状态
approveDownBillId: '',
show: false, //联查开票情况弹框
linkBill: {}, //联查开票情况传递参数
linkBusiBillModalShow: false, // 联查单据显示控制标志
LinkBusiBillQueryParams: {}, // 联查单据传递参数
specialInvoiceIsShow:false,//特殊票种表体是否显示
};
this.invoiceComponent = new InvoiceComponent('Invoice');
//平台组件初始化
setCardTable(props, presetVar.tableAreaId);
setCardTable(props, presetVar.tspzBodyAreaId);
setForm(props, presetVar.formAreaId);
setForm(props, 'LnvoiceDownloadType');
setEditTable(props, 'redinfo'),
initTemplate.call(this, props);
}
//刷新按钮
handleClick = () => {
let multiLang = this.props.MutiInit.getIntl(1058); //this.moduleId
viewBill.call(this, () => {
// "1058-SP-0035": "刷新成功!",
toast({ content: multiLang && multiLang.get('1058-SP-0035'), color: 'success' });
})
}
//翻页事件
handlePageInfoChange = (...params) => {
handlePageInfoChange.call(this, ...params)
};
render() {
const { createBillHeadInfo } = this.props.BillHeadInfo;
const {
props: {
cardTable: { createCardTable },
form: { createForm, },
button: { createButtonApp, },
cardPagination: { createCardPagination },
},
handleClick,
handlePageInfoChange,
} = this
const scene = this.props.getUrlParam('scene');
let multiLang = this.props.MutiInit.getIntl(1058); //this.moduleId
return (
<div className="nc-bill-card" id="invoicecard">
<div className="nc-bill-top-area">
<NCAffix offsetTop={0}>
<NCDiv className="invoice-card--head" areaCode={NCDiv.config.HEADER}>
<div className="nc-bill-header-area">
<span className="header-title-search-area">
{/*"1058-FP-0001": "销项发票"*/}
{
createBillHeadInfo(
{
title: this.props.getSearchParam('n'), //标题
initShowBackBtn: scene == 'listTo' ? true : false,
backBtnClick: () => { //返回按钮的点击事件
this.props.pushTo("/list", { pagecode: presetVar.listPagecode })
}
}
)
}
</span>
<div className="header-button-area">
{createButtonApp({
area: presetVar.headAreaId,
onButtonClick: headBtnClick.bind(this)
})}
</div>
{/* NCRefreshBtn TODO */}
<NCRefreshBtn onClick={handleClick}></NCRefreshBtn>
{/* 翻页器 */}
<div className={scene == 'listTo' ? 'ivm-pagination--show' : 'ivm-pagination--hide'}>
{
createCardPagination({
handlePageInfoChange: handlePageInfoChange,
dataSource: DATA_SOURCE
})}
</div>
</div>
</NCDiv>
</NCAffix>
<div className="nc-bill-form-area">
{createForm(presetVar.formAreaId, {})}
</div>
</div>
<div className="nc-bill-bottom-area">
<div className='nc-bill-table-area'>
{createCardTable(presetVar.tableAreaId, {
showIndex: true,
adaptionHeight: true
})}
</div>
{/* 特殊票种明细表体 */}
{this.state.specialInvoiceIsShow && (
<div className="nc-bill-table-area">
{createCardTable(presetVar.tspzBodyAreaId, {
showIndex: true,
adaptionHeight: true,
})}
</div>
)}
</div>
{/* 联查发票组件 */}
{this.invoiceComponent.createComponent()}
{/*联查开票申请*/}
{this.state.show && <LinkBill
show={this.state.show}
linkBill={this.state.linkBill}
closeModalEve={() => {
this.setState({ show: false })
}}
></LinkBill>}
{/* 联查单据 */}
{this.state.linkBusiBillModalShow &&
<LinkBillModal
{...this.props}
modalTitle={multiLang && multiLang.get('1058-SP-0043')} // 联查单据
LinkBillModalAppCode="105802KP"
LinkBillModalPageCode="105802KP_LinkBill"
tableAreaId="bills"
tableRenderField="billno"
queryUrl="/nccloud/sscivm/ivsale/LinkBillAction.do"
queryParams={this.state.LinkBusiBillQueryParams}
onRowDoubleClick={(record, index) => {
listRequestApi.openbill({
data: {
openbillid: record.pk_bill.value,
tradetype: record.pk_tradetype.value
},
success: (data) => {
this.props.openTo(data.url, data.data);
}
})
}}
closeModalEve={() => {
this.setState({ linkBusiBillModalShow: false });
}}
/>}
{this.props.modal.createModal('redinfomodal', {
title: multiLang && multiLang.get('1058-invoice-0024'),
content: (
<div className="area-content">
{this.props.editTable.createEditTable('redinfo', {
showIndex: true,
adaptionHeight: false
})}
</div>
),
size: 'xlg',
beSureBtnClick: () => {
let rows = this.props.editTable.getAllRows('redinfo');
let toastMsgs=[];
// "refer-XX-0003": "序号{n}:发票号码为\"{a}\"且发票类型为\"{b}\"的\"{c}\"不能为空;"
// "refer-XX-0004": "红字信息单编号","refer-XX-0005": "红冲原因"
let mulTisp=multiLang && multiLang.get('refer-XX-0003');
rows.forEach((element,index) => {
let itemMulTisp=mulTisp;
if(['2','4','11','99'].some(ele=>{
return ele===element.values.invoice_type.value
})&&element.values.redinfo.value===''){
itemMulTisp=replace(itemMulTisp,'{n}',index+1);
itemMulTisp=replace(itemMulTisp,'{a}',get(element,"values.fphm.value",''));
itemMulTisp=replace(itemMulTisp,'{b}',get(element,"values.invoice_type.display",""));
itemMulTisp=replace(itemMulTisp,'{c}',multiLang && multiLang.get('refer-XX-0004')||'红字信息单编号');
}else if(['1','3','8','10','12'].some(ele=>{
return ele===element.values.invoice_type.value
})&&!element.values.hcyy.value){
itemMulTisp=replace(itemMulTisp,'{n}',index+1);
itemMulTisp=replace(itemMulTisp,'{a}',get(element,"values.fphm.value",""));
itemMulTisp=replace(itemMulTisp,'{b}',get(element,"values.invoice_type.display",""));
itemMulTisp=replace(itemMulTisp,'{c}',multiLang && multiLang.get('refer-XX-0005')||'红冲原因');
}else{
itemMulTisp='';
}
if(itemMulTisp!==''){
toastMsgs.push(itemMulTisp)
}
});
// 提示信息
// "1058-SQ-0006": "展开",
// "1058-SQ-0007": "收起",
// "1058-SQ-0008": "关闭",
// "refer-XX-0001": "明细",
// "refer-XX-0002": "部分数据不合规,请修改。",
if(toastMsgs.length){
return toast({
color: "danger",
groupOperation: true,
TextArr: [
multiLang && multiLang.get('1058-SQ-0006'),
multiLang && multiLang.get('1058-SQ-0007'),
multiLang && multiLang.get('1058-SQ-0008'),
],
content: multiLang && multiLang.get('refer-XX-0002'),
groupOperationMsg: toastMsgs,
});
}
let newdatas = rows.map((one) => {
return {
pk: one.values.pk.value,
ts: one.values.ts.value,
fphm: one.values.fphm.value,
fpdm: one.values.fpdm.value,
redinfo: one.values.redinfo && one.values.redinfo.value||'',
hcyy: one.values.hcyy && one.values.hcyy.value||'',
}
})
requestApi.RedRush({
data: {data: newdatas},
success: (data) => {
// if (data.msg && data.msg.indexOf('失败明细') == -1) {
// // toast({content: data.msg, color: 'success'});
// showListMessage.call(this, JSON.parse(data.userjson));
// } else {
// toast({content: data.msg, color: 'danger'});
showListMessage.call(this, JSON.parse(data.userjson));
// }
this.props.modal.close('redinfomodal');
}
});
},
cancelBtnClick: ()=>{
this.props.modal.close('redinfomodal');
},
userControl:true,
})}
{this.props.modal.createModal('LnvoiceDownloadTypeModal', {
title: '发票类型',
content: (
<div className="area-content">
<div className="nc-bill-form-area">
{createForm('LnvoiceDownloadType', {
onAfterEvent : this.onAfterEditForm,//表单编辑后事件
})}
</div>
</div>
),
size: '100',
beSureBtnClick: () => {
let formData = this.props.form.getAllFormValue(presetVar.formAreaId);
let formMap = this.props.form.getAllFormValue('LnvoiceDownloadType');
let pk = formData.rows[0].values.pk_invoice.value; //当前发票pk
let {pdf_type, xml_type, ofd_type} = formMap.rows[0].values
let invoiceType = pdf_type.value ? '1' : xml_type.value ? '2' : ofd_type.value ? '3' : '';
if (!invoiceType) {
return toast({
color: 'danger',
content: '请选择下载的文件类型'
})
}
let arrInvoiceTypes=[];
if(pdf_type.value){
arrInvoiceTypes.push('1');
invoiceType='1';
// let params = {pk, invoiceType};
// formDownload({
// params,
// url: '/nccloud/sscivm/ivsale/InvoiceDownloadAction.do',
// // url: '/nccloud/sscivm/ivsale/InvoiceIsDownloadAction.do',
// enctype: 1
// });
}
if(xml_type.value){
arrInvoiceTypes.push('2');
invoiceType='2';
// let params = {pk, invoiceType};
// formDownload({
// params,
// url: '/nccloud/sscivm/ivsale/InvoiceDownloadAction.do',
// // url: '/nccloud/sscivm/ivsale/InvoiceIsDownloadAction.do',
// enctype: 1
// });
}
if(ofd_type.value){
arrInvoiceTypes.push('3');
invoiceType='3';
// let params = {pk, invoiceType};
// formDownload({
// params,
// url: '/nccloud/sscivm/ivsale/InvoiceDownloadAction.do',
// // url: '/nccloud/sscivm/ivsale/InvoiceIsDownloadAction.do',
// enctype: 1
// });
}
let params = {pk, arrInvoiceTypes};
formDownload({
params,
url: '/nccloud/sscivm/ivsale/InvoiceDownloadAction.do',
// url: '/nccloud/sscivm/ivsale/InvoiceIsDownloadAction.do',
enctype: 1
});
this.props.modal.close('LnvoiceDownloadTypeModal')
// let params = {pk, invoiceType};
// requestApi.download({
// data: params,
// success: (res) => {
// formDownload({
// params,
// url: '/nccloud/sscivm/ivsale/InvoiceDownloadAction.do',
// enctype: 1
// });
// }
// })
// formDownload({
// params,
// url: '/nccloud/sscivm/ivsale/InvoiceDownloadAction.do',
// // url: '/nccloud/sscivm/ivsale/InvoiceIsDownloadAction.do',
// enctype: 1
// });
},
cancelBtnClick: () => {
this.props.modal.close('LnvoiceDownloadTypeModal')
},
userControl: true
})}
</div>
)
}
}
let InvoiceSaleCardDom = createPage({
mutiLangCode: '1058',
billinfo: {
billtype: 'card',
pagecode: '105802KP_card',
headcode: 'head',
bodycode: 'invoicebody',
},
})(InvoiceSaleCard);
export default InvoiceSaleCardDom;
/*UFigk5STJwm8UdgGL1uB/XekbNt/WrTNa19WDhPxAaU=*/