19626
2023-05-17 03f01ce3cd914880401e4635901ce6a58668416f
失单报告编辑页面
12个文件已添加
5个文件已修改
1240 ■■■■ 已修改文件
force-app/main/default/lwc/lexDynamicTable/lexDynamicTable.html 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexDynamicTable/lexDynamicTable.js 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexDynamicTable/lexDynamicTable.js-meta.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexInputLookupCell/lexInputLookupCell.html 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexInputLookupCell/lexInputLookupCell.js 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexInputLookupCell/lexInputLookupCell.js-meta.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexInputPickListCell/lexInputPickListCell.html 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexInputPickListCell/lexInputPickListCell.js 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexInputPickListCell/lexInputPickListCell.js-meta.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexInputTableCell/lexInputTableCell.html 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexInputTableCell/lexInputTableCell.js 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexInputTableCell/lexInputTableCell.js-meta.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexPCLLostReportPage/lexPCLLostReportPage.css 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexPCLLostReportPage/lexPCLLostReportPage.html 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexPCLLostReportPage/lexPCLLostReportPage.js 534 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/multiSelectCombobox/multiSelectCombobox.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/multiSelectCombobox/multiSelectCombobox.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexDynamicTable/lexDynamicTable.html
New file
@@ -0,0 +1,43 @@
<!--
 * @Description:
 * @version:
 * @Author: chen jing wu
 * @Date: 2023-04-27 11:23:11
 * @LastEditors: chen jing wu
 * @LastEditTime: 2023-05-08 11:29:27
-->
<template>
    <lightning-card>
        <!-- <lightning-button slot="actions" variant="brand" label="Add Row" onclick={addRow}></lightning-button> -->
        <div class="slds-card__body slds-card__body_inner">
            <table class="slds-table slds-table_bordered slds-table_cell-buffer slds-var-m-bottom_large">
                <thead>
                    <tr class="slds-text-title_caps">
                        <template for:each={columns} for:item="column">
                            <th key={column.apiName}><div class="slds-truncate">{column.label}</div></th>
                        </template>
                    </tr>
                </thead>
                <tbody>
                    <template for:each={rows} for:item="row" for:index="index">
                        <tr class="inputRows" key={row.uuid}>
                            <template for:each={columns} for:item="column">
                                <td key={column.apiName}>
                                  <c-lex-input-pick-list-cell class="fields" field-type={column.fieldType} record={row} field={column.apiName} object-name={column.objectName} value={column.value} read-only={column.readOnly} required={column.required}></c-lex-input-pick-list-cell>
                                  <c-lex-input-table-cell class="fields" field-type={column.fieldType} record={row} field={column.apiName} required={column.required}></c-lex-input-table-cell>
                                  <c-lex-input-lookup-cell class="fields" field-type={column.fieldType} field-name={column.apiName} record={row} api-name={column.objectName} disable={column.disable} required={column.required}></c-lex-input-lookup-cell>
                                </td>
                            </template>
                            <td>
                                <lightning-button-icon icon-name="utility:add" value={index} variant="bare" onclick={addRow}></lightning-button-icon>
                            </td>
                            <td>
                                <lightning-button-icon icon-name="utility:delete" value={index} variant="bare" onclick={removeRow}></lightning-button-icon>
                            </td>
                        </tr>
                    </template>
                </tbody>
            </table>
        </div>
    </lightning-card>
</template>
force-app/main/default/lwc/lexDynamicTable/lexDynamicTable.js
New file
@@ -0,0 +1,68 @@
/*
 * @Description:
 * @version:
 * @Author: chen jing wu
 * @Date: 2023-04-27 11:23:11
 * @LastEditors: chen jing wu
 * @LastEditTime: 2023-05-15 15:37:57
 */
import { LightningElement, track, api,wire } from 'lwc';
export default class LexDynamicTable extends LightningElement {
    @api columnList;
    @api title;
    @track columns;
    @track objectApiName;
    @track pickListvalues;
    @track rows = [{ uuid: this.createUUID()}];
    connectedCallback() {
        let cleanedColumnList = this.columnList[0] === '\\' ? this.columnList.substring(1) : this.columnList;
        if(cleanedColumnList)
        {
            this.columns = cleanedColumnList;
        }
    }
    createUUID() {
        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
            var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
            return v.toString(16);
          });
    }
    @api
    retrieveRecords() {
        let rows = Array.from(this.template.querySelectorAll(".inputRows") );
        var records=[];
        rows.map(row => {
            let texts = Array.from(row.querySelectorAll(".fields"));
            if(texts)
            {
                var textVal=this.fieldValues(texts);
                records=[...records,textVal];
            }
        });
        return records;
    }
    fieldValues(cells)
    {
        return cells.reduce((record, cell) => {
            let inputVal = cell.inputValue();
            if(inputVal.value!=undefined)
            {
                record[inputVal.field] = inputVal.value;
            }
            return record;
        }, {});
    }
    removeRow(event) {
        const list = this.template.querySelectorAll(['lightning-button-icon']);
        if(list.length / 2 == 1){
            return;
        }
        this.rows.splice(event.target.value, 1);
    }
    addRow() {
        this.rows.push({ uuid: this.createUUID()});
    }
}
force-app/main/default/lwc/lexDynamicTable/lexDynamicTable.js-meta.xml
New file
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>49.0</apiVersion>
    <description>Dynamic Table</description>
    <isExposed>true</isExposed>
    <masterLabel>Dynamic Table</masterLabel>
    <targets>
        <target>lightningCommunity__Page</target>
        <target>lightningCommunity__Default</target>
        <target>lightning__RecordPage</target>
        <target>lightning__AppPage</target>
        <target>lightning__HomePage</target>
    </targets>
</LightningComponentBundle>
force-app/main/default/lwc/lexInputLookupCell/lexInputLookupCell.html
New file
@@ -0,0 +1,29 @@
<!--
 * @Description:
 * @version:
 * @Author: chen jing wu
 * @Date: 2023-04-27 11:38:36
 * @LastEditors: chen jing wu
 * @LastEditTime: 2023-05-08 10:13:58
-->
<template>
    <template if:true={isLookup}>
        <lightning-record-edit-form
            object-api-name={apiName}
            record-id=''
        >
            <!-- <template if:true={isDisable}>
                <lightning-input-field field-name={fieldName} onclick={handleinputChange} variant="label-hidden" disabled="true"> </lightning-input-field>
            </template>
            <template if:false={isDisable}>
                <lightning-input-field field-name={fieldName} onclick={handleinputChange} variant="label-hidden"> </lightning-input-field>
            </template> -->
            <template if:true={isRequired}>
                <lightning-input-field field-name={fieldName} onclick={handleinputChange} variant="label-hidden" disabled={isDisable} required> </lightning-input-field>
            </template>
            <template if:false={isRequired}>
                <lightning-input-field field-name={fieldName} onclick={handleinputChange} variant="label-hidden" disabled={isDisable}> </lightning-input-field>
            </template>
        </lightning-record-edit-form>
    </template>
