buli
2023-04-20 44f866419cde0ff12a91d9c1d92daf9e36b063e1
backup0420
3个文件已修改
30个文件已添加
4533 ■■■■■ 已修改文件
force-app/main/default/aura/TestCaseClick/TestCaseClick.auradoc 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/aura/TestCaseClick/TestCaseClick.cmp 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/aura/TestCaseClick/TestCaseClick.cmp-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/aura/TestCaseClick/TestCaseClick.css 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/aura/TestCaseClick/TestCaseClick.design 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/aura/TestCaseClick/TestCaseClick.svg 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/aura/TestCaseClick/TestCaseClickController.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/aura/TestCaseClick/TestCaseClickHelper.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/aura/TestCaseClick/TestCaseClickRenderer.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableController.cls 2433 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableController.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/childComponentTest/__tests__/childComponentTest.test.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/childComponentTest/childComponentTest.html 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/childComponentTest/childComponentTest.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/childComponentTest/childComponentTest.js-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/createCaseTest/__tests__/createCaseTest.test.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/createCaseTest/createCaseTest.html 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/createCaseTest/createCaseTest.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/createCaseTest/createCaseTest.js-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexConsumable/lexConsumable.css 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexConsumable/lexConsumable.html 507 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexConsumable/lexConsumable.js 935 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexConsumable/lexConsumable.js-meta.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexConsumableOrderManage/lexConsumableOrderManage.html 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexConsumableOrderManage/lexConsumableOrderManage.js 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexConsumableOrderManage/lexConsumableOrderManage.js-meta.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexinventoryViewLWC/lexinventoryViewLWC.html 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexinventoryViewLWC/lexinventoryViewLWC.js 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/parentComponentTest/__tests__/parentComponentTest.test.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/parentComponentTest/parentComponentTest.html 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/parentComponentTest/parentComponentTest.js 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/parentComponentTest/parentComponentTest.js-meta.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manifest/packageForLex.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/aura/TestCaseClick/TestCaseClick.auradoc
New file
@@ -0,0 +1,6 @@
<aura:documentation>
    <aura:description>Documentation</aura:description>
    <aura:example name="ExampleName" ref="exampleComponentName" label="Label">
        Example Description
    </aura:example>
</aura:documentation>
force-app/main/default/aura/TestCaseClick/TestCaseClick.cmp
New file
@@ -0,0 +1,3 @@
<aura:component implements = "force:lightningQuickAction, force:hasRecordId" >
    <c:createCaseTest recordId="{!v.recordId}" onclose="{!c.closeQA}"/>
</aura:component>
force-app/main/default/aura/TestCaseClick/TestCaseClick.cmp-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<AuraDefinitionBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>56.0</apiVersion>
    <description>A Lightning Component Bundle</description>
</AuraDefinitionBundle>
force-app/main/default/aura/TestCaseClick/TestCaseClick.css
New file
@@ -0,0 +1,2 @@
.THIS {
}
force-app/main/default/aura/TestCaseClick/TestCaseClick.design
New file
@@ -0,0 +1,3 @@
<design:component >
</design:component>
force-app/main/default/aura/TestCaseClick/TestCaseClick.svg
New file
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg width="120px" height="120px" viewBox="0 0 120 120" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <path d="M120,108 C120,114.6 114.6,120 108,120 L12,120 C5.4,120 0,114.6 0,108 L0,12 C0,5.4 5.4,0 12,0 L108,0 C114.6,0 120,5.4 120,12 L120,108 L120,108 Z" id="Shape" fill="#2A739E" />
        <path d="M77.7383308,20 L61.1640113,20 L44.7300055,63.2000173 L56.0543288,63.2000173 L40,99.623291 L72.7458388,54.5871812 L60.907727,54.5871812 L77.7383308,20 Z" id="Path-1" fill="#FFFFFF" />
    </g>
