buli
2023-07-14 5b5c1e16deaa3a9d6d0ed1ffca390655ed103df7
force-app/main/default/lwc/lexConsumableAccount/lexConsumableAccount.js
@@ -1,28 +1,28 @@
import { LightningElement, wire, api, track } from "lwc";
import { ShowToastEvent } from "lightning/platformShowToastEvent";
import init from "@salesforce/apex/LexConsumableAccountController.init";
import changeFiscalYearView from "@salesforce/apex/LexConsumableAccountController.changeFiscalYearView";
import changelistView from "@salesforce/apex/LexConsumableAccountController.changelistView";
import accountInit from "@salesforce/apex/LexConsumableAccountInfoController.init";
import { LightningElement, wire, api, track } from 'lwc';
import { ShowToastEvent } from 'lightning/platformShowToastEvent';
import init from '@salesforce/apex/LexConsumableAccountController.init';
import changeFiscalYearView from '@salesforce/apex/LexConsumableAccountController.changeFiscalYearView';
import changelistView from '@salesforce/apex/LexConsumableAccountController.changelistView';
import accountInit from '@salesforce/apex/LexConsumableAccountInfoController.init';
//table css
import { loadStyle } from "lightning/platformResourceLoader";
import WrappedHeaderTable from "@salesforce/resourceUrl/lexdatatable";
import { loadStyle } from 'lightning/platformResourceLoader';
import WrappedHeaderTable from '@salesforce/resourceUrl/lexdatatable';
const columns = [
    {
        label: "客户名",
        fieldName: "NameUrl",
        label: '客户名',
        fieldName: 'NameUrl',
        hideDefaultActions: true,
        wrapText: true,
        initialWidth: 200,
        sortable: true,
        type: "url",
        type: 'url',
        typeAttributes: {
            label: {
                fieldName: "Name",
                fieldName: 'Name'
            },
            target:"_blank"
        },
            target: '_blank'
        }
    },
    // {
    //     label: "省",
@@ -39,39 +39,39 @@
    //     },
    // },
    {
        label: "省",
        fieldName: "StateMasterName",
        label: '省',
        fieldName: 'StateMasterName',
        hideDefaultActions: true,
        wrapText: true,
        sortable: true,
        sortable: true
    },
    {
        label: "销售本部医院",
        fieldName: "Salesdepartment_HP__c",
        label: '销售本部医院',
        fieldName: 'Salesdepartment_HP__c',
        hideDefaultActions: true,
        sortable: true,
        wrapText: true,
        wrapText: true
    },
    {
        label: "创建日期",
        fieldName: "CreatedDate",
        label: '创建日期',
        fieldName: 'CreatedDate',
        hideDefaultActions: true,
        sortable: true,
        wrapText: true,
        type: "date",
        type: 'date',
        typeAttributes: {
            timeZone: "Asia/Shanghai",
            day: "numeric",
            month: "numeric",
            year: "numeric",
        },
            timeZone: 'Asia/Shanghai',
            day: 'numeric',
            month: 'numeric',
            year: 'numeric'
        }
    },
    {
        label: "有效/无效",
        fieldName: "Is_Active__c",
        label: '有效/无效',
        fieldName: 'Is_Active__c',
        hideDefaultActions: true,
        sortable: true,
        wrapText: true,
        wrapText: true
    },
    // {
    //     label: "客户记录类型",
@@ -82,11 +82,11 @@
    //     initialWidth: 130,
    // },
    {
        label: "政府等级",
        fieldName: "Grade__c",
        label: '政府等级',
        fieldName: 'Grade__c',
        hideDefaultActions: true,
        sortable: true,
        wrapText: true,
        wrapText: true
    },
    // {
    //     label: "OCSM分类(医院)",
@@ -110,40 +110,40 @@
    //     },
    // },
    {
        label: "市",
        fieldName: "CityMasterName",
        label: '市',
        fieldName: 'CityMasterName',
        hideDefaultActions: true,
        sortable: true,
        wrapText: true,
        wrapText: true
    },
    {
        label: "县/区",
        fieldName: "Town__c",
        label: '县/区',
        fieldName: 'Town__c',
        hideDefaultActions: true,
        sortable: true,
        wrapText: true,
        wrapText: true
    },
    {
        label: "客户电话",
        fieldName: "Phone",
        label: '客户电话',
        fieldName: 'Phone',
        hideDefaultActions: true,
        sortable: true,
        wrapText: true,
    },
        wrapText: true
    }
];
const topColumns = [
    {
        label: "客户名",
        label: '客户名',
        hideDefaultActions: true,
        fieldName : "accountName",
        fieldName: 'accountName',
        wrapText: true,
        type: "customShowAccountUrl",
        type: 'customShowAccountUrl',
        typeAttributes: {
            accountName: { fieldName: "accountName" },
            accountUrl: { fieldName: "accountUrl" },
            isDisable: { fieldName: "isDisable" },
        },
            accountName: { fieldName: 'accountName' },
            accountUrl: { fieldName: 'accountUrl' },
            isDisable: { fieldName: 'isDisable' }
        }
    },
    // {
    //     label: "市",