</template>
force-app/main/default/lwc/lexInputLookupCell/lexInputLookupCell.js
New file
@@ -0,0 +1,53 @@
/*
 * @Description:
 * @version:
 * @Author: chen jing wu
 * @Date: 2023-04-27 11:38:36
 * @LastEditors: chen jing wu
 * @LastEditTime: 2023-05-08 10:25:31
 */
import { LightningElement, api } from 'lwc';
export default class LexInputLookupCell extends LightningElement {
    @api record;
    @api fieldName;
    @api apiName;
    @api type;
    @api fieldType;
    @api disable;
    @api required;
    value;
    label;
    connectedCallback() {
        this.value = this.record[this.fieldName];
        this.label = this.fieldName;
    }
    get isRequired(){
        return this.required;
    }
    handleInputChange(event) {
        this.value = event.target.value;
    }
    get isDisable(){
        if(this.disable == true){
            return true;
        }else{
            return false;
        }
    }
    getSearchResult(){
    }
    @api
    inputValue() {
        return { value : this.value, field: this.field };
    }
    get isLookup() {
        if(this.fieldType)
        {
            return this.fieldType.toLowerCase()=='lookup';
        }
        return false;
      }
}
force-app/main/default/lwc/lexInputLookupCell/lexInputLookupCell.js-meta.xml
New file
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>49.0</apiVersion>
    <description>Lookup Component</description>
    <isExposed>true</isExposed>
    <masterLabel>Lookup Component</masterLabel>
    <targets>
        <target>lightningCommunity__Page</target>
        <target>lightningCommunity__Default</target>
        <target>lightning__RecordPage</target>
        <target>lightning__AppPage</target>
        <target>lightning__HomePage</target>
        <target>lightning__FlowScreen</target>
    </targets>
</LightningComponentBundle>
force-app/main/default/lwc/lexInputPickListCell/lexInputPickListCell.html
New file
@@ -0,0 +1,49 @@
<!--
 * @Description:
 * @version:
 * @Author: chen jing wu
 * @Date: 2023-04-27 11:15:23
 * @LastEditors: chen jing wu
 * @LastEditTime: 2023-05-08 11:04:56
-->
<template>
    <template if:true={isPickList}>
        <!-- <template if:true={isReadOnly}>
            <lightning-combobox
                name="progress"
                variant="label-hidden"
                value={value}
                placeholder={value}
                options={options}
                onchange={handleChange} readonly="true"></lightning-combobox>
        </template>
        <template if:false={isReadOnly}>
            <lightning-combobox
                name="progress"
                variant="label-hidden"
                value={value}
                placeholder="--无--"
                options={options}
                onchange={handleChange} ></lightning-combobox>
        </template> -->
        <template if:true={isRequired}>
            <lightning-combobox
                name="progress"
                variant="label-hidden"
                value={value}
                placeholder="--无--"
                options={options}
                onchange={handleChange} readonly={isReadOnly} required></lightning-combobox>
        </template>
        <template if:false={isRequired}>
            <lightning-combobox
                name="progress"
                variant="label-hidden"
                value={value}
                placeholder="--无--"
                options={options}
                onchange={handleChange} readonly={isReadOnly}></lightning-combobox>
        </template>
    </template>
</template>
force-app/main/default/lwc/lexInputPickListCell/lexInputPickListCell.js
New file
@@ -0,0 +1,84 @@
/*
 * @Description:
 * @version:
 * @Author: chen jing wu
 * @Date: 2023-04-27 11:15:23
 * @LastEditors: chen jing wu
 * @LastEditTime: 2023-05-08 11:39:23
 */
import { LightningElement, track,wire, api } from 'lwc';
import getPickList from '@salesforce/apex/lexPCLLostReportLwcController.getPickList';
import searchBrands from '@salesforce/apex/lexPCLLostReportLwcController.searchBrands';
export default class LexInputPickListCell extends LightningElement {
    @track options=[];
    @api value;
    @api record;
    @api field;
    @api fieldType;
    @api objectName;
    @api readOnly;
    @api required;
    value1;
    label;
    connectedCallback() {
        this.value1 = this.record[this.field];
        this.label = this.field;
        if(this.objectName!==undefined && this.isPickList)
        {
            if(this.label!= 'LostBrandName__c'){
                this.getPicklist(this.objectName,this.field);
            }else{
                this.getSearchBrands();
            }
        }
    }
    get isRequired(){
        return this.required;
    }
    getSearchBrands(){
        searchBrands().then(result=>{
            this.options = JSON.parse(result);
        });
    }
    getPicklist(obj,field)
    {
        getPickList({ objectName : obj, fieldName :field})
        .then(result => {
           if(result)
           {
                for(let i=0; i<result.length; i++) {
                    console.log('id=' + result[i]);
                    this.options = [...this.options ,{value: result[i] , label: result[i]}];
                }
                this.error = undefined;
            }
        })
        .catch(error => {
            this.message = undefined;
            this.error = error;
        });
    }
    handleChange(event) {
        this.value = event.target.value;
    }
    get isPickList() {
        if(this.fieldType)
        {
            return this.fieldType.toLowerCase()=='picklist';
        }
        return false;
    }
    get isReadOnly(){
        if(this.readOnly == true){
            return true;
        }else{
            return false;
        }
    }
    @api
    inputValue() {
        return { value : this.value, field: this.field };
    }
}
force-app/main/default/lwc/lexInputPickListCell/lexInputPickListCell.js-meta.xml
New file
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>49.0</apiVersion>
    <description>PickList Component</description>
    <isExposed>true</isExposed>
    <masterLabel>PickList Component</masterLabel>
    <targets>
        <target>lightningCommunity__Page</target>
        <target>lightningCommunity__Default</target>
        <target>lightning__RecordPage</target>
        <target>lightning__AppPage</target>
        <target>lightning__HomePage</target>
        <target>lightning__FlowScreen</target>
    </targets>
</LightningComponentBundle>
force-app/main/default/lwc/lexInputTableCell/lexInputTableCell.html
New file
@@ -0,0 +1,28 @@
<!--
 * @Description:
 * @version:
 * @Author: chen jing wu
 * @Date: 2023-04-27 11:12:28
 * @LastEditors: chen jing wu
 * @LastEditTime: 2023-05-08 11:43:29
-->
<template>
    <template if:true={isText}>
        <!-- <lightning-input type={type} variant="label-hidden" label={field} name={field} value={value} onchange={handleInputChange}></lightning-input> -->
        <template if:true={isRequired}>
            <lightning-input type={type} variant="label-hidden" label={field} name={field} value={value} onchange={handleInputChange} required></lightning-input>
        </template>
        <template if:false={isRequired}>
            <lightning-input type={type} variant="label-hidden" label={field} name={field} value={value} onchange={handleInputChange}></lightning-input>
        </template>
    </template>
    <template if:true={isNumber}>
        <!-- <lightning-input type={type} variant="label-hidden" label={field} name={field} value={value} onchange={handleInputChange}></lightning-input> -->
        <template if:true={isRequired}>
            <lightning-input type={type} variant="label-hidden" label={field} name={field} value={value} onchange={handleInputChange} required></lightning-input>
        </template>
        <template if:false={isRequired}>
            <lightning-input type={type} variant="label-hidden" label={field} name={field} value={value} onchange={handleInputChange}></lightning-input>
        </template>
    </template>