</svg>
force-app/main/default/aura/TestCaseClick/TestCaseClickController.js
New file
@@ -0,0 +1,5 @@
({
    closeQA : function(component, event, helper) {
        $A.get("e.force:closeQuickAction").fire();
    }
})
force-app/main/default/aura/TestCaseClick/TestCaseClickHelper.js
New file
@@ -0,0 +1,5 @@
({
    helperMethod : function() {
    }
})
force-app/main/default/aura/TestCaseClick/TestCaseClickRenderer.js
New file
@@ -0,0 +1,5 @@
({
// Your renderer method overrides go here
})
force-app/main/default/classes/LexConsumableController.cls
New file
@@ -0,0 +1,2433 @@
public without sharing class LexConsumableController {
    /*****************検索用******************/
    public static Consumable_order__c coc { get; set; } // FIMXE Consumable_order__c のインスタンス、sql多すぎ
    public static String category1 { get; set; }
    public static String category5 { get; set; }
    public static String category4 { get; set; }
    public static String category3 { get; set; }
    public static String category_Goods { get; set; }
    public static Boolean specialCampaign { get; set; }
    public static Boolean cansee { get; set; }
    //经销商合同名称
    public static String contractName { get; set; }
    //经销商合同ID
    public static String contractId { get; set; }
    //经销商定价查看权限
    public static Boolean dealerPricesee { get; set; }
    /*****************画面初始化用********************************/
    /******20160313_add**************/
    //public String idCheck {get;set;}
    public static Boolean editAble { get; set; }
    public static Boolean edoffersPrice { get; set; }
    public static String statusEdit { get; set; }
    public static Boolean returnOrder { get; set; }
    public static String searchDone { get; set; }
    //暂用20160323
    public static Decimal disCount = 0;
    //总价格计算结果
    public static Decimal sumPrice { get; set; }
    //自定义特价金额
    public static Decimal bargainPrice { get; set; }
    //产品上下限
    public static String[] proLimitAndDate = new List<String>{};
    /*****************画面表示Bean******************/
    private static List<ConsumableorderdetailsInfo> consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
    public static List<ConsumableorderdetailsInfo> consumableorderdetailsRecordsview { get; set; }
    public static Integer ConsumableorderdetailsCount {
        get {
            return consumableorderdetailsRecords == null ? 0 : consumableorderdetailsRecords.size();
        }
    }
    public static Integer ConsumableorderdetailsviewCount {
        get {
            return consumableorderdetailsRecordsview == null ? 0 : consumableorderdetailsRecordsview.size();
        }
    }
    public static List<String> lower = new List<String>();
    //附件
    public static List<ConsumableorderdetailsInfo> attachmentRecoeds { get; set; }
    public static List<String> DealerProductId { get; set; }
    public static Boolean editDelCommitBtnDisabled { get; private set; }
    public static Boolean saveBtnDisabled { get; private set; }
    public static Boolean sorderBtnDisabled { get; private set; }
    public static String decisionCode { get; set; }
    // 保存后动作: 1.检索 2.排序
    public static String baseUrl { get; private set; }
    public static String sortKey { get; set; }
    public static String preSortKey { get; private set; }
    public static Boolean sortOrderAsc { get; private set; }
    public static String[] sortOrder { get; private set; }
    private static List<String> contactDealer = new List<String>();
    private static String[] columus = new List<String>{
        'Consumable_Product__r.Name',
        'Consumable_Product__r.Asset_Model_No__c',
        'Consumable_Product__r.Intra_Trade_List_RMB__c',
        '',
        '',
        'Consumable_Product__r.Category3__c',
        'Consumable_Product__r.Category4__c',
        'Consumable_Product__r.Category5__c'
    };
    private static String[] columus_no = new List<String>{
        'Product2__c.Name',
        'Product2__c.Asset_Model_No__c',
        'Product2__c.Intra_Trade_List_RMB__c',
        '',
        '',
        'Category3__c',
        'Category4__c',
        'Category5__c'
    };
    // 已选择产品明细
    private static List<Attachment> attachmentinfo = new List<Attachment>();
    /*****************ソート時再検索条件(画面からの入力条件を無視するため)******************/
    private static String cate1ForSort = null;
    private static String accountid = null;
    private static String accountName = null;
    // 产品 ID
    public static String ESetId { get; set; }
    private static String userId = '';
    //private String[] ProidListAll = new String[]{};
    public static List<SelectOption> categoryOptionList { get; set; }
    public static List<SelectOption> category4OptionList { get; set; }
    public static List<SelectOption> category5OptionList { get; set; }
    public static List<CusOption> category3Option { get; set; }
    public static List<CusOption> category4Option { get; set; }
    public static List<CusOption> category5Option { get; set; }
    private static Map<Id, Dealer_Product__c> DealerProductMap = new Map<Id, Dealer_Product__c>();
    public static List<String> orderzaikuId = new List<String>();
    //分页功能
    public static Integer size { get; set; }
    public static Integer pageLimit { get; set; }
    public static Integer noOfRecords { get; set; }
    public static ApexPages.StandardSetController con { get; set; }
    public static String soql { get; set; }
    // 登录者工作地
    private static String userWorkLocation;
    public static String agencyProType { get; set; }
    public static String methodType { get; set; }
    public static String hospitalName { get; set; }
    public static String hospitalId { get; set; }
    public static String tempidHp { get; set; }
    public static String tempidPp { get; set; }
    private static List<String> hpids = new List<String>();
    private static Boolean isfirst = false;
    //报错和警告信息
    public static List<String> errorMsgList = new List<String>();
    public static List<String> warningMsgList = new List<String>();
    //构造方法
    public LexConsumableController() {
        baseUrl = URL.getSalesforceBaseUrl().toExternalForm();
        consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
        DealerProductId = new List<String>();
        attachmentRecoeds = new List<ConsumableorderdetailsInfo>();
        consumableorderdetailsRecordsview = new List<ConsumableorderdetailsInfo>();
        editAble = false;
        edoffersPrice = false;
        returnOrder = false;
        categoryOptionList = new List<SelectOption>();
        category4OptionList = new List<SelectOption>();
        category5OptionList = new List<SelectOption>();
        size = Integer.valueOf(System.Label.orderdetLimitsize);
        pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize);
    }
    private static void initStandardController() {
        con = new ApexPages.StandardSetController(Database.getQueryLocator(soql));
        con.setPageSize(size);
        noOfRecords = con.getResultSize();
    }
    public static List<Product2__c> product2s() {
        return (List<Product2__c>) con.getRecords();
    }
    private static List<ConsumableorderdetailsInfo> getPageInfo() {
        List<ConsumableorderdetailsInfo> reSet = new List<ConsumableorderdetailsInfo>();
        Map<String, String> selectedIdMap = new Map<String, String>();
        for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) {
            if (ass.check == true) {
                selectedIdMap.put(ass.Prod.id, ass.Prod.id);
                reSet.add(ass);
            }
        }
        consumableorderdetailsRecordsview = new List<ConsumableorderdetailsInfo>();
        if (editAble) {
            consumableorderdetailsRecordsview = reSet;
        }
        Integer pagestartNo = (con.getPageNumber() * size) - size;
        Integer pageendNo = (con.getPageNumber() * size) > noOfRecords ? noOfRecords : (con.getPageNumber() * size - 1);
        Integer addNo = 0;
        for (Integer i = pagestartNo; i < consumableorderdetailsRecords.size(); i++) {
            Consumable_Orderdetails__c orderdetails1 = new Consumable_Orderdetails__c();
            if (selectedIdMap.containsKey(consumableorderdetailsRecords[i].Prod.Id)) {
                addNo++;
                //continue;
            } else if (consumableorderdetailsRecordsview.size() >= pageLimit + size) {
                break;
            } else {
                if (consumableorderdetailsRecords[i].check == false) {
                    consumableorderdetailsRecords[i].esd = orderdetails1;
                }
                //consumableorderdetailsRecords[i].esd.Dealer_Custom_Price__c = consumableorderdetailsRecords[i].Prod.Intra_Trade_List_RMB__c * disCount / 100;
                consumableorderdetailsRecordsview.add(consumableorderdetailsRecords[i]);
                addNo++;
            }
            if (addNo >= size)
                break;
        }
        return consumableorderdetailsRecordsview;
    }
    @AuraEnabled
    public static Results init(String type, String esetId, String keywordStr) {
        Results results = new Results();
        errorMsgList = new List<String>();
        warningMsgList = new List<String>();
        baseUrl = URL.getSalesforceBaseUrl().toExternalForm();
        consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
        DealerProductId = new List<String>();
        attachmentRecoeds = new List<ConsumableorderdetailsInfo>();
        consumableorderdetailsRecordsview = new List<ConsumableorderdetailsInfo>();
        editAble = false;
        edoffersPrice = false;
        returnOrder = false;
        categoryOptionList = new List<SelectOption>();
        category4OptionList = new List<SelectOption>();
        category5OptionList = new List<SelectOption>();
        size = Integer.valueOf(System.Label.orderdetLimitsize);
        pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize);
        ESetId = esetId;
        methodType = type;
        if(String.isBlank(methodType) && String.isNotBlank(ESetId)){
            List<Consumable_order__c> oclist = [SELECT orderPattern__c FROM Consumable_order__c WHERE id = :ESetid];
            methodType = oclist.get(0).orderPattern__c;
        }
        statusEdit = keywordStr;
        System.debug('Param:'+ESetId+'---'+methodType+'---'+statusEdit);
        try {
            sortKey = '1';
            preSortKey = '1';
            sortOrderAsc = false;
            sortOrder = new String[8];
            sortOrder = new List<String>{ ' ', ' ', ' ', ' ', '↓', '', '', '' };
            cate1ForSort = '';
            decisionCode = '';
            sumPrice = 0;
            specialCampaign = false;
            if (ESetId != null && ESetId != '' && statusEdit == '' && statusEdit == null) {
                editAble = false;
            } else if ((ESetId == null || ESetId == '') && (statusEdit == '' || statusEdit == null)) {
                editAble = true;
            } else if (ESetId != null && ESetId != '' && statusEdit != '' && statusEdit != null) {
                editAble = true;
            }
            userId = UserInfo.getUserId();
            List<user> Useracc = new List<user>();
            Useracc = [SELECT accountid, Work_Location__c, UserPro_Type__c FROM user WHERE id = :userId];
            accountid = Useracc[0].accountid;
            userWorkLocation = Useracc[0].Work_Location__c;
            agencyProType = Useracc[0].UserPro_Type__c;
            if (String.isBlank(Useracc[0].UserPro_Type__c)) {
                agencyProType = 'ET';
            }
            //错误信息提示
            if (String.isNotBlank(methodType) && methodType.equals('hospitalorder') && agencyProType == 'ET') {
                // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '您没有订货医院特价产品的权限!'));
                errorMsgList.add('您没有订货医院特价产品的权限!');
            }
            contactDealer = new List<String>();
            Date dateToday = Date.today();
            //查该经销商下所有有效合同
            List<Account> contractList = [
                SELECT Id, Name, RecordType.DeveloperName
                FROM Account
                WHERE
                    RecordType.DeveloperName = 'AgencyContract'
                    AND Contract_Decide_Start_Date__c <= :dateToday
                    AND Contract_Decide_End_Date__c >= :dateToday
                    AND Contact_Type__c LIKE :agencyProType
                    AND Agent_Ref__c = :accountid
            ];
            for (Account contract : contractList) {
                contactDealer.add(contract.Id);
            }
            DealerProductMap = new Map<Id, Dealer_Product__c>();
            DealerProductId = getDealerProductId();
            Account accountInfo = [
                SELECT Name, Dealer_discount__c, Product_Limit_Date__c, Product_Limit_DateENG__c
                FROM account
                WHERE id = :accountid
            ];
            accountName = accountInfo.Name;
            String product_Limit;
            if (agencyProType == 'ET') {
                product_Limit = accountInfo.Product_Limit_Date__c;
            } else {
                product_Limit = accountInfo.Product_Limit_DateENG__c;
            }
            if (product_Limit != null && product_Limit != '') {
                proLimitAndDate = product_Limit.split(',');
            }
            saveBtnDisabled = false;
            sorderBtnDisabled = false;
            coc = new Consumable_order__c();
            consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
            if (String.isBlank(agencyProType)) {
                //return ;
            }
            List<Product2__c> Product2Selected = new List<Product2__c>();
            Map<String, ConsumableorderdetailsInfo> MidMap = new Map<String, ConsumableorderdetailsInfo>();
            //经销商在库数据
            List<Consumable_order_details2__c> countDel = [
                SELECT
                    Id,
                    Bar_Code__c,
                    Name,
                    Inventory_date__c,
                    Consumable_Product__c,
                    Consumable_Product__r.Asset_Model_No__c,
                    Recordtypeid,
                    Box_Piece__c,
                    hospitalSpecialOffer__c,
                    promotionorder__c
                FROM Consumable_order_details2__c
                WHERE
                    Dealer_Arrive__c = TRUE
                    AND Dealer_Shipment__c = FALSE
                    AND Dealer_Saled__c = FALSE
                    AND Dealer_Returned__c = FALSE
                    AND Lose_Flag__c = FALSE
                    AND Cancellation_Flag__c = FALSE
                    AND Bar_Code__c != NULL
                    AND Isoverdue__c = 1
                    AND Arrive_Owner_Work_Location__c = :userWorkLocation
                    AND Dealer_Info_text__c = :accountName
            ];
            if (ESetId == null || ESetId == '') {
                //获取经销商默认的一个合同
                List<Account> contract = [
                    SELECT id, Name, State_Master__c, State_Master__r.Name
                    FROM Account
                    WHERE
                        ParentId = :accountid
                        AND Contact_Type__c LIKE :agencyProType
                        AND Contract_Decide_Start_Date__c <= :Date.Today()
                        AND Contract_Decide_End_Date__c >= :Date.Today()
                ];
                if (contract.size() == 1) {
                    contractName = contract[0].Name;
                    contractId = contract[0].Id;
                }
                editDelCommitBtnDisabled = true;
                List<String> DealerProductId = new List<String>();
                soql = makeSoql('', '', '', '', '', false, DealerProductId);
                size = Integer.valueOf(System.Label.orderdetLimitsize);
                initStandardController();
                product2Selected = Database.query(soql);
                for (Integer i = 0; i < product2Selected.size(); i++) {
                    consumableorderdetailsRecords.add(new ConsumableorderdetailsInfo(product2Selected[i]));
                    MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i]));
                }
                //只有在协议订货时会走这个for循环 其他两种订货模式都走的searchorderdetails方法
                if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) {
                    for (Integer i = 0; i < countDel.size(); i++) {
                        if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) {
                            if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                                ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                                if (countDel[i].Box_Piece__c == '盒') {
                                    Jstage.allnumber = Jstage.allnumber + 1;
                                } else {
                                    Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                                }
                                MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                            }
                        }
                    }
                }
                consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
                //经销商定价 计算
                for (ConsumableorderdetailsInfo bss : MidMap.values()) {
                    bss.sortBy = sortOrderAsc;
                    bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c);
                    bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c;
                    bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c;
                    if (DealerProductMap.containsKey(bss.Prod.Id)) {
                        bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c;
                        bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c;
                        bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c;
                    }
                    consumableorderdetailsRecords.add(bss);
                }
                consumableorderdetailsRecords.sort();
                if (methodType != null && methodType != '' && (methodType.equals('hospitalorder') || methodType.equals('promotionorder'))) {
                    searchorderdetails(methodType,accountid,hospitalId,contractId,userWorkLocation,accountName,proLimitAndDate,editAble);
                    isfirst = true;
                }
                getPageInfo();
            } else {
                if (methodType != null && methodType.equals('hospitalorder')) {
                    List<Consumable_order__c> oclist = [
                        SELECT orderPattern__c, Order_ForHospital__c, Order_ForHospital__r.Name
                        FROM Consumable_order__c
                        WHERE id = :ESetid
                    ];
                    if (oclist.get(0).orderPattern__c.equals('hospitalorder')) {
                        hospitalName = oclist.get(0).Order_ForHospital__r.Name;
                        hospitalId = oclist.get(0).Order_ForHospital__c;
                    }
                }
                List<Consumable_Orderdetails__c> ConsumableorderdetailsSelected = new List<Consumable_Orderdetails__c>();
                //修改
                List<Consumable_order__c> qs = new List<Consumable_order__c>();
                qs = [
                    SELECT
                        Id,
                        Name,
                        Order_status__c,
                        Consumable_pdf_insert_day__c,
                        Dealer_Info__c,
                        Deliver_date__c,
                        Order_Reason__c,
                        Order_date__c,
                        Contract_application_decision__c,
                        Total_amount__c,
                        Offers_Price__c,
                        Order_effective_contact__c,
                        Order_effective_contact__r.Name
                    FROM Consumable_order__c
                    WHERE Id = :ESetId AND Order_Owner_WorkLocal__c = :userWorkLocation
                ];
                if (qs.size() > 0) {
                    coc = qs[0];
                    decisionCode = coc.Contract_application_decision__c;
                    contractName = coc.Order_effective_contact__r.Name;
                    contractId = coc.Order_effective_contact__r.Id;
                }
                if (qs[0].Order_status__c == '已提交' || qs[0].Order_status__c == '批准' || qs[0].Order_status__c == '附件上传完成') {
                    saveBtnDisabled = true;
                    sorderBtnDisabled = true;
                    editDelCommitBtnDisabled = false;
                }
                // 選択済みの明细を取得
                ConsumableorderdetailsSelected = [
                    SELECT
                        Id,
                        Name,
                        Consumable_order__c,
                        Consumable_Product__r.Name__c,
                        Consumable_Product__c,
                        Consumable_Product__r.Name,
                        Consumable_Count__c,
                        Consumable_Product__r.Category3__c,
                        Consumable_Product__r.Category4__c,
                        Consumable_Product__r.Category5__c,
                        Consumable_Product__r.Intra_Trade_List_RMB__c,
                        Consumable_Product__r.Asset_Model_No__c,
                        Sum_of_money__c,
                        Consumable_Product__r.SFDA_Status__c,
                        Consumable_Product__r.Product2__r.Packing_list_manual__c,
                        Consumable_Product__r.Product2__r.SFDA_Approbation_No__c,
                        Consumable_Product__r.Product2__r.SFDA_Expiration_Date__c
                    FROM Consumable_Orderdetails__c
                    WHERE
                        recordtypeid = :System.Label.RT_ConOrderDetail1_Order
                        AND Consumable_order__c = :ESetId
                        AND Order_Owner_WorkLocal__c = :userWorkLocation
                        AND Consumable_order__r.Dealer_Info__c = :accountid
                ];
                for (Consumable_Orderdetails__c cdc1 : ConsumableorderdetailsSelected) {
                    orderzaikuId.add(cdc1.Consumable_Product__c);
                }
                soql = makeSoqlorderdet();
                size = orderzaikuId.size();
                initStandardController();
                product2Selected = Database.query(soql);
                for (Integer i = 0; i < product2Selected.size(); i++) {
                    MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i]));
                }
                for (Integer i = 0; i < countDel.size(); i++) {
                    //add by rentx 2020-12-09
                    if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) {
                        if (countDel[i].hospitalSpecialOffer__c == true) {
                            //然后循环CountDel去修改map里的allnumber
                            if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                                ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                                if (countDel[i].Box_Piece__c == '盒') {
                                    Jstage.allnumber = Jstage.allnumber + 1;
                                } else {
                                    Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                                }
                                MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                            }
                        }
                    } else if (String.isBlank(methodType) || methodType.equals('promotionorder')) {
                        if (countDel[i].promotionorder__c == true) {
                            if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                                ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                                if (countDel[i].Box_Piece__c == '盒') {
                                    Jstage.allnumber = Jstage.allnumber + 1;
                                } else {
                                    Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                                }
                                MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                            }
                        }
                    } else if (
                        String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))
                    ) {
                        if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) {
                            if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                                ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                                if (countDel[i].Box_Piece__c == '盒') {
                                    Jstage.allnumber = Jstage.allnumber + 1;
                                } else {
                                    Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                                }
                                MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                            }
                        }
                    }
                }
                consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
                //再把map里的值从新赋给ConsumableorderdetailsRecords
                for (ConsumableorderdetailsInfo bss : MidMap.values()) {
                    bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c);
                    bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c;
                    bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c;
                    if (DealerProductMap.containsKey(bss.Prod.Id)) {
                        bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c;
                        bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c;
                        bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c;
                    }
                    consumableorderdetailsRecords.add(bss);
                }
                for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) {
                    ass.sortBy = sortOrderAsc;
                    for (Consumable_Orderdetails__c cdc1 : ConsumableorderdetailsSelected) {
                        sumPrice += cdc1.Sum_of_money__c;
                        if (ass.prod.Id == cdc1.Consumable_Product__c) {
                            ass.check = true;
                            ass.esd = cdc1;
                        }
                    }
                }
                //附件
                attachmentinfo = [SELECT Id, Name, OwnerId, Owner.Name FROM Attachment WHERE parentid = :ESetId];
                if (attachmentinfo.size() > 0) {
                    for (Integer i = 0; i < attachmentinfo.size(); i++) {
                        attachmentRecoeds.add(new ConsumableorderdetailsInfo(attachmentinfo[i]));
                    }
                }
                consumableorderdetailsRecords.sort();
                getPageInfo();
            }
            //计算库存上、下限
            productLimtAndDate();
            lowerRecord();
            //明细排序
            List<String> upper = new List<String>();
            if (String.isNotBlank(ESetid)) {
                for (ConsumableorderdetailsInfo bss : consumableorderdetailsRecords) {
                    if (bss.esd.Consumable_count__c + bss.allnumber > bss.upperlimit) {
                        upper.add(bss.esd.Consumable_Product__r.Name__c);
                    }
                }
            }
            if (upper.size() > 0) {
                // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '存在以下产品订货数量超出库存上限!'));
                warningMsgList.add('存在以下产品订货数量超出库存上限!');
                for (Integer i = 0; i < upper.size(); i++) {
                    // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, upper[i]));
                    warningMsgList.add(upper[i]);
                }
            }
            if (lower.size() > 0) {
                // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '存在以下产品订货数量低于库存下限!'));
                warningMsgList.add('存在以下产品订货数量低于库存下限!');
                for (Integer i = 0; i < lower.size(); i++) {
                    // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, lower[i]));
                    warningMsgList.add(lower[i]);
                }
            }
            //价格查看权限
            Schema.DescribeFieldResult dfr = Product2__c.Intra_Trade_List_RMB__c.getDescribe();
            cansee = dfr.isAccessible();
            AggregateResult[] categoryList = [
                SELECT Count(id), Category3_text__c c3c
                FROM Product2__c
                WHERE Estimation_Entry_Possibility__c = '○' AND Product_Type__c LIKE :agencyProType AND Category3_text__c != NULL
                GROUP BY Category3_text__c
            ];
            //categoty3
            // categoryOptionList = new List<SelectOption>();
            category3Option = new List<CusOption>();
            // categoryOptionList.add(new SelectOption('', '-无-'));
            category3Option.add(new CusOption('-无-',''));
            for (AggregateResult category3Search : categoryList) {
                String deliverycnt = String.valueOf(category3Search.get('c3c'));
                // categoryOptionList.add(new SelectOption(deliverycnt, deliverycnt));
                category3Option.add(new CusOption(deliverycnt,deliverycnt));
            }
            //categoty4
            // category4OptionList = new List<SelectOption>();
            category4Option = new List<CusOption>();
            // category4OptionList.add(new SelectOption('', '-无-'));
            category4Option.add(new CusOption('-无-',''));
            //categoty5
            // category5OptionList = new List<SelectOption>();
            category5Option = new List<CusOption>();
            // category5OptionList.add(new SelectOption('', '-无-'));
            category5Option.add(new CusOption('-无-',''));
            //return msg
            results.result = 'Success';
            results.coc = coc;
            results.editAble = editAble;
            results.edoffersPrice = edoffersPrice;
            results.editDelCommitBtnDisabled = EditDelCommitBtnDisabled;
            results.category3Option = category3Option;
            results.category4Option = category4Option;
            results.category5Option = category5Option;
            results.hospitalName = hospitalName;
            results.contractName = contractName;
            results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview;
            results.attachmentRecoeds = attachmentRecoeds;
            results.cansee = cansee;
            results.agencyProType = agencyProType;
            results.userWorkLocation = userWorkLocation;
            results.accountName = accountName;
            results.category_Goods = category_Goods;
            results.specialCampaign = specialCampaign;
            results.dealerProductId = DealerProductId;
            results.accountid = accountid;
            results.hospitalId = hospitalId;
            results.contractId = contractId;
            results.contactDealer = contactDealer;
            results.errorMsgList = errorMsgList;
            results.warningMsgList = warningMsgList;
            results.methodType = methodType;
            results.proLimitAndDate = proLimitAndDate;
        } catch (Exception e) {
            results.result = 'Fail';
            results.errorMsg = e.getLineNumber() + '---' + e.getMessage();
        }
        return results;
    }
    @AuraEnabled
    public static Results categoryAllload(String agencyProTypeStr, String category3Str){
        Results results = new Results();
        agencyProType = agencyProTypeStr;
        category3 = category3Str;
        try {
            AggregateResult[] category4List = [
                SELECT Count(id), Category4_text__c c4c
                FROM Product2__c
                WHERE
                    Estimation_Entry_Possibility__c = '○'
                    AND Product_Type__c LIKE :agencyProType
                    AND Category3_text__c = :category3
                    AND Category4_text__c != NULL
                    AND Category5_text__c != NULL
                GROUP BY Category4_text__c
            ];
            // category4OptionList = new List<SelectOption>();
            category4Option = new List<CusOption>();
            // category4OptionList.add(new SelectOption('', '-无-'));
            category4Option.add(new CusOption('-无-', ''));
            for (AggregateResult category4Search : category4List) {
                String deliverycnt4 = String.valueOf(category4Search.get('c4c'));
                // category4OptionList.add(new SelectOption(deliverycnt4, deliverycnt4));
                category4Option.add(new CusOption(deliverycnt4, deliverycnt4));
            }
            AggregateResult[] category5List = [
                SELECT Count(id), Category5_text__c c5c
                FROM Product2__c
                WHERE
                    Estimation_Entry_Possibility__c = '○'
                    AND Product_Type__c LIKE :agencyProType
                    AND Category3_text__c = :category3
                    AND Category4_text__c != NULL
                    AND Category5_text__c != NULL
                GROUP BY Category5_text__c
            ];
            // category5OptionList = new List<SelectOption>();
            category5Option = new List<CusOption>();
            // category5OptionList.add(new SelectOption('', '-无-'));
            category5Option.add(new CusOption('-无-', ''));
            for (AggregateResult category5Search : category5List) {
                String deliverycnt5 = String.valueOf(category5Search.get('c5c'));
                // category5OptionList.add(new SelectOption(deliverycnt5, deliverycnt5));
                category5Option.add(new CusOption(deliverycnt5, deliverycnt5));
            }
            results.category4Option = category4Option;
            results.category5Option = category5Option;
            results.result = 'Success';
        } catch (Exception e) {
            results.result = 'Fail';
            results.errorMsg = e.getLineNumber() + '---' + e.getMessage();
        }
        return results;
    }
    @AuraEnabled
    public static Results categoryload(String agencyProTypeStr, String category3Str, String category4Str){
        Results results = new Results();
        agencyProType = agencyProTypeStr;
        category3 = category3Str;
        category4 = category4Str;
        try {
            AggregateResult[] category4List = [
                SELECT Count(id), Category4_text__c c4c
                FROM Product2__c
                WHERE
                    Estimation_Entry_Possibility__c = '○'
                    AND Product_Type__c LIKE :agencyProType
                    AND Category3_text__c = :category3
                    AND Category4_text__c != NULL
                    AND Category5_text__c != NULL
                GROUP BY Category4_text__c
            ];
            // category4OptionList = new List<SelectOption>();
            category4Option = new List<CusOption>();
            // category4OptionList.add(new SelectOption('', '-无-'));
            category4Option.add(new CusOption('-无-', ''));
            for (AggregateResult category4Search : category4List) {
                String deliverycnt4 = String.valueOf(category4Search.get('c4c'));
                // category4OptionList.add(new SelectOption(deliverycnt4, deliverycnt4));
                category4Option.add(new CusOption(deliverycnt4, deliverycnt4));
            }
            AggregateResult[] category5List = [
                SELECT Count(id), Category5_text__c c5c
                FROM Product2__c
                WHERE
                    Estimation_Entry_Possibility__c = '○'
                    AND Product_Type__c LIKE :agencyProType
                    AND Category3_text__c = :category3
                    AND Category4_text__c = :category4
                    AND Category5_text__c != NULL
                GROUP BY Category5_text__c
            ];
            // category5OptionList = new List<SelectOption>();
            category5Option = new List<CusOption>();
            // category5OptionList.add(new SelectOption('', '-无-'));
            category5Option.add(new CusOption('-无-', ''));
            for (AggregateResult category5Search : category5List) {
                String deliverycnt5 = String.valueOf(category5Search.get('c5c'));
                // category5OptionList.add(new SelectOption(deliverycnt5, deliverycnt5));
                category5Option.add(new CusOption(deliverycnt5, deliverycnt5));
            }
            results.category4Option = category4Option;
            results.category5Option = category5Option;
            results.result = 'Success';
        } catch (Exception e) {
            results.result = 'Fail';
            results.errorMsg = e.getLineNumber() + '---' + e.getMessage();
        }
        return results;
    }
    // 画面初始化
    public static void lowerRecord() {
        List<ConsumableorderdetailsInfo> lowerRecord = new List<ConsumableorderdetailsInfo>();
        //库存明细取得
        Map<String, ConsumableorderdetailsInfo> midMaprecord = new Map<String, ConsumableorderdetailsInfo>();
        List<Product2__c> product2Selected = [
            SELECT Id, Name, Name__c, Intra_Trade_List_RMB__c, Asset_Model_No__c
            FROM Product2__c
            WHERE Pro2_Dealer_Object__c = TRUE AND Estimation_Entry_Possibility__c = '○'
        ];
        for (Integer i = 0; i < product2Selected.size(); i++) {
            lowerRecord.add(new ConsumableorderdetailsInfo(product2Selected[i]));
            //先把ConsumableorderdetailsRecords 做成map
            midMaprecord.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i]));
        }
        List<Consumable_order_details2__c> countDel = [
            SELECT
                Id,
                Bar_Code__c,
                Name,
                Inventory_date__c,
                Consumable_Product__c,
                Consumable_Product__r.Asset_Model_No__c,
                Recordtypeid,
                Guarantee_period_for_products__c,
                Isoverdue__c,
                Box_Piece__c,
                hospitalSpecialOffer__c,
                promotionorder__c
            FROM Consumable_order_details2__c
            WHERE
                Dealer_Arrive__c = TRUE
                AND Dealer_Shipment__c = FALSE
                AND Dealer_Saled__c = FALSE
                AND Dealer_Returned__c = FALSE
                AND Lose_Flag__c = FALSE
                AND Bar_Code__c != NULL
                AND Isoverdue__c = 1
                AND Arrive_Owner_Work_Location__c = :userWorkLocation
                //AND Consumable_order_minor__r.Dealer_Info__c = :accountid
                AND Dealer_Info_text__c = :accountName
        ];
        for (Integer i = 0; i < countDel.size(); i++) {
            //add by rentx 2020-12-09
            if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) {
                if (countDel[i].hospitalSpecialOffer__c == true) {
                    //然后循环CountDel去修改map里的allnumber
                    if (midMaprecord.containsKey(countDel[i].Consumable_Product__c)) {
                        ConsumableorderdetailsInfo Jstage = midMaprecord.get(countDel[i].Consumable_Product__c);
                        if (countDel[i].Box_Piece__c == '盒') {
                            Jstage.allnumber = Jstage.allnumber + 1;
                        } else {
                            Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                        }
                        //Jstage.BoxPiece = CountDel[i].Box_Piece__c;
                        midMaprecord.put(countDel[i].Consumable_Product__c, Jstage);
                    }
                }
            } else if (String.isBlank(methodType) || methodType.equals('promotionorder')) {
                if (countDel[i].promotionorder__c == true) {
                    if (midMaprecord.containsKey(countDel[i].Consumable_Product__c)) {
                        ConsumableorderdetailsInfo Jstage = midMaprecord.get(countDel[i].Consumable_Product__c);
                        if (countDel[i].Box_Piece__c == '盒') {
                            Jstage.allnumber = Jstage.allnumber + 1;
                        } else {
                            Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                        }
                        midMaprecord.put(countDel[i].Consumable_Product__c, Jstage);
                    }
                }
            } else if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) {
                if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) {
                    if (midMaprecord.containsKey(countDel[i].Consumable_Product__c)) {
                        ConsumableorderdetailsInfo Jstage = midMaprecord.get(countDel[i].Consumable_Product__c);
                        if (countDel[i].Box_Piece__c == '盒') {
                            Jstage.allnumber = Jstage.allnumber + 1;
                        } else {
                            Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                        }
                        midMaprecord.put(countDel[i].Consumable_Product__c, Jstage);
                    }
                }
            }
        }
        lowerRecord = new List<ConsumableorderdetailsInfo>();
        //再把map里的值从新赋给ConsumableorderdetailsRecords
        for (ConsumableorderdetailsInfo bss : midMaprecord.values()) {
            lowerRecord.add(bss);
        }
        allProductLimt(lowerRecord);
        for (ConsumableorderdetailsInfo bss : lowerRecord) {
            if (bss.allnumber < bss.lowerlimit) {
                lower.add(bss.Prod.Name__c);
            }
        }
    }
    //库存排序
    public static void SortStore() {
        if (sortKey == preSortKey) {
            // 方向が変わるのみ
            sortOrderAsc = !sortOrderAsc;
            sortOrder[Integer.valueOf(sortKey)] = (sortOrderAsc == true ? '↑' : '↓');
        } else {
            sortOrderAsc = true;
            sortOrder[Integer.valueOf(preSortKey)] = ' ';
            sortOrder[Integer.valueOf(sortKey)] = (sortOrderAsc == true ? '↑' : '↓');
        }
        preSortKey = sortKey;
        List<ConsumableorderdetailsInfo> selectedSort = new List<ConsumableorderdetailsInfo>();
        List<ConsumableorderdetailsInfo> noselectedSort = new List<ConsumableorderdetailsInfo>();
        for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) {
            ass.sortBy = sortOrderAsc;
            if (ass.check == true) {
                selectedSort.add(ass);
            } else {
                noselectedSort.add(ass);
            }
        }
        consumableorderdetailsRecordsview = new List<ConsumableorderdetailsInfo>();
        if (selectedSort.size() > 0) {
            if (searchDone != 'searchDone') {
                selectedSort.sort();
            }
            consumableorderdetailsRecordsview.addAll(selectedSort);
        }
        if (noselectedSort.size() > 0) {
            noselectedSort.sort();
            consumableorderdetailsRecordsview.addAll(noselectedSort);
        }
    }
    //限制性排序
    public static void SortLimited() {
        List<ConsumableorderdetailsInfo> reSet = new List<ConsumableorderdetailsInfo>();
        Map<String, ConsumableorderdetailsInfo> MidMap = new Map<String, ConsumableorderdetailsInfo>();
        List<Consumable_order_details2__c> countDel = [
            SELECT
                Id,
                Bar_Code__c,
                Name,
                Inventory_date__c,
                Consumable_Product__c,
                Consumable_Product__r.Asset_Model_No__c,
                Recordtypeid,
                Box_Piece__c,
                hospitalSpecialOffer__c,
                promotionorder__c
            FROM Consumable_order_details2__c
            WHERE
                Dealer_Arrive__c = TRUE
                AND Dealer_Shipment__c = FALSE
                AND Dealer_Saled__c = FALSE
                AND Dealer_Returned__c = FALSE
                AND Lose_Flag__c = FALSE
                AND Bar_Code__c != NULL
                AND Arrive_Owner_Work_Location__c = :userWorkLocation
                //AND Consumable_order_minor__r.Dealer_Info__c = :accountid
                AND Dealer_Info_text__c = :accountName
        ];
        if (sortKey == preSortKey) {
            // 方向が変わるのみ
            sortOrderAsc = !sortOrderAsc;
            sortOrder[Integer.valueOf(sortKey)] = (sortOrderAsc == true ? '↓' : '↑');
        } else {
            sortOrderAsc = true;
            sortOrder[Integer.valueOf(preSortKey)] = ' ';
            sortOrder[Integer.valueOf(sortKey)] = (sortOrderAsc == true ? '↓' : '↑');
        }
        preSortKey = sortKey;
        // 所有产品取得
        if (
            (EsetId == null || ESetId == '') || (EsetId != null && ESetId != '' && statusEdit == 'Redirect' && searchDone == 'searchDone')
        ) {
            String strProd = null;
            for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) {
                if (strProd == null || strProd.length() == 0) {
                    strProd = '\'' + String.valueOf(ass.prod.Id) + '\'';
                } else {
                    strProd += ',\'' + String.valueOf(ass.prod.Id) + '\'';
                }
            }
            String soqll = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c,Category3__c,Category4__c,Category5__c FROM Product2__c WHERE Estimation_Entry_Possibility__c = \'○\' ';
            //update by rentx 2020-12-31 start
            if (agencyProType == 'ET') {
                soqll += ' AND Pro2_Dealer_Object__c = true';
            }
            if (agencyProType == 'ENG') {
                soqll += ' AND Pro2_Dealer_ENG__c = true';
            }
            soqll += ' AND Intra_Trade_List_RMB__c > 0 ';
            //update by rentx 2020-12-31 end
            soqll += ' AND Id IN (' + strProd + ')';
            soqll +=
                ' order by ' +
                columus_no[Integer.valueOf(sortKey)] +
                ' ' +
                (sortOrderAsc == true ? 'asc nulls first' : 'desc nulls last');
            List<Product2__c> queryList = Database.query(soqll);
            // 選択済みの明细を取得
            Map<String, String> selectedIdMap = new Map<String, String>();
            for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) {
                if (ass.check == true) {
                    selectedIdMap.put(ass.Prod.id, ass.Prod.id);
                    reSet.add(ass);
                }
            }
            for (Integer i = 0; i < queryList.size(); i++) {
                if (selectedIdMap.containsKey(queryList[i].Id)) {
                    // 跳过已经选择的消耗品明细
                    continue;
                } else {
                    // 未选择的消耗品明细
                    MidMap.put(queryList[i].Id, new ConsumableorderdetailsInfo(queryList[i]));
                }
            }
            consumableorderdetailsRecordsview = new List<ConsumableorderdetailsInfo>();
            consumableorderdetailsRecordsview = reSet;
            for (Integer i = 0; i < countDel.size(); i++) {
                if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) {
                    if (countDel[i].hospitalSpecialOffer__c == true) {
                        //然后循环CountDel去修改map里的allnumber
                        if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                            ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                            if (countDel[i].Box_Piece__c == '盒') {
                                Jstage.allnumber = Jstage.allnumber + 1;
                            } else {
                                Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                            }
                            MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                        }
                    }
                } else if (String.isBlank(methodType) || methodType.equals('promotionorder')) {
                    if (countDel[i].promotionorder__c == true) {
                        if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                            ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                            if (countDel[i].Box_Piece__c == '盒') {
                                Jstage.allnumber = Jstage.allnumber + 1;
                            } else {
                                Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                            }
                            MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                        }
                    }
                } else if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) {
                    if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) {
                        if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                            ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                            if (countDel[i].Box_Piece__c == '盒') {
                                Jstage.allnumber = Jstage.allnumber + 1;
                            } else {
                                Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                            }
                            MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                        }
                    }
                }
            }
            //把map里的值从新赋给ConsumableorderdetailsRecords
            for (ConsumableorderdetailsInfo bss : MidMap.values()) {
                if (selectedIdMap.containsKey(bss.Prod.Id)) {
                    continue;
                } else {
                    if (DealerProductMap.containsKey(bss.Prod.Id)) {
                        bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c;
                        bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c;
                        bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c;
                    }
                    bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c);
                    bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c;
                    bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c;
                    consumableorderdetailsRecordsview.add(bss);
                }
            }
        } else if (searchDone != 'searchDone') {
            String strProd = null;
            for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) {
                if (strProd == null || strProd.length() == 0) {
                    strProd = '\'' + String.valueOf(ass.prod.Id) + '\'';
                } else {
                    strProd += ',\'' + String.valueOf(ass.prod.Id) + '\'';
                }
            }
            String SqlOrder = 'SELECT Id,  Name, Consumable_order__c, Consumable_Product__r.Name__c,';
            SqlOrder += ' Consumable_Product__c,Consumable_Product__r.Name,';
            SqlOrder += 'Consumable_Count__c,Consumable_Product__r.Intra_Trade_List_RMB__c,';
            SqlOrder += 'Consumable_Product__r.Asset_Model_No__c,Sum_of_money__c, ';
            SqlOrder += 'Consumable_Product__r.SFDA_Status__c,Consumable_Product__r.Product2__r.Packing_list_manual__c,Consumable_Product__r.Product2__r.SFDA_Approbation_No__c,';
            SqlOrder += 'Consumable_Product__r.Product2__r.SFDA_Expiration_Date__c,Consumable_Product__r.Category3__c,Consumable_Product__r.Category4__c,Consumable_Product__r.Category5__c ';
            SqlOrder +=
                'FROM Consumable_orderdetails__c WHERE recordtypeid != \'' +
                System.Label.RT_ConOrderDetail1_Sale +
                '\' AND  Consumable_order__c = \'' +
                ESetId +
                '\'';
            SqlOrder += ' AND Order_Owner_WorkLocal__c = \'' + userWorkLocation + '\' ';
            SqlOrder += ' AND Consumable_Product__c IN (' + strProd + ')';
            SqlOrder +=
                ' order by ' +
                columus[Integer.valueOf(sortKey)] +
                ' ' +
                (sortOrderAsc == true ? 'asc nulls first' : 'desc nulls last');
            List<Consumable_Orderdetails__c> queryList = Database.query(SqlOrder);
            // 選択済みの明细を取得
            Map<String, String> selectedIdMap = new Map<String, String>();
            for (Integer i = 0; i < queryList.size(); i++) {
                // 未选择的消耗品明细
                MidMap.put(queryList[i].Consumable_Product__c, new ConsumableorderdetailsInfo(queryList[i]));
            }
            for (Integer i = 0; i < countDel.size(); i++) {
                if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) {
                    if (countDel[i].hospitalSpecialOffer__c == true) {
                        //然后循环CountDel去修改map里的allnumber
                        if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                            ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                            if (countDel[i].Box_Piece__c == '盒') {
                                Jstage.allnumber = Jstage.allnumber + 1;
                            } else {
                                Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                            }
                            MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                        }
                    }
                } else if (String.isBlank(methodType) || methodType.equals('promotionorder')) {
                    if (countDel[i].promotionorder__c == true) {
                        if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                            ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                            if (countDel[i].Box_Piece__c == '盒') {
                                Jstage.allnumber = Jstage.allnumber + 1;
                            } else {
                                Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                            }
                            MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                        }
                    }
                } else if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) {
                    if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) {
                        if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                            ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                            if (countDel[i].Box_Piece__c == '盒') {
                                Jstage.allnumber = Jstage.allnumber + 1;
                            } else {
                                Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                            }
                            MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                        }
                    }
                }
            }
            consumableorderdetailsRecordsview = new List<ConsumableorderdetailsInfo>();
            //把map里的值从新赋给ConsumableorderdetailsRecords
            for (ConsumableorderdetailsInfo bss : MidMap.values()) {
                if (DealerProductMap.containsKey(bss.Prod.Id)) {
                    bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c;
                    bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c;
                    bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c;
                }
                bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c);
                bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c;
                bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c;
                consumableorderdetailsRecordsview.add(bss);
            }
        }
        productLimtAndDateView();
    }
    //库存上下限
    public static void productLimtAndDateView() {
        String nowName = null, nowRightAsstModelNo = null;
        Map<String, String> productLimt = new Map<String, String>();
        for (Integer i = 0; i < proLimitAndDate.size(); i++) {
            nowName = proLimitAndDate[i];
            if (nowName.indexOf('|') >= 0) {
                nowRightAsstModelNo = nowName.subString(0, nowName.indexOf('|'));
                nowName = nowName.subString(nowName.indexOf('|') + 1);
            }
            productLimt.put(nowRightAsstModelNo, nowName);
        }
        for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) {
            if (productLimt.containsKey(ass.Prod.Asset_Model_No__c)) {
                ass.lowerlimit = decimal.valueOf(
                    productLimt.get(ass.Prod.Asset_Model_No__c).subString(0, productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|'))
                );
                ass.upperlimit = decimal.valueOf(
                    productLimt.get(ass.Prod.Asset_Model_No__c).subString(productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|') + 1)
                );
            }
        }
    }
    //库存上下限
    public static void productLimtAndDate() {
        String nowName = null, nowRightAsstModelNo = null;
        Map<String, String> productLimt = new Map<String, String>();
        for (Integer i = 0; i < proLimitAndDate.size(); i++) {
            nowName = proLimitAndDate[i];
            if (nowName.indexOf('|') >= 0) {
                nowRightAsstModelNo = nowName.subString(0, nowName.indexOf('|'));
                nowName = nowName.subString(nowName.indexOf('|') + 1);
            }
            productLimt.put(nowRightAsstModelNo, nowName);
        }
        for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) {
            if (productLimt.containsKey(ass.Prod.Asset_Model_No__c)) {
                ass.lowerlimit = decimal.valueOf(
                    productLimt.get(ass.Prod.Asset_Model_No__c).subString(0, productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|'))
                );
                ass.upperlimit = decimal.valueOf(
                    productLimt.get(ass.Prod.Asset_Model_No__c).subString(productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|') + 1)
                );
            }
        }
    }
    //全部库存上下限
    private static void allProductLimt(List<ConsumableorderdetailsInfo> lowerRecord) {
        String nowName = null, nowRightAsstModelNo = null;
        Map<String, String> productLimt = new Map<String, String>();
        for (Integer i = 0; i < proLimitAndDate.size(); i++) {
            nowName = proLimitAndDate[i];
            if (nowName.indexOf('|') >= 0) {
                nowRightAsstModelNo = nowName.subString(0, nowName.indexOf('|'));
                nowName = nowName.subString(nowName.indexOf('|') + 1);
            }
            productLimt.put(nowRightAsstModelNo, nowName);
        }
        for (ConsumableorderdetailsInfo ass : lowerRecord) {
            if (productLimt.containsKey(ass.Prod.Asset_Model_No__c)) {
                ass.lowerlimit = decimal.valueOf(
                    productLimt.get(ass.Prod.Asset_Model_No__c).subString(0, productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|'))
                );
                ass.upperlimit = decimal.valueOf(
                    productLimt.get(ass.Prod.Asset_Model_No__c).subString(productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|') + 1)
                );
            }
        }
    }
    @AuraEnabled
    public static Results searchConsumableorderdetails(
        String userWorkLocationStr,
        String agencyProTypeStr,
        String accountNameStr,
        String accountIdStr,
        String hospitalIdStr,
        String contractIdStr,
        String category1Str,
        String category3Str,
        String category4Str,
        String category5Str,
        String category_GoodStr,
        Boolean specialCampaignStr,
        String dealerProductIdStr,
        String methodTypeStr,
        String consumableorderdetailsRecordsviewStr,
        Boolean editAbleStr
    ){
        Results results = new Results();
        errorMsgList = new List<String>();
        warningMsgList = new List<String>();
        userWorkLocation = userWorkLocationStr;
        agencyProType = agencyProTypeStr;
        accountName = accountNameStr;
        accountid = accountIdStr;
        hospitalId = hospitalIdStr;
        contractId = contractIdStr;
        category1 = category1Str;
        category3 = category3Str;
        category4 = category4Str;
        category5 = category5Str;
        category_Goods = category_GoodStr;
        specialCampaign = specialCampaignStr;
        methodType = methodTypeStr;
        editAble = editAbleStr;
        dealerProductId = (List<String>)JSON.deserialize(dealerProductIdStr, List<String>.class);
        consumableorderdetailsRecordsview = (List<ConsumableorderdetailsInfo>)JSON.deserialize(consumableorderdetailsRecordsviewStr, List<ConsumableorderdetailsInfo>.class);
        size = Integer.valueOf(System.Label.orderdetLimitsize);
        pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize);
        try {
            searchDone = 'searchDone';
            sortKey = '1';
            preSortKey = '1';
            sortOrderAsc = false;
            sortOrder = new String[7];
            sortOrder = new List<String>{ ' ', ' ', ' ', ' ', '↓', '', '', '' };
            Map<String, String> selectedIdMap = new Map<String, String>();
            List<ConsumableorderdetailsInfo> derdetailsRecords = new List<ConsumableorderdetailsInfo>();
            Map<String, ConsumableorderdetailsInfo> MidMap = new Map<String, ConsumableorderdetailsInfo>();
            List<ConsumableorderdetailsInfo> reSet = new List<ConsumableorderdetailsInfo>();
            List<Consumable_order_details2__c> countDel = [
                SELECT
                    Id,
                    Bar_Code__c,
                    Name,
                    Inventory_date__c,
                    Consumable_Product__c,
                    Consumable_Product__r.Asset_Model_No__c,
                    Recordtypeid,
                    Box_Piece__c,
                    //add by rentx 2020-12-09
                    hospitalSpecialOffer__c,
                    promotionorder__c
                //add by rentx 2020-12-09
                FROM Consumable_order_details2__c
                WHERE
                    Dealer_Arrive__c = TRUE
                    AND Dealer_Shipment__c = FALSE
                    AND Dealer_Saled__c = FALSE
                    AND Dealer_Returned__c = FALSE
                    AND Lose_Flag__c = FALSE
                    AND Bar_Code__c != NULL
                    AND Arrive_Owner_Work_Location__c = :userWorkLocation
                    AND Dealer_Info_text__c = :accountName
            ];
            List<Product2__c> product2Selected = new List<Product2__c>();
            consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
            soql = makeSoql(category1, category_Goods, category3, category4, category5, specialCampaign, DealerProductId);
            size = Integer.valueOf(System.Label.orderdetLimitsize);
            initStandardController();
            System.debug('soql:'+soql);
            product2Selected = Database.query(soql);
            for (Integer i = 0; i < product2Selected.size(); i++) {
                MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i]));
            }
            for (Integer i = 0; i < countDel.size(); i++) {
                //然后循环CountDel去修改map里的allnumber
                if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) {
                    if (countDel[i].hospitalSpecialOffer__c == true) {
                        if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                            ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                            if (countDel[i].Box_Piece__c == '盒') {
                                Jstage.allnumber = Jstage.allnumber + 1;
                            } else {
                                Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                            }
                            MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                        }
                    }
                } else if (String.isBlank(methodType) || methodType.equals('promotionorder')) {
                    if (countDel[i].promotionorder__c == true) {
                        if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                            ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                            if (countDel[i].Box_Piece__c == '盒') {
                                Jstage.allnumber = Jstage.allnumber + 1;
                            } else {
                                Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                            }
                            MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                        }
                    }
                } else if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) {
                    if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) {
                        if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                            ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                            if (countDel[i].Box_Piece__c == '盒') {
                                Jstage.allnumber = Jstage.allnumber + 1;
                            } else {
                                Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                            }
                            MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                        }
                    }
                }
            }
            //再把map里的值从新赋给ConsumableorderdetailsRecordsa0l0l0000000byXAAQ
            for (ConsumableorderdetailsInfo bss : MidMap.values()) {
                if (selectedIdMap.containsKey(bss.Prod.id)) {
                    continue;
                } else {
                    if (DealerProductMap.containsKey(bss.Prod.Id)) {
                        bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c;
                        bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c;
                        bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c;
                    }
                    bss.sortBy = sortOrderAsc;
                    bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c);
                    bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c;
                    bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c;
                    consumableorderdetailsRecords.add(bss);
                }
            }
            consumableorderdetailsRecords.sort();
            productLimtAndDate();
            getPageInfo();
            sortKey = '1';
            preSortKey = '1';
            sortOrderAsc = false;
            sortOrder = new String[7];
            sortOrder = new List<String>{ '  ', '  ', ' ', '', '', '', '', '' };
            cate1ForSort = category1;
            // 显示数据条数信息
            // makeMessage();
            results.errorMsgList = errorMsgList;
            results.warningMsgList = warningMsgList;
            if(consumableorderdetailsRecordsview.size() > 0){
                results.result = 'Success';
                results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview;
                results.errorMsg = '搜索到' + consumableorderdetailsRecordsview.size() + '件产品';
            }else {
                results.result = 'Fail';
                results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview;
                results.errorMsg = '没有搜索到相关数据';
            }
        } catch (Exception e) {
            results.result = 'Fail';
            results.errorMsg = e.getLineNumber() + '---' + e.getMessage();
        }
        return results;
    }
    //医院--检索
    @AuraEnabled
    public static Results searchorderdetails(
        String methodTypeStr,
        String accountIdStr,
        String hospitalIdStr,
        String contractIdStr,
        String userWorkLocationStr,
        String accountNameStr,
        List<String> proLimitAndDateList,
        Boolean editAbleStr
    ){
        Results results = new Results();
        methodType = methodTypeStr;
        accountId = accountIdStr;
        hospitalId = hospitalIdStr;
        contractId = contractIdStr;
        userWorkLocation = userWorkLocationStr;
        accountName = accountNameStr;
        proLimitAndDate = proLimitAndDateList;
        editAble = editAbleStr;
        size = Integer.valueOf(System.Label.orderdetLimitsize);
        pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize);
        try {
            soql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c,Category3__c,Category4__c,Category5__c FROM Product2__c WHERE Estimation_Entry_Possibility__c = \'○\' ';
            if (methodType.equals('hospitalorder')) {
                //医院id 有值
                List<hospitalprice__c> hplist = [
                    SELECT id, product__c
                    FROM hospitalprice__c
                    WHERE account__c = :accountid AND hospital__c = :hospitalId
                ];
                if (hplist != null && hplist.size() > 0) {
                    List<String> hpids = new List<String>();
                    for (hospitalprice__c hc : hplist) {
                        hpids.add(hc.product__c);
                    }
                    if (hpids != null && hpids.size() > 0) {
                        soql += ' AND Id in : hpids ';
                    }
                } else {
                    //该医院下没有符合医院特价的产品
                    soql += ' AND Id = null ';
                }
            } else if (methodType.equals('promotionorder')) {
                List<Dealer_Product__c> dpclist = [
                    SELECT Id, Dealer_Product2__c
                    FROM Dealer_Product__c
                    WHERE Dealer_Contact__c = :contractId AND (Special_Discount__c != NULL OR Special_Campaign_Price__c != NULL)
                ];
                if (dpclist != null && dpclist.size() > 0) {
                    String ids = '(';
                    for (Dealer_Product__c hc : dpclist) {
                        hpids.add(hc.Dealer_Product2__c);
                        ids += '\'' + hc.Dealer_Product2__c + '\',';
                    }
                    ids = ids.substring(0, ids.length() - 1) + ')';
                    if (hpids != null && hpids.size() > 0) {
                        // soql += ' AND Id in : hpids ';
                        soql += ' AND Id in ' + ids;
                    }
                } else {
                    //该经销商下没有促销价格的产品
                    soql += ' AND Id = null ';
                }
            }
            size = Integer.valueOf(System.Label.orderdetLimitsize);
            initStandardController();
            List<Product2__c> product2Selected = new List<Product2__c>();
            Map<String, ConsumableorderdetailsInfo> MidMap = new Map<String, ConsumableorderdetailsInfo>();
            Map<String, String> selectedIdMap = new Map<String, String>();
            consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
            product2Selected = Database.query(soql);
            for (Integer i = 0; i < product2Selected.size(); i++) {
                MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i]));
            }
            List<Consumable_order_details2__c> countDel = [
                SELECT
                    Id,
                    Bar_Code__c,
                    Name,
                    Inventory_date__c,
                    Consumable_Product__c,
                    Consumable_Product__r.Asset_Model_No__c,
                    Recordtypeid,
                    Box_Piece__c,
                    hospitalSpecialOffer__c,
                    promotionorder__c
                FROM Consumable_order_details2__c
                WHERE
                    Dealer_Arrive__c = TRUE
                    AND Dealer_Shipment__c = FALSE
                    AND Dealer_Saled__c = FALSE
                    AND Dealer_Returned__c = FALSE
                    AND Lose_Flag__c = FALSE
                    AND Bar_Code__c != NULL
                    AND Arrive_Owner_Work_Location__c = :userWorkLocation
                    //AND Consumable_order_minor__r.Dealer_Info__c = :accountid
                    AND Dealer_Info_text__c = :accountName
            ];
            for (Integer i = 0; i < countDel.size(); i++) {
                if (methodType.equals('hospitalorder')) {
                    if (countDel[i].hospitalSpecialOffer__c == true) {
                        //然后循环CountDel去修改map里的allnumber
                        if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                            ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                            if (countDel[i].Box_Piece__c == '盒') {
                                Jstage.allnumber = Jstage.allnumber + 1;
                            } else {
                                Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                            }
                            //Jstage.BoxPiece = CountDel[i].Box_Piece__c;
                            MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                        }
                    }
                } else if (methodType.equals('promotionorder')) {
                    if (countDel[i].promotionorder__c == true) {
                        //然后循环CountDel去修改map里的allnumber
                        if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                            ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                            if (countDel[i].Box_Piece__c == '盒') {
                                Jstage.allnumber = Jstage.allnumber + 1;
                            } else {
                                Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                            }
                            //Jstage.BoxPiece = CountDel[i].Box_Piece__c;
                            MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                        }
                    }
                }
            }
            //再把map里的值从新赋给ConsumableorderdetailsRecordsa0l0l0000000byXAAQ
            for (ConsumableorderdetailsInfo bss : MidMap.values()) {
                if (selectedIdMap.containsKey(bss.Prod.id)) {
                    continue;
                } else {
                    if (DealerProductMap.containsKey(bss.Prod.Id)) {
                        bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c;
                        bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c;
                        bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c;
                    }
                    bss.sortBy = sortOrderAsc;
                    bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c);
                    bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c;
                    bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c;
                    consumableorderdetailsRecords.add(bss);
                }
            }
            consumableorderdetailsRecords.sort();
            productLimtAndDate();
            getPageInfoForHos();
            sortKey = '1';
            preSortKey = '1';
            sortOrderAsc = false;
            sortOrder = new String[7];
            sortOrder = new List<String>{ '  ', '  ', ' ', '', '', '', '', '' };
            cate1ForSort = category1;
            // 显示数据条数信息
            noOfRecords = consumableorderdetailsRecords.size();
            results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview;
            if(consumableorderdetailsRecordsview.size() > 0){
                results.result = 'Success';
                results.errorMsg = '共搜索到'+consumableorderdetailsRecordsview.size()+'条数据';
            }else {
                results.result = 'Fail';
                results.errorMsg = '没有搜索到相关数据';
            }
        } catch (Exception e) {
            results.result = 'Fail';
            results.errorMsg = e.getLineNumber() + '---' + e.getMessage();
        }
        return results;
    }
    //用户切换医院时取消选中的产品
    private static List<ConsumableorderdetailsInfo> getPageInfoForHos() {
        List<ConsumableorderdetailsInfo> reSet = new List<ConsumableorderdetailsInfo>();
        Map<String, String> selectedIdMap = new Map<String, String>();
        consumableorderdetailsRecordsview = new List<ConsumableorderdetailsInfo>();
        if (editAble) {
            consumableorderdetailsRecordsview = reSet;
        }
        Integer pagestartNo = (con.getPageNumber() * size) - size;
        Integer pageendNo = (con.getPageNumber() * size) > noOfRecords ? noOfRecords : (con.getPageNumber() * size - 1);
        Integer addNo = 0;
        for (Integer i = pagestartNo; i < consumableorderdetailsRecords.size(); i++) {
            Consumable_Orderdetails__c orderdetails1 = new Consumable_Orderdetails__c();
            if (selectedIdMap.containsKey(consumableorderdetailsRecords[i].Prod.Id)) {
                addNo++;
                //continue;
            } else if (consumableorderdetailsRecordsview.size() >= pageLimit + size) {
                break;
            } else {
                if (consumableorderdetailsRecords[i].check == false) {
                    consumableorderdetailsRecords[i].esd = orderdetails1;
                }
                consumableorderdetailsRecordsview.add(consumableorderdetailsRecords[i]);
                addNo++;
            }
            if (addNo >= size){
                break;
            }
        }
        return consumableorderdetailsRecordsview;
    }
    //add by rentx 2020-12-03 end =====================================================================================================================
    //特价
    public static void OffersPrice() {
        edoffersPrice = true;
    }
    //得到促销产品Id
    private static List<String> getDealerProductId() {
        List<String> ProductId = new List<String>();
        Map<String, String> DealerProductIdMap = new Map<String, String>();
        Date dateToday = Date.today();
        List<Dealer_Product__c> DealerProductList = [
            SELECT
                Id,
                Name,
                Dealer_Product2__c,
                Special_Campaign_Price__c,
                Campaign_StartDate__c,
                Campaign_EndDate__c,
                Dealer_Contact__c,
                OrderGoods_Limit__c
            FROM Dealer_Product__c
            WHERE
                Dealer_Contact__c IN :contactDealer
                AND Campaign_StartDate__c <= :dateToday
                AND Campaign_EndDate__c >= :dateToday
                AND Special_Campaign_Price__c != NULL
        ];
        for (Dealer_Product__c dealerProduct : DealerProductList) {
            if (DealerProductIdMap.containsKey(dealerProduct.Dealer_Product2__c)) {
                continue;
            } else {
                ProductId.add(dealerProduct.Dealer_Product2__c);
                DealerProductIdMap.put(dealerProduct.Dealer_Product2__c, dealerProduct.Dealer_Product2__c);
            }
        }
        return ProductId;
    }
    private static String makeSoql(
        String CateName,
        String CateCode,
        String Category3,
        String Category4,
        String Category5,
        Boolean specialCampaign,
        List<String> DealerProductId
    ) {
        String soql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c,Category3__c,Category4__c,Category5__c FROM Product2__c WHERE Estimation_Entry_Possibility__c = \'○\' ';
        // add begin ================================================================================================
        if (methodType != null && methodType.equals('hospitalorder')) {
            //如果是医院特价
            //1.判断 医院id是否有值 如果有值 则根据医院id去 医院特价表中获取产品id
            //医院id 有值
            if (hospitalId == null || hospitalId == '') {
                soql += ' and id = null ';
                // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '请选择医院'));
                warningMsgList.add('请选择医院');
            } else {
                List<hospitalprice__c> hplist = [
                    SELECT id, product__c
                    FROM hospitalprice__c
                    WHERE account__c = :accountid AND hospital__c = :hospitalId
                ];
                if (hplist != null && hplist.size() > 0) {
                    hpids = new List<String>();
                    for (hospitalprice__c hc : hplist) {
                        hpids.add(hc.product__c);
                    }
                    if (hpids != null && hpids.size() > 0) {
                        soql += ' AND Id in : hpids ';
                    }
                } else {
                    //该医院下没有符合医院特价的产品
                    soql += ' AND Id = null ';
                    return soql;
                }
            }
        }
        //促销订货
        if (methodType != null && methodType.equals('promotionorder')) {
            if (contractId == null || contractId == '') {
                soql += ' and id = null ';
                // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '请选择合同'));
                warningMsgList.add('请选择合同');
            } else {
                //1.查询所有经销商产品
                List<Dealer_Product__c> dpclist = [
                    SELECT Id, Dealer_Product2__c
                    FROM Dealer_Product__c
                    WHERE Dealer_Contact__c = :contractId AND (Special_Discount__c != NULL OR Special_Campaign_Price__c != NULL)
                ];
                if (dpclist != null && dpclist.size() > 0) {
                    hpids = new List<String>();
                    for (Dealer_Product__c hc : dpclist) {
                        hpids.add(hc.Dealer_Product2__c);
                    }
                    if (hpids != null && hpids.size() > 0) {
                        soql += ' AND Id in : hpids ';
                    }
                } else {
                    //该经销商下没有促销价格的产品
                    soql += ' AND Id = null ';
                    return soql;
                }
            }
        }
        //add end ===================================================================================================
        if (!String.isBlank(CateName)) {
            soql +=
                ' AND (Name__c like \'%' +
                String.escapeSingleQuotes(CateName.replaceAll('%', '\\%')) +
                '%\' or Asset_Model_No__c like \'%' +
                String.escapeSingleQuotes(CateName.replaceAll('%', '\\%')) +
                '%\')';
        }
        if (!String.isBlank(Category3)) {
            soql += ' AND Category3__c = \'' + Category3 + '\'';
        }
        if (!String.isBlank(Category4)) {
            soql += ' AND Category4__c = \'' + Category4 + '\'';
        }
        if (!String.isBlank(Category5)) {
            soql += ' AND Category5__c = \'' + Category5 + '\'';
        }
        if (agencyProType == 'ET') {
            soql += ' AND Pro2_Dealer_Object__c = true';
        }
        if (agencyProType == 'ENG') {
            soql += ' AND Pro2_Dealer_ENG__c = true';
        }
        soql += ' AND Intra_Trade_List_RMB__c > 0 ';
        System.debug('soql +++++++++++  ' + soql);
        return soql;
    }
    private static String makeSoqlorderdet() {
        String sqlTail = '(\'';
        for (Integer i = 0; i < orderzaikuId.size(); i++) {
            if (i < orderzaikuId.size() - 1) {
                sqlTail += orderzaikuId[i] + '\',\'';
            } else {
                sqlTail += orderzaikuId[i] + '\')';
            }
        }
        String soql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c,Category3__c,Category4__c,Category5__c FROM Product2__c WHERE Estimation_Entry_Possibility__c = \'○\' ';
        if (orderzaikuId.size() > 0) {
            soql += ' AND Id in' + sqlTail;
        }
        return soql;
    }
    // 编辑按钮
    @AuraEnabled
    public static Results setEditAble(String eSetidStr){
        Results results = new Results();
        ESetId = eSetidStr;
        try {
            statusEdit = 'Redirect';
            List<Consumable_order__c> oclist = [SELECT orderPattern__c FROM Consumable_order__c WHERE id = :ESetid];
            String url = '/lexconsumable?ESetid=' + ESetid + '&KeyWords=' + statusEdit + '&type=' + oclist.get(0).orderPattern__c;
            results.result = 'Success';
            results.url = url;
        } catch (Exception e) {
            results.result = 'Fail';
            results.errorMsg = e.getLineNumber() + '---' + e.getMessage();
        }
        return results;
    }
    // 再申请
    @AuraEnabled
    public static Results backOrder(String eSetidStr) {
        Results results = new Results();
        ESetId = eSetidStr;
        statusEdit = 'Redirect';
        returnOrder = true;
        try {
            statusEdit = 'Redirect';
            List<Consumable_order__c> oclist = [SELECT orderPattern__c FROM Consumable_order__c WHERE id = :ESetid];
            String url = '/lexconsumable?ESetid=' + ESetid + '&KeyWords=' + statusEdit + '&type=' + oclist.get(0).orderPattern__c;
            results.result = 'Success';
            results.url = url;
        } catch (Exception e) {
            results.result = 'Fail';
            results.errorMsg = e.getLineNumber() + '---' + e.getMessage();
        }
        return results;
    }
    //上传附件
    @AuraEnabled
    public static Results filesUpload(String pId, String fileName, String base64Data) {
        Results results = new Results();
        try {
            base64Data = EncodingUtil.urlDecode(base64Data, 'UTF-8');
            Blob contentBlob = EncodingUtil.base64Decode(base64Data);
            Attachment att = new Attachment();
            att.ParentId = pId;
            att.Name = fileName;
            att.Body = contentBlob;
            insert att;
            results.result = 'Success';
        } catch (Exception e) {
            results.result = 'Fail';
            results.errorMsg = e.getLineNumber() + '---' + e.getMessage();
        }
        return results;
    }
    //删除按钮
    @AuraEnabled
    public static Results delConsumable(String eSetidStr){
        Results results = new Results();
        ESetId = eSetidStr;
        try {
            Consumable_order__c cord = new Consumable_order__c(Id = ESetId);
            List<Consumable_Orderdetails__c> orderdetails1 = [
                SELECT Id
                FROM Consumable_Orderdetails__c
                WHERE Consumable_order__c = :EsetId
            ];
            delete orderdetails1;
            delete cord;
            results.result = 'Success';
            results.url = '/lexconsumableordermanage';
        } catch (Exception e) {
            results.result = 'Fail';
            results.errorMsg = e.getLineNumber() + '---' + e.getMessage();
        }
        return results;
    }
    // 提交按钮
    @AuraEnabled
    public static Results sorder(String eSetidStr,String accountidStr){
        Results results = new Results();
        errorMsgList = new List<String>();
        warningMsgList = new List<String>();
        ESetId = eSetidStr;
        accountid = accountidStr;
        Savepoint sp = Database.setSavepoint();
        try {
            Map<Id, String> prodMap = new Map<Id, String>();
            Consumable_order__c P = new Consumable_order__c();
            P = new Consumable_order__c();
            p.Id = ESetId;
            p.Order_date__c = Date.today();
            p.Order_status__c = '附件上传完成';
            for (Consumable_Orderdetails__c cod1 : [
                SELECT Consumable_product__r.Product2__c, Consumable_product__r.Name__c
                FROM Consumable_Orderdetails__c
                WHERE Consumable_order__c = :ESetId
            ]) {
                prodMap.put(cod1.Consumable_product__r.Product2__c, cod1.Consumable_product__r.Name__c);
            }
            // GZW 提交产品无效 出错误消息
            System.debug(prodMap);
            Map<String, String> chkMap = OpportunityWebService.MapCheckProRegisterDecide(prodMap, accountid, '');
            System.debug(chkMap);
            if (chkMap.size() > 0) {
                if (chkMap.containsKey('agency')) {
                    // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '第一经销商没有有效的医疗器械经营许可证。'));
                    errorMsgList.add('第一经销商没有有效的医疗器械经营许可证。');
                }
                for (String proId : prodMap.keySet()) {
                    if (chkMap.containsKey(proId)) {
                        if (chkMap.get(proId) == '1') {
                            // ApexPages.addmessage(
                            //     new ApexPages.message(ApexPages.severity.Error, '产品 ' + prodMap.get(proId) + ' 没有有效的注册证。')
                            // );
                            errorMsgList.add('产品 ' + prodMap.get(proId) + ' 没有有效的注册证。');
                        } else if (chkMap.get(proId) == '2') {
                            // ApexPages.addmessage(
                            //     new ApexPages.message(ApexPages.severity.Error, '产品 ' + prodMap.get(proId) + ' 超过经销商经营范围。')
                            // );
                            errorMsgList.add('产品 ' + prodMap.get(proId) + ' 超过经销商经营范围。');
                        }
                    }
                }
                results.result = 'Fail';
                results.errorMsg = '';
                results.errorMsgList = errorMsgList;
                results.warningMsgList = warningMsgList;
                return results;
            }
            update p;
            Approval.ProcessSubmitRequest psr = new Approval.ProcessSubmitRequest();
            psr.setObjectId(ESetId);
            Approval.ProcessResult submitResult = Approval.process(psr);
            results.result = 'Success';
            results.url = '/lexconsumableordermanage';
        } catch (Exception e) {
            Database.rollback(sp);
            results.result = 'Fail';
            results.errorMsg = e.getLineNumber() + '---' + e.getMessage();
        }
        return results;
    }
    // 驳回订单copy
    @AuraEnabled
    public static Results ordrCopy(
        String contractNameStr,
        String cocStr,
        String agencyProTypeStr,
        String accountidStr,
        String consumableorderdetailsRecordsviewStr,
        String contactDealerStr,
        String methodTypeStr,
        String hospitalIdStr
    ) {
        ESetId = '';
        return save(contractNameStr,cocStr,agencyProTypeStr,accountidStr,consumableorderdetailsRecordsviewStr,contactDealerStr,methodType,ESetId,hospitalIdStr);
    }
    //保存按钮
    @AuraEnabled
    public static Results save(
        String contractNameStr,
        String cocStr,
        String agencyProTypeStr,
        String accountidStr,
        String consumableorderdetailsRecordsviewStr,
        String contactDealerStr,
        String methodTypeStr,
        String eSetIdStr,
        String hospitalIdStr
    ){
        Results results = new Results();
        errorMsgList = new List<String>();
        warningMsgList = new List<String>();
        contractName = contractNameStr;
        agencyProType = agencyProTypeStr;
        accountid = accountidStr;
        methodType = methodTypeStr;
        ESetId = eSetIdStr;
        hospitalId = hospitalIdStr;
        coc = (Consumable_order__c)JSON.deserialize(cocStr, Consumable_order__c.class);
        contactDealer = (List<String>)JSON.deserialize(contactDealerStr, List<String>.class);
        consumableorderdetailsRecordsview = (List<ConsumableorderdetailsInfo>)JSON.deserialize(consumableorderdetailsRecordsviewStr, List<ConsumableorderdetailsInfo>.class);
        if(coc.Offers_Price__c != null){
            String offerStr = String.valueOf(coc.Offers_Price__c);
            bargainPrice = Decimal.valueOf(offerStr.replace(',',''));
        }
        Savepoint sp = Database.setSavepoint();
        try {
            if (String.isEmpty(contractName)) {
                // coc.Order_effective_contact__c.addError('请选择合同');
                results.result = 'Fail';
                results.errorMsg = '请选择合同';
                return results;
            }
            List<Account> contract = [
                SELECT Id, Name, Contract_Department_Class__c, Contract_Quote_Decide_Flag__c
                FROM account
                WHERE
                    Name = :contractName
                    AND Contract_Decide_Start_Date__c <= :Date.Today()
                    AND Contract_Decide_End_Date__c >= :Date.Today()
                    AND Contact_Type__c LIKE :agencyProType
                    AND Agent_Ref__c = :accountid
            ];
            if (contract.size() <= 0) {
                // coc.Order_effective_contact__c.addError('不存在的合同,请重新确认。');
                results.result = 'Fail';
                results.errorMsg = '不存在的合同,请重新确认。';
                return results;
            } else {
                if (String.isEmpty(contract[0].Contract_Quote_Decide_Flag__c)) {
                    // coc.Order_effective_contact__c.addError('合同无效,请重新确认。');
                    results.result = 'Fail';
                    results.errorMsg = '合同无效,请重新确认。';
                    return results;
                }
            }
            Integer FLG = 0;
            Integer Count = 0;
            //add by rentx 2020-11-25
            List<String> tpids = new List<String>();
            //add by rentx 2020-11-25
            for (ConsumableorderdetailsInfo CheckCount : consumableorderdetailsRecordsview) {
                FLG = FLG + 1;
                if (CheckCount.check == false) {
                    Count = Count + 1;
                }
                if (CheckCount.check == true) {
                    //add by rentx 2020-11-25
                    tpids.add(CheckCount.Prod.Id);
                    //add by rentx 2020-11-25
                    if (CheckCount.esd.Consumable_Count__c == null || CheckCount.esd.Consumable_Count__c == 0) {
                        // CheckCount.esd.Consumable_Count__c.addError('请输入采购数量');
                        results.result = 'Fail';
                        results.errorMsg = '请输入采购数量';
                        return results;
                    }
                    if (
                        CheckCount.orderGoods_Limit > 0 &&
                        math.mod(Integer.valueOf(CheckCount.esd.Consumable_Count__c), Integer.valueOf(CheckCount.orderGoods_Limit)) > 0
                    ) {
                        // CheckCount.esd.Consumable_Count__c.addError('请输入促销数量的倍数');
                        results.result = 'Fail';
                        results.errorMsg = '请输入促销数量的倍数';
                        return results;
                    }
                }
            }
            if (Count == FLG) {
                results.result = 'Fail';
                results.errorMsg = '请选择所需消耗品';
                return results;
            }
            //=======================================医院特价,有金额的话取金额
            Map<String, Decimal> dealerHospitalmMap = new Map<String, Decimal>();
            List<hospitalprice__c> hplist = [select Id,hospital__c,mPrice__c,pPrice__c,product__c,account__c
                                                from hospitalprice__c
                                                where product__c in :tpids and mPrice__c <> null and account__c=:accountid
                                                ];
            for (hospitalprice__c dealerProduct : hplist) {
                if (dealerProduct.mPrice__c != null) {
                    dealerHospitalmMap.put('' + dealerProduct.hospital__c + dealerProduct.product__c,dealerProduct.mPrice__c);
                }
            }
            //促销订货 根据经销商产品中的数据计算金额
            //=======================================产品特殊折扣
            Map<String, Decimal> dealerPDiscountMap = new Map<String, Decimal>();
            Map<String, Decimal> dealerMPDiscountMap = new Map<String, Decimal>();
            //1.获取有开始结束日的产品
            Date dateToday = Date.today();
            List<Dealer_Product__c> haveDateList = [
                SELECT
                    Id,
                    Name,
                    Dealer_Product2__c,
                    Special_Campaign_Price__c,
                    Campaign_StartDate__c,
                    Campaign_EndDate__c,
                    Dealer_Contact__c,
                    OrderGoods_Limit__c,
                    Special_Discount__c
                FROM Dealer_Product__c
                WHERE
                    Dealer_Contact__c IN :contactDealer
                    AND Campaign_StartDate__c <= :dateToday
                    AND Campaign_EndDate__c >= :dateToday
                    AND (Special_Discount__c != NULL
                    OR Special_Campaign_Price__c != NULL)
            ];
            //2.获取没有开始结束日的产品
            List<Dealer_Product__c> DealerProductList = [
                SELECT
                    Id,
                    Name,
                    Dealer_Product2__c,
                    Special_Campaign_Price__c,
                    Campaign_StartDate__c,
                    Campaign_EndDate__c,
                    Dealer_Contact__c,
                    Special_Discount__c,
                    OrderGoods_Limit__c
                FROM Dealer_Product__c
                WHERE Dealer_Contact__c IN :contactDealer AND (Special_Discount__c != NULL OR Special_Campaign_Price__c != NULL)
            ];
            for (Dealer_Product__c dealerProduct : DealerProductList) {
                //如果促销价格为null 则设置特殊折扣(百分比)到集合
                if (dealerProduct.Special_Campaign_Price__c == null) {
                    dealerPDiscountMap.put(
                        '' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c,
                        dealerProduct.Special_Discount__c
                    );
                } else {
                    dealerMPDiscountMap.put(
                        '' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c,
                        dealerProduct.Special_Campaign_Price__c
                    );
                }
            }
            //这样做是为了计算促销价格时 优先计算促销开始结束日不为空的产品
            //如果该集合有值 则说明需要根据当前的金额或者折扣来计算
            if (haveDateList != null && haveDateList.size() > 0) {
                for (Dealer_Product__c dealerProduct : haveDateList) {
                    if (dealerProduct.Special_Campaign_Price__c == null) {
                        dealerPDiscountMap.put(
                            '' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c,
                            dealerProduct.Special_Discount__c
                        );
                        dealerMPDiscountMap.remove('' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c);
                    } else {
                        dealerMPDiscountMap.put(
                            '' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c,
                            dealerProduct.Special_Campaign_Price__c
                        );
                        dealerPDiscountMap.remove('' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c);
                    }
                }
            }
            //=======================================经销商合同折扣
            List<Account> at = [
                SELECT id, Name, State_Master__c, State_Master__r.Name, Sales_Section__c, Dealer_discount__c
                FROM Account
                WHERE
                    Name = :contractName
                    AND Contact_Type__c LIKE :agencyProType
                    AND Contract_Decide_Start_Date__c <= :Date.Today()
                    AND Contract_Decide_End_Date__c >= :Date.Today()
            ];
            if (at.size() > 0 && at[0].Dealer_discount__c != null) {
                disCount = at[0].Dealer_discount__c;
            } else {
                disCount = 100;
            }
            Consumable_order__c P = new Consumable_order__c();
            List<Consumable_Orderdetails__c> Ins = new List<Consumable_Orderdetails__c>();
            //新建订单时
            if (String.isBlank(ESetId)) {
                Integer i = 1;
                Integer Roll = 0;
                p.Name = '*';
                p.Order_status__c = '草案中';
                p.Dealer_Info__c = accountid;
                p.Order_ProType__c = agencyProType;
                p.Offers_Price__c = coc.Offers_Price__c;
                p.Order_date__c = coc.Order_date__c;
                p.Order_effective_contact__c = contract[0].Id;
                p.Order_Reason__c = coc.Order_Reason__c;
                p.RecordTypeid = System.Label.RT_ConOrder_Order;
                p.Overrule_order__c = coc.Id;
                if (String.isNotBlank(methodType)) {
                    p.orderPattern__c = methodType;
                }
                insert p;
                List<Consumable_order__c> Consumable_order = [SELECT Name, orderPattern__c FROM Consumable_order__c WHERE id = :p.id];
                for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) {
                    Roll = Roll + 1;
                    if (ass.check == true) {
                        if (ass.esd.Consumable_Count__c == null || ass.esd.Consumable_Count__c == 0) {
                            // ass.esd.Consumable_Count__c.addError('请输入采购数量');
                            results.result = 'Fail';
                            results.errorMsg = '请输入采购数量';
                            return results;
                        } else {
                            Consumable_Orderdetails__c InsAfterDel = new Consumable_Orderdetails__c();
                            String str = string.valueOf(i);
                            if (str.length() == 1) {
                                str = '0' + str;
                            }
                            InsAfterDel.Name = Consumable_order[0].Name + '-' + str;
                            InsAfterDel.Consumable_Count__c = ass.esd.Consumable_Count__c;
                            InsAfterDel.Consumable_order__c = p.id;
                            InsAfterDel.Consumable_Product__c = ass.Prod.id;
                            InsAfterDel.Box_Piece__c = '盒';
                            //协议订货
                            if (methodType.equals('agreementorder')) {
                                Consumable_order[0].orderPattern__c = 'agreementorder';
                                InsAfterDel.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c * disCount / 100;
                                //=====================================================================================update by rentx 2020-11-25
                            } else if (methodType.equals('promotionorder')) {
                                Consumable_order[0].orderPattern__c = 'promotionorder';
                                //促销订货
                                //如果促销价格不为null 则直接使用促销价格来计算金额
                                if (dealerMPDiscountMap.containsKey('' + contract[0].Id + ass.Prod.Id)) {
                                    InsAfterDel.Intra_Trade_List_RMB__c = dealerMPDiscountMap.get('' + contract[0].Id + ass.Prod.Id);
                                    system.debug('cai 0' + InsAfterDel.Intra_Trade_List_RMB__c);
                                } else if (dealerPDiscountMap.containsKey('' + contract[0].Id + ass.Prod.Id)) {
                                    InsAfterDel.Intra_Trade_List_RMB__c =
                                        ass.Prod.Intra_Trade_List_RMB__c *
                                        dealerPDiscountMap.get('' + contract[0].Id + ass.Prod.Id) /
                                        100;
                                        system.debug('cai 00' + InsAfterDel.Intra_Trade_List_RMB__c);
                                }
                                //=====================================================================================update by rentx 2020-11-25
                            } else if (methodType.equals('hospitalorder')) {
                                //医院特价
                                Consumable_order[0].Order_ForHospital__c = hospitalId;
                                Consumable_order[0].orderPattern__c = 'hospitalorder';
                                if (dealerHospitalmMap.containsKey(hospitalId + ass.Prod.Id) && dealerHospitalmMap.get(hospitalId + ass.Prod.Id) != null) {
                                    //直接根据促销金额计算
                                    InsAfterDel.Intra_Trade_List_RMB__c = dealerHospitalmMap.get(''+ hospitalId + ass.Prod.Id);
                                }
                            } else if (DealerProductMap.containsKey(ass.Prod.Id)) {
                                InsAfterDel.Intra_Trade_List_RMB__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c;
                                system.debug('cai 2' + InsAfterDel.Intra_Trade_List_RMB__c);
                                InsAfterDel.Purchase_Unitprtprice_From__c = '促销';
                                InsAfterDel.Special_Campaign_Price__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c;
                            }
                            InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order;
                            i++;
                            Ins.add(InsAfterDel);
                        }
                    }
                }
                ESetId = p.id;
                if (Consumable_order.size() > 0) {
                    update Consumable_order;
                }
            }
            //修改之后 保存订单
            if (Ins.size() > 0) {
                insert Ins;
            } else {
                //修改,获取消耗品订单
                List<Consumable_order__c> cocinfo = new List<Consumable_order__c>();
                cocinfo = [
                    SELECT Id, Name, Order_status__c, Dealer_Info__c, Deliver_date__c, Order_Reason__c, Offers_Price__c
                    FROM Consumable_order__c
                    WHERE Id = :ESetId
                ];
                if (cocinfo.size() > 0) {
                    p = cocinfo[0];
                }
                p.Name = coc.Name;
                p.Dealer_Info__c = accountid;
                p.Order_ProType__c = agencyProType;
                p.Order_date__c = coc.Order_date__c;
                p.Order_effective_contact__c = contract[0].Id;
                p.Order_Reason__c = coc.Order_Reason__c;
                if (bargainPrice != null) {
                    p.Offers_Price__c = bargainPrice;
                }
                update p;
                List<Consumable_order__c> Consumable_order = [SELECT Name, orderPattern__c FROM Consumable_order__c WHERE id = :p.id];
                List<Consumable_Orderdetails__c> qs = new List<Consumable_Orderdetails__c>();
                qs = [
                    SELECT Id
                    FROM Consumable_Orderdetails__c
                    WHERE Consumable_order__c = :ESetId AND Consumable_order__r.Dealer_Info__c = :accountid
                ];
                if (qs.size() > 0) {
                    delete qs;
                }
                Integer i = 1;
                for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) {
                    if (ass.check == true) {
                        Consumable_Orderdetails__c InsAfterDel = new Consumable_Orderdetails__c();
                        if (ass.esd.Consumable_Count__c == null || ass.esd.Consumable_Count__c == 0) {
                            // ass.esd.Consumable_Count__c.addError('请输入采购数量');
                            results.result = 'Fail';
                            results.errorMsg = '请输入采购数量';
                            return results;
                        } else {
                            String str = string.valueOf(i);
                            if (str.length() == 1) {
                                str = '0' + str;
                            }
                            InsAfterDel.Name = Consumable_order[0].Name + '-' + str;
                            InsAfterDel.Consumable_Count__c = ass.esd.Consumable_Count__c;
                            InsAfterDel.Consumable_order__c = ESetId;
                            InsAfterDel.Consumable_Product__c = ass.Prod.id;
                            InsAfterDel.Box_Piece__c = '盒';
                            //协议订货
                            if (methodType.equals('agreementorder')) {
                                Consumable_order[0].orderPattern__c = 'agreementorder';
                                InsAfterDel.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c * disCount / 100;
                            } else if (methodType.equals('promotionorder')) {
                                Consumable_order[0].orderPattern__c = 'promotionorder';
                                //促销订货
                                if (dealerMPDiscountMap.containsKey('' + contract[0].Id + ass.Prod.Id)) {
                                    InsAfterDel.Intra_Trade_List_RMB__c = dealerMPDiscountMap.get('' + contract[0].Id + ass.Prod.Id);
                                } else if (dealerPDiscountMap.containsKey('' + contract[0].Id + ass.Prod.Id)) {
                                    InsAfterDel.Intra_Trade_List_RMB__c =
                                        ass.Prod.Intra_Trade_List_RMB__c *
                                        dealerPDiscountMap.get('' + contract[0].Id + ass.Prod.Id) /
                                        100;
                                }
                            } else if (methodType.equals('hospitalorder')) {
                                Consumable_order[0].orderPattern__c = 'hospitalorder';
                                //医院特价
                                Consumable_order[0].Order_ForHospital__c = hospitalId;
                                if (dealerHospitalmMap.containsKey(hospitalId + ass.Prod.Id) && dealerHospitalmMap.get(hospitalId + ass.Prod.Id) != null) {
                                    //直接根据促销金额计算
                                    InsAfterDel.Intra_Trade_List_RMB__c = dealerHospitalmMap.get(''+ hospitalId + ass.Prod.Id);
                                }
                            } else if (DealerProductMap.containsKey(ass.Prod.Id)) {
                                InsAfterDel.Intra_Trade_List_RMB__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c;
                                InsAfterDel.Purchase_Unitprtprice_From__c = '促销';
                                InsAfterDel.Special_Campaign_Price__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c;
                            }
                            // ==================================================之前的促销订货的逻辑
                            InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order;
                            i++;
                            Ins.add(InsAfterDel);
                        }
                    }
                }
                if (Ins.size() > 0) {
                    insert Ins;
                }
            }
            results.result = 'Success';
            results.eSetId = ESetId;
        } catch (Exception e) {
            Database.rollback(sp);
            results.result = 'Fail';
            results.errorMsg = e.getLineNumber() + '---' + e.getMessage();
        }
        return results;
    }
    class ConsumableorderdetailsInfo implements Comparable {
        @AuraEnabled
        public Boolean check { get; set; }
        @AuraEnabled
        public Boolean oldCheck { get; set; }
        @AuraEnabled
        public Consumable_Orderdetails__c esd { get; set; }
        @AuraEnabled
        public Product2__c Prod { get; set; }
        @AuraEnabled
        public Integer packing_list { get; set; }
        @AuraEnabled
        public Date expiration_Date { get; set; }
        @AuraEnabled
        public String approbation_No { get; set; }
        @AuraEnabled
        public Decimal allnumber { get; set; }
        @AuraEnabled
        public Decimal allnumber_piece { get; set; }
        @AuraEnabled
        public Decimal oldConsumableCount { get; set; }
        @AuraEnabled
        public Boolean canSelect { get; set; }
        @AuraEnabled
        public Attachment Concc { get; set; }
        @AuraEnabled
        public Boolean sortBy { get; set; }
        @AuraEnabled
        public Decimal upperlimit { get; set; }
        @AuraEnabled
        public Decimal lowerlimit { get; set; }
        @AuraEnabled
        public Decimal SpecialCampaignPrice { get; set; }
        @AuraEnabled
        public Decimal orderGoods_Limit { get; set; }
        @AuraEnabled
        public Date Campaign_EndDate { get; set; }
        // 已存产品明细
        public ConsumableorderdetailsInfo(Consumable_Orderdetails__c e) {
            check = true;
            oldCheck = true;
            esd = e;
            Prod = e.Consumable_Product__r;
            oldConsumableCount = e.Consumable_Count__c;
            canSelect = true;
            allnumber = 0;
            allnumber_piece = 0;
        }
        public ConsumableorderdetailsInfo(Product2__c e) {
            check = false;
            oldCheck = false;
            esd = new Consumable_Orderdetails__c();
            Prod = e;
            oldConsumableCount = null;
            canSelect = true;
            allnumber = 0;
            allnumber_piece = 0;
        }
        //附件
        public ConsumableorderdetailsInfo(Attachment e) {
            Concc = e;
        }
        // 排序Consumable_order__c
        public Integer compareTo(Object compareTo) {
            ConsumableorderdetailsInfo compareToesd = (ConsumableorderdetailsInfo) compareTo;
            Integer returnValue = 0;
            if (check == true) {
                if (sortBy == false) {
                    if (allnumber > compareToesd.allnumber) {
                        returnValue = -1;
                    } else if (allnumber < compareToesd.allnumber) {
                        returnValue = 1;
                    }
                    return returnValue;
                } else {
                    if (allnumber > compareToesd.allnumber) {
                        returnValue = 1;
                    } else if (allnumber < compareToesd.allnumber) {
                        returnValue = -1;
                    }
                    return returnValue;
                }
            } else {
                if (sortBy == false) {
                    if (allnumber > compareToesd.allnumber) {
                        returnValue = -1;
                    } else if (allnumber < compareToesd.allnumber) {
                        returnValue = 1;
                    }
                    return returnValue;
                } else {
                    if (allnumber > compareToesd.allnumber) {
                        returnValue = 1;
                    } else if (allnumber < compareToesd.allnumber) {
                        returnValue = -1;
                    }
                    return returnValue;
                }
            }
        }
    }
    public class Results {
        @AuraEnabled
        public String result;
        @AuraEnabled
        public String errorMsg;
        @AuraEnabled
        public String eSetId;
        @AuraEnabled
        public String agencyProType;
        @AuraEnabled
        public String userWorkLocation;
        @AuraEnabled
        public String accountName;
        @AuraEnabled
        public String accountid;
        @AuraEnabled
        public String hospitalId;
        @AuraEnabled
        public String contractId;
        @AuraEnabled
        public String category_Goods;
        @AuraEnabled
        public Consumable_order__c coc;
        @AuraEnabled
        public Boolean edoffersPrice;
        @AuraEnabled
        public Boolean editDelCommitBtnDisabled;
        @AuraEnabled
        public Boolean editAble;
        @AuraEnabled
        public String hospitalName;
        @AuraEnabled
        public String contractName;
        @AuraEnabled
        public List<CusOption> category3Option;
        @AuraEnabled
        public List<CusOption> category4Option;
        @AuraEnabled
        public List<CusOption> category5Option;
        @AuraEnabled
        public List<ConsumableorderdetailsInfo> consumableorderdetailsRecordsview;
        @AuraEnabled
        public List<ConsumableorderdetailsInfo> attachmentRecoeds;
        @AuraEnabled
        public Boolean cansee;
        @AuraEnabled
        public List<String> errorMsgList;
        @AuraEnabled
        public List<String> warningMsgList;
        @AuraEnabled
        public Boolean hasWarning;
        @AuraEnabled
        public Boolean hasError;
        @AuraEnabled
        public Boolean specialCampaign;
        @AuraEnabled
        public List<String> dealerProductId;
        @AuraEnabled
        public List<String> contactDealer;
        @AuraEnabled
        public String url;
        @AuraEnabled
        public String methodType;
        @AuraEnabled
        public List<String> proLimitAndDate;
    }
    public class CusOption {
        CusOption(String label, String value) {
            this.label = label;
            this.value = value;
        }
        @AuraEnabled
        public String label;
        @AuraEnabled
        public String value;
    }
}
force-app/main/default/classes/LexConsumableController.cls-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>56.0</apiVersion>
    <status>Active</status>
