import { LightningElement, api, track, wire } from 'lwc'; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; import init from '@salesforce/apex/LexConInvoiceViewController.init'; import save from '@salesforce/apex/LexConInvoiceViewController.save'; import saveFile from '@salesforce/apex/LexConInvoiceViewController.saveFile'; import saveAttachment from '@salesforce/apex/LexConInvoiceViewController.saveAttachment'; import InvoiceorderSearch from '@salesforce/apex/LexConInvoiceViewController.InvoiceorderSearch'; import deleteButton from '@salesforce/apex/LexConInvoiceViewController.deleteButton'; import approval from '@salesforce/apex/LexConInvoiceViewController.approval'; import conInvoiceListInit from '@salesforce/apex/LexConInvoiceList.init'; import invoiceCodeSearch from '@salesforce/apex/LexConInvoiceList.invoiceCodeSearch'; import hospitalInit from '@salesforce/apex/lexSearchAgencyHospitalController.init'; import serContact from '@salesforce/apex/lexSearchAgencyHospitalController.serContact'; import detailsInit from '@salesforce/apex/LexConInvoicedetailsController.init'; import detailsSave from '@salesforce/apex/LexConInvoicedetailsController.save'; import deleteAtt from '@salesforce/apex/LexSummonsCreatController.deleteAtt'; import { NavigationMixin } from 'lightning/navigation'; //table css import { loadStyle } from 'lightning/platformResourceLoader'; import WrappedHeaderTable from '@salesforce/resourceUrl/lexdatatable'; import LexConInvoiceViewReport from '@salesforce/label/c.LexConInvoiceViewReport'; const hospitalColumns = [ { label: '', fieldName: 'Id1', type: 'button', initialWidth: 90, hideDefaultActions: true, typeAttributes: { label: '选择', name: 'Id2', size: 1 } }, { label: '医院名称', fieldName: 'Name', hideDefaultActions: true, wrapText: true }, { label: '省份', fieldName: 'stateMasterName', hideDefaultActions: true } ]; const invoiceDetailsColumns = [ { label: '出库日期', fieldName: 'esdetProductOutDate', hideDefaultActions: true, wrapText: true }, { label: '出库单编码', fieldName: 'esdetInvoicedet1ODlinkName', wrapText: true, hideDefaultActions: true, wrapText: true }, { label: '产品型号', fieldName: 'esdetAssetModelNo', hideDefaultActions: true, wrapText: true, initialWidth: 400 }, { label: '单位', fieldName: 'esdetInvoiceUnit', hideDefaultActions: true, wrapText: true, initialWidth: 50 }, { label: '发票单价', fieldName: 'esdetInvoiceUnitprice', hideDefaultActions: true, wrapText: true, type: 'number', typeAttributes: { minimumFractionDigits: 2 } }, { label: '发票数量', fieldName: 'esdetInvoicedCount', cellAttributes: { alignment: 'right' }, hideDefaultActions: true, wrapText: true }, { label: '发票票面金额(元)', fieldName: 'esdetInvoicedProCostRMB', hideDefaultActions: true, wrapText: true, cellAttributes: { alignment: 'right' }, initialWidth: 145, type: 'number', typeAttributes: { minimumFractionDigits: 2 } } ]; const invoiceColumns = [ { label: '发票日期', fieldName: 'Invoice_Date__c', hideDefaultActions: true, initialWidth: 150 }, { label: '发票号', type: 'url', fieldName: 'NameUrl', typeAttributes: { label: { fieldName: 'Name' } }, hideDefaultActions: true }, { label: '客户名', fieldName: 'ShipmentAccount__c', hideDefaultActions: true, wrapText: true }, { label: '发票状态', fieldName: 'Invoice_status__c', hideDefaultActions: true, initialWidth: 100 }, { label: '发票账面金额(元)', fieldName: 'Invoice_total_amount__c', hideDefaultActions: true, type: 'number', typeAttributes: { minimumFractionDigits: 2 }, initialWidth: 180 }, { label: '发票附件', fieldName: 'Invoice_attachment__c', type: 'boolean', hideDefaultActions: true, initialWidth: 120 }, { label: '发票明细附件', fieldName: 'Invoicedet_attachment__c', type: 'boolean', hideDefaultActions: true, initialWidth: 120 } ]; const detailsColumns = [ { label: '产品型号', fieldName: 'esdAssetModelNo', hideDefaultActions: true, initialWidth: 150, wrapText: true }, { label: '规格', fieldName: 'packingListManual', hideDefaultActions: true, initialWidth: 50 }, { label: '出货单价(元)', fieldName: 'esdDeliveryListRMB', hideDefaultActions: true, initialWidth: 100, type: 'number', typeAttributes: { minimumFractionDigits: 2 } }, { label: '出货数量', fieldName: 'esdShipmentCount', hideDefaultActions: true }, { label: '返品数量', fieldName: 'esdRrturnProCount', hideDefaultActions: true }, { label: '出库单位', fieldName: 'esdBoxPiece', hideDefaultActions: true }, { label: '已发票数量', fieldName: 'esdInvoicedProcount', hideDefaultActions: true, type: 'number', typeAttributes: { minimumFractionDigits: 2 } }, { label: '还没发票数量', fieldName: 'esdInvoiceProNotCount', hideDefaultActions: true, initialWidth: 100, type: 'number', typeAttributes: { minimumFractionDigits: 2 } }, { label: '开票单位', hideDefaultActions: true, type: 'customUnit', typeAttributes: { unitValue: { fieldName: 'unitValue' }, unitOptions: { fieldName: 'unitOptions' }, recordId: { fieldName: 'recordId' }, isDisabled: { fieldName: 'isDisabled' } } }, { label: '发票单价', fieldName: 'esdInvoiceUnitprice', hideDefaultActions: true, type: 'number', typeAttributes: { minimumFractionDigits: 2 }, initialWidth: 130 }, { label: '发票数量', //fieldName: "invoiceCount", hideDefaultActions: true, type: 'customShipment', cellAttributes: { alignment: 'right' }, typeAttributes: { recordId: { fieldName: 'recordId' }, shipmentNumber: { fieldName: 'shipmentNumber' }, isConinvoice: { fieldName: 'isConinvoice' }, esdInvoiceProNotCount: { fieldName: 'esdInvoiceProNotCount' } } }, { label: '发票票面金额(元)', cellAttributes: { alignment: 'right' }, fieldName: 'invoiceAllprice', hideDefaultActions: true, type: 'number', initialWidth: 150, typeAttributes: { minimumFractionDigits: 2 } } ]; const customLabel = { LexConInvoiceViewReport }; export default class LexConInvoiceView extends NavigationMixin( LightningElement ) { @track label = customLabel; invoiceColumns = invoiceColumns; detailsColumns = detailsColumns; @track outboundColumns = [ { label: '出库日期', fieldName: 'esdOutboundDate', hideDefaultActions: true, wrapText: true }, { label: '出库单编码', fieldName: 'esdNameUrl', type: 'url', typeAttributes: { label: { fieldName: 'esdName' }, target: '_blank' }, hideDefaultActions: true, wrapText: true } ]; @track outboundData = []; @track outboundDataSumPrice = []; @track invoiceData = []; @track invoiceAllpriceData = []; @track detailsSelectedRows = []; @track showAttPop = false; @track invoiceId = ''; @track orderId = ''; @track userWorkLocation = ''; @track deliveryId = ''; @track cocId = ''; @track statusEdit = ''; @track coc = {}; @track EditAble = false; @track isChange = false; @track sumPrice = 0.0; @track OrderCode = ''; @track ExistOutbound = false; @track reopen = ''; @track invoiceOrderRecoedschange = []; @track isNew = ''; @track outOrderStringListLwc = []; @track outordercountMapLwc = {}; @track selectedRows = []; @track detailsInvoiceId = ''; @track detailsCocId = ''; @track detailsData = []; @track invoiceAllprice = 0.0; //状态 @track invoiceStatusValue = ''; @track invoiceStatusOptions = []; get Options() { return this.invoiceStatusOptions; } //出库从 @track deliveryFromDate = ''; //出库到 @track deliveryToDate = ''; //发票号 @track category1 = ''; //客户名 @track category2 = ''; @track ConInvoiceListAccountId = ''; @track ConInvoiceListUserWorkLocation = ''; @track ConInvoiceListAgencyProType = ''; //二级经销商 @track provinceOptsMap = []; @track secondaryDistributor = ''; //客户名 @track isModalOpen = false; @track HospitalName = ''; @track HospitalInfo = ''; @track searchHospitalName = ''; @track isDisabledHospitalName = false; @track agencyProType = ''; @track accountid = ''; @track hospitalList = []; hospitalColumns = hospitalColumns; //发票日期 @track InvoiceDate = ''; //科室 @track ForCustomerText = ''; //备注 @track InvoiceNote = ''; //发票明细 @track invoiceOrderdetail1Recoeds = []; invoiceDetailsColumns = invoiceDetailsColumns; //显示 @track isShowSecondaryDistributor = false; @track isEditInvoice = false; @track isShowSpinner = true; @track hideCheckbox = true; @track done = false; @track isConInvoiceList = true; @track isDetailsShow = false; //disable @track isDisabledEdit = false; @track isDisabledReopen = false; @track isDisabledDelete = false; @track isDisabledAttachment = false; @track isOpenReportDisabled = true; //文件上传 @track showLoadingSpinner = false; @track showPopSpinner = false; @track UploadFile = 'Upload File'; @track fileName = ''; @track fileData = []; @track fileColumns = [ { label: '标题', fieldName: 'url', type: 'url', typeAttributes: { label: { fieldName: 'Title' }, target: '_blank' }, hideDefaultActions: true }, { label: '创建人', type: 'url', fieldName: 'CreatedByNameUrl', typeAttributes: { label: { fieldName: 'CreatedByName' }, target: '_blank' }, hideDefaultActions: true }, { label: '上传日期', type: 'date', typeAttributes: { year: 'numeric', month: 'long', day: '2-digit', hour: '2-digit', minute: '2-digit' }, fieldName: 'CreatedDate', hideDefaultActions: true }, { label: '附件类型', type: 'customAttachmentType', typeAttributes: { typeValue: { fieldName: 'typeValue' }, typeOptions: { fieldName: 'typeOptions' }, recordId: { fieldName: 'recordId' }, isDisabledAttachment: { fieldName: 'isDisabledAttachment' } }, hideDefaultActions: true }, { label: '', type: 'tableCellIcon', typeAttributes: { iconName: 'utility:delete', recordId: { fieldName: 'Id' } }, initialWidth: 50, hideDefaultActions: true } ]; filesUploaded = []; fileContents; fileReader; content; MAX_FILE_SIZE = 1500000; stylesLoaded = false; renderedCallback() { if (!this.stylesLoaded) { Promise.all([loadStyle(this, WrappedHeaderTable)]) .then(() => { console.log('Custom styles loaded'); this.stylesLoaded = true; }) .catch((error) => { console.error('Error loading custom styles'); }); } } //获取链接参数 getQueryString(name) { console.log('getQueryString name ' + name); let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); let r = window.location.search.substr(1).match(reg); if (r != null) { return decodeURIComponent(r[2]); } return null; } connectedCallback() { this.init(); } init() { this.isShowSpinner = true; this.deliveryId = this.getQueryString('deliveryId'); this.deliveryId = this.deliveryId == null ? '' : this.deliveryId; this.invoiceId = this.getQueryString('invoiceId'); this.invoiceId = this.invoiceId == null ? '' : this.invoiceId; this.orderId = this.getQueryString('orderId'); this.orderId = this.orderId == null ? '' : this.orderId; this.statusEdit = this.getQueryString('KeyWords'); this.statusEdit = this.statusEdit == null ? '' : this.statusEdit; this.reopen = this.getQueryString('reopen'); this.reopen = this.reopen == null ? '' : this.reopen; this.isNew = this.getQueryString('isNew'); this.isNew = this.isNew == null ? '' : this.isNew; console.log( 'this.deliveryId = ' + this.deliveryId + ' this.invoiceId = ' + this.invoiceId + ' this.statusEdit = ' + this.statusEdit ); if (this.invoiceId != '' && this.orderId != '') { //进入coninvoiceDetails detailsInit({ orderIdLwc: this.orderId, invoiceIdLwc: this.invoiceId }) .then((r) => { r = JSON.parse(JSON.stringify(r)); if (r.status == 'Success') { this.detailsInvoiceId = r.entity.invoicecode.Id; this.detailsCocId = r.entity.coc.Id; this.detailsData = r.entity.consumableorderdetails1Records; for (var i in this.detailsData) { this.detailsData[i]['Id'] = this.detailsData[i].esd.Id; this.detailsData[i]['esdAssetModelNo'] = this.detailsData[i].esd.Asset_Model_No__c; this.detailsData[i]['packingListManual'] = this.detailsData[i].Packing_list_manual; this.detailsData[i]['esdDeliveryListRMB'] = this.detailsData[i].esd.Delivery_List_RMB__c; this.detailsData[i]['esdShipmentCount'] = this.detailsData[i].esd.Shipment_Count__c; this.detailsData[i]['esdRrturnProCount'] = this.detailsData[i].esd.RrturnPro_count__c; this.detailsData[i]['esdBoxPiece'] = this.detailsData[i].esd.Box_Piece__c; this.detailsData[i]['esdInvoicedProcount'] = this.detailsData[i].esd.Invoiced_Procount__c; this.detailsData[i]['esdInvoiceProNotCount'] = this.detailsData[i].esd.InvoiceProNot_count__c; //开票单位 //this.detailsData[i].esd.Box_Piece__c //this.detailsData[i]['unitValue'] = this.detailsData[i].esd.Invoice_Unit__c; this.detailsData[i]['unitValue'] = this.detailsData[i].esd.Box_Piece__c; console.log( 'unitValue = ' + this.detailsData[i]['unitValue'] ); this.detailsData[i]['recordId'] = this.detailsData[i].esd.Id; //disabled="{!IF(records.esd.Box_Piece__c =='个' || (records.esd.Box_Piece__c =='盒' && records.Packing_list_manual ==1),true,false)}" //this.detailsData[i]['isDisabled'] = (this.detailsData[i].esd.Box_Piece__c == '个' || (this.detailsData[i].esd.Box_Piece__c =='盒' && this.detailsData[i].Packing_list_manual ==1)) ? true:false; this.detailsData[i]['isDisabled'] = true; let unitOptions = []; for (var key in this.detailsData[i] .Invoice_UnitOptsMap) { let unitOption = {}; unitOption['label'] = this.detailsData[i].Invoice_UnitOptsMap[ key ]; unitOption['value'] = key; unitOptions.push(unitOption); } this.detailsData[i]['unitOptions'] = unitOptions; this.detailsData[i]['esdInvoiceUnitprice'] = this.detailsData[i].esd.Invoice_Unitprice__c; //发票数量 this.detailsData[i]['shipmentNumber'] = this.detailsData[i].invoiceCount; this.detailsData[i]['isConinvoice'] = true; this.detailsData[i]['invoiceAllprice'] = this.detailsData[i].invoiceAllprice; if (this.detailsData[i].check) { this.detailsSelectedRows.push( this.detailsData[i]['Id'] ); this.invoiceAllprice += this.detailsData[i]['invoiceAllprice']; } } console.log( 'this.detailsData = ' + JSON.stringify(this.detailsData) ); let lastInvoiceAllprice = { invoiceAllprice: this.invoiceAllprice }; this.invoiceAllpriceData.push(lastInvoiceAllprice); console.log( 'this.invoiceAllpriceData = ' + JSON.stringify(this.invoiceAllpriceData) ); this.isShowSpinner = false; this.isDetailsShow = true; } else { this.showMyToast('初始化失败', r.msg, 'Error'); } }) .catch((error) => { this.isShowSpinner = false; console.log('error = ' + JSON.stringify(error)); }); } else if ( this.deliveryId == '' && this.invoiceId == '' && this.isNew == '' ) { console.log('conInvoiceListInit'); conInvoiceListInit() .then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('conInvoiceListInit r = ' + JSON.stringify(r)); if (r.status == 'Success') { this.ConInvoiceListAccountId = r.entity.accountid; this.ConInvoiceListUserWorkLocation = r.entity.userWorkLocation; this.ConInvoiceListAgencyProType = r.entity.agencyProType; //if (this.ConInvoiceListAgencyProType != 'ET') this.isOpenReportDisabled = false; this.invoiceData = r.entity.raesList; for (var i in this.invoiceData) { this.invoiceData[i]['NameUrl'] = '/lexconinvoiceview?invoiceId=' + this.invoiceData[i].Id; } console.log( 'this.invoiceData = ' + JSON.stringify(this.invoiceData) ); for (var key in r.entity.statusMap) { let object = {}; object['label'] = key; object['value'] = r.entity.statusMap[key]; this.invoiceStatusOptions.push(object); } this.invoiceStatusOptions = [ ...this.invoiceStatusOptions ]; console.log( 'this.invoiceStatusOptions = ' + JSON.stringify(this.invoiceStatusOptions) ); this.isShowSpinner = false; } else { this.showMyToast('初始化失败', r.msg, 'Error'); } }) .catch((error) => { console.log('error = ' + JSON.stringify(error)); }); } else { console.log('init'); this.isConInvoiceList = false; init({ invoiceId: this.invoiceId, statusEdit: this.statusEdit, deliveryId: this.deliveryId }) .then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)); if (r.status == 'Success') { this.coc = r.entity.coc; this.cocId = this.coc.Id; this.EditAble = r.entity.EditAble; this.isChange = r.entity.isChange; this.ExistOutbound = r.entity.ExistOutbound; this.outboundData = r.entity.invoiceOrderRecoeds; console.log( 'this.outboundData = ' + JSON.stringify(this.outboundData) ); this.done = r.entity.done; this.accountid = r.entity.accountid; this.userWorkLocation = r.entity.userWorkLocation; this.outOrderStringListLwc = r.entity.outOrderStringList; this.outordercountMapLwc = r.entity.outordercountMap; this.invoiceOrderRecoedschange = r.entity.invoiceOrderRecoedschange; this.isDisabledEdit = this.coc.Invoice_status__c == '提交' || this.coc.Invoice_status__c == '已完成' ? true : false; this.isDisabledReopen = this.coc.Invoice_status__c == '提交' ? false : true; this.isDisabledDelete = this.coc.Invoice_status__c == '草案中' ? false : true; this.isDisabledAttachment = this.coc.Invoice_status__c == '已完成' ? true : false; this.OrderCode = this.coc.Name; this.InvoiceDate = this.coc.Invoice_Date__c; for (var i in this.outboundData) { this.outboundData[i].Id = this.outboundData[i].esd.Id; if (this.outboundData[i].check) this.selectedRows.push( this.outboundData[i].esd.Id ); } this.selectedRows = [...this.selectedRows]; console.log( 'r.entity.attachmentRecoeds = ' + JSON.stringify(r.entity.attachmentRecoeds) ); if (!this.EditAble) { //附件显示 this.showLoadingSpinner = true; this.fileData = r.entity.attachmentRecoeds; for (var i in this.fileData) { this.fileData[i]['Id'] = this.fileData[i].cvInfo.Id; this.fileData[i]['recordId'] = this.fileData[i].cvInfo.Id; this.fileData[i]['url'] = '/' + this.fileData[i].cvInfo.Id; this.fileData[i]['Title'] = this.fileData[i].cvInfo.Title; this.fileData[i]['CreatedByName'] = this.fileData[i].cvInfo.Owner.Name; this.fileData[i]['CreatedByNameUrl'] = '/' + this.fileData[i].cvInfo.OwnerId; this.fileData[i]['CreatedDate'] = this.fileData[i].cvInfo.CreatedDate; this.fileData[i]['attUrl'] = '/' + this.fileData[i].cvInfo.Id; this.fileData[i]['downloadUrl'] = '/sfc/servlet.shepherd/document/download/' + this.fileData[i].cvInfo.ContentDocumentId + '?operationContext=S1'; if (this.isDisabledAttachment) { console.log( '进入this.isDisabledAttachment' ); this.fileData[i][ 'isDisabledAttachment' ] = true; } let typeOptions = []; for (var key in this.fileData[i] .mailSelectOptsMap) { let typeOption = {}; typeOption['label'] = this.fileData[i].mailSelectOptsMap[key]; typeOption['value'] = key; typeOptions.push(typeOption); } this.fileData[i]['typeValue'] = this.fileData[i].mailSelectOptsin == null ? typeOptions[0].value : this.fileData[i].mailSelectOptsin; this.fileData[i]['typeOptions'] = typeOptions; this.fileData[i]['mailSelectOptsin'] = this.fileData[i].mailSelectOptsin == null ? typeOptions[0].value : this.fileData[i].mailSelectOptsin; } console.log( 'this.fileData = ' + JSON.stringify(this.fileData) ); } //发票明细 this.invoiceOrderdetail1Recoeds = r.entity.invoiceOrderdetail1Recoeds; for (var i in this.invoiceOrderdetail1Recoeds) { this.invoiceOrderdetail1Recoeds[i][ 'esdetProductOutDate' ] = this.invoiceOrderdetail1Recoeds[ i ].esdet.Product_OutDate__c; this.invoiceOrderdetail1Recoeds[i][ 'esdetInvoicedet1ODlinkName' ] = this.invoiceOrderdetail1Recoeds[ i ].esdet.Invoicedet1_OD_link__r.Name; this.invoiceOrderdetail1Recoeds[i][ 'esdetAssetModelNo' ] = this.invoiceOrderdetail1Recoeds[ i ].esdet.Asset_Model_No__c; this.invoiceOrderdetail1Recoeds[i][ 'esdetInvoiceUnit' ] = this.invoiceOrderdetail1Recoeds[ i ].esdet.Invoice_Unit__c; this.invoiceOrderdetail1Recoeds[i][ 'esdetInvoiceUnitprice' ] = this.invoiceOrderdetail1Recoeds[ i ].esdet.Invoice_Unitprice__c; this.invoiceOrderdetail1Recoeds[i][ 'esdetInvoicedCount' ] = this.invoiceOrderdetail1Recoeds[ i ].esdet.Invoiced_Count__c; this.invoiceOrderdetail1Recoeds[i][ 'esdetInvoicedProCostRMB' ] = this.invoiceOrderdetail1Recoeds[ i ].esdet.InvoicedProCost_RMB__c; } //客户名 this.HospitalName = r.entity.HospitalName; this.HospitalInfo = r.entity.HospitalInfo; this.agencyProType = r.entity.agencyProType; //if (this.agencyProType != 'ET') this.isOpenReportDisabled = false; //科室 this.ForCustomerText = this.coc.Order_ForCustomerText__c; //备注 this.InvoiceNote = this.coc.Invoice_Note__c; //二级经销商 for (var key in r.entity.provinceOptsMap) { let object = {}; object['label'] = r.entity.provinceOptsMap[key]; object['value'] = key; this.provinceOptsMap.push(object); } //出货一览columns if (this.EditAble) { let object1 = { label: '客户名', fieldName: 'hospitalName', hideDefaultActions: true, wrapText: true }; let object2 = { label: '出货金额(元)', fieldName: 'shipmentAmount', type: 'number', typeAttributes: { minimumFractionDigits: 2 }, hideDefaultActions: true }; let object3 = { label: '返品金额(元)', fieldName: 'returnAmount', type: 'number', typeAttributes: { minimumFractionDigits: 2 }, hideDefaultActions: true }; this.outboundColumns.push(object1); this.outboundColumns.push(object2); this.outboundColumns.push(object3); } let object4 = { label: '未发票金额(元)', fieldName: 'uninvoicedAmount', type: 'number', typeAttributes: { minimumFractionDigits: 2 }, hideDefaultActions: true }; this.outboundColumns.push(object4); //出货一览Data let index = 0; for (var i in this.outboundData) { this.outboundData[i]['esdOutboundDate'] = this.outboundData[i].esd.Outbound_Date__c; this.outboundData[i]['esdNameUrl'] = '/s/lexsummonscreat?ESetid=' + this.outboundData[i].esd.Id; this.outboundData[i]['esdName'] = this.outboundData[i].esd.Name; if (this.EditAble) { this.outboundData[i]['hospitalName'] = this.outboundData[i].esd.ShipmentAccount__c; this.outboundData[i]['shipmentAmount'] = this.outboundData[ i ].esd.Shipment_total_amount__c; this.outboundData[i]['returnAmount'] = this.outboundData[ i ].esd.RrturnPro_total_amount__c; } this.outboundData[i]['uninvoicedAmount'] = this.outboundData[i].esd.InvoiceNotPro_money__c; this.outboundData[i]['invoiceFaceAmount'] = this.keepTwoDecimalStr( this.outboundData[i].needInvoiceCount ); if ( !( this.outboundData[i].esd.Billed_Status__c == '全部开票' || this.EditAble || this.coc.Invoice_status__c != '草案中' ) ) { console.log('进入 if'); let url = '/lexconinvoiceview?orderId=' + this.outboundData[i].esd.Id + '&invoiceId=' + this.invoiceId; this.outboundData[i]['invoiceFaceAmountUrl'] = url; if (index == 0) { let object5 = { label: '发票票面金额(元)', cellAttributes: { alignment: 'right' }, type: 'url', fieldName: 'invoiceFaceAmountUrl', typeAttributes: { label: { fieldName: 'invoiceFaceAmount' } //target: "_blank", }, hideDefaultActions: true }; this.outboundColumns.push(object5); index++; } } else { console.log('进入 else'); if (index == 0) { let object5 = { label: '发票票面金额(元)', cellAttributes: { alignment: 'right' }, fieldName: 'invoiceFaceAmount', hideDefaultActions: true, type: 'number', typeAttributes: { minimumFractionDigits: 2 } }; this.outboundColumns.push(object5); index++; } } //计算发票票面金额 this.sumPrice += this.outboundData[i].needInvoiceCount; } //四舍五入 //this.sumPrice = this.sumPrice.toFixed(2); //如果不四舍五入 console.log('start keepTwoDecimalStr'); this.sumPrice = this.keepTwoDecimalStr(this.sumPrice); console.log('end keepTwoDecimalStr = ' + this.sumPrice); //加最后一行显示金额 if (this.EditAble) { let lastOutboundData = { invoiceFaceAmount: this.sumPrice }; this.outboundDataSumPrice.push(lastOutboundData); } this.outboundColumns = [...this.outboundColumns]; this.isEditInvoice = !(!this.EditAble || this.isChange); if ( this.coc.SummonsForDirction__c == '销售给二级经销商' ) this.isShowSecondaryDistributor = true; if ( this.deliveryId == '' && !this.ExistOutbound && this.EditAble ) this.hideCheckbox = false; this.isShowSpinner = false; this.showLoadingSpinner = false; } else { this.showMyToast('失败', r.msg, 'Error'); } }) .catch((error) => { console.log('error = ' + JSON.stringify(error)); }); } } //上传配置单 uploadOrder(event) { this.showAttPop = true; } //关闭附件弹窗 closePop() { this.showAttPop = false; this.filesUploaded = []; this.fileName = null; } //附件change事件 attChange(event) { if (event.target.files.length > 0) { this.filesUploaded = event.target.files; this.fileName = event.target.files[0].name; console.log('this.fileName:' + this.fileName); } } //移除附件 removeAtt() { this.filesUploaded = []; this.fileName = ''; } //是否显示附件移除 get attDelBtn() { if ( this.fileName != '' && this.fileName != null && this.fileName != '选择一个文件上传' ) { return true; } else { return false; } } keepTwoDecimalStr(num) { const result = Number(num.toString().match(/^\d+(?:\.\d{0,2})?/)); let s = result.toString(); let rs = s.indexOf('.'); if (rs < 0) { rs = s.length; s += '.'; } while (s.length <= rs + 2) { s += '0'; } return s; } dataChange(event) { let fieldName = event.target.getAttribute('data-field'); let value = event.detail.value; console.log('fieldName = ' + fieldName + ' value = ' + value); switch (fieldName) { case 'OrderCode': this.OrderCode = value; this.coc['Name'] = value; break; case 'ForCustomerText': this.ForCustomerText = value; this.coc['Order_ForCustomerText__c'] = value; break; case 'InvoiceDate': this.InvoiceDate = value; this.coc['Invoice_Date__c'] = value; break; case 'secondaryDistributor': this.secondaryDistributor = value; break; case 'deliveryFromDate': this.deliveryFromDate = value; break; case 'deliveryToDate': this.deliveryToDate = value; break; case 'category1': this.category1 = value; break; case 'category2': this.category2 = value; break; case 'invoiceStatus': this.invoiceStatusValue = value; break; case 'searchHospitalName': this.searchHospitalName = value; break; case 'InvoiceNote': this.InvoiceNote = value; this.coc['Invoice_Note__c'] = value; break; } } invoiceDateChange(event) { this.InvoiceDate = event.detail.value; this.coc['Invoice_Date__c'] = event.detail.value; console.log('this.InvoiceDate = ' + this.InvoiceDate); } //搜索客户名 searchHospitalNameModal() { console.log('searchHospitalNameModal'); hospitalInit({ ctype: this.agencyProType }).then((r) => { r = JSON.parse(JSON.stringify(r)); if (r.status == 'Success') { this.hospitalList = r.entity.at; for (var i in this.hospitalList) { this.hospitalList[i]['stateMasterName'] = this.hospitalList[i].State_Master__r.Name; } console.log( 'hospitalInit r = ' + JSON.stringify(this.hospitalList) ); this.isModalOpen = true; } }); } searchHospital() { console.log('this.searchHospitalName = ' + this.searchHospitalName); serContact({ searchName: this.searchHospitalName, ctype: this.agencyProType }).then((r) => { r = JSON.parse(JSON.stringify(r)); if (r.status == 'Success') { this.hospitalList = r.entity.at; for (var i in this.hospitalList) { this.hospitalList[i]['stateMasterName'] = this.hospitalList[i].State_Master__r.Name; } console.log( 'hospitalInit r = ' + JSON.stringify(this.hospitalList) ); } }); } //选择客户名 searchHandleRowAction(event) { console.log('searchHandleRowAction'); let row = event.detail.row; this.HospitalInfo = row.Id; this.HospitalName = row.Name; console.log( 'this.HospitalInfo = ' + this.HospitalInfo + ' this.HospitalName = ' + this.HospitalName ); this.isModalOpen = false; } //当客户名是空时。客户id也变为空 clearAgencyI(event) { this.HospitalName = event.target.value; if (this.HospitalName == '' || this.HospitalName == null) { this.HospitalInfo = ''; } console.log('this.HospitalName = ' + this.HospitalName); console.log('this.HospitalInfo = ' + this.HospitalInfo); } closeModal() { this.isModalOpen = false; } SaveJs() { this.isShowSpinner = true; let cloneData = this.outboundData; debugger; const selectedRows = this.template .querySelector("[data-field='outbound']") .getSelectedRows(); console.log('selectedRows = ' + JSON.stringify(selectedRows)); for (var i in cloneData) { let b = false; for (var j in selectedRows) { if (cloneData[i].esd.Id == selectedRows[j].esd.Id) { b = true; cloneData[i].check = true; } } if (!b) { cloneData[i].check = false; } delete cloneData[i].esdOutboundDate; delete cloneData[i].esdNameUrl; delete cloneData[i].esdName; delete cloneData[i].hospitalName; delete cloneData[i].shipmentAmount; delete cloneData[i].returnAmount; delete cloneData[i].uninvoicedAmount; delete cloneData[i].invoiceFaceAmount; delete cloneData[i].invoiceFaceAmountUrl; } console.log('this.coc = ' + JSON.stringify(this.coc)); console.log('this.HospitalName = ' + this.HospitalName); console.log('this.HospitalInfo = ' + this.HospitalInfo); console.log('this.secondaryDistributor = ' + this.secondaryDistributor); console.log('this.outboundData = ' + JSON.stringify(cloneData)); console.log('this.deliveryId = ' + this.deliveryId); console.log('this.invoiceId = ' + this.invoiceId); console.log('this.accountid = ' + this.accountid); console.log('this.agencyProType = ' + this.agencyProType); console.log('this.reopen = ' + this.reopen); console.log( 'this.invoiceOrderRecoedschangeLwc = ' + JSON.stringify(this.invoiceOrderRecoedschange) ); save({ cocLwc: this.coc, HospitalNameLwc: this.HospitalName, HospitalInfoLwc: this.HospitalInfo, SecondDealerLwc: this.secondaryDistributor, invoiceOrderRecoedsLwc: JSON.stringify(cloneData), deliveryIdLwc: this.deliveryId, invoiceIdLwc: this.invoiceId, accountidLwc: this.accountid, agencyProTypeLwc: this.agencyProType, reopenLwc: this.reopen, invoiceOrderRecoedschangeLwc: JSON.stringify( this.invoiceOrderRecoedschange ) }) .then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)); if (r.status == 'Success' && r.msg == '') { this.isShowSpinner = false; console.log('save success'); let url = '/lexconinvoiceview?invoiceId=' + r.entity.invoiceId; console.log('url = ' + url); this[NavigationMixin.Navigate]({ type: 'standard__webPage', attributes: { url: url } }); } else { this.showMyToast('保存失败', r.msg, 'Error'); } }) .catch((error) => { console.log('error = ' + JSON.stringify(error)); }); } //上传附件,直接就保存好,然后展示 handleFilesChange(event) { console.log('handleFilesChange'); this.handleSave(); // if (event.target.files.length > 0) { // this.filesUploaded = event.target.files; // this.fileName = event.target.files[0].name; // this.handleSave(); // } } handleSave() { console.log('saveFile'); if (this.filesUploaded.length > 0) { this.showPopSpinner = true; this.file = this.filesUploaded[0]; if (this.file.size > this.MAX_FILE_SIZE) { this.showMyToast('保存失败', '文件过大', 'Error'); return; } this.fileReader = new FileReader(); this.fileReader.onloadend = () => { this.fileContents = this.fileReader.result; let base64 = 'base64,'; this.content = this.fileContents.indexOf(base64) + base64.length; this.fileContents = this.fileContents.substring(this.content); this.saveToFile(); }; this.fileReader.readAsDataURL(this.file); } else { this.fileName = '选择一个文件上传'; } } saveToFile() { console.log('saveToFile'); console.log('invoiceId = ' + this.invoiceId); console.log('fileName = ' + this.fileName); console.log('base64Data = ' + encodeURIComponent(this.fileContents)); saveFile({ recordId: this.invoiceId, fileName: this.fileName, base64Data: encodeURIComponent(this.fileContents) }) .then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)); if (r != '') { this.showPopSpinner = false; this.showMyToast('上传成功', '', 'Success'); this.closePop(); this.init(); } else { this.showMyToast('上传失败', r.msg, 'Error'); } }) .catch((error) => { console.log('error = ' + error.message); this.showMyToast('错误', '上传失败', 'Error'); }); } handleTypeChange(event) { console.log('handleTypeChange'); const typeDetail = event.detail; console.log('typeDetail = ' + JSON.stringify(typeDetail)); for (var i in this.fileData) { if (this.fileData[i].recordId == typeDetail.data.recordId) { this.fileData[i].typeValue = typeDetail.data.typeValue; this.fileData[i].mailSelectOptsin = typeDetail.data.typeValue; } } console.log('this.fileData = ' + JSON.stringify(this.fileData)); } newInvoiceJs() { let url = '/lexconinvoiceview?isNew=yes'; console.log('url = ' + url); this[NavigationMixin.Navigate]({ type: 'standard__webPage', attributes: { url: url } }); } saveAttachmentJs() { debugger; this.showLoadingSpinner = true; let cloneData = this.deepClone(this.fileData); for (var i in cloneData) { delete cloneData[i].Id; delete cloneData[i].recordId; delete cloneData[i].url; delete cloneData[i].Title; delete cloneData[i].CreatedByName; delete cloneData[i].CreatedByNameUrl; delete cloneData[i].CreatedDate; delete cloneData[i].typeValue; delete cloneData[i].typeOptions; delete cloneData[i].mailSelectOptsMap; } console.log('cloneData = ' + JSON.stringify(cloneData)); saveAttachment({ attachmentRecoedsLwc: JSON.stringify(cloneData), invoiceId: this.invoiceId }) .then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)); if (r.status == 'Success') { this.showLoadingSpinner = false; this.isShowSpinner = true; // const event = new ShowToastEvent({ // title: 'Success', // variant: 'Success', // message: '保存成功', // }); // this.dispatchEvent(event); this.showMyToast('附件保存成功', '', 'Success'); //this.init(); setTimeout(function () { //1秒后执行刷新 window.location.reload(); }, 2000); //单位是毫秒 // let url = "/lexconinvoiceview?invoiceId=" + this.invoiceId; // console.log('url = ' + url); // this[NavigationMixin.Navigate]({ // type: "standard__webPage", // attributes: { // url: url, // }, // }); } else { this.showMyToast('上传失败', r.msg, 'Error'); } }) .catch((error) => { console.log('error = ' + error.message); this.showMyToast('错误', '上传失败', 'Error'); }); } invoiceCodeSearchJs() { this.isShowSpinner = true; invoiceCodeSearch({ orderDateLwc: this.deliveryFromDate == null ? null : new Date(this.deliveryFromDate), deliverDateLwc: this.deliveryToDate == null ? null : new Date(this.deliveryToDate), invoiceStatusLwc: this.invoiceStatusValue, category1Lwc: this.category1, category2Lwc: this.category2, accountidLwc: this.ConInvoiceListAccountId, userWorkLocationLwc: this.ConInvoiceListUserWorkLocation, agencyProTypeLwc: this.ConInvoiceListAgencyProType }) .then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)); if (r.status == 'Success') { this.invoiceData = r.entity.raesList; for (var i in this.invoiceData) { this.invoiceData[i]['NameUrl'] = '/lexconinvoiceview?invoiceId=' + this.invoiceData[i].Id; } console.log( 'this.invoiceData = ' + JSON.stringify(this.invoiceData) ); this.isShowSpinner = false; if (r.entity.raesListSize > 0) { this.showMyToast( '搜索成功', '共检索到' + r.entity.raesListSize + '个发票', 'Success' ); } else { this.showMyToast( '搜索失败', '没有搜索到相关发票', 'Error' ); } } else { this.showMyToast('搜索失败', r.msg, 'Error'); } }) .catch((error) => { console.log('error = ' + error.message); this.showMyToast('错误', '搜索失败', 'Error'); }); } ClearJs() { this.deliveryFromDate = ''; this.deliveryToDate = ''; this.category1 = ''; this.category2 = ''; this.invoiceStatusValue = ''; this.isShowSpinner = true; conInvoiceListInit() .then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('conInvoiceListInit r = ' + JSON.stringify(r)); if (r.status == 'Success') { this.invoiceData = r.entity.raesList; for (var i in this.invoiceData) { this.invoiceData[i]['NameUrl'] = '/lexconinvoiceview?invoiceId=' + this.invoiceData[i].Id; } console.log( 'this.invoiceData = ' + JSON.stringify(this.invoiceData) ); this.isShowSpinner = false; } else { this.showMyToast('搜索失败', r.msg, 'Error'); } }) .catch((error) => { console.log('error = ' + JSON.stringify(error)); }); } InvoiceorderSearchJs() { this.isShowSpinner = true; debugger; let cloneData = this.outboundData; const selectedRows = this.template .querySelector("[data-field='outbound']") .getSelectedRows(); console.log('selectedRows ' + JSON.stringify(selectedRows)); for (var i in cloneData) { let b = false; for (var j in selectedRows) { if (cloneData[i].esd.Id == selectedRows[j].esd.Id) { b = true; cloneData[i].check = true; } } if (!b) { cloneData[i].check = false; } delete cloneData[i].esdOutboundDate; delete cloneData[i].esdNameUrl; delete cloneData[i].esdName; delete cloneData[i].hospitalName; delete cloneData[i].shipmentAmount; delete cloneData[i].returnAmount; delete cloneData[i].uninvoicedAmount; delete cloneData[i].invoiceFaceAmount; delete cloneData[i].invoiceFaceAmountUrl; } console.log('this.coc = ' + JSON.stringify(this.coc)); console.log('this.invoiceId = ' + this.invoiceId); console.log('this.accountid = ' + this.accountid); console.log('this.userWorkLocation = ' + this.userWorkLocation); console.log('this.agencyProType = ' + this.agencyProType); console.log('this.HospitalInfo = ' + this.HospitalInfo); console.log('SecondDealer = ' + this.secondaryDistributor); console.log('invoiceOrderRecoedsLwc = ' + JSON.stringify(cloneData)); InvoiceorderSearch({ cocLwc: this.coc, invoiceIdLwc: this.invoiceId, accountidLwc: this.accountid, userWorkLocationLwc: this.userWorkLocation, agencyProTypeLwc: this.agencyProType, HospitalInfoLwc: this.HospitalInfo, SecondDealerLwc: this.secondaryDistributor, invoiceOrderRecoedsLwc: JSON.stringify(cloneData) }) .then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)); if (r.status == 'Success') { this.outboundData = r.entity.invoiceOrderRecoeds; console.log( 'this.outboundData = ' + JSON.stringify(this.outboundData) ); let index = 0; this.selectedRows = []; for (var i in this.outboundData) { if (this.outboundData[i].check) this.selectedRows.push(this.outboundData[i].esd.Id); this.outboundData[i].Id = this.outboundData[i].esd.Id; this.outboundData[i]['esdOutboundDate'] = this.outboundData[i].esd.Outbound_Date__c; this.outboundData[i]['esdNameUrl'] = '/s/lexsummonscreat?ESetid=' + this.outboundData[i].esd.Id; this.outboundData[i]['esdName'] = this.outboundData[i].esd.Name; if (this.EditAble) { this.outboundData[i]['hospitalName'] = this.outboundData[i].esd.ShipmentAccount__c; this.outboundData[i]['shipmentAmount'] = this.outboundData[ i ].esd.Shipment_total_amount__c; this.outboundData[i]['returnAmount'] = this.outboundData[ i ].esd.RrturnPro_total_amount__c; } this.outboundData[i]['uninvoicedAmount'] = this.outboundData[i].esd.InvoiceNotPro_money__c; this.outboundData[i]['invoiceFaceAmount'] = this.outboundData[i].needInvoiceCount; if ( !( this.outboundData[i].esd.Billed_Status__c == '全部开票' || this.EditAble || this.coc.Invoice_status__c != '草案中' ) ) { //let url = "/ConInvoicedetails?orderId=" + this.outboundData[i].esd.Id + "&invoiceId=" + this.invoiceId; let url = '/s/lexconinvoiceview?orderId=' + this.outboundData[i].esd.Id + '&invoiceId=' + this.invoiceId; this.outboundData[i]['invoiceFaceAmountUrl'] = url; if (index == 0) { let object5 = { label: '发票票面金额(元)', cellAttributes: { alignment: 'right' }, type: 'url', fieldName: 'invoiceFaceAmountUrl', typeAttributes: { label: { fieldName: 'invoiceFaceAmount' }, target: '_blank' }, hideDefaultActions: true }; this.outboundColumns.push(object5); index++; } } else { if (index == 0) { let object5 = { label: '发票票面金额(元)', cellAttributes: { alignment: 'right' }, fieldName: 'invoiceFaceAmount', hideDefaultActions: true }; this.outboundColumns.push(object5); index++; } } //计算发票票面金额 this.sumPrice += this.outboundData[i].needInvoiceCount; } console.log( 'this.selectedRows = ' + JSON.stringify(this.selectedRows) ); this.isShowSpinner = false; } else { this.showMyToast('搜索失败', r.msg, 'Error'); } }) .catch((error) => { console.log('error = ' + error.message); this.showMyToast('错误', '搜索失败', 'Error'); }); } getSelectedRows(event) { // console.log("getSelectedRows "); // for (var i in this.outboundData) { // this.outboundData[i].check = false; // } // const selectedRows = event.detail.selectedRows; // for (var i in this.outboundData) { // for (var j in selectedRows) { // if (this.outboundData[i].esd.Id == selectedRows[j].esd.Id) { // //this.outboundData[i].check = !this.outboundData[i].check; // this.outboundData[i].check = true; // } // } // } // console.log('this.outboundData = ' + JSON.stringify(this.outboundData)); } deleteButtonJs() { this.isShowSpinner = true; deleteButton({ cocLwc: this.coc, invoiceIdLwc: this.invoiceId }) .then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)); if (r.status == 'Success') { this.isShowSpinner = false; let url = '/lexconinvoiceview'; console.log('url = ' + url); this[NavigationMixin.Navigate]({ type: 'standard__webPage', attributes: { url: url } }); } else { this.showMyToast('删除失败', r.msg, 'Error'); } }) .catch((error) => { console.log('error = ' + error.message); }); } SetEditAbleJs() { let statusEditAbleJs = 'Redirect'; let url = '/lexconinvoiceview?invoiceId=' + this.invoiceId + '&KeyWords=' + statusEditAbleJs; console.log('url = ' + url); this[NavigationMixin.Navigate]({ type: 'standard__webPage', attributes: { url: url } }); } approvalJs() { this.isShowSpinner = true; approval({ outOrderStringListLwc: this.outOrderStringListLwc, outordercountMapLwc: this.outordercountMapLwc, invoiceIdLwc: this.invoiceId }) .then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)); if (r.status == 'Success') { this.isShowSpinner = false; let url = '/s/lexconinvoiceview?invoiceId=' + this.invoiceId; console.log('url = ' + url); window.open(url, '_self'); // this[NavigationMixin.Navigate]({ // type: "standard__webPage", // attributes: { // url: url, // }, // }); } else { this.showMyToast('错误', r.msg, 'Error'); } }) .catch((error) => { console.log('error = ' + error.message); }); } openReportJs() { console.log('openReportJs'); let reportUrl = this.label.LexConInvoiceViewReport; let reportFilters = '[{"operator":"equals","value":"' + this.OrderCode + '","column":"FK_NAME"}]'; console.log('reportUrl = ' + reportUrl); let url = '/s/report/' + reportUrl + '?reportFilters=' + encodeURIComponent(reportFilters); window.open(url); // this[NavigationMixin.Navigate]({ // type: "standard__webPage", // attributes: { // url: url, // target: '_blank' // }, // }); } reopenJs() { // statusEdit = 'Redirect'; // PageReference ref = new Pagereference('/ConInvoiceView?invoiceId=' + invoiceId + '&reopen=isreopen' + '&KeyWords=' + statusEdit); let statusEditAbleJs = 'Redirect'; let url = '/lexconinvoiceview?invoiceId=' + this.invoiceId + '&reopen=isreopen' + '&KeyWords=' + statusEditAbleJs; console.log('url = ' + url); this[NavigationMixin.Navigate]({ type: 'standard__webPage', attributes: { url: url } }); } showMyToast(title, message, variant) { this.isShowSpinner = false; this.showLoadingSpinner = false; this.showPopSpinner = false; this.showAttPop = false; this.filesUploaded = []; this.fileName = null; console.log('show custom message'); var iconName = ''; var content = ''; if (variant.toLowerCase() == 'success') { iconName = 'utility:check'; } else { iconName = 'utility:error'; } if (message != '') { content = '