</template>
force-app/main/default/lwc/lexInputTableCell/lexInputTableCell.js
New file
@@ -0,0 +1,52 @@
/*
 * @Description:
 * @version:
 * @Author: chen jing wu
 * @Date: 2023-04-27 11:12:28
 * @LastEditors: chen jing wu
 * @LastEditTime: 2023-05-08 11:46:35
 */
import { LightningElement, api } from 'lwc';
export default class LexInputTableCell extends LightningElement {
    @api record;
    @api field;
    @api fieldType;
    @api type;
    @api required;
    value;
    label;
    connectedCallback() {
        this.value = this.record[this.field];
        this.label = this.field;
        this.type='text';
    }
    get isRequired(){
        return this.required;
    }
    handleInputChange(event) {
        this.value = event.target.value;
    }
    @api
    inputValue() {
        return { value : this.value, field: this.field };
    }
    get isText() {
        if(this.fieldType)
        {
            this.type = 'text';
            return this.fieldType.toLowerCase()=='text';
        }
        return false;
      }
    get isNumber(){
        if(this.fieldType)
        {
            this.type = 'number';
            return this.fieldType.toLowerCase()=='number';
        }
        return false;
    }
}
force-app/main/default/lwc/lexInputTableCell/lexInputTableCell.js-meta.xml
New file
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>49.0</apiVersion>
    <description>Input Cell component</description>
    <isExposed>true</isExposed>
    <masterLabel>Input Cell component</masterLabel>
    <targets>
        <target>lightningCommunity__Page</target>
        <target>lightningCommunity__Default</target>
        <target>lightning__RecordPage</target>
        <target>lightning__AppPage</target>
        <target>lightning__HomePage</target>
        <target>lightning__FlowScreen</target>
    </targets>
</LightningComponentBundle>
force-app/main/default/lwc/lexPCLLostReportPage/lexPCLLostReportPage.css
@@ -18,4 +18,39 @@
.slds-form-element__label {
    width: 144px;
    margin-right: -5rem;
}
}
.myinitDiv{
}
.card{
}
.my-addbutton{
    -webkit-text-size-adjust: 100%;
    font-family: -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';
    line-height: normal;
    color: rgb(3, 45, 96);
    -webkit-tap-highlight-color: transparent;
    border-spacing: 0;
    border-collapse: separate;
    font-size: 13px;
    white-space: normal;
    box-sizing: border-box;
    border: 0;
}
.container {
    display: flex;
    justify-content: space-between; /* 设置子元素间的间距 */
    }
    .item {
    flex: 1; /* 设置子元素的伸缩比例,平分剩余空间 /
    max-width: 100%; / 防止子元素溢出容器 */
    }
    .text-container p:first-line {
        background-color: rgb(243, 243, 243);
      }
force-app/main/default/lwc/lexPCLLostReportPage/lexPCLLostReportPage.html
@@ -4,154 +4,102 @@
 * @Author: chen jing wu
 * @Date: 2023-04-20 17:16:48
 * @LastEditors: chen jing wu
 * @LastEditTime: 2023-04-26 14:07:51
 * @LastEditTime: 2023-05-16 11:41:50