</ApexClass>
force-app/main/default/lwc/childComponentTest/__tests__/childComponentTest.test.js
New file
@@ -0,0 +1,25 @@
import { createElement } from 'lwc';
import ChildComponentTest from 'c/childComponentTest';
describe('c-child-component-test', () => {
    afterEach(() => {
        // The jsdom instance is shared across test cases in a single file so reset the DOM
        while (document.body.firstChild) {
            document.body.removeChild(document.body.firstChild);
        }
    });
    it('TODO: test case generated by CLI command, please fill in test logic', () => {
        // Arrange
        const element = createElement('c-child-component-test', {
            is: ChildComponentTest
        });
        // Act
        document.body.appendChild(element);
        // Assert
        // const div = element.shadowRoot.querySelector('div');
        expect(1).toBe(1);
    });
});
force-app/main/default/lwc/childComponentTest/childComponentTest.html
New file
@@ -0,0 +1,8 @@
<template>
    <p class="slds-text-align_center slds-var-m-vertical_medium">
        Prior Count:
        <lightning-formatted-number
            value={priorCount}
        ></lightning-formatted-number>
    </p>
</template>
force-app/main/default/lwc/childComponentTest/childComponentTest.js
New file
@@ -0,0 +1,18 @@
import { LightningElement,api } from 'lwc';
export default class ChildComponentTest extends LightningElement {
    _currentCount = 0;
    priorCount = 0;
    @api counter = 0;
    get counter() {
        return this._currentCount;
    }
    set counter(value) {
        this.priorCount = this._currentCount;
        this._currentCount = value;
    }
    @api
    maximizeCounter() 12
      this.counter += 1000000;
    }
}
force-app/main/default/lwc/childComponentTest/childComponentTest.js-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>56.0</apiVersion>
    <isExposed>false</isExposed>
