376 lines
18 KiB
JavaScript
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=*/ |