@@ -158,36 +158,36 @@
    //     },
    // },
    {
        label: "市",
        fieldName: "CityMasterName",
        label: '市',
        fieldName: 'CityMasterName',
        hideDefaultActions: true,
        wrapText: true,
        wrapText: true
    },
    {
        label: "县/区",
        fieldName: "Town__c",
        label: '县/区',
        fieldName: 'Town__c',
        hideDefaultActions: true,
        wrapText: true,
        wrapText: true
    },
    {
        label: "销量占比",
        fieldName: "proportion",
        label: '销量占比',
        fieldName: 'proportion',
        hideDefaultActions: true,
        wrapText: true,
        initialWidth: 100,
        cellAttributes: { alignment: "right" },
        cellAttributes: { alignment: 'right' }
    },
    {
        label: "操作",
        fieldName: "Town__c",
        label: '操作',
        fieldName: 'Town__c',
        type: 'weeklyReport',
        initialWidth: 150,
        typeAttributes: {
            recordId: { fieldName: "Id" },
            hospitalName: { fieldName: "Name" },
            isShowButton: { fieldName: "isShowButton" },
            recordId: { fieldName: 'Id' },
            hospitalName: { fieldName: 'Name' },
            isShowButton: { fieldName: 'isShowButton' }
        },
        hideDefaultActions: true,
        hideDefaultActions: true
    }
];
export default class LexConsumableAccount extends LightningElement {
@@ -195,13 +195,13 @@
    topColumns = topColumns;
    @track isShowSpinner = false;
    @track pageRecords = [];
    @track accountId = "";
    @track agencyProType = "";
    @track agencyProTypestr = "";
    @track accountId = '';
    @track agencyProType = '';
    @track agencyProTypestr = '';
    @track listViewOptions = [
        {
            label: "01. 医院_Hospital",
            value: "01. 医院_Hospital",
            label: '01. 医院_Hospital',
            value: '01. 医院_Hospital'
        },
        // {
        //     label: "61. 医院_Hospital草案中的医院",
@@ -212,23 +212,23 @@
        //     value: "62. 医院_Hospital申请中的医院",
        // },
        {
            label: "63. 医院_Hospital上周创建的医院",
            value: "63. 医院_Hospital上周创建的医院",
        },
            label: '63. 医院_Hospital上周创建的医院',
            value: '63. 医院_Hospital上周创建的医院'
        }
    ];
    @track viewOption = "01. 医院_Hospital";
    @track viewOption = '01. 医院_Hospital';
    @track isShowAccountInfo = false;
    @track topAccountData = [];
    //前端排序
    defaultSortDirection = "asc";
    sortDirection = "asc";
    defaultSortDirection = 'asc';
    sortDirection = 'asc';
    sortedBy;
    //分页start
    @track sortBy = "";
    @track pageSize = 10;
    @track sortBy = '';
    @track pageSize = 200;
    error;
    records;
    currentPageToken = 0;
@@ -238,36 +238,35 @@
    @track pageNumber = 1;
    @track paginationVisibility = false;
    @track totalPages = 1;
    pageSizeOptions = [10, 25, 50, 100];
    pageSizeOptions = [100, 200, 300];
    @track recordStart = 0;
    @track recordEnd = 0;
    //end
    @track AccId = "";
    @track printUrl = "";
    @track AccId = '';
    @track printUrl = '';
    @track accountDataInfo = {
        name: "",
        ownerName: "",
        site: "",
        isActive: "",
        aliasName2: "",
        banOnUseReason: "",
        grade: "",
        attributeType: "",
        oCMCategory: "",
        specialityType: "",
        stateMasterName: "",
        phone: "",
        cityMasterName: "",
        phoneCall: "",
        town: "",
        fax: "",
        street: "",
        postalCode: "",
        address: "",
        parentName: "",
        name: '',
        ownerName: '',
        site: '',
        isActive: '',
        aliasName2: '',
        banOnUseReason: '',
        grade: '',
        attributeType: '',
        oCMCategory: '',
        specialityType: '',
        stateMasterName: '',
        phone: '',
        cityMasterName: '',
        phoneCall: '',
        town: '',
        fax: '',
        street: '',
        postalCode: '',
        address: '',
        parentName: ''
    };
    stylesLoaded = false;
@@ -275,7 +274,7 @@
    @track fiscalYearOptions = [
        { label: '本财年', value: 'thisYear' },
        { label: '上一财年', value: 'lastYear' },
        { label: '上一财年+本财年', value: 'allYear' },
        { label: '上一财年+本财年', value: 'allYear' }
    ];
    @track fiscalYearOption = 'thisYear';
    @track topInfo = [];