</LightningComponentBundle>
force-app/main/default/lwc/createCaseTest/__tests__/createCaseTest.test.js
New file
@@ -0,0 +1,25 @@
import { createElement } from 'lwc';
import CreateCaseTest from 'c/createCaseTest';
describe('c-create-case-test', () => {
    afterEach(() => {
        // The jsdom instance is shared across test cases in a single file so reset the DOM
        while (document.body.firstChild) {
            document.body.removeChild(document.body.firstChild);
        }
    });
    it('TODO: test case generated by CLI command, please fill in test logic', () => {
        // Arrange
        const element = createElement('c-create-case-test', {
            is: CreateCaseTest
        });
        // Act
        document.body.appendChild(element);
        // Assert
        // const div = element.shadowRoot.querySelector('div');
        expect(1).toBe(1);
    });
});
force-app/main/default/lwc/createCaseTest/createCaseTest.html
New file
@@ -0,0 +1,14 @@
<template>
    <lightning-card>
        <h3 slot="title">
            <lightning-icon icon-name="utility:connected_apps" size="small"></lightning-icon>
            Close Quick Action From Lightning Web Components
        </h3>
        <div slot="footer">
        </div>
        Record Id from Parent Component: {recordId}
        <br/>
        <lightning-button label="Close Quick Action" onclick={closeQuickAction}></lightning-button>
    </lightning-card>