-->
<template>
    <lightning-card  variant="Narrow">
        <!-- <lightning-input onchange={initAll}></lightning-input> -->
    <lightning-card id="my-element" class="card"  variant="Narrow" data-id="my-card">
        <div style="padding: 0 20px">
            <lightning-layout>
                <lightning-layout-item>
                    <div class="mainTitle" style="padding: 10px 3px;font-weight: bold;">失单报告编辑页面</div>
                </lightning-layout-item>
                <div class="slds-align_absolute-center">
                    <lightning-layout-item size="12">
                <div style="margin-left: 550px;">
                    <lightning-layout-item  size="12">
                        <lightning-button label="追加品牌" onclick={addBrandJs}></lightning-button>
                        <lightning-button label="保存" onclick={saveJs}></lightning-button>
                        <lightning-button name="save" label="保存" onclick={saveBrandJs}></lightning-button>
                        <lightning-button label="返回询价" onclick={cancel}></lightning-button>
                    </lightning-layout-item>
                </div>
                <!-- <lightning-layout-item flexibility="auto" padding="around-small">
                    <lightning-button label="保存" onclick={saveJs}></lightning-button>
                </lightning-layout-item>
                <lightning-layout-item flexibility="auto" padding="around-small">
                    <lightning-button label="返回询价" onclick={cancel}></lightning-button>
                </lightning-layout-item> -->
            </lightning-layout>
            <div style="margin-top: 5px">
                <lightning-layout>
                    <lightning-layout-item size="2" padding="around-small">
                        <!-- <div class="combobox-container">
                            <label for="losttype">失单类型:</label>
                            <lightning-combobox id="losttype" name="progress" value={lostReportObj.RecordType} options={RecordTypeOptions}
                                onchange={handleStatus1Change} class="searchField" style="width: 71.33px; height: 32px;">
                            </lightning-combobox>
                        </div> -->
                        <div class="slds-form_horizontal my-combobox">
                            <label class="slds-form-element__label">失单类型:</label>
                            <lightning-combobox name="progress" value="失单" options={RecordTypeOptions}
                                onchange={handleStatus1Change} class="searchField" style="width: 71.33px; height: 32px;">
                            <lightning-combobox name="progress" value={LostReport.lostReport.LostType__c} options={RecordTypeOptions}
                                onchange={handleLostTypeChange} class="searchField" required>
                            </lightning-combobox>
                        </div>   
                    </lightning-layout-item>
                    <lightning-layout-item size="3" padding="around-small">
                        <div style="padding: 10px 3px;font: 16px;">失单总金额(元):</div>
                        <!-- <lightning-output-field>{LostReport.lostReport.LostTotalAmount__c}</lightning-output-field> -->
                        <lightning-output-field>0</lightning-output-field>
                        <div style="padding: 10px 3px;font: 16px;">失单总金额(元):{LostReport.lostReport.LostTotalAmount__c}</div>
                    </lightning-layout-item>
                    <lightning-layout-item size="3" padding="around-small">
                        <div style="padding: 10px 3px;font: 16px;">状态:</div>
                        <!-- <lightning-output-field>{LostReport.lostReport.Report_Status__c}</lightning-output-field> -->
                        <div style="padding: 10px 3px;font: 16px;">状态:{LostReport.lostReport.Report_Status__c}</div>
                    </lightning-layout-item>
                </lightning-layout>
                    <lightning-accordion allow-multiple-sections-open>
                        <lightning-accordion-section name="失单品牌" label="失单品牌">
                            <lightning-layout>
                                <lightning-layout-item size="4" padding="around-small">
                                    <c-multi-select-combobox multis-select="true" options={brandOptions} selected-value= "asd" label="失单品牌: "></c-multi-select-combobox>
                                </lightning-layout-item>
                                <lightning-layout-item flexibility="auto" padding="around-small">
                                    <lightning-combobox name="progress" label="失单原因(主):" value="" options={status1Options}
                                    onchange={handleStatus1Change} class="searchField"></lightning-combobox>
                                </lightning-layout-item>
                                <lightning-layout-item flexibility="auto" padding="around-small">
                                    <lightning-combobox name="progress" label="失单原因(次):" value="" options={status1Options}
                                    onchange={handleStatus1Change} class="searchField"></lightning-combobox>
                                </lightning-layout-item>
                            </lightning-layout>
                            <lightning-layout>
                                <lightning-layout-item size="4" padding="horizontal-small">
                                    <lightning-input value="" type="text" label="失单品牌(手动): " class="searchField" onchange={handleRepairNameChange}></lightning-input>
                                </lightning-layout-item>
                                <lightning-layout-item size="4" padding="horizontal-small">
                                    <lightning-input value="" type="text" label="失单金额(元): " class="searchField" onchange={handleRepairNameChange}></lightning-input>
                                </lightning-layout-item>
                                <lightning-layout-item size="4" padding="horizontal-small">
                                    <lightning-record-edit-form
                                        object-api-name='PCLLostBrand__c'
                                        record-id=''
                                    >
                                        <lightning-input-field field-name='Agency__c' onclick={handleWinBidAgencyChange}> </lightning-input-field>
                                    </lightning-record-edit-form>
                                </lightning-layout-item>
                            </lightning-layout>
                            <lightning-layout>
                                <lightning-layout-item size="4" padding="horizontal-small">
                                    <lightning-input value="" type="text" label="中标经销商(手动):" class="searchField" onchange={handleRepairNameChange}></lightning-input>
                                </lightning-layout-item>
                            </lightning-layout>
                            <lightning-layout style="background-color: rgb(243, 243, 243)">
                                <div></div>
                                <lightning-layout-item flexibility="auto" padding="horizontal-small">
                                    <div>失单品牌</div>
                                </lightning-layout-item>
                                <lightning-layout-item flexibility="auto" padding="horizontal-small">
                                    <div>失单对手型号</div>
                                </lightning-layout-item>
                                <lightning-layout-item flexibility="auto" padding="horizontal-small">
                                    <div>失单数量</div>
                                </lightning-layout-item>
                                <lightning-layout-item flexibility="auto" padding="horizontal-small">
                                    <div>失单对手型号(手动)</div>
                                </lightning-layout-item>
                                <lightning-layout-item flexibility="auto" padding="horizontal-small">
                                    <div>失单产品类别</div>
                                </lightning-layout-item>
                                <lightning-layout-item flexibility="auto" padding="horizontal-small">
                                    <div>失单产品区分</div>
                                </lightning-layout-item>
                                <lightning-layout-item flexibility="auto" padding="horizontal-small">
                                    <div>+</div>
                                </lightning-layout-item>
                            </lightning-layout>
                            <lightning-layout>
                                <lightning-layout-item flexibility="auto" padding="horizontal-small">
                                    <lightning-combobox name="progress" value="" options={status1Options}
                                onchange={handleStatus1Change} class="searchField"></lightning-combobox>
                                </lightning-layout-item>
                                <lightning-layout-item flexibility="auto" padding="horizontal-small">
                                    <lightning-record-edit-form
                                        object-api-name='PCLLostProduct__c'
                                        record-id=''
                                    >
                                        <lightning-input-field field-name='LostProduct__c' onclick={handleWinBidAgencyChange}> </lightning-input-field>
                                    </lightning-record-edit-form>
                                </lightning-layout-item>
                                <lightning-layout-item flexibility="auto" padding="horizontal-small">
                                    <lightning-input value="" type="text" class="searchField" onchange={handleRepairNameChange}></lightning-input>
                                </lightning-layout-item>
                                <lightning-layout-item flexibility="auto" padding="horizontal-small">
                                    <lightning-input value="" type="text" class="searchField" onchange={handleRepairNameChange}></lightning-input>
                                </lightning-layout-item>
                                <lightning-layout-item flexibility="auto" padding="horizontal-small">
                                    <lightning-combobox name="progress" value="" options={status1Options}
                                onchange={handleStatus1Change} class="searchField"></lightning-combobox>
                                </lightning-layout-item>
                                <lightning-layout-item flexibility="auto" padding="horizontal-small">
                                    <lightning-combobox name="progress" value="" options={status1Options}
                                onchange={handleStatus1Change} class="searchField"></lightning-combobox>
                                </lightning-layout-item>
                                <lightning-layout-item flexibility="auto" padding="horizontal-small">
                                    <lightning-button
                                    label="Add Contact"
                                    variant="brand"
                                    onclick={handleAddClick}>
                                    </lightning-button>
                                </lightning-layout-item>
                            </lightning-layout>
                        </lightning-accordion-section>
                    <lightning-accordion allow-multiple-sections-open class="myAccordion">
                            <template for:each={LostReport.LostBrands} for:item="brand" for:index="i">
                                <li key={brand.index}>
                                    <lightning-accordion-section class="text-container" data-id={i} name="失单品牌" label="失单品牌">
                                        <lightning-button name={i} label="保存" onclick={saveBrandJs}></lightning-button>
                                        <lightning-button name={i} label="删除" onclick={deleteBrandJs} disabled={isBrandCount2}></lightning-button>
                                        <lightning-layout>
                                            <lightning-layout-item size="4" padding="around-small">
                                                <c-multi-select-combobox name={i} onselect={setBrandMannualName} data-id="Lost_By_Company" class="mycombobox" options={brandOptions} selected-value={reasonValue} label="失单品牌: " required></c-multi-select-combobox>
                                            </lightning-layout-item>
                                            <lightning-layout-item flexibility="auto" padding="around-small">
                                                <lightning-combobox name={i} label="失单原因(主):" value="" options={columns2}
                                                onchange={handleLostReasonMainChange} class="searchField" required></lightning-combobox>
                                            </lightning-layout-item>
                                            <lightning-layout-item flexibility="auto" padding="around-small">
                                                <lightning-combobox name={i} label="失单原因(次):" value="" options={columns2}
                                                onchange={handleLostReasonSubChange} class="searchField"></lightning-combobox>
                                            </lightning-layout-item>
                                        </lightning-layout>
                                        <lightning-layout>
                                            <lightning-layout-item size="4" padding="horizontal-small">
                                                <lightning-input name={i} data-id="Lost_By_Company_Mannual" value="" type="text" label="失单品牌(手动): " class="searchField" onchange={handleLostByCompanyMannualChange}></lightning-input>
                                            </lightning-layout-item>
                                            <lightning-layout-item size="4" padding="horizontal-small">
                                                <lightning-input data-id="TotalAmount" name={i} value="" type="number" label="失单金额(元): " class="searchField" onchange={handleLostPriceOutChange} required></lightning-input>
                                            </lightning-layout-item>
                                            <lightning-layout-item size="4" padding="horizontal-small">
                                                <lightning-record-edit-form
                                                    object-api-name='PCLLostBrand__c'
                                                    record-id=''
                                                >
                                                    <lightning-input-field name={i} field-name='Agency__c' onchange={handleAgencyOutChange} required> </lightning-input-field>
                                                </lightning-record-edit-form>
                                            </lightning-layout-item>
                                        </lightning-layout>
                                        <lightning-layout>
                                            <lightning-layout-item size="4" padding="horizontal-small">
                                                <lightning-input name={i} value="" type="text" label="中标经销商(手动):" class="searchField" onchange={handleAgencyMannualOutChange}></lightning-input>
                                            </lightning-layout-item>
                                        </lightning-layout>
                                        <lightning-layout>
                                            <lightning-layout-item flexibility="auto" padding="around-small">
                                                <template if:true={isInit}>
                                                    <c-lex-dynamic-table name={i} column-list={brand.columns} onchange={setProductClass}>
                                                    </c-lex-dynamic-table>
                                                </template>
                                            </lightning-layout-item>
                                        </lightning-layout>
                                    </lightning-accordion-section>
                                </li>
                            </template>
                    </lightning-accordion>
                    <lightning-layout style="margin-top: 20px;">
                        <div class="slds-align_absolute-center">
                            <lightning-layout-item size="12">
                                <lightning-button label="追加品牌" onclick={addBrandJs}></lightning-button>
                                <lightning-button name="save" label="保存" onclick={saveBrandJs}></lightning-button>
                                <lightning-button label="返回询价" onclick={cancel}></lightning-button>
                            </lightning-layout-item>
                        </div>
                    </lightning-layout>
            </div>
        </div>
        </div>
    </lightning-card>