@@ -284,19 +283,19 @@
        if (!this.stylesLoaded) {
            Promise.all([loadStyle(this, WrappedHeaderTable)])
                .then(() => {
                    console.log("Custom styles loaded");
                    console.log('Custom styles loaded');
                    this.stylesLoaded = true;
                })
                .catch((error) => {
                    console.error("Error loading custom styles");
                    console.error('Error loading custom styles');
                });
        }
    }
    //获取链接参数
    getQueryString(name) {
        console.log("getQueryString name " + name);
        let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
        console.log('getQueryString name ' + name);
        let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
        let r = window.location.search.substr(1).match(reg);
        if (r != null) {
            return decodeURIComponent(r[2]);
@@ -306,153 +305,246 @@
    connectedCallback() {
        this.isShowSpinner = true;
        this.AccId = this.getQueryString("AccId");
        this.AccId = this.AccId == null ? "" : this.AccId;
        if (this.AccId != "") {
            console.log("this.AccId = " + this.AccId);
        this.AccId = this.getQueryString('AccId');
        this.AccId = this.AccId == null ? '' : this.AccId;
        if (this.AccId != '') {
            console.log('this.AccId = ' + this.AccId);
            accountInit({
                accId: this.AccId,
            }).then((r) => {
                r = JSON.parse(JSON.stringify(r));
                console.log("r = " + JSON.stringify(r));
                if (r.status == "Success") {
                    console.log('r.entity.obj = ' + JSON.stringify(r.entity.obj))
                    this.accountDataInfo.name = r.entity.obj.Name;
                    this.accountDataInfo.ownerName = r.entity.obj.Owner == null ? "" : r.entity.obj.Owner.Name;
                    this.accountDataInfo.site = r.entity.obj.site;
                    this.accountDataInfo.isActive = r.entity.obj.Is_Active__c;
                    this.accountDataInfo.aliasName2 = r.entity.obj.Alias_Name2__c;
                    this.accountDataInfo.banOnUseReason = r.entity.obj.Ban_On_Use_Reason__c;
                    this.accountDataInfo.grade = r.entity.obj.Grade__c;
                    this.accountDataInfo.attributeType = r.entity.obj.Attribute_Type__c;
                    this.accountDataInfo.oCMCategory = r.entity.obj.OCM_Category__c;
                    this.accountDataInfo.specialityType = r.entity.obj.Speciality_Type__c;
                    this.accountDataInfo.stateMasterName = r.entity.obj.State_Master__r == null ? "" : r.entity.obj.State_Master__r.Name;
                    this.accountDataInfo.phone = r.entity.obj.Phone;
                    this.accountDataInfo.cityMasterName = r.entity.obj.City_Master__r == null ? "" : r.entity.obj.City_Master__r.Name;
                    this.accountDataInfo.phoneCall = r.entity.obj.PhoneCall__c;
                    this.accountDataInfo.town = r.entity.obj.Town__c;
                    this.accountDataInfo.fax = r.entity.obj.Fax;
                    this.accountDataInfo.street = r.entity.obj.Street__c;
                    this.accountDataInfo.postalCode = r.entity.obj.Postal_Code__c;
                    this.accountDataInfo.address = r.entity.obj.Address__c;
                    this.accountDataInfo.parentName = r.entity.obj.Parent == null ? "" : r.entity.obj.Parent.Name;
                    console.log('this.accountDataInfo = ' + JSON.stringify(this.accountDataInfo))
                    this.printUrl = "/lexconsumableaccountinfoprint?AccId=" + this.AccId;
                    this.isShowAccountInfo = true;
                    this.isShowSpinner = false;
                } else {
                    console.log("r = " + JSON.stringify(r));
                    this.showMyToast('Error', r.msg, 'Error');
                }
            }).catch((error) => {
                console.log("error = " + JSON.stringify(error));
                this.showMyToast('Error', '初始化失败', 'Error');
            });
                accId: this.AccId
            })
                .then((r) => {
                    r = JSON.parse(JSON.stringify(r));
                    console.log('r = ' + JSON.stringify(r));
                    if (r.status == 'Success') {
                        console.log(
                            'r.entity.obj = ' + JSON.stringify(r.entity.obj)
                        );
                        this.accountDataInfo.name = r.entity.obj.Name;
                        this.accountDataInfo.ownerName =
                            r.entity.obj.Owner == null
                                ? ''
                                : r.entity.obj.Owner.Name;
                        this.accountDataInfo.site = r.entity.obj.site;
                        this.accountDataInfo.isActive =
                            r.entity.obj.Is_Active__c;
                        this.accountDataInfo.aliasName2 =
                            r.entity.obj.Alias_Name2__c;
                        this.accountDataInfo.banOnUseReason =
                            r.entity.obj.Ban_On_Use_Reason__c;
                        this.accountDataInfo.grade = r.entity.obj.Grade__c;
                        this.accountDataInfo.attributeType =
                            r.entity.obj.Attribute_Type__c;
                        this.accountDataInfo.oCMCategory =
                            r.entity.obj.OCM_Category__c;
                        this.accountDataInfo.specialityType =
                            r.entity.obj.Speciality_Type__c;
                        this.accountDataInfo.stateMasterName =
                            r.entity.obj.State_Master__r == null
                                ? ''
                                : r.entity.obj.State_Master__r.Name;
                        this.accountDataInfo.phone = r.entity.obj.Phone;
                        this.accountDataInfo.cityMasterName =
                            r.entity.obj.City_Master__r == null
                                ? ''
                                : r.entity.obj.City_Master__r.Name;
                        this.accountDataInfo.phoneCall =
                            r.entity.obj.PhoneCall__c;
                        this.accountDataInfo.town = r.entity.obj.Town__c;
                        this.accountDataInfo.fax = r.entity.obj.Fax;
                        this.accountDataInfo.street = r.entity.obj.Street__c;
                        this.accountDataInfo.postalCode =
                            r.entity.obj.Postal_Code__c;
                        this.accountDataInfo.address = r.entity.obj.Address__c;
                        this.accountDataInfo.parentName =
                            r.entity.obj.Parent == null
                                ? ''
                                : r.entity.obj.Parent.Name;
                        console.log(
                            'this.accountDataInfo = ' +
                            JSON.stringify(this.accountDataInfo)
                        );
                        this.printUrl =
                            '/lexconsumableaccountinfoprint?AccId=' +
                            this.AccId;
                        this.isShowAccountInfo = true;
                        this.isShowSpinner = false;
                    } else {
                        console.log('r = ' + JSON.stringify(r));
                        this.showMyToast('Error', r.msg, 'Error');
                    }
                })
                .catch((error) => {
                    console.log('error = ' + JSON.stringify(error));
                    this.showMyToast('Error', '初始化失败', 'Error');
                });
        } else {
            init({
                pageSizeLWC: this.pageSize,
                pageTokenLWC: this.currentPageToken,
                fiscalYear: this.fiscalYearOption
            }).then((r) => {
                r = JSON.parse(JSON.stringify(r));
                console.log("r = " + JSON.stringify(r));
                if (r.status == "Success") {
                    //分页
                    this.nextPageToken = r.entity.paginatedAccounts.nextPageToken;
                    this.totalRecords = r.entity.paginatedAccounts.totalRecords;
                    this.recordStart = r.entity.paginatedAccounts.recordStart;
                    this.recordEnd = r.entity.paginatedAccounts.recordEnd;
                    this.totalPages = Math.ceil(
                        r.entity.paginatedAccounts.totalRecords / this.pageSize
                    );
                    console.log("this.totalPages = " + this.totalPages);
                    this.paginationVisibility = this.totalPages > 1 ? true : false;
            })
                .then((r) => {
                    r = JSON.parse(JSON.stringify(r));
                    console.log('r = ' + JSON.stringify(r));
                    if (r.status == 'Success') {
                        //分页
                        this.nextPageToken =
                            r.entity.paginatedAccounts.nextPageToken;
                        this.totalRecords =
                            r.entity.paginatedAccounts.totalRecords;
                        this.recordStart =
                            r.entity.paginatedAccounts.recordStart;
                        this.recordEnd = r.entity.paginatedAccounts.recordEnd;
                        this.totalPages = Math.ceil(
                            r.entity.paginatedAccounts.totalRecords /
                            this.pageSize
                        );
                        console.log('this.totalPages = ' + this.totalPages);
                        this.paginationVisibility =
                            this.totalPages > 1 ? true : false;
                    this.pageRecords = r.entity.pageRecords;
                    this.accountId = r.entity.accountId;
                    this.agencyProType = r.entity.agencyProType;
                    this.agencyProTypestr = r.entity.agencyProTypestr;
                    console.log("this.agencyProTypestr = " + this.agencyProTypestr);
                    for (var i in this.pageRecords) {
                        this.pageRecords[i]["Is_Active__c"] = this.pageRecords[i].Is_Active__c.replace('効','效');
                        this.pageRecords[i]["NameUrl"] = "/s/lexconsumableaccount?AccId=" + this.pageRecords[i].Id;
                        this.pageRecords[i]["StateMasterName"] = this.pageRecords[i].State_Master__r.Name;
                        this.pageRecords[i]["StateMasterUrl"] = "/" + this.pageRecords[i].State_Master__c;
                        this.pageRecords[i]["CityMasterName"] = this.pageRecords[i].City_Master__r.Name;
                        this.pageRecords[i]["CityMasterNameUrl"] = "/" + this.pageRecords[i].City_Master__c;
                        this.pageRecords[i]["RecordTypeName"] = this.pageRecords[i].RecordType.Name;
                    }
                    console.log(
                        "this.listViewOptions = " + JSON.stringify(this.listViewOptions)
                    );
                    console.log('r.entity.topInfo = ' + JSON.stringify(r.entity.topInfo))
                    //top10客户
                    this.topInfo = r.entity.topInfo;
                    console.log("this.topInfo = " + JSON.stringify(this.topInfo));
                    this.topAccountData = this.topInfo.acList;
                    console.log(
                        "this.topAccountData = " + JSON.stringify(this.topAccountData)
                    );
                    console.log('9/3 = ' + this.keepTwoDecimalStr(this.amend(9, 3, '/').toFixed(2)));
                    let total = 100;
                    try {
                        for (var i in this.topAccountData) {
                            console.log('i = ' + i);
                            this.topAccountData[i]["accountName"] = this.topAccountData[i].Name;
                            this.topAccountData[i]["accountUrl"] = "/s/lexconsumableaccount?AccId=" + this.topAccountData[i].Id;
                            this.topAccountData[i]["isDisable"] = false;
                            this.topAccountData[i]["StateMasterName"] = this.topAccountData[i].State_Master__r.Name;
                            this.topAccountData[i]["StateMasterUrl"] = "/" + this.topAccountData[i].State_Master__c;
                            this.topAccountData[i]["CityMasterName"] = this.topAccountData[i].City_Master__r.Name;
                            this.topAccountData[i]["CityMasterNameUrl"] = "/" + this.topAccountData[i].City_Master__c;
                            this.topAccountData[i]["RecordTypeName"] = this.topAccountData[i].RecordType.Name;
                            this.topAccountData[i]["isShowButton"] = true;
                            let number = this.keepTwoDecimalStr((this.amend(this.topInfo.deList[i], this.topInfo.saleAmount, '/') * 100).toFixed(2));
                            total -= number;
                            this.topAccountData[i]["proportion"] = number + '%';
                        this.pageRecords = r.entity.pageRecords;
                        this.accountId = r.entity.accountId;
                        this.agencyProType = r.entity.agencyProType;
                        this.agencyProTypestr = r.entity.agencyProTypestr;
                        console.log(
                            'this.agencyProTypestr = ' + this.agencyProTypestr
                        );
                        for (var i in this.pageRecords) {
                            this.pageRecords[i]['Is_Active__c'] =
                                this.pageRecords[i].Is_Active__c.replace(
                                    '効',
                                    '效'
                                );
                            this.pageRecords[i]['NameUrl'] =
                                '/s/lexconsumableaccount?AccId=' +
                                this.pageRecords[i].Id;
                            this.pageRecords[i]['StateMasterName'] =
                                this.pageRecords[i].State_Master__r.Name;
                            this.pageRecords[i]['StateMasterUrl'] =
                                '/' + this.pageRecords[i].State_Master__c;
                            this.pageRecords[i]['CityMasterName'] =
                                this.pageRecords[i].City_Master__r.Name;
                            this.pageRecords[i]['CityMasterNameUrl'] =
                                '/' + this.pageRecords[i].City_Master__c;
                            this.pageRecords[i]['RecordTypeName'] =
                                this.pageRecords[i].RecordType.Name;
                        }
                        console.log(
                            'this.listViewOptions = ' +
                            JSON.stringify(this.listViewOptions)
                        );
                        console.log('this.topAccountData = ' + JSON.stringify(this.topAccountData));
                        //其他
                        if (total != 100) {
                            this.topAccountData.push({
                                accountName: '...',
                                accountUrl: '/s/lexconsumableaccount',
                                isDisable: true,
                                proportion: total.toFixed(2) + '%',
                                CityMasterName: '...',
                                CityMasterNameUrl: '/lexconsumableaccount',
                                Town__c: '...',
                                isShowButton: false
                            })
                        } else {
                            let title = '';
                            for (var key in this.fiscalYearOptions) {
                                if (this.fiscalYearOption == this.fiscalYearOptions[key].value)
                                    title = this.fiscalYearOptions[key].label;
                        console.log(
                            'r.entity.topInfo = ' +
                            JSON.stringify(r.entity.topInfo)
                        );
                        //top10客户
                        this.topInfo = r.entity.topInfo;
                        console.log(
                            'this.topInfo = ' + JSON.stringify(this.topInfo)
                        );
                        this.topAccountData = this.topInfo.acList;
                        console.log(
                            'this.topAccountData = ' +
                            JSON.stringify(this.topAccountData)
                        );
                        console.log(
                            '9/3 = ' +
                            this.keepTwoDecimalStr(
                                this.amend(9, 3, '/').toFixed(2)
                            )
                        );
                        let total = 100;
                        try {
                            for (var i in this.topAccountData) {
                                this.topAccountData[i]['accountName'] =
                                    this.topAccountData[i].Name;
                                this.topAccountData[i]['accountUrl'] =
                                    '/s/lexconsumableaccount?AccId=' +
                                    this.topAccountData[i].Id;
                                this.topAccountData[i]['isDisable'] = false;
                                this.topAccountData[i]['StateMasterName'] =
                                    this.topAccountData[i].State_Master__r.Name;
                                this.topAccountData[i]['StateMasterUrl'] =
                                    '/' +
                                    this.topAccountData[i].State_Master__c;
                                this.topAccountData[i]['CityMasterName'] =
                                    this.topAccountData[i].City_Master__r.Name;
                                this.topAccountData[i]['CityMasterNameUrl'] =
                                    '/' + this.topAccountData[i].City_Master__c;
                                this.topAccountData[i]['RecordTypeName'] =
                                    this.topAccountData[i].RecordType.Name;
                                this.topAccountData[i]['isShowButton'] = true;
                                let number = this.keepTwoDecimalStr(
                                    (
                                        this.amend(
                                            this.topInfo.deList[i],
                                            this.topInfo.saleAmount,
                                            '/'
                                        ) * 100
                                    ).toFixed(2)
                                );
                                console.log('this.amend = ' +  this.amend(this.topInfo.deList[i],this.topInfo.saleAmount,'/') * 100);
                                total -= number;
                                this.topAccountData[i]['proportion'] =
                                    number + '%';
                            }
                            this.showMyToast(title, '无数据', 'Error');
                        }
                        this.isShowSpinner = false;
                    } catch (error) {
                        console.log('error = ' + error.message)
                    }
                } else {
                    console.log("r = " + JSON.stringify(r));
                    this.showMyToast('Error', r.msg, 'Error');
                }
            }).catch((error) => {
                console.log("error = " + JSON.stringify(error));
                this.showMyToast('Error', '销量前十客户初始化失败', 'Error');
            });
                            console.log(
                                'this.topAccountData = ' +
                                JSON.stringify(this.topAccountData)
                            );
                            //其他
                            console.log('(total.toFixed(2) > 0.00 ? total.toFixed(2) : 0.00) = ' + (total.toFixed(2) > 0.00 ? total.toFixed(2) : '0.00'))
                            if (total != 100) {
                                this.topAccountData.push({
                                    accountName: '...',
                                    accountUrl: '/s/lexconsumableaccount',
                                    isDisable: true,
                                    proportion: (total.toFixed(2) > 0.00 ? total.toFixed(2) : '0.00') + '%',
                                    CityMasterName: '...',
                                    CityMasterNameUrl: '/lexconsumableaccount',
                                    Town__c: '...',
                                    isShowButton: false
                                });
                            } else {
                                let title = '';
                                for (var key in this.fiscalYearOptions) {
                                    if (
                                        this.fiscalYearOption ==
                                        this.fiscalYearOptions[key].value
                                    )
                                        title =
                                            this.fiscalYearOptions[key].label;
                                }
                                this.showMyToast(title, '无数据', 'Error');
                            }
                            this.isShowSpinner = false;
                        } catch (error) {
                            console.log('error = ' + error.message);
                        }
                    } else {
                        console.log('r = ' + JSON.stringify(r));
                        this.showMyToast('Error', r.msg, 'Error');
                    }
                })
                .catch((error) => {
                    console.log('error = ' + JSON.stringify(error));
                    this.showMyToast(
                        'Error',
                        '销量前十客户初始化失败',
                        'Error'
                    );
                });
        }
    }
    amend(num1, num2, symbol) {
        console.log('num1 = ' + num1);
        console.log('num2 = ' + num2);
        console.log('symbol = ' + symbol);
        var str1 = num1.toString(),
            str2 = num2.toString(),
            result,
@@ -460,28 +552,28 @@
            str2Length;
        //解决整数没有小数点方法
        try {
            str1Length = str1.split(".")[1].length;
            str1Length = str1.split('.')[1].length;
        } catch (error) {
            str1Length = 0;
        }
        try {
            str2Length = str2.split(".")[1].length;
            str2Length = str2.split('.')[1].length;
        } catch (error) {
            str2Length = 0;
        }
        var step = Math.pow(10, Math.max(str1Length, str2Length));
        console.log(step);
        switch (symbol) {
            case "+":
            case '+':
                result = (num1 * step + num2 * step) / step;
                break;
            case "-":
            case '-':
                result = (num1 * step - num2 * step) / step;
                break;
            case "*":
            case '*':
                result = (num1 * step * (num2 * step)) / step / step;
                break;
            case "/":
            case '/':
                result = (num1 * step) / (num2 * step);
                break;
            default:
@@ -489,7 +581,6 @@
        }
        return result;
    }
    keepTwoDecimalStr(num) {
        const result = Number(num.toString().match(/^\d+(?:\.\d{0,2})?/));
@@ -503,12 +594,12 @@
            s += '0';
        }
        return s;
    };
    }
    dataChange(event) {
        let fieldName = event.target.getAttribute("data-field");
        let fieldName = event.target.getAttribute('data-field');
        let value = event.detail.value;
        console.log("fieldName = " + fieldName + " value = " + value);
        console.log('fieldName = ' + fieldName + ' value = ' + value);
        switch (fieldName) {
            case 'viewOption':
                this.viewOption = value;
@@ -525,64 +616,88 @@
        this.isShowSpinner = true;
        changeFiscalYearView({
            fiscalYear: this.fiscalYearOption
        }).then((r) => {
            r = JSON.parse(JSON.stringify(r));
            console.log("r = " + JSON.stringify(r));
            if (r.status == "Success") {
                //top10客户
                this.topInfo = r.entity.topInfo;
                console.log("this.topInfo = " + JSON.stringify(this.topInfo));
                this.topAccountData = this.topInfo.acList;
                console.log(
                    "this.topAccountData = " + JSON.stringify(this.topAccountData)
                );
                let total = 100;
                for (var i in this.topAccountData) {
                    console.log('i = ' + i);
                    this.topAccountData[i]["accountName"] = this.topAccountData[i].Name;
                    this.topAccountData[i]["accountUrl"] = "/s/lexconsumableaccount?AccId=" + this.topAccountData[i].Id;
                    this.topAccountData[i]["isDisable"] = false;
                    this.topAccountData[i]["StateMasterName"] = this.topAccountData[i].State_Master__r.Name;
                    this.topAccountData[i]["StateMasterUrl"] = "/" + this.topAccountData[i].State_Master__c;
                    this.topAccountData[i]["CityMasterName"] = this.topAccountData[i].City_Master__r.Name;
                    this.topAccountData[i]["CityMasterNameUrl"] = "/" + this.topAccountData[i].City_Master__c;
                    this.topAccountData[i]["RecordTypeName"] = this.topAccountData[i].RecordType.Name;
                    this.topAccountData[i]["isShowButton"] = true;
                    let number = this.keepTwoDecimalStr((this.amend(this.topInfo.deList[i], this.topInfo.saleAmount, '/') * 100).toFixed(2));
                    total -= number;
                    this.topAccountData[i]["proportion"] = number + '%';
                }
                // //其他
                if (total != 100) {
                    this.topAccountData.push({
                        accountName: '...',
                        accountUrl: '/s/lexconsumableaccount',
                        isDisable: true,
                        proportion: total.toFixed(2) + '%',
                        CityMasterName: '...',
                        CityMasterNameUrl: '/lexconsumableaccount',
                        Town__c: '...',
                        isShowButton: false
                    })
                } else {
                    let title = '';
                    for (var key in this.fiscalYearOptions) {
                        if (this.fiscalYearOption == this.fiscalYearOptions[key].value)
                            title = this.fiscalYearOptions[key].label;;
        })
            .then((r) => {
                r = JSON.parse(JSON.stringify(r));
                console.log('r = ' + JSON.stringify(r));
                if (r.status == 'Success') {
                    //top10客户
                    this.topInfo = r.entity.topInfo;
                    console.log(
                        'this.topInfo = ' + JSON.stringify(this.topInfo)
                    );
                    this.topAccountData = this.topInfo.acList;
                    console.log(
                        'this.topAccountData = ' +
                        JSON.stringify(this.topAccountData)
                    );
                    let total = 100;
                    for (var i in this.topAccountData) {
                        console.log('i = ' + i);
                        this.topAccountData[i]['accountName'] =
                            this.topAccountData[i].Name;
                        this.topAccountData[i]['accountUrl'] =
                            '/s/lexconsumableaccount?AccId=' +
                            this.topAccountData[i].Id;
                        this.topAccountData[i]['isDisable'] = false;
                        this.topAccountData[i]['StateMasterName'] =
                            this.topAccountData[i].State_Master__r.Name;
                        this.topAccountData[i]['StateMasterUrl'] =
                            '/' + this.topAccountData[i].State_Master__c;
                        this.topAccountData[i]['CityMasterName'] =
                            this.topAccountData[i].City_Master__r.Name;
                        this.topAccountData[i]['CityMasterNameUrl'] =
                            '/' + this.topAccountData[i].City_Master__c;
                        this.topAccountData[i]['RecordTypeName'] =
                            this.topAccountData[i].RecordType.Name;
                        this.topAccountData[i]['isShowButton'] = true;
                        let number = this.keepTwoDecimalStr(
                            (
                                this.amend(
                                    this.topInfo.deList[i],
                                    this.topInfo.saleAmount,
                                    '/'
                                ) * 100
                            ).toFixed(2)
                        );
                        total -= number;
                        this.topAccountData[i]['proportion'] = number + '%';
                    }
                    this.showMyToast(title, '无数据', 'Error');
                }
                this.isShowSpinner = false;
            } else {
                console.log("r = " + JSON.stringify(r));
                this.showMyToast('Error', r.msg, 'Error');
            }
        }).catch((error) => {
            console.log("error = " + JSON.stringify(error));
            this.showMyToast('Error', '销量前十客户初始化失败', 'Error');
        });
                    // //其他
                    if (total != 100) {
                        this.topAccountData.push({
                            accountName: '...',
                            accountUrl: '/s/lexconsumableaccount',
                            isDisable: true,
                            proportion: (total.toFixed(2) > 0.00 ? total.toFixed(2) : '0.00') + '%',
                            CityMasterName: '...',
                            CityMasterNameUrl: '/lexconsumableaccount',
                            Town__c: '...',
                            isShowButton: false
                        });
                    } else {
                        let title = '';
                        for (var key in this.fiscalYearOptions) {
                            if (
                                this.fiscalYearOption ==
                                this.fiscalYearOptions[key].value
                            )
                                title = this.fiscalYearOptions[key].label;
                        }
                        this.showMyToast(title, '无数据', 'Error');
                    }
                    this.isShowSpinner = false;
                } else {
                    console.log('r = ' + JSON.stringify(r));
                    this.showMyToast('Error', r.msg, 'Error');
                }
            })
            .catch((error) => {
                console.log('error = ' + JSON.stringify(error));
                this.showMyToast('Error', '销量前十客户初始化失败', 'Error');
            });
    }
    changelistView() {
@@ -594,40 +709,54 @@
            pageSizeLWC: this.pageSize,
            pageTokenLWC: this.currentPageToken,
            sortFieldLWC: this.sortBy,
            sortOrderLWC: this.sortDirection,
            sortOrderLWC: this.sortDirection
        })
            .then((r) => {
                r = JSON.parse(JSON.stringify(r));
                console.log("r = " + JSON.stringify(r));
                if (r.status == "Success") {
                console.log('r = ' + JSON.stringify(r));
                if (r.status == 'Success') {
                    //分页
                    this.nextPageToken = r.entity.paginatedAccounts.nextPageToken;
                    this.nextPageToken =
                        r.entity.paginatedAccounts.nextPageToken;
                    this.totalRecords = r.entity.paginatedAccounts.totalRecords;
                    this.recordStart = r.entity.paginatedAccounts.recordStart;
                    this.recordEnd = r.entity.paginatedAccounts.recordEnd;
                    this.totalPages = Math.ceil(
                        r.entity.paginatedAccounts.totalRecords / this.pageSize
                    );
                    console.log("this.totalPages = " + this.totalPages);
                    this.paginationVisibility = this.totalPages > 1 ? true : false;
                    console.log('this.totalPages = ' + this.totalPages);
                    this.paginationVisibility =
                        this.totalPages > 1 ? true : false;
                    this.pageRecords = r.entity.pageRecords;
                    console.log("this.pageRecords = " + JSON.stringify(this.pageRecords));
                    console.log(
                        'this.pageRecords = ' + JSON.stringify(this.pageRecords)
                    );
                    for (var i in this.pageRecords) {
                        this.pageRecords[i]["Is_Active__c"] = this.pageRecords[i].Is_Active__c.replace('効','效');
                        this.pageRecords[i]["NameUrl"] = "/s/lexconsumableaccount?AccId=" + this.pageRecords[i].Id;
                        this.pageRecords[i]["StateMasterName"] = this.pageRecords[i].State_Master__r.Name;
                        this.pageRecords[i]["StateMasterUrl"] = "/" + this.pageRecords[i].State_Master__c;
                        this.pageRecords[i]["CityMasterName"] = this.pageRecords[i].City_Master__r.Name;
                        this.pageRecords[i]["CityMasterNameUrl"] = "/" + this.pageRecords[i].City_Master__c;
                        this.pageRecords[i]["RecordTypeName"] = this.pageRecords[i].RecordType.Name;
                        this.pageRecords[i]['Is_Active__c'] = this.pageRecords[
                            i
                        ].Is_Active__c.replace('効', '效');
                        this.pageRecords[i]['NameUrl'] =
                            '/s/lexconsumableaccount?AccId=' +
                            this.pageRecords[i].Id;
                        this.pageRecords[i]['StateMasterName'] =
                            this.pageRecords[i].State_Master__r.Name;
                        this.pageRecords[i]['StateMasterUrl'] =
                            '/' + this.pageRecords[i].State_Master__c;
                        this.pageRecords[i]['CityMasterName'] =
                            this.pageRecords[i].City_Master__r.Name;
                        this.pageRecords[i]['CityMasterNameUrl'] =
                            '/' + this.pageRecords[i].City_Master__c;
                        this.pageRecords[i]['RecordTypeName'] =
                            this.pageRecords[i].RecordType.Name;
                    }
                    this.isShowSpinner = false;
                } else {
                    this.showMyToast('Error', r.msg, 'Error');
                }
            }).catch((error) => {
                console.log('error = ' + JSON.stringify(error.message))
            })
            .catch((error) => {
                console.log('error = ' + JSON.stringify(error.message));
            });
    }