</template>
force-app/main/default/lwc/createCaseTest/createCaseTest.js
New file
@@ -0,0 +1,11 @@
import { LightningElement, api } from 'lwc';
export default class CreateCaseTest extends LightningElement {
    @api recordId;
    closeQuickAction() {
        const closeQA = new CustomEvent('close');
        // Dispatches the event.
        this.dispatchEvent(closeQA);
    }
}
force-app/main/default/lwc/createCaseTest/createCaseTest.js-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>56.0</apiVersion>
    <isExposed>false</isExposed>
</LightningComponentBundle>
force-app/main/default/lwc/lexConsumable/lexConsumable.css
New file
@@ -0,0 +1,3 @@
.myTable table>thead .slds-cell-fixed.slds-has-button-menu, .myTable table>thead .slds-cell-fixed.slds-has-button-menu:hover{
    background: #EEEE00;
}
force-app/main/default/lwc/lexConsumable/lexConsumable.html
New file
@@ -0,0 +1,507 @@
<template>
    <template if:true={showSpinner}>
        <lightning-spinner size="medium" variant="brand"></lightning-spinner>
    </template>
    <template if:true={showPage}>
        <div style="border: 1px solid #D4D4D4;border-top: 3px solid #51606E;border-radius:5px;">
            <div style="padding:10px;">
                <!-- 按钮 -->
                <template if:true={showEditBtn}>
                    <lightning-button style="margin: 5px;" label="编辑" disabled={disabledEditBtn} onclick={editOrder}></lightning-button>
                </template>
                <template if:true={showPrintSheetBtn}>
                    <lightning-button style="margin: 5px;" label="打印配置单" onclick={printOrder}></lightning-button>
                </template>
                <template if:true={showUploadSheetBtn}>
                    <lightning-button style="margin: 5px;" label="上传配置单" disabled={disabledUploadSheetBtn} onclick={uploadOrder}></lightning-button>
                </template>
                <template if:true={showSubOrderbtn}>
                    <lightning-button style="margin: 5px;" label="提交订单" disabled={disabledSubOrderbtn} onclick={submitOrder}></lightning-button>
                </template>
                <template if:true={showSaveOrderbtn1}>
                    <lightning-button style="margin: 5px;" label="保存订单" onclick={saveOrder}></lightning-button>
                </template>
                <template if:true={showSaveOrderbtn2}>
                    <lightning-button style="margin: 5px;" label="保存订单" onclick={orderCopy}></lightning-button>
                </template>
                <template if:true={showDeleteBtn}>
                    <lightning-button style="margin: 5px;" label="删除" disabled={disabledDeleteBtn} onclick={deleteOrder}></lightning-button>
                </template>
                <template if:true={showOfferPriceInputBtn}>
                    <lightning-button style="margin: 5px;" label="特价金额录入" disabled={disabledOfferPriceInputBtn} onclick={inputOfferPrice}></lightning-button>
                </template>
                <template if:true={showReapplyBtn}>
                    <lightning-button style="margin: 5px;" label="再申请" onclick={reapplyOrder}></lightning-button>
                </template>
                <p style="height: 10px;"></p>
                <!-- <div style="border: 1px solid #D4D4D4;border-radius:5px;margin-bottom:7px;">
                    <div style="border-top: 3px solid #51606E;border-bottom: 1px solid #D4D4D4;padding:3px;">
                    </div>
                    <div style="padding:10px;">
                    </div>
                </div> -->
                <!-- 订单信息 -->
                <template if:false={editAble}>
                    <div style="border: 1px solid #D4D4D4;border-top: 3px solid #51606E;border-radius:5px;margin-bottom:7px;">
                        <div style="border-bottom: 1px solid #D4D4D4;padding:3px;">
                            <p style="font-size: 16px;"><strong>订单信息</strong></p>
                        </div>
                        <div style="padding:10px;">
                            <lightning-record-view-form record-id={cocId} object-api-name="Consumable_order__c">
                                <table style="width: 100%;">
                                    <tbody>
                                        <tr>
                                            <td style="width: 10%"></td>
                                            <td style="width: 40%;"><lightning-output-field field-name="Name"></lightning-output-field></td>
                                            <td style="width: 40%;"><lightning-output-field field-name="Order_status__c"></lightning-output-field></td>
                                            <td style="width: 10%"></td>
                                        </tr>
                                        <tr>
                                            <td></td>
                                            <td>
                                                <template if:false={editAble}>
                                                    <lightning-output-field field-name="Total_amount__c"></lightning-output-field>
                                                </template>
                                            </td>
                                            <td>
                                                <div class="slds-grid slds-grid_vertical-align-center">
                                                    <div class="slds-form-element__label"><lightning-formatted-text value={contractLabel}></lightning-formatted-text>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
                                                    <lightning-formatted-text value={contractName}></lightning-formatted-text>
                                                </div>
                                                <!-- <lightning-output-field field-name="Order_effective_contact__c"></lightning-output-field> -->
                                            </td>
                                            <!-- <td>合同:<lightning-formatted-text value={coc.Order_effective_contact__r.Name}></lightning-formatted-text></td> -->
                                            <td></td>
                                        </tr>
                                        <tr>
                                            <td></td>
                                            <td>
                                                <template if:false={edoffersPrice}>
                                                    <lightning-output-field id="sumPrice_buttom1" field-name="Offers_Price__c"></lightning-output-field>
                                                </template>
                                            </td>
                                            <td></td>
                                            <td></td>
                                        </tr>
                                        <tr>
                                            <td></td>
                                            <td>
                                                <template if:true={edoffersPrice}>
                                                    <lightning-input label="特价总金额" variant="label-inline" id="sumPrice_buttom2" value={coc.Offers_Price__c} onchange={offerPriceChange}></lightning-input>
                                                </template>
                                            </td>
                                            <td></td>
                                            <td></td>
                                        </tr>
                                        <tr>
                                            <td></td>
                                            <td>
                                                <template if:true={showAttUploadDate}>
                                                    <lightning-output-field field-name="Consumable_pdf_insert_day__c"></lightning-output-field>
                                                </template>
                                            </td>
                                            <td></td>
                                            <td></td>
                                        </tr>
                                        <tr>
                                            <td></td>
                                            <td>
                                                <template if:true={showOrderDate}>
                                                    <lightning-output-field field-name="Order_date__c"></lightning-output-field>
                                                </template>
                                            </td>
                                            <td></td>
                                            <td></td>
                                        </tr>
                                    </tbody>
                                </table>
                            </lightning-record-view-form>
                        </div>
                    </div>
                </template>
                <!-- searchBlock -->
                <template if:true={editAble}>
                    <div style="border: 1px solid #D4D4D4;border-top: 3px solid #51606E;border-radius:5px;margin-bottom:7px;">
                        <div style="padding:10px;">
                            <table style="width: 100%;">
                                <tbody>
                                    <tr>
                                        <td style="width: 6%;">
                                            <template if:true={showHospital}>
                                                <div style="color:#696969;font-size:12px;text-align: right;padding-right:7px;"><span style="color: red;">*&nbsp;</span>医院</div>
                                            </template>
                                        </td>
                                        <td style="width:20%;padding-bottom:5px;padding-top:5px;">
                                            <template if:true={showHospital}>
                                                <div class="slds-form-element__control slds-input-has-icon slds-input-has-icon_right">
                                                    <lightning-icon size="x-small" class="iconMargin slds-icon slds-input__icon slds-input__icon_right slds-icon-text-default" icon-name="utility:search" ></lightning-icon>
                                                    <lightning-input variant="label-hidden" label="医院" placeholder="请选择医院" value={hospitalName} onclick={showSearchHos}></lightning-input>
                                                </div>
                                            </template>
                                        </td>
                                        <td style="width: 6%;"></td>
                                        <td style="width:14%;"></td>
                                        <td style="width: 6%;"></td>
                                        <td style="width:14%;"></td>
                                        <td style="width: 6%;"></td>
                                        <td style="width:14%;"></td>
                                        <td style="width:16%;"></td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <div style="color:#696969;font-size:12px;text-align: right;padding-right:7px;">消耗品名称</div>
                                        </td>
                                        <td>
                                            <lightning-input variant="label-hidden" label="消耗品名称" value={category1} onchange={category1Change}></lightning-input>
                                        </td>
                                        <td>
                                            <div style="color:#696969;font-size:12px;text-align: right;padding-right:7px;">第3分类</div>
                                        </td>
                                        <td>
                                            <lightning-combobox variant="label-hidden" label="第3分类" value={category3} options={category3Option} onchange={category3Change}></lightning-combobox>
                                        </td>
                                        <td>
                                            <div style="color:#696969;font-size:12px;text-align: right;padding-right:7px;">第4分类</div></td>
                                        <td>
                                            <lightning-combobox variant="label-hidden" label="第4分类" value={category4} options={category4Option} onchange={category4Change}></lightning-combobox>
                                        </td>
                                        <td>
                                            <div style="color:#696969;font-size:12px;text-align: right;padding-right:7px;">第5分类</div></td>
                                        <td>
                                            <lightning-combobox variant="label-hidden" label="第5分类" value={category5} options={category5Option} onchange={category5Change}></lightning-combobox>
                                        </td>
                                        <td>
                                            <lightning-button style="margin-right: 10px;margin-left: 15px;" label="消耗品搜索" onclick={searchProduct}></lightning-button>
                                            <lightning-button label="清空" onclick={clear}></lightning-button>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td></td>
                                        <td></td>
                                        <td></td>
                                        <td></td>
                                        <td></td>
                                        <td></td>
                                        <td><div style="color:#696969;font-size:12px;text-align: right;padding-right:7px;"><span style="color: red;">*&nbsp;</span>合同</div></td>
                                        <td colspan="2" style="padding-bottom:5px;padding-top:5px;">
                                            <div class="slds-form-element__control slds-input-has-icon slds-input-has-icon_right">
                                                <lightning-icon size="x-small" class="iconMargin slds-icon slds-input__icon slds-input__icon_right slds-icon-text-default" icon-name="utility:search" ></lightning-icon>
                                                <lightning-input variant="label-hidden" label="合同" placeholder="请选择合同" value={contractName} onclick={showSearchCon} required="true"></lightning-input>
                                            </div>
                                        </td>
                                    </tr>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </template>
                <!-- 警告提醒 -->
                <template if:true={hasWarning}>
                    <div style="border: 1px solid #D4D4D4;border-radius:5px;margin-bottom:7px;">
                        <div style="border-bottom: 1px solid #D4D4D4;border-radius:5px;margin-bottom:7px;color:#ff6a00;font-size:17px;">
                            <lightning-button-icon icon-name="utility:warning"></lightning-button-icon>
                            <strong>&nbsp;&nbsp;&nbsp;警告</strong>
                        </div>
                        <template for:each={warningMsgs} for:item="msg">
                            <p key={msg} style="color:#ff6a00;padding-left:7px;font-size:14px;">&nbsp;&nbsp;&nbsp;・&nbsp;{msg}</p>
                        </template>
                    </div>
                </template>
                <!-- 报错提醒 -->
                <template if:true={hasError}>
                    <div style="border: 1px solid #D4D4D4;border-radius:5px;margin-bottom:7px;">
                        <div style="border-bottom: 1px solid #D4D4D4;border-radius:5px;margin-bottom:7px;color:red;font-size:17px;">
                            <lightning-button-icon icon-name="utility:error"></lightning-button-icon>
                            <strong>&nbsp;&nbsp;&nbsp;错误</strong>
                        </div>
                        <template for:each={errorMsgs} for:item="msg">
                            <p key={msg} style="color:red;padding-left:7px;font-size:14px;">&nbsp;&nbsp;&nbsp;・&nbsp;{msg}</p>
                        </template>
                    </div>
                </template>
                <!-- 消耗品明细 -->
                <div style="border: 1px solid #D4D4D4;border-top: 3px solid #51606E;border-radius:5px;margin-bottom:7px;">
                    <div style="border-bottom: 1px solid #D4D4D4;padding:3px;">
                        <p style="font-size: 16px;"><strong>消耗品明细</strong></p>
                    </div>
                    <div style="padding:10px;">
                        <table style="width: 100%;">
                            <thead>
                                <tr>
                                    <template if:true={editAble}>
                                        <th><lightning-input type="checkbox" onchange={checkAll} name="checkAll"></lightning-input></th>
                                    </template>
                                    <th style="width: 20%;">消耗品名称</th>
                                    <th>规格</th>
                                    <th>CFDA状态</th>
                                    <th>注册证编码号</th>
                                    <th>注册证效期</th>
                                    <th>第3分类</th>
                                    <th>第4分类</th>
                                    <th>第5分类</th>
                                    <template if:true={cansee}>
                                        <th>标准单价(元)</th>
                                    </template>
                                    <th style="width: 5%;">采购数量</th>
                                    <th>在库数下限</th>
                                    <th>在库数上限</th>
                                    <th>有效期库存(盒)</th>
                                    <th>有效期库存(个)</th>
                                </tr>
                            </thead>
                            <tbody>
                                <template for:each={consumableorderdetailsRecordsview} for:item="record" for:index="index">
                                    <tr key={record.Prod.Name}>
                                        <template if:true={editAble}>
                                            <td>
                                                <lightning-input data-index={index} type="checkbox" checked={record.check} onchange={check} name="check"></lightning-input>
                                                <lightning-input data-index={index} type="checkbox" checked={record.oldCheck} onchange={check} name="check" style="display:none;"></lightning-input>
                                            </td>
                                        </template>
                                        <td>
                                            {record.Prod.Name__c}
                                        </td>
                                        <td>
                                            <div class="slds-truncate" title="Value Proposition">{record.packing_list}</div>
                                        </td>
                                        <td>
                                            <div class="slds-truncate" title="Value Proposition">{record.Prod.SFDA_Status__c}</div>
                                        </td>
                                        <td>
                                            <div class="slds-truncate" title="Value Proposition">{record.approbation_No}</div>
                                        </td>
                                        <td>
                                            <div class="slds-truncate" title="Value Proposition">{record.expiration_Date}</div>
                                        </td>
                                        <td>
                                            <div class="slds-truncate" title="Value Proposition">{record.Prod.Category3__c}</div>
                                        </td>
                                        <td>
                                            <div class="slds-truncate" title="Value Proposition">{record.Prod.Category4__c}</div>
                                        </td>
                                        <td>
                                            <div class="slds-truncate" title="Value Proposition">{record.Prod.Category5__c}</div>
                                        </td>
                                        <template if:true={cansee}>
                                            <td>
                                                <div class="slds-truncate" title="Value Proposition">{record.Prod.Intra_Trade_List_RMB__c}</div>
                                            </td>
                                        </template>
                                        <td>
                                            <template if:true={editAble}>
                                                <lightning-input data-index={index} value={record.esd.Consumable_count__c} onchange={consumableCountChange}></lightning-input>
                                            </template>
                                            <template if:false={editAble}>
                                                <div class="slds-truncate" title="Value Proposition">{record.esd.Consumable_count__c}</div>
                                            </template>
                                        </td>
                                        <td>
                                            <div class="slds-truncate" title="Value Proposition">{record.lowerlimit}</div>
                                        </td>
                                        <td>
                                            <div class="slds-truncate" title="Value Proposition">{record.upperlimit}</div>
                                        </td>
                                        <td>
                                            <div class="slds-truncate" title="Value Proposition">{record.allnumber}</div>
                                        </td>
                                        <td>
                                            <div class="slds-truncate" title="Value Proposition">{record.allnumber_piece}</div>
                                        </td>
                                    </tr>
                                </template>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
        <!-- 附件 -->
        <template if:false={editAble}>
            <div style="border: 1px solid #D4D4D4;border-top: 3px solid #51606E;border-radius:5px;margin-top:10px;">
                <div style="border-bottom: 1px solid #D4D4D4;padding:3px;">
                    <p style="font-size: 16px;"><strong>附件</strong></p>
                </div>
                <div style="padding:10px;">
                    <table>
                        <thead>
                            <th style="width: 33%;">标题</th>
                            <th>创建人</th>
                        </thead>
                        <tbody>
                            <template for:each={attachmentRecoeds} for:item="att" for:index="index">
                                <tr key={att.Concc.Id}>
                                    <td>
                                        <a data-name={att.Concc.Id} onclick={attClick2}>{att.Concc.Name}</a>
                                    </td>
                                    <td>
                                        <a data-name={att.Concc.OwnerId} onclick={attClick1}>{att.Concc.Owner.Name}</a>
                                    </td>
                                </tr>
                            </template>
                        </tbody>
                    </table>
                </div>
            </div>
        </template>
        <!-- 上传附件弹窗 -->
        <template if:true={showAttPop}>
            <section role="dialog" tabindex="-1" aria-labelledby="modal-heading-01" aria-modal="true" aria-describedby="modal-content-id-1" class="slds-modal slds-fade-in-open slds-modal_small" style="border: 1px solid #D4D4D4;">
                <div class="slds-modal__container">
                    <header class="slds-modal__header" style="background-color: #F3F3F3;">
                        <button style="" class="slds-button slds-button_icon slds-modal__close slds-button_icon-inverse" title="Close" onclick={closePop}>
                            <lightning-icon icon-name="utility:close"
                                alternative-text="close"
                                variant="inverse"
                                size="small" ></lightning-icon>
                            <span class="slds-assistive-text">Close</span>
                        </button>
                        <h2 id="modal-heading-01" class="slds-text-heading_medium slds-hyphenate">上传配置单</h2>
                    </header>
                    <div class="slds-modal__content slds-p-around_medium" id="modal-content-id-1" style="border: 1px solid #F3F3F3;">
                        <div class="slds-m-top_medium slds-m-bottom_x-large">
                            <div class="slds-p-around_medium lgc-bg">
                                <lightning-input type="file" label="附件上传" accept=".xlsx, .xls, .csv, .png, .doc, .docx, .pdf" onchange={attChange}></lightning-input>
                            </div>
                            <p>已选择文件:{fileName} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                <template if:true={attDelBtn}>
                                    <a onclick={removeAtt}>移除</a>
                                </template>
                            </p>
                        </div>
                    </div>
                    <footer class="slds-modal__footer">
                        <lightning-button style="margin-left: 10px;" variant="neutral" label="取消" onclick={closePop}></lightning-button>
                        <lightning-button style="margin-left: 10px;" variant="neutral" label="上传" onclick={uploadAtt}></lightning-button>
                    </footer>
                </div>
            </section>
            <div class="slds-backdrop slds-backdrop_open"></div>
        </template>
        <!-- 搜索医院 -->
        <template if:true={showAttHosPop}>
            <section role="dialog" tabindex="-1" aria-labelledby="modal-heading-01" aria-modal="true" aria-describedby="modal-content-id-1" class="slds-modal slds-fade-in-open slds-modal_medium" style="border: 1px solid #D4D4D4;">
                <div class="slds-modal__container">
                    <header class="slds-modal__header" style="background-color: #F3F3F3;">
                        <button style="" class="slds-button slds-button_icon slds-modal__close slds-button_icon-inverse" title="Close" onclick={closeHospitalPop}>
                            <lightning-icon icon-name="utility:close"
                                alternative-text="close"
                                variant="inverse"
                                size="small" ></lightning-icon>
                            <span class="slds-assistive-text">Close</span>
                        </button>
                        <h2 id="modal-heading-02" class="slds-text-heading_medium slds-hyphenate">经销商医院检索</h2>
                    </header>
                    <div class="slds-modal__content slds-p-around_medium" id="modal-content-id-2" style="border: 1px solid #F3F3F3;">
                        <table style="width: 100%;">
                            <tbody>
                                <tr>
                                    <td style="width: 60px;"><div style="color:#696969;font-size:13px;text-align: left;">医院名称</div></td>
                                    <td style="width: 60%;"><lightning-input label="医院名称" variant="label-hidden" placeholder="请输入医院名称" value={searchNameHos} onchange={searchNameHosChange}></lightning-input></td>
                                    <td style="width: 10px;"></td>
                                    <td><lightning-button label="搜索" onclick={searchHos}></lightning-button></td>
                                </tr>
                            </tbody>
                        </table>
                        <p style="height: 20px;"></p>
                        <!-- <p>已选择医院:{chooseHospital}</p> -->
                        <div style="border: 1px solid #D4D4D4;border-top: 3px solid #51606E;border-radius:5px;margin-bottom:7px;">
                            <div style="border-bottom: 1px solid #D4D4D4;padding:3px;">
                                <p style="font-size: 16px;"><strong>搜索结果</strong></p>
                            </div>
                            <div class="myTable" style="padding:10px;">
                                <!-- <table>
                                    <thead>
                                        <th style="width: 50%;">医院名称</th>
                                        <th style="width: 10%;">省份</th>
                                        <th style="width: 40%;">地址</th>
                                    </thead>
                                    <tbody>
                                        <template for:each={hospitalList} for:item="hos" for:index="index">
                                            <tr key={hos.Id}>
                                                <td><a data-hosid={hos.Id} data-name={hos.Name} onclick={chooseHos}>{hos.Name}</a></td>
                                                <td>{hos.StateMaster}</td>
                                                <td>{hos.Address__c}</td>
                                            </tr>
                                        </template>
                                        <tr></tr>
                                    </tbody>
                                </table> -->
                                <lightning-datatable key-field="id" hide-checkbox-column="true" data={hospitalList} columns={hosCols} onrowaction={chooseHos}></lightning-datatable>
                            </div>
                        </div>
                    </div>
                    <footer class="slds-modal__footer">
                        <lightning-button style="margin-left: 10px;" variant="neutral" label="取消" onclick={closeHospitalPop}></lightning-button>
                        <!-- <lightning-button style="margin-left: 10px;" variant="neutral" label="确认" onclick={confirmHospital}></lightning-button> -->
                    </footer>
                </div>
            </section>
            <div class="slds-backdrop slds-backdrop_open"></div>
        </template>
        <!-- 搜索合同 -->
        <template if:true={showConPop}>
            <section role="dialog" tabindex="-1" aria-labelledby="modal-heading-01" aria-modal="true" aria-describedby="modal-content-id-1" class="slds-modal slds-fade-in-open slds-modal_medium" style="border: 1px solid #D4D4D4;">
                <div class="slds-modal__container">
                    <header class="slds-modal__header" style="background-color: #F3F3F3;">
                        <button style="" class="slds-button slds-button_icon slds-modal__close slds-button_icon-inverse" title="Close" onclick={closeContractPop}>
                            <lightning-icon icon-name="utility:close"
                                alternative-text="close"
                                variant="inverse"
                                size="small" ></lightning-icon>
                            <span class="slds-assistive-text">Close</span>
                        </button>
                        <h2 id="modal-heading-03" class="slds-text-heading_medium slds-hyphenate">合同检索</h2>
                    </header>
                    <div class="slds-modal__content slds-p-around_medium" id="modal-content-id-3" style="border: 1px solid #F3F3F3;">
                        <table style="width: 100%;">
                            <tbody>
                                <tr>
                                    <td style="width: 60px;"><div style="color:#696969;font-size:13px;text-align: left;">合同名称</div></td>
                                    <td style="width: 60%;"><lightning-input label="合同名称" variant="label-hidden" placeholder="请输入合同名称" value={searchNameCon} onchange={searchNameConChange}></lightning-input></td>
                                    <td style="width: 10px;"></td>
                                    <td><lightning-button label="搜索" onclick={searchCon}></lightning-button></td>
                                </tr>
                            </tbody>
                        </table>
                        <p style="height: 10px;"></p>
                        <!-- <p>已选择合同:{chooseContract}</p> -->
                        <div style="border: 1px solid #D4D4D4;border-top: 3px solid #51606E;border-radius:5px;margin-bottom:7px;">
                            <div style="border-bottom: 1px solid #D4D4D4;padding:3px;">
                                <p style="font-size: 16px;"><strong>搜索结果</strong></p>
                            </div>
                            <div style="padding:20px;">
                                <!-- <table>
                                    <thead>
                                        <th style="width: 30%;">合同名称</th>
                                        <th style="width: 10%;">省份</th>
                                        <th style="width: 20%;">申请销售课</th>
                                        <th style="width: 20%;">允许报价期间(开始日)</th>
                                        <th style="width: 20%;">允许报价期间(结束日)</th>
                                    </thead>
                                    <tbody>
                                        <template for:each={contractList} for:item="con" for:index="index">
                                            <tr key={con.Id}>
                                                <td><a data-hosid={con.Id} data-name={con.Name} onclick={chooseCon}>{con.Name}</a></td>
                                                <td>{con.StateMaster}</td>
                                                <td>{con.Sales_Section__c}</td>
                                                <td>{con.Contract_Decide_Start_Date__c}</td>
                                                <td>{con.Contract_Decide_End_Date__c}</td>
                                            </tr>
                                        </template>
                                        <tr></tr>
                                    </tbody>
                                </table> -->
                                <lightning-datatable key-field="id" hide-checkbox-column="true" data={contractList} columns={conCols} onrowaction={chooseCon}></lightning-datatable>
                            </div>
                        </div>
                    </div>
                    <footer class="slds-modal__footer">
                        <lightning-button style="margin-left: 10px;" variant="neutral" label="取消" onclick={closeContractPop}></lightning-button>
                        <!-- <lightning-button style="margin-left: 10px;" variant="neutral" label="确认" onclick={confirmContract}></lightning-button> -->
                    </footer>
                </div>
            </section>
            <div class="slds-backdrop slds-backdrop_open"></div>
        </template>
    </template>
