В настоящее время я застрял. Все, что у меня есть, это простой компонент, который должен отправлять запись на утверждение при нажатии кнопки. У меня проблемы с загрузкой компонента (он вызывается как кнопка быстрого действия), чтобы получить значение approvalComments не только это, но я понятия не имею, как вызвать мою функцию вершины для запуска для фактической подачи записи.

Вот мой js:

import { LightningElement, track, api, wire } from 'lwc';
import { getRecord, getFieldValue } from 'lightning/uiRecordApi';
import { ShowToastEvent } from 'lightning/platformShowToastEvent';
import { updateRecord } from 'lightning/uiRecordApi';

import startApproval from '@salesforce/apex/LWCSubmitForApproval.approvalInit';

// Retrieve all start approval checkboxes
import START_ADDRESS from '@salesforce/schema/Account.Start_Approval__c';
import START_SSB from '@salesforce/schema/Account.Start_SSB_Approval__c';
import START_FINANCIAL from '@salesforce/schema/Account.Start_Financial_Approval__c';
import START_PAYMETHOD from '@salesforce/schema/Account.Payment_Method_Changed__c';
import START_PAYTERMS from '@salesforce/schema/Account.SAP_Payment_Terms_Changed__c';
import START_ORDERDEL from '@salesforce/schema/Account.Start_Approval__c';

// Retrieve all description fields
import DESC_ADDRESS from '@salesforce/schema/Account.Start_Address_Approval_Description__c';
import DESC_SSB from '@salesforce/schema/Account.Start_SSB_Approval_Description__c';
import DESC_FINANCIAL from '@salesforce/schema/Account.Start_Financial_Approval_Description__c';
import DESC_PAYMETHOD from '@salesforce/schema/Account.Start_PM_Approval_Description__c';
import DESC_PAYTERMS from '@salesforce/schema/Account.Start_SAP_Payment_Terms_Description__c';
import DESC_ORDERDEL from '@salesforce/schema/Account.Start_OD_Approval_Description__c';

import SAP_ID from '@salesforce/schema/Account.SAP_Id__c';
import ID_FIELD from '@salesforce/schema/Account.Id';

const fields = [ID_FIELD, START_ADDRESS, START_SSB, START_FINANCIAL, START_PAYMETHOD, START_PAYTERMS, START_ORDERDEL,
                DESC_ADDRESS, DESC_FINANCIAL, DESC_SSB, DESC_PAYMETHOD, DESC_PAYTERMS, DESC_ORDERDEL];


export default class lwcSubmitForApproval extends LightningElement {

    @track startApproval;
    @track disabled = false;
    @track error;

    @api recordId; // Account Id

    @wire(getRecord, { recordId: '$recordId', fields })
    Account;

    approvalComments = '';


    renderedCallback(){
        this.assignApproval();
    }
    assignApproval(){
        if(getFieldValue(this.Account.data, START_ADDRESS) === true){
                this.approvalComments = getFieldValue(this.Account.data, DESC_ADDRESS);
        }

        else if(getFieldValue(this.Account.data, START_SSB) === true){
                this.approvalComments = getFieldValue(this.Account.data, DESC_SSB);
        }

        else if(getFieldValue(this.Account.data, START_FINANCIAL) === true){
                this.approvalComments = getFieldValue(this.Account.data, DESC_FINANCIAL);
        }

        else if(getFieldValue(this.Account.data, START_PAYMETHOD) === true){
               this.approvalComments = getFieldValue(this.Account.data, DESC_PAYMETHOD);
        }

        else if(getFieldValue(this.Account.data, START_PAYTERMS) === true){
                this.approvalComments = getFieldValue(this.Account.data, DESC_PAYTERMS);
        }

        else if(getFieldValue(this.Account.data, START_ORDERDEL) === true){
               this.approvalComments = getFieldValue(this.Account.data, DESC_ORDERDEL);
        }

    }
    // onclick button handler
    submitForApproval() {
        this.assignApproval();

        startApproval({ accId: this.recordId, comments: this.approvalComments });



    }
}

И вот метод вершины:

public with sharing class LWCSubmitForApproval {

    /**
    ** This method initiates an approval process for the given object
    */
    @AuraEnabled(cacheable=true)
    public static void approvalInit(String accId, String comment){
        Approval.ProcessSubmitRequest req = new Approval.ProcessSubmitRequest();
        req.setComments(comment);
        req.setObjectId(accId);
        Approval.ProcessResult result;
        try{
            // submit the approval request for processing
            result = Approval.process(req);
        }catch(Exception e){
            System.debug('No approval process has been setup yet.');
        }
    }
}

Я нуждаюсь:

  1. получить значение утвержденияКомментарии к загрузке компонента
  2. получить метод вершины для запуска при нажатии кнопки

Пожалуйста помоги!

0
Phil W 13 Авг 2020 в 18:56

1 ответ

получить значение утвержденияКомментарии к загрузке компонента

Воспользуйтесь телеграфным сервисом:

import { LightningElement, wire } from 'lwc';
import getApprovalComments from '@salesforce/apex/LWCSubmitForApproval.getApprovalComments';
...
@wire(getApprovalComments,{})
approvalCommentsWired;
get approvalComments() {
    return this.approvalCommentsWired && this.approvalCommentsWired.data;
}

И для Апекса:

@AuraEnabled(cacheable=true)
public static String getApprovalComments() {
    // Get the string here and return
}

метод вершины для запуска при нажатии кнопки

Это уже есть (или должно быть). Однако вам необходимо установить для атрибута cacheable значение false:

@AuraEnabled(cacheable=false)
public static void approvalInit(String accId, String comment){

В противном случае вы получите странное поведение в некоторых случаях.

0
sfdcfox 13 Авг 2020 в 17:57
Спасибо sfdc fox, проводка и добавление результата через apex отлично сработали. Однако я все еще застрял на части «Отправить на утверждение», так как она просто задерживается ни с чем. submitForApproval () { startApproval ({ accId: this.recordId, comment: this.approvalCommentsWired.data }) при нажатии ничего не делает, в любом случае мне нужно сначала подключить этот метод вершины вверху?
 – 
Tom Jacobson
13 Авг 2020 в 18:28
На самом деле вы не обработали ответ сервера (startApproval({ accId:this.recordId, comment:this.approvalCommentsWired.data}).then(()=>{ ... }).catch(error=>{ alert(error) }) или что-то в этом роде.
 – 
sfdcfox
13 Авг 2020 в 18:43