@@ -642,11 +771,18 @@
            iconName = 'utility:error';
        }
        if (message != '') {
            content = '<h2><strong>' + title + '<strong/></h2><h5>' + message + '</h5>';
            content =
                '<h2><strong>' +
                title +
                '<strong/></h2><h5>' +
                message +
                '</h5>';
        } else {
            content = '<h2><strong>' + title + '<strong/></h2>';
        }
        this.template.querySelector('c-common-toast').showToast(variant, content, iconName, 10000);
        this.template
            .querySelector('c-common-toast')
            .showToast(variant, content, iconName, 10000);
    }
    sortByMethod(field, reverse, primer) {
@@ -666,28 +802,29 @@
    }
    onHandleSort(event) {
        console.log('event.detail.fieldName = ' + event.detail.fieldName)
        this.sortBy = event.detail.fieldName;
        switch (this.sortBy) {
            case "NameUrl":
                this.sortBy = "Name";
            case 'NameUrl':
                this.sortBy = 'Name';
                break;
            case "StateMasterUrl":
                this.sortBy = "State_Master__r.Name";
            case 'StateMasterName':
                this.sortBy = 'State_Master__r.Name';
                break;
            case "RecordTypeName":
                this.sortBy = "RecordType.Name";
            case 'RecordTypeName':
                this.sortBy = 'RecordType.Name';
                break;
            case "CityMasterNameUrl":
                this.sortBy = "City_Master__r.Name";
            case 'CityMasterName':
                this.sortBy = 'City_Master__r.Name';
                break;
        }
        this.sortDirection = event.detail.sortDirection;
        this.currentPageToken = 0;
        console.log("this.sortBy = " + this.sortBy);
        console.log("this.sortDirection = " + this.sortDirection);
        console.log('this.sortBy = ' + this.sortBy);
        console.log('this.sortDirection = ' + this.sortDirection);
        this.changelistView();
        const { fieldName: sortedBy, sortDirection } = event.detail;
        this.sortByMethod(sortedBy, sortDirection === "asc" ? 1 : -1);
        this.sortByMethod(sortedBy, sortDirection === 'asc' ? 1 : -1);
        this.sortDirection = sortDirection;
        this.sortedBy = sortedBy;
    }