</template>
force-app/main/default/lwc/lexPCLLostReportPage/lexPCLLostReportPage.js
@@ -4,89 +4,105 @@
 * @Author: chen jing wu
 * @Date: 2023-04-20 15:04:03
 * @LastEditors: chen jing wu
 * @LastEditTime: 2023-04-26 11:45:00
 * @LastEditTime: 2023-05-16 11:43:27
 */
/*
 * @Description:
 * @version:
 * @Author: chen jing wu
 * @Date: 2023-04-20 15:04:03
 * @LastEditors: chen jing wu
 * @LastEditTime: 2023-04-20 17:11:01
 */
const columns = [
    {
      label: '失单品牌',
      fieldName: 'LostBrandName__c',
      type: 'list',
      editable: true
    },
    {
      label: '失单对手型号',
      fieldName: 'LostProductName__c',
      type: 'text',
      editable: true
    },
    {
        label: '失单数量',
        fieldName: 'Quantity__c',
        type: 'number',
        editable: true
    },
    {
    label: '失单对手型号(手动)',
    fieldName: 'LostProductMannual__c',
    type: 'text',
    editable: true
    },
    {
    label: '失单产品类别',
    fieldName: 'ProductClass__c',
    type: 'list',
    editable: true
    },
    {
    label: '失单产品区分',
    fieldName: 'ProductCategory__c',
    type: 'list',
    editable: true
    }
    // ...
  ];