</template>
force-app/main/default/lwc/lexConsumable/lexConsumable.js
New file
@@ -0,0 +1,935 @@
import { LightningElement,wire,api,track } from 'lwc';
import { CurrentPageReference } from 'lightning/navigation';
import { ShowToastEvent } from 'lightning/platformShowToastEvent';
import { NavigationMixin } from 'lightning/navigation';
import initPage from '@salesforce/apex/LexConsumableController.init';
import categoryAllload from '@salesforce/apex/LexConsumableController.categoryAllload';
import categoryload from '@salesforce/apex/LexConsumableController.categoryload';
import searchConsumableorderdetails from '@salesforce/apex/LexConsumableController.searchConsumableorderdetails';
import searchorderdetails from '@salesforce/apex/LexConsumableController.searchorderdetails';
import save from '@salesforce/apex/LexConsumableController.save';
import ordrCopy from '@salesforce/apex/LexConsumableController.ordrCopy';
import setEditAble from '@salesforce/apex/LexConsumableController.setEditAble';
import backOrder from '@salesforce/apex/LexConsumableController.backOrder';
import delConsumable from '@salesforce/apex/LexConsumableController.delConsumable';
import sorder from '@salesforce/apex/LexConsumableController.sorder';
import filesUpload from '@salesforce/apex/LexConsumableController.filesUpload';
import initHospital from '@salesforce/apex/LexSearchHospitalController.init';
import searchHospital from '@salesforce/apex/LexSearchHospitalController.searchHospital';
import initContract from '@salesforce/apex/LexSearchContractController.init';
import searchContract from '@salesforce/apex/LexSearchContractController.searchContract';
export default class LexConsumable extends NavigationMixin(LightningElement) {
   //页面基础数据
   @track editAble;
   @track pageType;
   @track esetId;
   @track keyWords;
   @track coc;
   @track cocId;
   @track userWorkLocation;
   @track accountName;
   @track accountid;
   @track specialCampaign = false;
   @track dealerProductId = [];
   @track category1;
   @track category3 = '';
   @track category4 = '';
   @track category5 = '';
   @track category_Goods;
   @track category3Option = [];
   @track category4Option = [];
   @track category5Option = [];
   @track consumableorderdetailsRecordsview = [];
   @track attachmentRecoeds = [];
   @track contactDealer = [];
   @track proLimitAndDate = [];
   @track agencyProType;
   @track bargainPrice;
   @track showOrderDate = false;
   @track showAttUploadDate = false;
   @track edoffersPrice = false;
   @track editDelCommitBtnDisabled = false;
   @track showEditBtn = false;
   @track disabledEditBtn = false;
   @track showPrintSheetBtn = false;
   @track showUploadSheetBtn = false;
   @track disabledUploadSheetBtn = false;
   @track showSubOrderbtn = false;
   @track disabledSubOrderbtn = false;
   @track showSaveOrderbtn1 = false;
   @track showSaveOrderbtn2 = false;
   @track showDeleteBtn = false;
   @track disabledDeleteBtn = false;
   @track showOfferPriceInputBtn = false;
   @track disabledOfferPriceInputBtn = false;
   @track showReapplyBtn = false;
   @track showHospital = false;
   @track showSpinner = true;
   @track showPage = false;
   @track cansee = false;
   //报错提醒
   // @track hasError = false;
   @track errorMsgs = [];
   // @track hasWarning = false;
   @track warningMsgs = [];
   //附件上传
   @track showAttPop = false;
   @track filesUploaded = [];
   @track fileName;
   file;
   fileContents;
   fileReader;
   content;
   //医院搜索
   @track showAttHosPop = false;
   @track hospitalList = [];
   @track searchNameHos;
   @track chooseHospital;
   @track chooseHospitalId;
   @track hospitalId;
   @track hospitalName;
   @track tempidHp;
   @track hosCols = [
      // {label:'医院名称',fieldName:'Name',type:'button',typeAttributes:{label:{fieldName:'Name'},variant:'base'}},
      {label:'',type:'button',typeAttributes:{label:'选择'},initialWidth:80,hideDefaultActions: true},
      {label:'医院名称',fieldName:'Name',initialWidth:380,wrapText:true,hideDefaultActions: true},
      {label:'省份',fieldName:'StateMaster',initialWidth:80,hideDefaultActions: true},
      {label:'地址',fieldName:'Address__c',hideDefaultActions: true}
   ];
   //合同搜索
   @track contractLabel;
   @track showConPop = false;
   @track contractList = [];
   @track searchNameCon;
   @track chooseContract;
   @track chooseContractId;
   @track contractId;
   @track contractName;
   @track tempidPp;
   @track conCols = [
      {label:'',type:'button',typeAttributes:{label:'选择'},initialWidth:80,hideDefaultActions: true},
      {label:'合同名称',fieldName:'Name',wrapText:true,hideDefaultActions: true},
      {label:'省份',fieldName:'StateMaster',initialWidth:80,hideDefaultActions: true},
      {label:'申请销售课',fieldName:'Sales_Section__c',initialWidth:200,hideDefaultActions: true},
      {label:'允许报价期间(开始日)',fieldName:'Contract_Decide_Start_Date__c',initialWidth:200,hideDefaultActions: true},
      {label:'允许报价期间(结束日)',fieldName:'Contract_Decide_End_Date__c',initialWidth:200,hideDefaultActions: true}
   ];
   @wire(CurrentPageReference)
   getStateParameters(currentPageReference) {
      console.log('CurrentPageReference');
      if (currentPageReference) {
         this.pageType = currentPageReference.state?.type;
         this.esetId = currentPageReference.state?.ESetid;
         this.keyWords = currentPageReference.state?.KeyWords;
         console.log('type:'+this.pageType);
         console.log('esetId:'+this.esetId);
         console.log('keyWords:'+this.keyWords);
      }
   }
   connectedCallback(){
      this.showSpinner = true;
      initPage({type:this.pageType, esetId:this.esetId, keywordStr:this.keyWords})
         .then(result=>{
            if(result.result == 'Success'){
               this.editAble = result.editAble;
               this.edoffersPrice = result.edoffersPrice;
               this.cansee = result.cansee;
               this.editDelCommitBtnDisabled = result.editDelCommitBtnDisabled;
               this.category3Option = result.category3Option;
               this.category4Option = result.category4Option;
               this.category5Option = result.category5Option;
               this.agencyProType = result.agencyProType;
               this.hospitalName = result.hospitalName;
               this.contractName = result.contractName;
               this.contractLabel = '经销商有效合同';
               this.consumableorderdetailsRecordsview = result.consumableorderdetailsRecordsview;
               this.attachmentRecoeds = result.attachmentRecoeds;
               this.errorMsgs = result.errorMsgList;
               this.warningMsgs = result.warningMsgList;
               // this.hasError = result.hasError;
               // this.hasWarning = result.hasWarning;
               this.userWorkLocation = result.userWorkLocation;
               this.accountName = result.accountName;
               this.accountid = result.accountid;
               this.hospitalId = result.hospitalId;
               this.contractId = result.contractId;
               this.category_Goods = result.category_Goods;
               this.specialCampaign = result.specialCampaign;
               this.dealerProductId = result.dealerProductId;
               this.contactDealer = result.contactDealer;
               this.pageType = result.methodType;
               this.proLimitAndDate = result.proLimitAndDate;
               this.coc = result.coc;
               this.cocId = this.coc.Id;
               if(this.pageType == 'hospitalorder' && this.agencyProType != 'ET'){
                  this.showHospital = true;
               }
               if(this.coc.Order_status__c == "已提交" || this.coc.Order_status__c == "批准"){
                  this.showOrderDate = true;
               }
               if(this.coc.Consumable_pdf_insert_day__c != null){
                  this.showAttUploadDate = true;
               }
               if(!(this.editAble || this.edoffersPrice)){
                  this.showEditBtn = true;
                  this.showOfferPriceInputBtn = true;
               }
               if(this.coc.Order_status__c == "已提交" || this.coc.Order_status__c == "批准" || this.coc.Order_status__c == "驳回"){
                  this.disabledEditBtn = true;
                  this.disabledUploadSheetBtn = true;
                  this.disabledSubOrderbtn = true;
                  this.disabledDeleteBtn = true;
                  this.disabledOfferPriceInputBtn = true;
               }
               if(!(this.editDelCommitBtnDisabled || this.editAble || this.edoffersPrice)){
                  this.showPrintSheetBtn = true;
                  this.showUploadSheetBtn = true;
                  this.showSubOrderbtn = true;
                  this.showDeleteBtn = true;
               }
               if((this.editDelCommitBtnDisabled || this.editAble || this.edoffersPrice) && this.coc.Order_status__c != "驳回"){
                  this.showSaveOrderbtn1 = true;
               }
               if(this.coc.Order_status__c == "驳回" && this.editAble){
                  this.showSaveOrderbtn2 = true;
               }
               if(this.coc.Order_status__c == "驳回" && !this.editAble){
                  this.showReapplyBtn = true;
               }
               this.showSpinner = false;
               this.showPage = true;
               // this.warningMsgs.push('warning1');
               // this.warningMsgs.push('warning2');
               // this.warningMsgs.push('warning3');
               // this.warningMsgs.push('warning4');
               // this.errorMsgs.push('error1');
               // this.errorMsgs.push('error2');
               // this.errorMsgs.push('error3');
               // this.errorMsgs.push('error4');
            }else{
               this.showSpinner = false;
               console.log("Error:"+result.errorMsg);
               this.showMyToast('初始化页面失败',result.errorMsg,'error');
            }
         })
   }
   get hasWarning(){
      if(this.warningMsgs.length > 0){
         return true;
      }else{
         return false;
      }
   }
   get hasError(){
      if(this.errorMsgs.length > 0){
         return true;
      }else{
         return false;
      }
   }
   offerPriceChange(event){
      this.coc.Offers_Price__c = event.detail.value;
   }
   category1Change(event){
      this.category1 = event.detail.value;
   }
   category3Change(event){
      this.showSpinner = true;
      this.category3 = event.detail.value;
      this.category4 = '';
      this.category5 = '';
      categoryAllload({agencyProTypeStr:this.agencyProType, category3Str:this.category3})
         .then(result=>{
            if(result.result == 'Success'){
               this.category4Option = result.category4Option;
               this.category5Option = result.category5Option;
               this.showSpinner = false;
            }else{
               this.showSpinner = false;
               console.log("Error:"+result.errorMsg);
               this.showMyToast('加载分类失败',result.errorMsg,'error');
            }
         })
   }
   category4Change(event){
      this.showSpinner = true;
      this.category4 = event.detail.value;
      this.category5 = '';
      categoryload({agencyProTypeStr:this.agencyProType, category3Str:this.category3, category4Str:this.category4})
         .then(result=>{
            if(result.result == 'Success'){
               this.category4Option = result.category4Option;
               this.category5Option = result.category5Option;
               this.showSpinner = false;
            }else{
               this.showSpinner = false;
               console.log("Error:"+result.errorMsg);
               this.showMyToast('加载分类失败',result.errorMsg,'error');
            }
         })
   }
   category5Change(event){
      this.category5 = event.detail.value;
   }
   searchProduct(event){
      this.showSpinner = true;
      searchConsumableorderdetails({userWorkLocationStr:this.userWorkLocation,
         agencyProTypeStr:this.agencyProType,
         accountNameStr:this.accountName,
         accountIdStr:this.accountid,
         contractIdStr:this.contractId,
         hospitalIdStr:this.hospitalId,
         category1Str:this.category1,
         category3Str:this.category3,
         category4Str:this.category4,
         category5Str:this.category5,
         category_GoodStr:this.category_Goods,
         specialCampaignStr:this.specialCampaign,
         dealerProductIdStr:JSON.stringify(this.dealerProductId),
         methodTypeStr:this.pageType,
         editAbleStr:this.editAble,
         consumableorderdetailsRecordsviewStr:JSON.stringify(this.consumableorderdetailsRecordsview)})
            .then(result=>{
               if(result.result == 'Success'){
                  this.consumableorderdetailsRecordsview = result.consumableorderdetailsRecordsview;
                  this.showSpinner = false;
                  this.errorMsgs = result.errorMsgList;
                  this.warningMsgs = result.warningMsgList;
                  // this.hasError = result.hasError;
                  // this.hasWarning = result.hasWarning;
                  this.showMyToast('搜索成功',result.errorMsg,'success');
               }else{
                  this.showSpinner = false;
                  console.log("Error:"+result.errorMsg);
                  if(result.errorMsg == '没有搜索到相关数据'){
                     this.showMyToast(result.errorMsg,'','error');
                  }else{
                     this.showMyToast('搜索失败',result.errorMsg,'error');
                  }
               }
            })
            .catch(error=>{
               console.log("Error:"+error);
            })
   }
   clear(event){
      this.category1 = '';
      this.category3 = '';
      this.category4 = '';
      this.category5 = '';
      this.showSpinner = true;
      searchConsumableorderdetails({
         userWorkLocationStr:this.userWorkLocation,
         agencyProTypeStr:this.agencyProType,
         accountNameStr:this.accountName,
         accountIdStr:this.accountid,
         contractIdStr:this.contractId,
         hospitalIdStr:this.hospitalId,
         category1Str:this.category1,
         category3Str:this.category3,
         category4Str:this.category4,
         category5Str:this.category5,
         category_GoodStr:this.category_Goods,
         specialCampaignStr:this.specialCampaign,
         dealerProductIdStr:JSON.stringify(this.dealerProductId),
         methodTypeStr:this.pageType,
         editAbleStr:this.editAble,
         consumableorderdetailsRecordsviewStr:JSON.stringify(this.consumableorderdetailsRecordsview)
      }).then(result=>{
            if(result.result == 'Success'){
               this.consumableorderdetailsRecordsview = result.consumableorderdetailsRecordsview;
               this.showSpinner = false;
               this.showMyToast('搜索成功',result.errorMsg,'success');
            }else{
               this.showSpinner = false;
               console.log("Error:"+result.errorMsg);
               if(result.errorMsg == '没有搜索到相关数据'){
                  this.showMyToast(result.errorMsg,'','error');
               }else{
                  this.showMyToast('搜索失败',result.errorMsg,'error');
               }
            }
         })
   }
   attClick1(event){
      var id = event.currentTarget.dataset.name;
      console.log('id:'+id);
      const config = {
         type: 'standard__webPage',
         attributes: {
             url: '/detail/'+id,
         }
     };
     this[NavigationMixin.Navigate](config);
   }
   attClick2(event){
      var id = event.currentTarget.dataset.name;
      var site = window.location.origin;
      console.log('id:'+id);
      const config = {
         type: 'standard__webPage',
         attributes: {
             url: site+'/consumable/servlet/servlet.FileDownload?file='+id,
         }
     };
     this[NavigationMixin.Navigate](config);
   }
   checkAll(event){
      for(let i=0, len=this.consumableorderdetailsRecordsview.length; i < len ;i++){
         this.consumableorderdetailsRecordsview[i].check = event.target.checked;
      }
   }
   check(event){
      let index = event.target.getAttribute("data-index");
      this.consumableorderdetailsRecordsview[index].check = event.target.checked;
   }
   consumableCountChange(event){
      let index = event.target.getAttribute("data-index");
      var value = event.target.value;
      this.consumableorderdetailsRecordsview[index].esd.Consumable_count__c = value;
      if(isNaN(value)){
         value=0.00;
      }
      if(value != null && value !=0 && value!=''){
         this.consumableorderdetailsRecordsview[index].check = true;
      }else{
         this.consumableorderdetailsRecordsview[index].check = false;
      }
   }
   //保存订单
   saveOrder(event){
      this.showSpinner = true;
      console.log('start save');
      save({
         contractNameStr:this.contractName,
         cocStr:JSON.stringify(this.coc),
         agencyProTypeStr:this.agencyProType,
         accountidStr:this.accountid,
         consumableorderdetailsRecordsviewStr:JSON.stringify(this.consumableorderdetailsRecordsview),
         contactDealerStr:JSON.stringify(this.contactDealer),
         methodTypeStr:this.pageType,
         eSetIdStr:this.esetId,
         hospitalIdStr : this.hospitalId
      }).then(result=>{
         this.showSpinner = false;
         if(result.result == 'Success'){
            this.esetId = result.eSetId;
            const config = {
               type: 'standard__webPage',
               attributes: {
                   url: '/lexconsumable?ESetid=' + this.esetId + '&type=' + this.pageType
               }
           };
           this[NavigationMixin.Navigate](config);
         }else{
            this.showSpinner = false;
            console.log("Error:"+result.errorMsg);
            this.showMyToast('保存失败',result.errorMsg,'error');
         }
      })
   }
   //保存订单(驳回)
   orderCopy(event){
      this.showSpinner = true;
      ordrCopy({
         contractNameStr:this.contractName,
         cocStr:JSON.stringify(this.coc),
         agencyProTypeStr:this.agencyProType,
         accountidStr:this.accountid,
         consumableorderdetailsRecordsviewStr:JSON.stringify(this.consumableorderdetailsRecordsview),
         contactDealerStr:JSON.stringify(this.contactDealer),
         methodTypeStr:this.pageType
      }).then(result=>{
         this.showSpinner = false;
         if(result.result == 'Success'){
            this.esetId = result.esetId;
            const config = {
               type: 'standard__webPage',
               attributes: {
                   url: '/lexconsumable?ESetid=' + this.esetId + '&type=' + this.pageType
               }
           };
           this[NavigationMixin.Navigate](config);
         }else{
            this.showSpinner = false;
            console.log("Error:"+result.errorMsg);
            this.showMyToast('保存失败',result.errorMsg,'error');
         }
      })
   }
   //编辑
   editOrder(event){
      setEditAble({eSetidStr:this.esetId})
         .then(result=>{
            if(result.result == 'Success'){
               const config = {
                  type: 'standard__webPage',
                  attributes: {
                      url: result.url
                  }
               };
              this[NavigationMixin.Navigate](config);
            }else{
               this.showSpinner = false;
               console.log("Error:"+result.errorMsg);
               this.showMyToast('编辑失败',result.errorMsg,'error');
            }
         })
   }
   //打印配置单
   printOrder(event){
      var site = window.location.origin;
      const config = {
         type: 'standard__webPage',
         attributes: {
            url: site+'/consumable/PrintConsumblePDF?ESetid='+this.esetId
         }
      };
      this[NavigationMixin.Navigate](config);
   }
   //上传配置单
   uploadOrder(event){
      this.showAttPop = true;
   }
   //提交订单
   submitOrder(event){
      sorder({eSetidStr:this.esetId,accountidStr:this.accountid})
         .then(result=>{
            if(result.result == 'Success'){
               const config = {
                  type: 'standard__webPage',
                  attributes: {
                     url: result.url
                  }
               };
               this[NavigationMixin.Navigate](config);
            }else{
               this.showSpinner = false;
               this.errorMsgs = result.errorMsgList;
               this.warningMsgs = result.warningMsgList;
               // this.hasError = result.hasError;
               // this.hasWarning = result.hasWarning;
               console.log("Error:"+result.errorMsg);
               if(result.errorMsg.indexOf("请上传订货配置单附件") != -1){
                  result.errorMsg = '请上传订货配置单附件';
               }
               this.showMyToast('提交失败',result.errorMsg,'error');
            }
      })
      .catch(error=>{
         console.log("Error:"+error);
      })
   }
   //删除订单
   deleteOrder(event){
      if(!window.confirm('删除是不可恢复的,你确认要删除吗?')){
         return;
      }
      delConsumable({eSetidStr:this.esetId})
         .then(result=>{
            if(result.result == 'Success'){
               const config = {
                  type: 'standard__webPage',
                  attributes: {
                     url: result.url
                  }
            };
            this[NavigationMixin.Navigate](config);
            }else{
               this.showSpinner = false;
               console.log("Error:"+result.errorMsg);
               this.showMyToast('删除失败',result.errorMsg,'error');
            }
         })
   }
   //特价金额录入
   inputOfferPrice(event){
      this.edoffersPrice = true;
      if(!(this.editAble || this.edoffersPrice)){
         this.showEditBtn = true;
         this.showOfferPriceInputBtn = true;
      }else{
         this.showEditBtn = false;
         this.showOfferPriceInputBtn = false;
      }
      if(!(this.editDelCommitBtnDisabled || this.editAble || this.edoffersPrice)){
         this.showPrintSheetBtn = true;
         this.showUploadSheetBtn = true;
         this.showSubOrderbtn = true;
         this.showDeleteBtn = true;
      }else{
         this.showPrintSheetBtn = false;
         this.showUploadSheetBtn = false;
         this.showSubOrderbtn = false;
         this.showDeleteBtn = false;
      }
      if((this.editDelCommitBtnDisabled || this.editAble || this.edoffersPrice) && this.coc.Order_status__c != "驳回"){
         this.showSaveOrderbtn1 = true;
      }else{
         this.showSaveOrderbtn1 = false;
      }
   }
   //再申请
   reapplyOrder(event){
      backOrder({eSetidStr:this.esetId})
         .then(result=>{
            if(result.result == 'Success'){
               const config = {
                  type: 'standard__webPage',
                  attributes: {
                     url: result.url
                  }
            };
            this[NavigationMixin.Navigate](config);
            }else{
               this.showSpinner = false;
               console.log("Error:"+result.errorMsg);
               this.showMyToast('再申请失败',result.errorMsg,'error');
            }
         })
   }
   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);
      }
   }
   get attDelBtn(){
      if(this.fileName != '' && this.fileName != null && this.fileName != '请选择一个文件上传'){
         return true;
      }else{
         return false;
      }
   }
   closePop(){
      this.showAttPop = false;
      this.filesUploaded = [];
      this.fileName = null;
   }
   removeAtt(){
      this.filesUploaded = [];
      this.fileName = '';
   }
   uploadAtt(event){
      if(this.filesUploaded.length > 0) {
         this.file = this.filesUploaded[0];
         if (this.file.size > this.MAX_FILE_SIZE) {
            window.console.log('文件过大');
            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() {
      // this.showSpinner = true;
      filesUpload({pId:this.esetId, fileName: this.file.name, base64Data: encodeURIComponent(this.fileContents)})
         .then(result => {
            // this.showSpinner = false;
            if(result.result == 'Success'){
               // this.showMyToast('上传成功','','success');
               this.closePop();
               window.location.reload();
            }else{
               console.log("Error:"+result.errorMsg);
               this.showMyToast('上传失败',result.errorMsg,'error');
            }
         })
         .catch(error => {
            this.showSpinner = false;
            this.showMyToast('上传失败',error,'error');
         });
   }
   //打开搜索弹窗,并初始化弹窗
   showSearchHos(event){
      initHospital()
         .then(result=>{
            if(result.result == 'Success'){
               this.showAttHosPop = true;
               this.hospitalList = result.attList;
               for(var i in this.hospitalList){
                  if(this.hospitalList[i].State_Master__c){
                     this.hospitalList[i]['StateMaster'] = this.hospitalList[i].State_Master__r.Name;
                  }
               }
            }else{
               console.log("Error:"+result.errorMsg);
               this.showMyToast('初始化检索医院页面失败',result.errorMsg,'error');
            }
         })
         .catch(error=>{
            console.log("Error:"+error);
            this.showMyToast('初始化检索医院页面失败',error,'error');
         })
   }
   //检索医院
   searchHos(event){
      searchHospital({searchName:this.searchNameHos, accountId:this.accountid})
         .then(result=>{
            if(result.result == 'Success'){
               this.hospitalList = result.attList;
               for(var i in this.hospitalList){
                  if(this.hospitalList[i].State_Master__c){
                     this.hospitalList[i]['StateMaster'] = this.hospitalList[i].State_Master__r.Name;
                  }
               }
            }else{
               console.log("Error:"+result.errorMsg);
               this.showMyToast('搜索失败',result.errorMsg,'error');
            }
         })
         .catch(error=>{
            console.log("Error:"+error);
            this.showMyToast('搜索失败',error,'error');
         })
   }
   searchNameHosChange(event){
      this.searchNameHos = event.detail.value;
   }
   //关闭弹窗
   closeHospitalPop(){
      this.showAttHosPop = false;
      this.chooseHospital = '';
      this.chooseHospitalId = '';
   }
   // //选择医院
   // chooseHos(event){
   //    var hosName = event.target.getAttribute("data-name");
   //    var hosid = event.target.getAttribute("data-hosid");
   //    console.log('hos:'+hosName+'---'+hosid);
   //    this.chooseHospital = hosName;
   //    this.chooseHospitalId = hosid;
   // }
   chooseHos(event){
      const row = event.detail.row;
      this.chooseHospitalId = row.Id;
      this.chooseHospital = row.Name;
      console.log('row.Id:'+row.Id);
      console.log('row.Name:'+row.Name);
      this.confirmHospital();
   }
   //确认选择医院
   confirmHospital(){
      if(this.chooseHospital != '' && this.chooseHospital != null){
         this.hospitalId = this.chooseHospitalId;
         this.tempidHp = this.chooseHospitalId;
         this.hospitalName = this.chooseHospital;
         this.closeHospitalPop();
         //消除警告
         var arr = [];
         for(var i in this.warningMsgs){
            if(this.warningMsgs[i] != '请选择医院'){
               arr.push(this.warningMsgs[i]);
            }
         }
         this.warningMsgs = arr;
         if(this.tempidHp != 'tempId' && this.tempidHp != ''){
            searchorderdetails({
               methodTypeStr : this.pageType,
               accountIdStr : this.accountid,
               hospitalIdStr : this.hospitalId,
               contractIdStr : this.contractId,
               userWorkLocationStr : this.userWorkLocation,
               accountNameStr : this.accountName,
               proLimitAndDateList : this.proLimitAndDate,
               editAbleStr : this.editAble
            }).then(result=>{
               if(result.result == 'Success'){
                  this.consumableorderdetailsRecordsview = result.consumableorderdetailsRecordsview;
                  this.showMyToast('搜索成功',result.errorMsg,'success');
               }else{
                  console.log("Error:"+result.errorMsg);
                  if(result.errorMsg == '没有搜索到相关数据'){
                     this.showMyToast(result.errorMsg,'','error');
                  }else{
                     this.showMyToast('搜索产品失败',result.errorMsg,'error');
                  }
               }
            })
            .catch(error=>{
               console.log("Error:"+error);
               this.showMyToast('搜索产品失败',error,'error');
            })
            this.tempidHp = 'tempId';
         }
      }else{
         this.showMyToast('请选择医院','','error');
      }
   }
   //打开合同检索弹窗并初始化
   showSearchCon(){
      initContract({ctype:this.agencyProType})
      .then(result=>{
         if(result.result == 'Success'){
            this.showConPop = true;
            this.contractList = result.attList;
            for(var i in this.contractList){
               if(this.contractList[i].State_Master__c){
                  this.contractList[i]['StateMaster'] = this.contractList[i].State_Master__r.Name;
               }
            }
         }else{
            console.log("Error:"+result.errorMsg);
            this.showMyToast('初始化检索合同页面失败',result.errorMsg,'error');
         }
      })
      .catch(error=>{
         console.log("Error:"+error);
         this.showMyToast('初始化检索合同页面失败',error,'error');
      })
   }
   //检索合同
   searchCon(){
      searchContract({searchName:this.searchNameCon, accountId:this.accountid, ctype:this.agencyProType})
      .then(result=>{
         if(result.result == 'Success'){
            this.contractList = result.attList;
            for(var i in this.contractList){
               if(this.contractList[i].State_Master__c){
                  this.contractList[i]['StateMaster'] = this.contractList[i].State_Master__r.Name;
               }
            }
         }else{
            console.log("Error:"+result.errorMsg);
            this.showMyToast('搜索失败',result.errorMsg,'error');
         }
      })
      .catch(error=>{
         console.log("Error:"+error);
         this.showMyToast('搜索失败',error,'error');
      })
   }
   searchNameConChange(event){
      this.searchNameCon = event.detail.value;
   }
   //关闭弹窗
   closeContractPop(){
      this.showConPop = false;
      this.chooseContract = '';
      this.chooseContractId = '';
   }
   //选择合同
   // chooseCon(event){
   //    var conName = event.target.getAttribute("data-name");
   //    var conid = event.target.getAttribute("data-hosid");
   //    console.log('hos:'+conName+'---'+conid);
   //    this.chooseContract = conName;
   //    this.chooseContractId = conid;
   // }
   chooseCon(event){
      const row = event.detail.row;
      this.chooseContractId = row.Id;
      this.chooseContract = row.Name;
      console.log('row.Id:'+row.Id);
      console.log('row.Name:'+row.Name);
      this.confirmContract();
   }
   //确认选择合同
   confirmContract(){
      if(this.chooseContract != '' && this.chooseContract != null){
         this.contractId = this.chooseContractId;
         this.tempidPp = this.chooseContractId;
         this.contractName = this.chooseContract;
         this.closeContractPop();
         if(this.tempidPp != 'tempId' && this.tempidPp != '' && this.contractId != '' && this.pageType == 'promotionorder'){
            searchorderdetails({
               methodTypeStr : this.pageType,
               accountIdStr : this.accountid,
               hospitalIdStr : this.hospitalId,
               contractIdStr : this.contractId,
               userWorkLocationStr : this.userWorkLocation,
               accountNameStr : this.accountName,
               proLimitAndDateList : this.proLimitAndDate,
               editAbleStr : this.editAble
            }).then(result=>{
               if(result.result == 'Success'){
                  this.consumableorderdetailsRecordsview = result.consumableorderdetailsRecordsview;
                  this.showMyToast('搜索成功',result.errorMsg,'success');
               }else{
                  console.log("Error:"+result.errorMsg);
                  if(result.errorMsg == '没有搜索到相关数据'){
                     this.showMyToast(result.errorMsg,'','error');
                  }else{
                     this.showMyToast('搜索产品失败',result.errorMsg,'error');
                  }
               }
            })
            .catch(error=>{
               console.log("Error:"+error);
               this.showMyToast('搜索产品失败',error,'error');
            })
            this.tempidPp = 'tempId';
         }
      }else{
         this.showMyToast('请选择合同','','error');
      }
   }
   showMyToast(title,message,variant){
      const evt = new ShowToastEvent({
         title : title,
         message: message,
         variant: variant
      });
      this.dispatchEvent(evt);
   }
}
force-app/main/default/lwc/lexConsumable/lexConsumable.js-meta.xml
New file
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>56.0</apiVersion>
    <isExposed>true</isExposed>
    <targets>
        <target>lightningCommunity__Page</target>
        <target>lightningCommunity__Default</target>
    </targets>
</LightningComponentBundle>
force-app/main/default/lwc/lexConsumableOrderManage/lexConsumableOrderManage.html
New file
@@ -0,0 +1,66 @@
<template>
    <template if:true={showSpinner}>
        <lightning-spinner size="medium" variant="brand"></lightning-spinner>
    </template>
    <template if:true={showPage}>
        <div style="border: 1px solid #D4D4D4;border-top: 3px solid #51606E;border-radius:5px;">
            <div style="padding:10px;">
                <!-- 按钮 -->
                <lightning-button style="margin: 5px;" label="协议订货" onclick={agreementorder}></lightning-button>
                <template if:true={showHop}>
                    <lightning-button style="margin: 5px;" label="医院特价" onclick={hospitalorder}></lightning-button>
                </template>
                <template if:true={hasSpecial}>
                    <lightning-button style="margin: 5px;" label="促销订货" onclick={promotionorder}></lightning-button>
                </template>
                <p style="height: 10px;"></p>
                <!-- 搜索 -->
                <div style="border: 1px solid #D4D4D4;border-top: 3px solid #51606E;border-radius:5px;margin-bottom:7px;">
                    <div style="border-bottom: 1px solid #D4D4D4;padding:3px;">
                        <p style="font-size: 16px;"><strong>检索条件</strong></p>
                    </div>
                    <div style="padding:10px;">
                        <table>
                            <tbody>
                                <tr>
                                    <td style="width: 9%;text-align: right;padding-right:7px;">
                                        <div style="color:#696969;font-size:12px;">消耗品订单名称</div>
                                    </td>
                                    <td style="width: 22%;">
                                        <lightning-input type="text" label="消耗品订单名称" value={category1} variant="label-hidden" onchange={category1Change}></lightning-input>
                                    </td>
                                    <td style="width: 8%;text-align: right;padding-right:7px;">
                                        <div style="color:#696969;font-size:12px;">订单日期</div>
                                    </td>
                                    <td style="width: 19%;">
                                        <lightning-input type="date" name="orderDate" value={orderDate} label="订单日期" variant="label-hidden"  onchange={orderDateChange}></lightning-input>
                                    </td>
                                    <td style="width: 8%;text-align: right;padding-right:7px;">
                                        <div style="color:#696969;font-size:12px;">订单状态</div>
                                    </td>
                                    <td style="width: 19%;">
                                        <lightning-combobox name="orderStatus" label="订单状态" value={orderStatus} placeholder="请选择..." options={provinceOpts} variant="label-hidden"  onchange={orderStatusChange}></lightning-combobox>
                                    </td>
                                    <td style="width: 2%;"></td>
                                    <td style="width: 14%;">
                                        <lightning-button style="margin: 5px;" label="搜索" onclick={searchProduct}></lightning-button>
                                        <lightning-button style="margin: 5px;" label="清空" onclick={clear}></lightning-button>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
                <!-- 订货明细 -->
                <div style="border: 1px solid #D4D4D4;border-top: 3px solid #51606E;border-radius:5px;margin-bottom:7px;">
                    <div style="border-bottom: 1px solid #D4D4D4;padding:3px;">
                        <p style="font-size: 16px;"><strong>订货明细</strong></p>
                    </div>
                    <div style="padding:10px;">
                        <lightning-datatable key-field="id" hide-checkbox-column="true" data={raesList} columns={cols}></lightning-datatable>
                    </div>
                </div>
            </div>
        </div>
    </template>
</template>
force-app/main/default/lwc/lexConsumableOrderManage/lexConsumableOrderManage.js
New file
@@ -0,0 +1,178 @@
import { LightningElement,wire,api,track } from 'lwc';
import { ShowToastEvent } from 'lightning/platformShowToastEvent';
import { NavigationMixin } from 'lightning/navigation';
import initPage from '@salesforce/apex/LexConsumableOrderManageController.init1';
import searchConsumableorderdetails from '@salesforce/apex/LexConsumableOrderManageController.searchConsumableorderdetails';
export default class LexConsumableOrderManage extends NavigationMixin(LightningElement) {
    @track category1;
    @track orderDate;
    @track orderStatus = '';
    @track provinceOpts = [];
    @track raesList = [];
    @track title = [];
    @track agencyProType;
    @track accountid;
    @track userWorkLocation;
    @track hasHop = false;
    @track showHop = false;
    @track hasSpecial = false;
    @track cols = [];
    @track showSpinner = false;
    @track showPage = false;
    connectedCallback(){
        this.showSpinner = true;
        initPage()
            .then(result=>{
                if(result.result == 'Success'){
                    this.provinceOpts = result.provinceOpts;
                    this.title = result.title;
                    this.raesList = result.raesList;
                    this.agencyProType = result.agencyProType;
                    this.accountid = result.accountid;
                    this.userWorkLocation = result.userWorkLocation;
                    this.hasHop = result.hasHop;
                    this.hasSpecial = result.hasSpecial;
                    this.cols = result.cols;
                    if(this.hasHop == true && this.agencyProType == 'ENG'){
                        this.showHop = true;
                    }
                    for(var i in this.raesList){
                        if(this.raesList[i].Order_ForHospital__c){
                            this.raesList[i]['hosUrl'] = '/s/detail/'+this.raesList[i].Order_ForHospital__c;
                            this.raesList[i]['hosName'] = this.raesList[i].Order_ForHospital__r.Name;
                        }
                        this.raesList[i]['nameUrl'] = '/s/lexconsumable?ESetid='+this.raesList[i].Id;
                    }
                    this.showSpinner = false;
                    this.showPage = true;
                }else{
                    this.showSpinner = false;
                    console.log("Error:"+result.errorMsg);
                    const evt = new ShowToastEvent({
                        title : '初始化页面失败',
                        message: result.errorMsg,
                        variant: 'error'
                    });
                    this.dispatchEvent(evt);
                }
            })
            .catch(error=>{
                this.showSpinner = false;
                console.log("Error:"+error);
            })
    }
    category1Change(event){
        this.category1 = event.detail.value;
        console.log('category1:'+this.category1);
    }
    orderDateChange(event){
        this.orderDate = event.detail.value;
        console.log('orderDate:'+this.orderDate);
    }
    orderStatusChange(event){
        this.orderStatus = event.detail.value;
        console.log('orderStatus:'+this.orderStatus);
    }
    agreementorder(event){
        const config = {
            type: 'standard__webPage',
            attributes: {
                url: '/lexconsumable?type=agreementorder'
            }
        };
        this[NavigationMixin.Navigate](config);
    }
    hospitalorder(event){
        const config = {
            type: 'standard__webPage',
            attributes: {
                url: '/lexconsumable?type=hospitalorder'
            }
        };
        this[NavigationMixin.Navigate](config);
    }
    promotionorder(event){
        const config = {
            type: 'standard__webPage',
            attributes: {
                url: '/lexconsumable?type=promotionorder'
            }
        };
        this[NavigationMixin.Navigate](config);
    }
    searchProduct(event){
        this.showSpinner = true;
        searchConsumableorderdetails({categoryStr:this.category1,orderDate:this.orderDate,orderStatus:this.orderStatus,accountidStr:this.accountid,agencyProTypeStr:this.agencyProType,userWorkLocationStr:this.userWorkLocation})
            .then(result=>{
                if(result.result == 'Success'){
                    this.raesList = result.raesList;
                    for(var i in this.raesList){
                        if(this.raesList[i].Order_ForHospital__c){
                            this.raesList[i]['hosUrl'] = '/s/detail/'+this.raesList[i].Order_ForHospital__c;
                            this.raesList[i]['hosName'] = this.raesList[i].Order_ForHospital__r.Name;
                        }
                        this.raesList[i]['nameUrl'] = '/s/lexconsumable?ESetid='+this.raesList[i].Id;
                    }
                    this.showSpinner = false;
                    this.showMyToast('搜索成功',result.errorMsg,'success');
                }else{
                    this.showSpinner = false;
                    this.raesList = result.raesList;
                    console.log("Error:"+result.errorMsg);
                    if(result.errorMsg == '没有搜索到相关订单'){
                        this.showMyToast(result.errorMsg,'','error');
                    }else{
                        this.showMyToast('搜索失败',result.errorMsg,'error');
                    }
                    this.dispatchEvent(evt);
                }
            })
    }
    clear(event){
        this.category1 = '';
        this.orderDate = null;
        this.orderStatus = '';
        searchConsumableorderdetails({categoryStr:this.category1,orderDate:this.orderDate,orderStatus:this.orderStatus,accountidStr:this.accountid,agencyProTypeStr:this.agencyProType,userWorkLocationStr:this.userWorkLocation})
            .then(result=>{
                if(result.result == 'Success'){
                    this.raesList = result.raesList;
                    for(var i in this.raesList){
                        if(this.raesList[i].Order_ForHospital__c){
                            this.raesList[i]['hosUrl'] = '/s/detail/'+this.raesList[i].Order_ForHospital__c;
                            this.raesList[i]['hosName'] = this.raesList[i].Order_ForHospital__r.Name;
                        }
                        this.raesList[i]['nameUrl'] = '/s/lexconsumable?ESetid='+this.raesList[i].Id;
                    }
                    this.showMyToast('搜索成功',result.errorMsg,'success');
                }else{
                    this.raesList = result.raesList;
                    console.log("Error:"+result.errorMsg);
                    if(result.errorMsg == '没有搜索到相关订单'){
                        this.showMyToast(result.errorMsg,'','error');
                    }else{
                        this.showMyToast('搜索失败',result.errorMsg,'error');
                    }
                    this.dispatchEvent(evt);
                }
            })
    }
    showMyToast(title,message,variant){
        const evt = new ShowToastEvent({
           title : title,
           message: message,
           variant: variant
        });
        this.dispatchEvent(evt);
     }
}
force-app/main/default/lwc/lexConsumableOrderManage/lexConsumableOrderManage.js-meta.xml
New file
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>56.0</apiVersion>
    <isExposed>true</isExposed>
    <targets>
        <target>lightningCommunity__Page</target>
        <target>lightningCommunity__Default</target>
    </targets>
</LightningComponentBundle>
force-app/main/default/lwc/lexinventoryViewLWC/lexinventoryViewLWC.html
@@ -29,7 +29,7 @@
                                <td><lightning-button label="库存盘点" title="库存盘点" onclick={inventoryCount} ></lightning-button></td>
                                <td></td>
                                <td></td>
                                <td style="width:100px;"><lightning-button label="过期库存销存"  title="过期库存销存" onclick={handleClick} ></lightning-button></td>
                                <td style="width:100px;"><lightning-button label="过期库存销存"  title="过期库存销存" onclick={handleExpired} ></lightning-button></td>
                                <td></td>
                                <td></td>
                                <td style="width:100px;"><lightning-button label="拆盒" title="拆盒" onclick={handleClick} ></lightning-button></td>
@@ -70,13 +70,13 @@
                                        <lightning-input type="text" name="Name" label="消耗品名称"  value={Name}  variant="label-inline" onchange={handleChange} data-field ="Name" ></lightning-input>
                                    </td>
                                    <td style="width: 21%;">
                                        <lightning-combobox   name="CategoryThree" label="第3分类" value={value} placeholder="请选择..." options={optionscatone} variant="label-inline" onchange={handleChange}></lightning-combobox>
                                        <lightning-combobox   name="CategoryThree" label="第3分类" value={value} placeholder="请选择..." options={options1} variant="label-inline" data-field ="CategoryThree" onchange={handleChange}></lightning-combobox>
                                    </td>
                                    <td style="width: 21%;">
                                        <lightning-combobox  name="CategoryFour" label="第4分类" value={value} placeholder="请选择..." options={options2} variant="label-inline" onchange={handleChange}></lightning-combobox>
                                        <lightning-combobox  name="CategoryFour" label="第4分类" value={value} placeholder="请选择..." options={options2} variant="label-inline" data-field ="CategoryFour" onchange={handleChange}></lightning-combobox>
                                    </td>
                                    <td style="width: 21%;">
                                        <lightning-combobox  name="CategoryFive" label="第5分类" value={value} placeholder="请选择..." options={options3} variant="label-inline" onchange={handleChange}></lightning-combobox>
                                        <lightning-combobox  name="CategoryFive" label="第5分类" value={value} placeholder="请选择..." options={options3} variant="label-inline" data-field ="CategoryFive" onchange={handleChange}></lightning-combobox>
                                    </td>
                                    <td style="width: 3%;"></td>
                                    <td style="width: 8%;">
@@ -97,6 +97,7 @@
                <div style="padding:10px;">
                    <template if:true={showTable}>
                        <c-lwc-datatable-utility 
                            hidecheckboxcolumn = {hidecheckboxcolumn}
                            records={data} 
                            total-records={data.length} 
                            columns = {columns}
force-app/main/default/lwc/lexinventoryViewLWC/lexinventoryViewLWC.js
@@ -9,43 +9,45 @@
        fieldName: 'Name__c',
        type: 'Name',
        sortable: true,
        initialWidth: 250,
        cellAttributes: { alignment: 'left' }
    },
    {
        label: '第三分类',
        fieldName: 'Category3__c',
        hideDefaultActions: true,
        sortable: true
        sortable: true,
        initialWidth: 90
    },
    {
        label: '第四分类',
        fieldName: 'Category4__c',
        hideDefaultActions: true,
        sortable: true
        sortable: true,
        initialWidth: 90
    },
    {
        label: '第五分类',
        fieldName: 'Category5__c',
        hideDefaultActions: true
        hideDefaultActions: true,
        initialWidth: 90
    },
    {
        label: '规格',
        fieldName: 'packing_list',
        hideDefaultActions: true,
        initialWidth: 100
        hideDefaultActions: true
    },
    {
        label: '单位',
        fieldName: 'BoxPiece',
        hideDefaultActions: true,
        initialWidth: 100
        hideDefaultActions: true
    },
    {
        label: '注册证编码号',
        fieldName: 'approbation_No',
        hideDefaultActions: true,
        initialWidth: 100
        initialWidth: 180,
        hideDefaultActions: true
    },
    {
        label: '注册有效期',
@@ -56,27 +58,33 @@
    {
        label: 'CFDA状态',
        fieldName: 'SFDA_Status__c',
        hideDefaultActions: true
        hideDefaultActions: true,
        initialWidth: 100
    },
    {
        label: '使用期限',
        fieldName: 'guaranteeperiod',
        hideDefaultActions: true
        hideDefaultActions: true,
        initialWidth: 100
    },
    {
        label: '有效期内库存',
        fieldName: 'limitCount',
        hideDefaultActions: true,
        sortable: true
        sortable: true,
        initialWidth: 100
    },
    {
        label: '过期库存',
        fieldName: 'overlimitCount',
        hideDefaultActions: true
        hideDefaultActions: true,
        initialWidth: 100
    }
];
export default class LexinventoryViewLWC extends LightningElement {
export default class LexinventoryViewLWC extends NavigationMixin(
    LightningElement
) {
    @track pageRecords = [];
    @track data = [];
    @track message = '';
@@ -90,9 +98,11 @@
    @track userWorkLocation;
    @track value = '';
    @track showTable = false;
    @track optionscatone = [];
    @track options2 = [];
    @track options3 = [];
    @track hidecheckboxcolumn = true;
    @track check = false;
    // @track options1 = [];
    // @track options2 = [];
    // @track options3 = [];
    columns = columns;
    defaultSortDirection = 'asc';
@@ -150,7 +160,7 @@
                        object['value'] = key;
                        option1ValueTemp.push(object);
                    }
                    this.optionscatone = option1ValueTemp;
                    this.options1 = option1ValueTemp;
                    console.log(
                        ' this.optionscatone===>' +
                            JSON.stringify(this.optionscatone)
@@ -163,12 +173,14 @@
                        option2ValueTemp.push(object);
                    }
                    this.options2 = option2ValueTemp;
                    let option3ValueTemp = [];
                    for (var key in result.entity.category5OptionMap) {
                        let object = {};
                        object['label'] = result.entity.category5OptionMap[key];
                        object['value'] = key;
                        this.options3.push(object);
                        option3ValueTemp.push(object);
                    }
                    this.options3 = option3ValueTemp;
                    console.log(' this.data=====>' + this.data);
@@ -196,13 +208,6 @@
            .catch((error) => {
                console.log('error = ' + JSON.stringify(error));
            });
    }
    get options2() {
        return this.options2;
    }
    get options3() {
        return this.options3;
    }
    sortBy(field, reverse, primer) {
        const key = primer
@@ -266,12 +271,13 @@
        this.showTable = false;
        console.log('进入搜索11111111111111');
        console.log('进入搜索');
        console.log('this.Name = ' + this.Name);
        console.log('this.CategoryThree = ' + this.CategoryThree);
        console.log('this.CategoryFive = ' + this.CategoryFive);
        searchOrder({
            category1: this.Name,
            Category3: this.CategoryThree,
            Category4: '',
            Category5: '',
            Category4: this.CategoryFour,
            Category5: this.CategoryFive,
            orderDetZaikuListLWC: JSON.stringify(this.orderDetZaikuList),
            accountName: this.accountName,
            agencyProType: this.agencyProType,
@@ -280,6 +286,10 @@
            .then((result) => {
                result = JSON.parse(JSON.stringify(result));
                console.log('result搜索 = ' + JSON.stringify(result));
                console.log(
                    'result搜索列表= ' +
                        JSON.stringify(result.entity.pageRecords)
                );
                if (result.status == 'Success') {
                    const evt = new ShowToastEvent({
                        title: '搜索成功',
@@ -287,7 +297,7 @@
                        variant: 'Success'
                    });
                    this.dispatchEvent(evt);
                    this.pageRecords = result.entity.pageRecords;
                    this.data = result.entity.pageRecords;
                    this.showTable = true;
                } else {
                    const evt = new ShowToastEvent({
@@ -304,6 +314,7 @@
                console.log('error = ' + JSON.stringify(error));
            });
    }
    inventoryCount() {
        console.log('111库存盘点');
        this[NavigationMixin.Navigate]({
@@ -313,6 +324,16 @@
            }
        });
    }
    handleExpired() {
        this[NavigationMixin.Navigate]({
            type: 'standard__webPage',
            attributes: {
                url: '/lexOverdueStock'
            }
        });
    }
    clearAll() {
        this.Name = '';
        this.value = '无';
force-app/main/default/lwc/parentComponentTest/__tests__/parentComponentTest.test.js
New file
@@ -0,0 +1,25 @@
import { createElement } from 'lwc';
import ParentComponentTest from 'c/parentComponentTest';
describe('c-parent-component-test', () => {
    afterEach(() => {
        // The jsdom instance is shared across test cases in a single file so reset the DOM
        while (document.body.firstChild) {
            document.body.removeChild(document.body.firstChild);
        }
    });
    it('TODO: test case generated by CLI command, please fill in test logic', () => {
        // Arrange
        const element = createElement('c-parent-component-test', {
            is: ParentComponentTest
        });
        // Act
        document.body.appendChild(element);
        // Assert
        // const div = element.shadowRoot.querySelector('div');
        expect(1).toBe(1);
    });
});
force-app/main/default/lwc/parentComponentTest/parentComponentTest.html
New file
@@ -0,0 +1,44 @@
<template>
    <lightning-card title="Augmentor" icon-name="action:download">
        <lightning-layout>
            <lightning-layout-item flexibility="auto" padding="around-small">
                <lightning-input
                    label="Set Starting Counter"
                    type="number"
                    min="0"
                    max="1000000"
                    value={startCounter}
                    onchange={handleStartChange}
                >
                </lightning-input>
                <lightning-button
                    class="slds-var-p-vertical_xx-small"
                    label="Add 1m To Counter"
                    onclick={handleMaximizeCounter}
                >
                </lightning-button>
            </lightning-layout-item>
        </lightning-layout>
        <c-child-component-test
            class="slds-show slds-is-relative"
            counter={startCounter}
        >
        </c-child-component-test>
        <lightning-vertical-navigation selected-item={newPageId}>
            <lightning-vertical-navigation-section
                label="Navigation"
                selected-item={newPageId}
            >
                <template for:each={navigationItems} for:item="navigationItem">
                    <lightning-vertical-navigation-item
                        key={navigationItem.pageId}
                        label={navigationItem.label}
                        name={navigationItem.pageId}
                        onclick={handleNavigate}
                    ></lightning-vertical-navigation-item>
                </template>
            </lightning-vertical-navigation-section>
        </lightning-vertical-navigation>
        <p>Current Page is <strong>{newPageId}</strong></p>
    </lightning-card>
</template>
force-app/main/default/lwc/parentComponentTest/parentComponentTest.js
New file
@@ -0,0 +1,62 @@
import { LightningElement,wire } from 'lwc';
import { CurrentPageReference, NavigationMixin } from 'lightning/navigation';
const NAVIGATION_ITEMS = [
    { label: 'Home', pageId: 'home', isCurrentPage: false },
    { label: 'PageA', pageId: 'pageA', isCurrentPage: false },
    { label: 'PageB', pageId: 'pageB', isCurrentPage: false },
    { label: 'PageC', pageId: 'pageC', isCurrentPage: false },
];
export default class ParentComponentTest extends NavigationMixin(LightningElement) {
    startCounter = 0;
    handleStartChange(event) {
        this.startCounter = parseInt(event.target.value);
    }
    handleMaximizeCounter() {
        this.template.querySelector('c-child-component-test').maximizeCounter();
    }
    //Navigation Start
    currentPageReference;
    selectedPageId;
    newPageId = 'home';
    navigationItems = NAVIGATION_ITEMS;
    get newPageReferenceUrlParams() {
        return {
            c__ids: this.selectedPageId
        };
    }
    get newPageReference() {
        return Object.assign({}, this.currentPageReference, {
            state: Object.assign({}, this.currentPageReference.state, this.newPageReferenceUrlParams)
        });
    }
    navigateToNewPage() {
        this[NavigationMixin.Navigate](
            this.newPageReference,
            false // if true js history is replaced without pushing a new history entry onto the browser history stack
        );        // if false new js history entry is created. User will be able to click browser back/forward buttons
    }
    handleNavigate(event) {
        this.selectedPageId = event.target.name;
        this.navigateToNewPage();
    }
    @wire(CurrentPageReference)
    setCurrentPageReference(currentPageReference) {
        if (currentPageReference) {
            this.currentPageReference = currentPageReference;
            this.setCurrentPageIdBasedOnUrl();
        }
    }
    setCurrentPageIdBasedOnUrl() {
        this.newPageId = this.currentPageReference.state.c__ids;
    }
    ////Navigation End
}
force-app/main/default/lwc/parentComponentTest/parentComponentTest.js-meta.xml
New file
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>56.0</apiVersion>
    <isExposed>true</isExposed>
    <targets>
      <target>lightning__AppPage</target>
      <target>lightning__Tab</target>
    </targets>
</LightningComponentBundle>
manifest/packageForLex.xml
@@ -1,8 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>*</members>
        <members>lexConsumable</members>
        <name>LightningComponentBundle</name>
    </types>
    <types>
        <members>LexConsumableController</members>
        <name>ApexClass</name>
    </types>
    <version>52.0</version>
</Package>