import { LightningElement, track, api, wire } from 'lwc'; import getWrapperClassList from '@salesforce/apex/lexBatchApprovalRecordsController.getSubmittedRecords'; import processRecords from '@salesforce/apex/lexBatchApprovalRecordsController.processRecords'; import gettotalcount from '@salesforce/apex/lexBatchApprovalRecordsController.gettotalcount'; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; import { NavigationMixin } from 'lightning/navigation'; import { refreshApex } from '@salesforce/apex'; export default class lexBatchApprovalRecords extends LightningElement { @api wrapperList = []; @api draftValues = []; @track error; @track sortBy; @track sortDirection; @track bShowModal = false; @track selectedcommentrowno; @track icomments = ''; @track record; @track queryOffset; @track queryLimit; @track totalRecordCount; @track showinfiniteLoadingSpinner = true; @track showLoadingSpinner = false; @track isDialogVisible = false; @track originalMessage; @track wrapperListtrue = true; @track title; @api footertext; @track enable_app_rej = true; comment; @track columns = [ /* { label: '#', fieldName: 'recordId', type: 'url', initialWidth:50, typeAttributes: { label: 'View', target: '_blank' } },*/ // { // // label: '操作', // type: 'button-icon', // fixedWidth: 60, // typeAttributes: { // iconName: 'utility:preview', // name: 'view_record', // title: '查看相关项', // variant: 'border-filled', // alternativeText: '查看相关项', // disabled: false // } // }, // { // type: 'button-icon', // fixedWidth: 40, // typeAttributes: { // iconName: 'utility:comments', // name: 'submitter_comments', // title: 'Submitter comments', // variant: 'border-filled', // alternativeText: 'Submitter comments', // disabled: false // } // }, // { // label: '相关项', // fieldName: 'recordName', // type: 'text', // initialWidth: 120, // wrapText: true, // sortable: true // }, { label: '相关项', fieldName: 'nameUrl', type: 'url', // initialWidth: 250, typeAttributes: { label: { fieldName: 'recordName' }, target: '_blank' }, wrapText: true, sortable: true }, { label: '类型', fieldName: 'relatedTo', type: 'text', // initialWidth: 120, sortable: true }, { label: '提交人', fieldName: 'submittedBy', type: 'text', // initialWidth: 110, sortable: true }, { label: '提交日期', fieldName: 'submittedDate', type: 'date', // initialWidth: 110, typeAttributes: { day: 'numeric', month: 'short', year: 'numeric' //hour: '2-digit', //minute: '2-digit', //second: '2-digit', //hour12: true }, sortable: true } // { // label: '过程名称', // fieldName: 'proD', // type: 'text', // initialWidth: 180, // sortable: true // }, // { // label: '评论', // fieldName: 'comments', // type: 'text', // // initialWidth: 50, // wrapText: true, // editable: true // } ]; wiredcountResults; @wire(gettotalcount) totalcount(result) { console.log(result); console.log('result.data' + result.data); this.wiredcountResults = result; if (result.data != undefined) { this.totalRecordCount = result.data; console.log('tota' + this.totalRecordCount); this.title = '要批准的项目'; if (result.data > 0) this.wrapperListtrue = true; else { this.totalRecordCount = 0; this.title = '要批准的项目'; this.wrapperListtrue = false; console.log('tota' + this.totalRecordCount); } } else if (result.error) { this.error = result.error; this.totalRecordCount = 0; this.title = '要批准的项目'; this.wrapperListtrue = false; console.log('tota' + this.totalRecordCount); }else{ this.wrapperListtrue = false; this.title = '要批准的项目'; this.totalRecordCount = 0; } console.log('获取数量结束:'); } constructor() { console.log('constructor start'); super(); this.title = 'Your Pending Approvals'; this.showinfiniteLoadingSpinner = true; this.wrapperList = []; this.queryOffset = 0; this.queryLimit = 2000; this.loadRecords(); console.log('constructor end'); } reloadrecords() { this.showLoadingSpinner = true; this.showinfiniteLoadingSpinner = true; this.queryOffset = 0; this.queryLimit = 2000; let flatData; this.wrapperList = []; console.log(this.totalRecordCount); return getWrapperClassList({ queryLimit: this.queryLimit, queryOffset: this.queryOffset }) .then(result => { console.log(result); console.log(this.totalRecordCount); flatData = result; if (flatData != undefined) { for (var i = 0; i < flatData.length; i++) { flatData[i].recordId = '/' + flatData[i].recordId; } this.wrapperList = flatData; } this.showLoadingSpinner = false; console.log(this.wrapperList); this.showLoadingSpinner = false; return refreshApex(this.wiredcountResults); //this.error = undefined; }).catch(error => { console.log(error); this.showLoadingSpinner = false; this.error = error; this.dispatchEvent( new ShowToastEvent({ title: 'Error', message: error.body.message, variant: 'info' }) ); return refreshApex(this.wiredcountResults); }) } loadRecords() { //you can build a method for a button const inputAlignright = document.createElement('style'); inputAlignright .innerText = ` .slds-text-heading_small, .slds-text-heading--small { font-size:14px; line-height: var(--lwc-lineHeightHeading,1.25); } .slds-truncate { font-size: 11px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .slds-hyphenate { overflow-wrap: break-word; word-wrap: break-word; -webkit-hyphens: auto; -ms-hyphens: auto; hyphens: auto; font-size: 11px; } ` ; document.body.appendChild(inputAlignright); console.log('tetst'); this.showLoadingSpinner = true; let flatData; console.log('lr' + this.queryOffset); console.log('lr' + this.queryLimit); return getWrapperClassList({ queryLimit: this.queryLimit, queryOffset: this.queryOffset }) .then(result => { console.log("初始化:"); console.log(result); flatData = result; if (flatData != undefined) { for (var i = 0; i < flatData.length; i++) { flatData[i].recordId = '/' + flatData[i].recordId; } let updatedRecords = [...this.wrapperList, ...flatData]; this.wrapperList = updatedRecords; } this.showLoadingSpinner = false; console.log(this.wrapperList); refreshApex(this.wiredcountResults); }).catch(error => { console.log(error); this.showLoadingSpinner = false; this.error = error; refreshApex(this.wiredcountResults); this.title = 'Your Pending Approvals (' + this.totalRecordCount + ')'; this.dispatchEvent( new ShowToastEvent({ title: 'Error', message: error.message, variant: 'info' }) ); }) } loadMoreData(event) { const { target } = event; this.showinfiniteLoadingSpinner = true; //Display a spinner to signal that data is being loaded console.log('lmr totalRecordCount' + this.totalRecordCount); console.log('lmr queryLimit' + this.queryLimit); console.log('lmr queryOffset' + this.queryOffset); if (this.totalRecordCount < this.queryLimit) { console.log(this.wrapperList); this.showinfiniteLoadingSpinner = false; return refreshApex(this.wiredcountResults); } else if (this.totalRecordCount > this.queryOffset) { this.queryOffset = this.queryOffset + 5; console.log('lmir queryLimit' + this.queryLimit); console.log('lmir queryOffset' + this.queryOffset); let flatData; return getWrapperClassList({ queryLimit: this.queryLimit, queryOffset: this.queryOffset }) .then(result => { target.isLoading = false; console.log("查询结果:"); console.log(result); console.log(this.totalRecordCount); flatData = result; if (flatData != undefined) { for (var i = 0; i < flatData.length; i++) { flatData[i].recordId = '/' + flatData[i].recordId; } //this.wrapperList = this.wrapperList.concat(flatData); let updatedRecords = [...this.wrapperList, ...flatData]; this.wrapperList = updatedRecords; } target.isLoading = false; console.log(this.wrapperList); this.showinfiniteLoadingSpinner = false; return refreshApex(this.wiredcountResults); }).catch(error => { console.log(error); this.showinfiniteLoadingSpinner = false; this.dispatchEvent( new ShowToastEvent({ title: 'Error', message: error.message, variant: 'info' }) ); return refreshApex(this.wiredcountResults); }) } else { this.showinfiniteLoadingSpinner = false; target.isLoading = false; return refreshApex(this.wiredcountResults); } } handleSave(event) { this.showLoadingSpinner = true; console.log(event.detail.draftValues); console.log(this.wrapperList); var draftlst = []; draftlst = event.detail.draftValues; for (var i = 0; i < this.wrapperList.length; i++) { console.log(this.wrapperList[i].workItemId); for (var j = 0; j < draftlst.length; j++) { console.log(draftlst[j].workItemId); if (this.wrapperList[i].workItemId === draftlst[j].workItemId) { this.wrapperList[i].comments = draftlst[j].comments; } } } for (var i = 0; i < this.wrapperList.length; i++) { console.log(this.wrapperList[i].comments); } this.draftValues = []; this.showLoadingSpinner = false; this.dispatchEvent( new ShowToastEvent({ message: '评论已添加,批准/拒绝时该项目将优先使用该评论', variant: 'success' }) ); } enablebuttons(event) { const selectedRows = event.detail.selectedRows; var recordsCount = event.detail.selectedRows.length; if(recordsCount > 0) this.enable_app_rej = false; else this.enable_app_rej = true; } processrec() { this.showLoadingSpinner = true; console.log('test'); var el = this.template.querySelector('lightning-datatable'); var selectedrows = el.getSelectedRows(); console.log(selectedrows); var varprocessType = this.originalMessage;// event.target.label; var processrows = []; for (var i = 0; i < selectedrows.length; i++) { // selectedrows[i].comments=this.comments; processrows.push(selectedrows[i]); } if (processrows.length > 0) { var str = JSON.stringify(processrows); console.log('类型:'+varprocessType); processRecords({ processType: varprocessType, strwraprecs: str,comment:this.comment }) .then(result => { this.showinfiniteLoadingSpinner = true; this.queryOffset = 0; this.queryLimit = 5; let flatData; this.wrapperList = []; console.log(this.totalRecordCount); return getWrapperClassList({ queryLimit: this.queryLimit, queryOffset: this.queryOffset }) .then(result => { console.log(result); console.log(this.totalRecordCount); flatData = result; if (flatData != undefined) { for (var i = 0; i < flatData.length; i++) { flatData[i].recordId = '/' + flatData[i].recordId; } let updatedRecords = [...this.wrapperList, ...flatData]; this.wrapperList = updatedRecords; } this.showLoadingSpinner = false; console.log(this.wrapperList); this.showLoadingSpinner = false; var messagetitle; var ivariant; console.log("方法内的操作类型:"+varprocessType); if(varprocessType == 'Approve') { messagetitle = '所选项已批准'; ivariant = 'success'; } else if(varprocessType == 'Reject') { messagetitle = '所选项已拒绝'; ivariant = 'error'; } this.dispatchEvent( new ShowToastEvent({ title: messagetitle, message: result, variant: ivariant }) ); return refreshApex(this.wiredcountResults); }).catch(error => { console.log(error); this.showLoadingSpinner = false; this.error = error; this.dispatchEvent( new ShowToastEvent({ title: 'Error', message: error.message, variant: 'info' }) ); return refreshApex(this.wiredcountResults); }) }) .catch(error => { this.showLoadingSpinner = false; this.dispatchEvent( new ShowToastEvent({ title: 'Error', message: error.message, variant: 'error' }) ); return refreshApex(this.wiredcountResults); }); } else { this.dispatchEvent( new ShowToastEvent({ title: '未选择项', message: '请选择项目', variant: 'warning' }) ); this.showLoadingSpinner = false; } } handleSortdata(event) { this.sortBy = event.detail.fieldName; this.sortDirection = event.detail.sortDirection; this.sortData(event.detail.fieldName, event.detail.sortDirection); } sortData(fieldname, direction) { this.showLoadingSpinner = true; let parseData = JSON.parse(JSON.stringify(this.wrapperList)); let keyValue = (a) => { return a[fieldname]; }; let isReverse = direction === 'asc' ? 1 : -1; parseData.sort((x, y) => { x = keyValue(x) ? keyValue(x) : ''; y = keyValue(y) ? keyValue(y) : ''; return isReverse * ((x > y) - (y > x)); }); this.wrapperList = parseData; this.showLoadingSpinner = false; } openModal() { this.bShowModal = true; } closeModal() { this.bShowModal = false; } handleRowAction(event) { const actionName = event.detail.action.name; var row = event.detail.row; console.log(row); switch (actionName) { case 'view_record': this.viewrecord(row); break; case 'submitter_comments': this.opencomment(row); break; default: } } opencomment(row) { this.bShowModal = true; console.log(row); const { workItemId } = row; console.log(workItemId); this.record = row; console.log(this.record); this.icomments = this.record.submittercomment; console.log(this.bShowModal); } viewrecord(row) { this.record = row; console.log(this.record.recordId); window.open(this.record.recordId, '_blank'); } handleconformClick(event) { try { if (event.target.label === '批准') { console.log('label' + event.target.label); this.originalMessage = 'Approve'; this.isDialogVisible = true; } else if (event.target.label === '拒绝') { console.log('label' + event.target.label); this.originalMessage = 'Reject'; this.isDialogVisible = true; } else if (event.target.name === 'confirmModal') { console.log(event.detail); //when user clicks outside of the dialog area, the event is dispatched with detail value as 1 if (event.detail !== 1) { console.log('status' + event.detail.status); if (event.detail.status === 'confirm') { this.processrec(); this.isDialogVisible = false; } else if (event.detail.status === 'cancel') { //do something else this.isDialogVisible = false; } } } } catch(e) { console.log(e); } } saveDialog(){ console.log("评论:"+this.comment); this.processrec(); this.isDialogVisible = false; } closeDialog(){ this.isDialogVisible = false; this.comments=''; } afterChange(event) { this.comment = event.detail.value; } }