const columns2=[
    { label: '--无--', value: '' },
    { label: '无信息,跟进不及时', value: '无信息,跟进不及时' },
    { label: '价格', value: '价格' },
    { label: '医生偏好', value: '医生偏好' },
    { label: '服务不到位', value: '服务不到位' },
    { label: '行政决策', value: '行政决策' },
    { label: '竞品原有基础上增添设备', value: '竞品原有基础上增添设备' },
    { label: '渠道因素', value: '渠道因素' },
    { label: '某种产品缺失', value: '某种产品缺失' },
    { label: '采购平衡', value: '采购平衡' }
];
import { api, wire,track,LightningElement } from 'lwc';
import { CurrentPageReference } from "lightning/navigation";
import save from '@salesforce/apex/lexPCLLostReportLwcController.save';
import dataEntry from '@salesforce/apex/lexPCLLostReportLwcController.dataEntry';
import { ShowToastEvent } from 'lightning/platformShowToastEvent';
import { loadStyle, loadScript } from 'lightning/platformResourceLoader';
import setbrand from '@salesforce/apex/lexPCLLostReportLwcController.setBrand';
import init from '@salesforce/apex/lexPCLLostReportLwcController.init';
import initForApex from '@salesforce/apex/lexPCLLostReportLwcController.initForApex';
import multiSelectCombobox from 'c/multiSelectCombobox'
import lexMultiSelectCombobox from 'c/lexmultiSelectCombobox';
import searchBrands from '@salesforce/apex/lexPCLLostReportLwcController.searchBrands';
export default class LexPCLLostReportPage extends LightningElement {
    @api oppId = '0061000001R2xjWAAR';
    @api lostReportId;
    @api pageStatus = 'Create';
    @api lostType = '失单';
    @api submitFlag;
    searchResult;
    LostReport;
    brandCount;
    brandOptions = [];
    connectedCallback() {
        this.initAll();
import getNewLostBrand from '@salesforce/apex/lexPCLLostReportLwcController.getNewLostBrand';
import { NavigationMixin } from 'lightning/navigation';
import {CloseActionScreenEvent} from 'lightning/actions';
export default class LexPCLLostReportPage extends NavigationMixin(LightningElement) {
    @track records;
    @api recordJson;
    @track columns2=columns2;
    @api reasonValue;
    @api oppId;
    lostReportId = '';
    pageStatus = 'Create';
    lostType = '失单';
    submitFlag = '';
    flag;
    @track LostReport = {
        LostBrands: [
        ],
        lostReport: {}
    };
    @track brandOptions = [];
    columns=[
        { "label" : "失单品牌", "apiName" : "LostBrandName__c" ,"fieldType":"picklist","objectName":"PCLLostProduct__c", "readOnly":true,"value":"--无--","required":false},
        { "label" : "失单对手型号", "apiName" : "LostProduct__c" ,"fieldType":"lookup","objectName":"PCLLostProduct__c","disable":"false","searchfield":"'无'","required":false},
        { "label" : "失单数量", "apiName" : "Quantity__c","fieldType":"number","objectName":"PCLLostProduct__c" ,"required":true},
        { "label" : "失单对手型号(手动)", "apiName" : "LostProductMannual__c","fieldType":"text","objectName":"PCLLostProduct__c" ,"required":false},
        { "label" : "失单产品类别", "apiName" : "ProductClass__c","fieldType":"picklist","objectName":"PCLLostProduct__c" ,"required":true},
        { "label" : "失单产品区分", "apiName" : "ProductCategory__c","fieldType":"picklist","objectName":"PCLLostProduct__c","required":true}
    ];
    connectedCallback(){
        init({
            oppId1: this.oppId,
            lostReportId1: this.lostReportId,
            pageStatus1: this.pageStatus,
            lostType1: this.lostType,
            submitFlag1: this.submitFlag
        }).then(result=>{
            console.log(result);
            if(result.message != null){
                if(result.message == '提交成功!'){
                    this.showToast(result.message,"success");
                    this.LostReport = result.LostReport;
                }else{
                    this.showToast(result.message,"error");
                }
            }else{
                this.LostReport = result.LostReport;
                this.LostReport.lostReport.LostTotalAmount__c = 0.0;
                this.LostReport.LostBrands[0].columns = JSON.parse(JSON.stringify(this.columns));
            }
            }).catch(error=>{
                console.log("error");
                console.log(error);
            });
        searchBrands().then(result=>{
            this.brandOptions = JSON.parse(result);
            console.log(this.brandOptions);
            const multiCombobox = this.template.querySelector('c-multi-select-combobox');
            multiCombobox.refreshOptions(this.brandOptions);
            const multiComboboxs = this.template.querySelectorAll('c-multi-select-combobox');
            multiComboboxs.forEach(multiCombobox=>{
                multiCombobox.refreshOptions(this.brandOptions);
            });
        }).catch(error=>{
            console.log("error");
            console.log(error);
        });
    }
    get isInit(){
        if(this.LostReport.LostBrands[0].columns == undefined){
            return false;
        }else{
            return true;
        }
    }
    //失单类型
    RecordTypeOptions = [{ label: '--无--', value: '' },
                    { label: '失单', value: '失单' },
@@ -106,80 +122,20 @@
            }
        }
    }
    // connectedCallback(){
    //     this.initAll();
    // }
    // connectedCallback(){
    //     console.log("1");
    //     initForApex({
    //         oppId1: this.oppId,
    //         lostReportId1: this.lostReportId,
    //         pageStatus1: this.pageStatus,
    //         lostType1: this.lostType,
    //         submitFlag1: this.submitFlag
    //     }).then(()=>{
    //         console.log("2");
    //         init().then(result=>{
    //             console.log("3");
    //             console.log(result);
    //             if(result.message == '提交成功!'){
    //                 this.showToast(result.message,"success");
    //                 this.LostReport = result.LostReport;
    //             }else{
    //                 console.log("211");
    //                 this.showToast(result.message,"error");
    //                 console.log("985");
    //             }
    //         });
    //     });
    // }
    initAll(){
        console.log(this.oppId);
        console.log(this.lostReportId);
        console.log(this.pageStatus);
        console.log(this.lostType);
        console.log(this.submitFlag);
        initForApex({
                    oppId1: this.oppId,
                    lostReportId1: this.lostReportId,
                    pageStatus1: this.pageStatus,
                    lostType1: this.lostType,
                    submitFlag1: this.submitFlag
                }).then(()=>{
                    console.log("2");
                    init().then(result=>{
                        console.log("3");
                        console.log(result);
                        if(result.message == '提交成功!'){
                            this.showToast(result.message,"success");
                            this.LostReport = result.LostReport;
                        }else{
                            console.log("211");
                            //this.showToast(result.message,"error");
                            console.log("985");
                        }
                    });
                });
    getBrandLabel(index){
        return "失单品牌" + (this.LostReport.LostBrands[index].lineno + 1);
    }
    getParamValue(paramName) {
        // Use the URLSearchParams API to get the value of a query parameter
        const params = new URLSearchParams(window.location.search);
        return params.get(paramName);
    }
    saveJs() {
        save().then(result=>{
            if(result){
                this.showToast(result,"success");
                this.clearBrandMannualName();
            }
        })
    }
    addBrandJs() {
        addBrand().then(()=>{
        getNewLostBrand({
            lineNo: this.LostReport.LostBrands.length
        }).then(result=>{
            this.LostReport.LostBrands.push(result);
            this.LostReport.LostBrands[this.LostReport.LostBrands.length - 1].columns = JSON.parse(JSON.stringify(this.columns));
        });
    }
    submitJS() {
@@ -199,81 +155,78 @@
            }
        });
    }
    addProductJs(number) {
        addProduct().then(()=>{
        });
    }
    RemoveJs(number) {
        Remove().then(()=>{
        });
    }
    // add tcm 20211118 start
    searchJs(topNum, secondNum) {
        search().then(()=>{
        });
    }
    get pageStatusIsCreateOrEdit() {
        return this.pageStatus === 'Create' || this.pageStatus === 'Edit';
    }
    get isBrandCount2(){
        var flag = true;
        if(this.LostReport.LostBrands.length > 1){
            flag = false;
        }
        return flag;
    }
    deleteBrandJs(event){
        var str = event.target.name;
        this.columnsArrIndex = 0;
        this.LostReport.LostBrands.splice(str,1);
    }
    // add tcm 20211118 end
    setLostTotalAmount() {
        //console.log('setLostTotalAmount start:');
        var totalAmount = this.template.querySelector('[data-id="LostTotalAmount"]');
        var totalAmountHidden = this.template.querySelector('[data-id="LostTotalAmountHidden"]');
        var brandAmountObjects = this.template.querySelectorAll('[data-id^="BrandContent:LostPriceOut"]');
        var brandCompanyObjects = this.template.querySelectorAll('[data-id^="BrandContent:Lost_By_CompanyOut"]');
        if (!!totalAmount && !!totalAmountHidden) {
            var tempLostAmount = 0.0;
            var brandCount = parseInt(this.brandCount);
            //console.log(brandCount);
            for (var i = 0; i < brandCount; i++) {
                var brandAmountObject = brandAmountObjects[i];
                var brandCompanyObject = brandCompanyObjects[i];
                if (!!brandAmountObject && !!brandCompanyObject) {
                    var brandCompanyText = brandCompanyObject.innerText;
                    var brandCompanyValue = brandCompanyObject.value;
                    if (!!brandCompanyText && brandCompanyText !== '--无--' && !!brandCompanyValue) {
                        var brandAmount = parseFloat(brandAmountObject.value);
                        tempLostAmount = tempLostAmount + brandAmount;
                    }
                }
        var elements = this.template.querySelectorAll('[data-id="TotalAmount"]');
        var tempLostAmount = 0.0;
        elements.forEach(element => {
            console.log(element.value);
            if(element.value != 0){
                tempLostAmount = tempLostAmount + parseFloat(element.value);
            }
            totalAmount.innerHTML = toNumComma(tempLostAmount);
            totalAmountHidden.value = tempLostAmount;
        }
        //console.log('setLostTotalAmount end');
        });
        this.LostReport.lostReport.LostTotalAmount__c = tempLostAmount;
    }
    setBrandName(brandNumber) {
        setbrand().then(()=>{
            this.clearBrandMannualName();
        });
    }
    setBrandMannualName(brandNumber) {
        setbrandmannual().then(()=>{
        });
    setBrandMannualName(event) {
        var index = event.target.name;
        const payload = event.detail.payload;
        const payloadType = event.detail.payloadType;
        this.LostReport.LostBrands[index].lostBrand.Lost_By_Company__c = payload.value;
        if(payloadType === 'multi-select'){
            this.setDefaultBrand(payload.value,index);
            this.clearBrandMannualName(payload.value,index);
        }
    }
    setDefaultBrand(value,index){
        this.LostReport.LostBrands[index].columns[0].value = value;
    }
    // 失单品牌不等于其他时,失单品牌(手动)清空并且不允许填写,失单品牌等于其他时,失单对手型号不可用  thh 2022-01-13 start
    clearBrandMannualName(){
        if (this.template.querySelector('[id$="Lost_By_CompanyOut"]').value === '其他') {
            this.template.querySelector('[id$="LostProduct"]').setAttribute('disabled', true);
    clearBrandMannualName(value,index){
        if (value == '其他') {
            var elements = this.template.querySelectorAll('[data-id="Lost_By_Company_Mannual"]');
            elements[index].disabled = false;
            this.LostReport.LostBrands[index].columns[1].disable = true;
        } else {
            this.template.querySelector('[id$="Lost_By_Company_MannualOut:Lost_By_Company_Mannual"]').value = '';
            this.template.querySelector('[id$="Lost_By_Company_MannualOut:Lost_By_Company_Mannual"]').setAttribute('disabled', true);
            var elements = this.template.querySelectorAll('[data-id="Lost_By_Company_Mannual"]');
            elements[index].value = '';
            elements[index].disabled = true;
            this.LostReport.LostBrands[index].columns[1].disable = false;
        }
    }
    cancel() {
        // Navigate to the specified opportunity page using the NavigationMixin
        this[NavigationMixin.Navigate]({
            type: 'standard__recordPage',
            attributes: {
                recordId: this.oppId,
                actionName: 'view'
            }
        });
            this[NavigationMixin.Navigate]({
                type: 'standard__recordPage',
                attributes: {
                    recordId: this.oppId,
                    actionName: 'view'
                }
            });
    }
    showToast(msg,type) {
        const event = new ShowToastEvent({
@@ -284,5 +237,206 @@
        this.dispatchEvent(event);
        this.dispatchEvent(new CloseActionScreenEvent());
    }
    saveBrandJs(event) {
        var index = event.target.name;
        var tables = this.template.querySelectorAll("c-lex-dynamic-table");
            if(tables.length > 1){
                if(index == "save"){
                    for(let i=0;i < table.length;i++){
                        var products = this.LostReport.LostBrands[i].LostProducts;
                        var table = tables[i];
                        if(table!=undefined){
                            var records = table.retrieveRecords();
                            for(let j=0;j<records.length - 1;j++){
                                products.push(JSON.parse(JSON.stringify(products[0])));
                            }
                            for(let j=0;j<records.length;j++){
                                products[j].LostProductss.LostBrandName__c = records[j].LostBrandName__c;
                                products[j].LostProductss.Quantity__c = records[j].Quantity__c;
                                products[j].LostProductss.LostProductMannual__c = records[j].LostProductMannual__c;
                                products[j].LostProductss.ProductClass__c = records[j].ProductClass__c;
                                products[j].LostProductss.ProductCategory__c = records[j].ProductCategory__c;
                                products[j].LostProductss.LostProduct__c = records[j].LostProduct__c;
                            }
                        }
                    }
                }else{
                    var products = this.LostReport.LostBrands[index].LostProducts;
                    var table = tables[index];
                    if(table!=undefined){
                        var records = table.retrieveRecords();
                        for(let i=0;i<records.length - 1;i++){
                            products.push(JSON.parse(JSON.stringify(products[0])));
                        }
                        for(let i=0;i<records.length;i++){
                            products[i].LostProductss.LostBrandName__c = records[i].LostBrandName__c;
                            products[i].LostProductss.Quantity__c = records[i].Quantity__c;
                            products[i].LostProductss.LostProductMannual__c = records[i].LostProductMannual__c;
                            products[i].LostProductss.ProductClass__c = records[i].ProductClass__c;
                            products[i].LostProductss.ProductCategory__c = records[i].ProductCategory__c;
                            products[i].LostProductss.LostProduct__c = records[i].LostProduct__c;
                        }
                    }
                }
            }else{
                var products = this.LostReport.LostBrands[0].LostProducts;
                var table = tables[0];
                if(table!=undefined){
                    var records = table.retrieveRecords();
                    console.log(JSON.stringify(records));
                    if(records.length > 1){
                        for(let i=0;i<records.length - 1;i++){
                            products.push(JSON.parse(JSON.stringify(products[0])));
                        }
                    }
                    for(let i=0;i<records.length;i++){
                        products[i].LostProductss.LostBrandName__c = records[i].LostBrandName__c;
                        products[i].LostProductss.Quantity__c = records[i].Quantity__c;
                        products[i].LostProductss.LostProductMannual__c = records[i].LostProductMannual__c;
                        products[i].LostProductss.ProductClass__c = records[i].ProductClass__c;
                        products[i].LostProductss.ProductCategory__c = records[i].ProductCategory__c;
                        products[i].LostProductss.LostProduct__c = records[i].LostProduct__c;
                    }
                }
            }
        this.dataCheck();
        if(!this.flag){
            return;
        }
        dataEntry({
            report1 : JSON.stringify(this.LostReport)
        }).then(result=>{
            if(result){
                this.showToast(result,"error")
            }
        }).catch(error=>{
            console.log("error");
            console.log(error);
        });
    }
    handleLostTypeChange(event){
        var value = event.target.value;
        this.LostReport.lostReport.LostType__c = value;
    }
    
    handleLostReasonMainChange(event){
        var index = event.target.name;
        var value = event.target.value;
        this.LostReport.LostBrands[index].lostBrand.Lost_reason_main__c = value;
    }
    handleLostReasonSubChange(event){
        var index = event.target.name;
        var value = event.target.value;
        this.LostReport.LostBrands[index].lostBrand.Lost_Reason_Sub__c = value;
    }
    handleLostByCompanyMannualChange(event){
        var index = event.target.name;
        var value = event.target.value;
        this.LostReport.LostBrands[index].lostBrand.Lost_By_Company_Mannual__c = value;
    }
    handleLostPriceOutChange(event){
        var index = event.target.name;
        var value = event.target.value;
        this.LostReport.LostBrands[index].lostBrand.LostPrice__c = value;
        this.setLostTotalAmount();
    }
    handleAgencyOutChange(event){
        var index = event.target.name;
        var value = event.target.value;
        this.LostReport.LostBrands[index].lostBrand.Agency__c = value;
    }
    handleAgencyMannualOutChange(event){
        var index = event.target.name;
        var value = event.target.value;
        this.LostReport.LostBrands[index].lostBrand.AgencyMannual__c = value;
    }
    dataCheck(){
        this.flag = true;
        if(this.LostReport.lostReport.LostType__c == undefined || this.isBlank(this.LostReport.lostReport.LostType__c))
        {
            this.flag = false;
            this.showToast('必须填写失单类型!','error');
        }
        this.LostReport.LostBrands.forEach(tempLostBrand=>{
            if(tempLostBrand.lostBrand.Lost_By_Company__c == undefined || this.isBlank(tempLostBrand.lostBrand.Lost_By_Company__c)) {
                this.flag = false;
                this.showToast('请填写失单品牌!','error');
            }// fy SWAG-CCC6F6 start
            else if(tempLostBrand.lostBrand.Lost_By_Company__c == '其他' && (tempLostBrand.lostBrand.Lost_By_Company_Mannual__c == undefined || this.isBlank(tempLostBrand.lostBrand.Lost_By_Company_Mannual__c))){
                this.flag = false;
                this.showToast('请填写失单品牌(手动)!','error');
            }// fy SWAG-CCC6F6 end
            if(tempLostBrand.lostBrand.LostPrice__c == undefined || this.isBlank(tempLostBrand.lostBrand.LostPrice__c)) {
                this.flag = false;
                this.showToast('失单金额必填!','error');
            }
            if(tempLostBrand.lostBrand.Lost_reason_main__c == undefined || this.isBlank(tempLostBrand.lostBrand.Lost_reason_main__c)) {
                this.flag = false;
                this.showToast('失单理由(主)必填!','error');
            }
            if(tempLostBrand.lostBrand.Agency__c == undefined || this.isBlank(tempLostBrand.lostBrand.Agency__c)) {
                this.flag= false;
                this.showToast('中标经销商必填!','error');
            }
            // 检查是否有超过1个有数的产品
            var productCount = 0;
            tempLostBrand.LostProducts.forEach(temlostProduct=>{
                if ((temlostProduct.LostProductss.LostProduct__c != undefined && !this.isBlank(temlostProduct.LostProductss.LostProduct__c)) || (temlostProduct.LostProductss.LostProductMannual__c != undefined && !this.isBlank(temlostProduct.LostProductss.LostProductMannual__c))) {
                    productCount ++;
                }
                // update tcm 20211123 start
                if(((temlostProduct.LostProductss.LostProduct__c!= undefined && !this.isBlank(temlostProduct.LostProductss.LostProduct__c)) || (temlostProduct.LostProductss.LostProductMannual__c!=undefined && !this.isBlank(temlostProduct.LostProductss.LostProductMannual__c)))&&(temlostProduct.LostProductss.Quantity__c==undefined || this.isBlank(temlostProduct.LostProductss.Quantity__c) || temlostProduct.LostProductss.Quantity__c ==0)) {
                    this.flag = false;
                    this.showToast('请填写失单数量!','error');
                }
                if(((temlostProduct.LostProductss.LostProduct__c!=undefined && !this.isBlank(temlostProduct.LostProductss.LostProduct__c)) || (temlostProduct.LostProductss.LostProductMannual__c!=undefined && !this.isBlank(temlostProduct.LostProductss.LostProductMannual__c)))&&(temlostProduct.LostProductss.ProductCategory__c==undefined || this.isBlank(temlostProduct.LostProductss.ProductCategory__c))) {
                    this.flag = false;
                    if (temlostProduct.LostProductss.ProductClass__c==undefined || this.isBlank(temlostProduct.LostProductss.ProductClass__c)) {
                        this.showToast('失单产品类别必填!','error');
                        this.showToast('失单产品必填!','error');
                    }else {
                        this.showToast('失单产品必填!','error');
                    }
                }
                // 当失单品牌名为其他时,报错字段为失单对手型号(手动) thh 2022-01-17 start
                if (((temlostProduct.LostProductss.LostProduct__c==undefined || this.isBlank(temlostProduct.LostProductss.LostProduct__c)) && (temlostProduct.LostProductss.LostProductMannual__c==undefined || this.isBlank(temlostProduct.LostProductss.LostProductMannual__c)))&&((temlostProduct.LostProductss.ProductCategory__c!=undefined && !this.isBlank(temlostProduct.LostProductss.ProductCategory__c))||(temlostProduct.LostProductss.Quantity__c!=undefined && !this.isBlank(temlostProduct.LostProductss.Quantity__c)))) {
                    this.flag = false;
                    if(tempLostBrand.lostBrand.Lost_By_Company__c != '其他'){
                        this.showToast('失单对手型号或失单对手型号(手动)必填!','error');
                    } else{
                        this.showToast('失单对手型号或失单对手型号(手动)必填!','error');
                    }
                }
                // 当失单品牌名为其他时,报错字段为失单对手型号(手动) thh 2022-01-17 end
                // update tcm 20211123 end
            });
            // 当失单品牌名为其他时,报错字段为失单对手型号(手动) thh 2022-01-17 start
            if (productCount == 0 && (tempLostBrand.LostProducts != undefined && !this.isBlank(tempLostBrand.LostProducts)) && tempLostBrand.LostProducts.length > 0) {
                this.flag = false;
                if(tempLostBrand.lostBrand.Lost_By_Company__c != '其他'){
                    this.showToast('至少录入1条失单对手型号信息!','error');
                }else{
                    this.showToast('至少录入1条失单对手型号信息!','error');
                }
            }
                // 当失单品牌名为其他时,报错字段为失单对手型号(手动) thh 2022-01-17 end
        });
    }
    isBlank(str) {
        return /^\s*$/.test(str);
      }
}
force-app/main/default/lwc/multiSelectCombobox/multiSelectCombobox.html
@@ -4,7 +4,7 @@
 * @Author: chen jing wu
 * @Date: 2023-04-25 17:41:26
 * @LastEditors: chen jing wu
 * @LastEditTime: 2023-04-25 17:45:57
 * @LastEditTime: 2023-05-04 13:56:11
-->
<!-- Code by CafeForce || www.cafeforce.com || support@cafeforce.com || Mandatory Header -->
@@ -18,7 +18,7 @@
        <div class="slds-combobox slds-dropdown-trigger slds-dropdown-trigger_click slds-is-open" aria-expanded="true" aria-haspopup="listbox" role="combobox">
            <!-- Search Input -->
            <div class="slds-combobox__form-element slds-input-has-icon slds-input-has-icon_right" role="none">
                <lightning-input disabled={disabled} class="inputBox" placeholder="Select an Option" onblur={blurEvent} onclick={showOptions} onkeyup={filterOptions} value={searchString} auto-complete="off" variant="label-hidden" id="combobox-id-1" ></lightning-input>
                <lightning-input data-id="myinput" disabled={disabled} class="inputBox" placeholder="--无--" onblur={blurEvent} onclick={showOptions} onkeyup={filterOptions} value={searchString} auto-complete="off" variant="label-hidden" id="combobox-id-1" required={isRequired}></lightning-input>
                <lightning-icon class="slds-input__icon" icon-name="utility:down" size="x-small" alternative-text="search"></lightning-icon>
            </div>
            <!-- Dropdown List -->
force-app/main/default/lwc/multiSelectCombobox/multiSelectCombobox.js
@@ -10,13 +10,14 @@
    @api minChar = 2;
    @api disabled = false;
    @api multiSelect = false;
    @api myValue;
    @api required;
    @track value;
    @track values = [];
    @track optionData;
    @track searchString;
    @track message;
    @track showDropdown = false;
    connectedCallback() {
        this.showDropdown = false;
        var optionData = this.options ? (JSON.parse(JSON.stringify(this.options))) : null;
@@ -45,6 +46,10 @@
        this.value = value;
        this.values = values;
        this.optionData = optionData;
    }
    get isRequired() {
        return this.required;
    }
    filterOptions(event) {
@@ -77,6 +82,7 @@
    selectItem(event) {
        var selectedVal = event.currentTarget.dataset.id;
        this.myValue = selectedVal;
        if(selectedVal) {
            var count = 0;
            var options = JSON.parse(JSON.stringify(this.optionData));