' + title + '

' + message + '
'; } else { content = '

' + title + '

'; } this.template .querySelector('c-common-toast') .showToast(variant, content, iconName, 10000); } handleLoad() { console.log('handleLoad'); try { const style = document.createElement('style'); style.innerText = '.hehe-layoutItem .slds-button__icon {display: none;}'; this.template.querySelector('.hideHelpText').appendChild(style); const style2 = document.createElement('style'); style2.innerText = '.hehe-layoutItem .slds-form-element__label {padding : 0px}'; this.template.querySelector('.hideHelpText').appendChild(style2); const style3 = document.createElement('style'); style3.innerText = '.readOnly .slds-form-element__label {padding-top: 7px;}'; this.template.querySelector('.hideHelpText').appendChild(style3); } catch (error) { console.log(error); } } keepTwoDecimalStr(num) { const result = Number(num.toString().match(/^\d+(?:\.\d{0,2})?/)); let s = result.toString(); let rs = s.indexOf('.'); if (rs < 0) { rs = s.length; s += '.'; } while (s.length <= rs + 2) { s += '0'; } return s; } handleLoad2() { console.log('handleLoad2'); try { const style = document.createElement('style'); style.innerText = '.hehe-layoutItem .slds-button__icon {display: none;}'; this.template.querySelector('.hideHelpText').appendChild(style); const style2 = document.createElement('style'); style2.innerText = '.hehe-layoutItem .slds-form-element__label {padding : 0px}'; this.template.querySelector('.hideHelpText').appendChild(style2); } catch (error) { console.log(error); } } handleUnitChange(event) { console.log('handleUnitChange'); this.invoiceAllpriceData[0].invoiceAllprice = 0.0; const unitDetail = event.detail; console.log('unitDetail = ' + JSON.stringify(unitDetail)); for (var i in this.detailsData) { if (this.detailsData[i].recordId == unitDetail.data.recordId) { this.detailsData[i].unitValue = unitDetail.data.unitValue; this.detailsData[i].esd.Invoice_Unit__c = unitDetail.data.unitValue; if ( this.detailsSelectedRows.indexOf( this.detailsData[i].recordId ) == -1 ) this.detailsSelectedRows.push(this.detailsData[i].recordId); } } this.detailsSelectedRows = [...this.detailsSelectedRows]; console.log( 'this.detailsSelectedRows = ' + JSON.stringify(this.detailsSelectedRows) ); for (var i in this.detailsData) { this.detailsData[i].invoiceAllprice = 0.0; for (var j in this.detailsSelectedRows) { console.log( 'this.detailsData[i].Id = ' + this.detailsData[i].Id ); console.log( 'this.detailsSelectedRows[j] = ' + this.detailsSelectedRows[j] ); if (this.detailsData[i].Id == this.detailsSelectedRows[j]) { this.detailsData[i].invoiceAllprice = this.amend( this.detailsData[i].shipmentNumber, this.detailsData[i].esdInvoiceUnitprice, '*' ); console.log( 'this.detailsData[i].invoiceAllprice = ' + this.detailsData[i].invoiceAllprice ); } } this.invoiceAllpriceData[0].invoiceAllprice = this.amend( this.invoiceAllpriceData[0].invoiceAllprice, this.detailsData[i].invoiceAllprice, '+' ); } this.detailsData = [...this.detailsData]; this.invoiceAllpriceData = [...this.invoiceAllpriceData]; } handleShipmentNumber(event) { console.log('handleShipmentNumber'); this.invoiceAllpriceData[0].invoiceAllprice = 0.0; const numberDetail = event.detail; console.log('numberDetail = ' + JSON.stringify(numberDetail)); if (numberDetail.data.shipmentnumber == 0) { if ( this.detailsSelectedRows.indexOf(numberDetail.data.recordId) != -1 ) { this.detailsSelectedRows.splice( this.detailsSelectedRows.indexOf( numberDetail.data.recordId ), 1 ); } } console.log( 'start this.detailsSelectedRows = ' + JSON.stringify(this.detailsSelectedRows) ); console.log('numberDetail = ' + JSON.stringify(numberDetail)); for (var i in this.detailsData) { if (this.detailsData[i].recordId == numberDetail.data.recordId) { this.detailsData[i].shipmentNumber = Number( numberDetail.data.shipmentnumber ); this.detailsData[i].invoiceCount = Number( numberDetail.data.shipmentnumber ); if ( this.detailsSelectedRows.indexOf( this.detailsData[i].recordId ) == -1 && numberDetail.data.shipmentnumber != 0 ) this.detailsSelectedRows.push(this.detailsData[i].recordId); } } console.log( 'end this.detailsSelectedRows = ' + JSON.stringify(this.detailsSelectedRows) ); this.detailsSelectedRows = [...this.detailsSelectedRows]; console.log( 'this.detailsSelectedRows = ' + JSON.stringify(this.detailsSelectedRows) ); for (var i in this.detailsData) { this.detailsData[i].invoiceAllprice = 0.0; for (var j in this.detailsSelectedRows) { console.log( 'this.detailsData[i].Id = ' + this.detailsData[i].Id ); console.log( 'this.detailsSelectedRows[j] = ' + this.detailsSelectedRows[j] ); if (this.detailsData[i].Id == this.detailsSelectedRows[j]) { this.detailsData[i].invoiceAllprice = this.amend( this.detailsData[i].shipmentNumber, this.detailsData[i].esdInvoiceUnitprice, '*' ); console.log( 'this.detailsData[i].invoiceAllprice = ' + this.detailsData[i].invoiceAllprice ); } } this.invoiceAllpriceData[0].invoiceAllprice = this.amend( this.invoiceAllpriceData[0].invoiceAllprice, this.detailsData[i].invoiceAllprice, '+' ); } this.detailsData = [...this.detailsData]; this.invoiceAllpriceData = [...this.invoiceAllpriceData]; } detailsGetSelectedRows(event) { console.log('detailsGetSelectedRows '); this.invoiceAllpriceData[0].invoiceAllprice = 0.0; let selectedRows = event.detail.selectedRows; for (var i in this.detailsData) { this.detailsData[i].invoiceAllprice = 0.0; for (var j in selectedRows) { if (this.detailsData[i].Id == selectedRows[j].esd.Id) { this.detailsData[i].invoiceAllprice = this.amend( this.detailsData[i].shipmentNumber, this.detailsData[i].esdInvoiceUnitprice, '*' ); console.log( 'this.detailsData[i].invoiceAllprice = ' + this.detailsData[i].invoiceAllprice ); } } this.invoiceAllpriceData[0].invoiceAllprice = this.amend( this.invoiceAllpriceData[0].invoiceAllprice, this.detailsData[i].invoiceAllprice, '+' ); console.log( 'this.invoiceAllpriceData[0].invoiceAllprice = ' + this.invoiceAllpriceData[0].invoiceAllprice ); } console.log( 'start this.detailsData = ' + JSON.stringify(this.detailsData) ); this.detailsData = [...this.detailsData]; console.log( 'end this.detailsData = ' + JSON.stringify(this.detailsData) ); this.invoiceAllpriceData = [...this.invoiceAllpriceData]; } ComputePrice(index, number, price) { console.log('index = ' + index); console.log('number = ' + number); console.log('price = ' + price); let shipmentAmount = this.amend(number, price, '*'); console.log('shipmentAmount = ' + shipmentAmount); let sumPrice = 0.0; this.data[index].shipmentAmount = shipmentAmount; for (var i in this.data) { if (this.data[i].shipmentAmount) sumPrice += this.data[i].shipmentAmount; } this.sumPrice = sumPrice + '元'; //存下选择行,不会被清空 if (this.selectedRows.indexOf(this.data[index].Id) == -1) this.selectedRows.push(this.data[index].Id); this.data = [...this.data]; this.selectedRows = [...this.selectedRows]; console.log('this.selectedRows = ' + JSON.stringify(this.selectedRows)); console.log('this.data = ' + JSON.stringify(this.data)); } deepClone(obj) { return JSON.parse(JSON.stringify(obj)); } detailsSaveJs() { this.isShowSpinner = true; let cloneData = this.deepClone(this.detailsData); let selectedRows = this.template .querySelector('c-lex-custom-lightning-datatable') .getSelectedRows(); console.log('selectedRows = ' + JSON.stringify(selectedRows)); for (var i in cloneData) { delete cloneData[i].Id; delete cloneData[i].esdAssetModelNo; delete cloneData[i].packingListManual; delete cloneData[i].esdDeliveryListRMB; delete cloneData[i].esdShipmentCount; delete cloneData[i].esdRrturnProCount; delete cloneData[i].esdBoxPiece; delete cloneData[i].esdInvoicedProcount; delete cloneData[i].esdInvoiceProNotCount; delete cloneData[i].unitValue; delete cloneData[i].recordId; delete cloneData[i].unitOptions; delete cloneData[i].esdInvoiceUnitprice; delete cloneData[i].shipmentNumber; delete cloneData[i].invoiceAllprice; for (var j in selectedRows) { if (cloneData[i].esd.Id == selectedRows[j].esd.Id) { cloneData[i]['check'] = true; } } } console.log('cloneData = ' + JSON.stringify(cloneData)); detailsSave({ consumableorderdetails1RecordsLwc: JSON.stringify(cloneData), invoiceIdLwc: this.invoiceId, orderIdLwc: this.orderId }) .then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)); if (r.status == 'Success') { let url = '/lexconinvoiceview?invoiceId=' + this.invoiceId; this[NavigationMixin.Navigate]({ type: 'standard__webPage', attributes: { url: url } }); } else { this.showMyToast('保存失败', r.msg, 'Error'); } }) .catch((error) => { console.log('error = ' + error.message); }); } //num1 num2传入两个值 symbol +-*/符号 amend(num1, num2, symbol) { var str1 = num1.toString(), str2 = num2.toString(), result, str1Length, str2Length; //解决整数没有小数点方法 try { str1Length = str1.split('.')[1].length; } catch (error) { str1Length = 0; } try { str2Length = str2.split('.')[1].length; } catch (error) { str2Length = 0; } var step = Math.pow(10, Math.max(str1Length, str2Length)); switch (symbol) { case '+': result = (num1 * step + num2 * step) / step; break; case '-': result = (num1 * step - num2 * step) / step; break; case '*': result = (num1 * step * (num2 * step)) / step / step; break; case '/': result = (num1 * step) / (num2 * step); break; default: break; } return result; } //删除附件 deleteAtt(event) { this.isShowSpinner = true; //var recordId = event.detail.data.recordId; var recordId = event.target.getAttribute('data-fileid'); console.log('attid:' + recordId); deleteAtt({ contentVersionId: recordId }) .then((r) => { r = JSON.parse(JSON.stringify(r)); if (r.status == 'Success') { this.showMyToast('删除成功', '', 'Success'); if (this.fileData.length == 1) window.location.reload(); else this.init(); } else { this.showMyToast('删除失败', r.msg, 'Error'); } }) .catch((error) => { this.showMyToast('错误', error.message, 'Error'); }); } }