buli
2023-07-14 744f42c5496e656a1f9927740a3b37c0b97a6cba
force-app/main/default/lwc/lexConsumableAccount/lexConsumableAccount.js
@@ -1,822 +1,867 @@
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",
    hideDefaultActions: true,
    wrapText: true,
    initialWidth: 200,
    sortable: true,
    type: "url",
    typeAttributes: {
      label: {
        fieldName: "Name"
      },
      target: "_blank"
    {
        label: '客户名',
        fieldName: 'NameUrl',
        hideDefaultActions: true,
        wrapText: true,
        initialWidth: 200,
        sortable: true,
        type: 'url',
        typeAttributes: {
            label: {
                fieldName: 'Name'
            },
            target: '_blank'
        }
    },
    // {
    //     label: "省",
    //     fieldName: "StateMasterUrl",
    //     hideDefaultActions: true,
    //     wrapText: true,
    //     sortable: true,
    //     type: "url",
    //     typeAttributes: {
    //         label: {
    //             fieldName: "StateMasterName",
    //         },
    //         target: "_blank",
    //     },
    // },
    {
        label: '省',
        fieldName: 'StateMasterName',
        hideDefaultActions: true,
        wrapText: true,
        sortable: true
    },
    {
        label: '销售本部医院',
        fieldName: 'Salesdepartment_HP__c',
        hideDefaultActions: true,
        sortable: true,
        wrapText: true
    },
    {
        label: '创建日期',
        fieldName: 'CreatedDate',
        hideDefaultActions: true,
        sortable: true,
        wrapText: true,
        type: 'date',
        typeAttributes: {
            timeZone: 'Asia/Shanghai',
            day: 'numeric',
            month: 'numeric',
            year: 'numeric'
        }
    },
    {
        label: '有效/无效',
        fieldName: 'Is_Active__c',
        hideDefaultActions: true,
        sortable: true,
        wrapText: true
    },
    // {
    //     label: "客户记录类型",
    //     fieldName: "RecordTypeName",
    //     hideDefaultActions: true,
    //     sortable: true,
    //     wrapText: true,
    //     initialWidth: 130,
    // },
    {
        label: '政府等级',
        fieldName: 'Grade__c',
        hideDefaultActions: true,
        sortable: true,
        wrapText: true
    },
    // {
    //     label: "OCSM分类(医院)",
    //     fieldName: "OCM_Category__c",
    //     hideDefaultActions: true,
    //     sortable: true,
    //     wrapText: true,
    // },
    // {
    //     label: "市",
    //     fieldName: "CityMasterNameUrl",
    //     hideDefaultActions: true,
    //     sortable: true,
    //     wrapText: true,
    //     type: "url",
    //     typeAttributes: {
    //         label: {
    //             fieldName: "CityMasterName",
    //         },
    //         target: "_blank",
    //     },
    // },
    {
        label: '市',
        fieldName: 'CityMasterName',
        hideDefaultActions: true,
        sortable: true,
        wrapText: true
    },
    {
        label: '县/区',
        fieldName: 'Town__c',
        hideDefaultActions: true,
        sortable: true,
        wrapText: true
    },
    {
        label: '客户电话',
        fieldName: 'Phone',
        hideDefaultActions: true,
        sortable: true,
        wrapText: true
    }
  },
  // {
  //     label: "省",
  //     fieldName: "StateMasterUrl",
  //     hideDefaultActions: true,
  //     wrapText: true,
  //     sortable: true,
  //     type: "url",
  //     typeAttributes: {
  //         label: {
  //             fieldName: "StateMasterName",
  //         },
  //         target: "_blank",
  //     },
  // },
  {
    label: "省",
    fieldName: "StateMasterName",
    hideDefaultActions: true,
    wrapText: true,
    sortable: true
  },
  {
    label: "销售本部医院",
    fieldName: "Salesdepartment_HP__c",
    hideDefaultActions: true,
    sortable: true,
    wrapText: true
  },
  {
    label: "创建日期",
    fieldName: "CreatedDate",
    hideDefaultActions: true,
    sortable: true,
    wrapText: true,
    type: "date",
    typeAttributes: {
      timeZone: "Asia/Shanghai",
      day: "numeric",
      month: "numeric",
      year: "numeric"
    }
  },
  {
    label: "有效/无效",
    fieldName: "Is_Active__c",
    hideDefaultActions: true,
    sortable: true,
    wrapText: true
  },
  // {
  //     label: "客户记录类型",
  //     fieldName: "RecordTypeName",
  //     hideDefaultActions: true,
  //     sortable: true,
  //     wrapText: true,
  //     initialWidth: 130,
  // },
  {
    label: "政府等级",
    fieldName: "Grade__c",
    hideDefaultActions: true,
    sortable: true,
    wrapText: true
  },
  // {
  //     label: "OCSM分类(医院)",
  //     fieldName: "OCM_Category__c",
  //     hideDefaultActions: true,
  //     sortable: true,
  //     wrapText: true,
  // },
  // {
  //     label: "市",
  //     fieldName: "CityMasterNameUrl",
  //     hideDefaultActions: true,
  //     sortable: true,
  //     wrapText: true,
  //     type: "url",
  //     typeAttributes: {
  //         label: {
  //             fieldName: "CityMasterName",
  //         },
  //         target: "_blank",
  //     },
  // },
  {
    label: "市",
    fieldName: "CityMasterName",
    hideDefaultActions: true,
    sortable: true,
    wrapText: true
  },
  {
    label: "县/区",
    fieldName: "Town__c",
    hideDefaultActions: true,
    sortable: true,
    wrapText: true
  },
  {
    label: "客户电话",
    fieldName: "Phone",
    hideDefaultActions: true,
    sortable: true,
    wrapText: true
  }
];
const topColumns = [
  {
    label: "客户名",
    hideDefaultActions: true,
    fieldName: "accountName",
    wrapText: true,
    type: "customShowAccountUrl",
    typeAttributes: {
      accountName: { fieldName: "accountName" },
      accountUrl: { fieldName: "accountUrl" },
      isDisable: { fieldName: "isDisable" }
    }
  },
  // {
  //     label: "市",
  //     fieldName: "CityMasterName",
  //     hideDefaultActions: true,
  //     wrapText: true,
  //     type: "customShowAccountUrl",
  //     typeAttributes: {
  //         accountName: { fieldName: "CityMasterName" },
  //         accountUrl: { fieldName: "CityMasterNameUrl" },
  //         isDisable: { fieldName: "isDisable" },
  //     },
  // },
  {
    label: "市",
    fieldName: "CityMasterName",
    hideDefaultActions: true,
    wrapText: true
  },
  {
    label: "县/区",
    fieldName: "Town__c",
    hideDefaultActions: true,
    wrapText: true
  },
  {
    label: "销量占比",
    fieldName: "proportion",
    hideDefaultActions: true,
    wrapText: true,
    initialWidth: 100,
    cellAttributes: { alignment: "right" }
  },
  {
    label: "操作",
    fieldName: "Town__c",
    type: "weeklyReport",
    initialWidth: 150,
    typeAttributes: {
      recordId: { fieldName: "Id" },
      hospitalName: { fieldName: "Name" },
      isShowButton: { fieldName: "isShowButton" }
    {
        label: '客户名',
        hideDefaultActions: true,
        fieldName: 'accountName',
        wrapText: true,
        type: 'customShowAccountUrl',
        typeAttributes: {
            accountName: { fieldName: 'accountName' },
            accountUrl: { fieldName: 'accountUrl' },
            isDisable: { fieldName: 'isDisable' }
        }
    },
    hideDefaultActions: true
  }
    // {
    //     label: "市",
    //     fieldName: "CityMasterName",
    //     hideDefaultActions: true,
    //     wrapText: true,
    //     type: "customShowAccountUrl",
    //     typeAttributes: {
    //         accountName: { fieldName: "CityMasterName" },
    //         accountUrl: { fieldName: "CityMasterNameUrl" },
    //         isDisable: { fieldName: "isDisable" },
    //     },
    // },
    {
        label: '市',
        fieldName: 'CityMasterName',
        hideDefaultActions: true,
        wrapText: true
    },
    {
        label: '县/区',
        fieldName: 'Town__c',
        hideDefaultActions: true,
        wrapText: true
    },
    {
        label: '销量占比',
        fieldName: 'proportion',
        hideDefaultActions: true,
        wrapText: true,
        initialWidth: 100,
        cellAttributes: { alignment: 'right' }
    },
    {
        label: '操作',
        fieldName: 'Town__c',
        type: 'weeklyReport',
        initialWidth: 150,
        typeAttributes: {
            recordId: { fieldName: 'Id' },
            hospitalName: { fieldName: 'Name' },
            isShowButton: { fieldName: 'isShowButton' }
        },
        hideDefaultActions: true
    }
];
export default class LexConsumableAccount extends LightningElement {
  columns = columns;
  topColumns = topColumns;
  @track isShowSpinner = false;
  @track pageRecords = [];
  @track accountId = "";
  @track agencyProType = "";
  @track agencyProTypestr = "";
  @track listViewOptions = [
    {
      label: "01. 医院_Hospital",
      value: "01. 医院_Hospital"
    },
    // {
    //     label: "61. 医院_Hospital草案中的医院",
    //     value: "61. 医院_Hospital草案中的医院",
    // },
    // {
    //     label: "62. 医院_Hospital申请中的医院",
    //     value: "62. 医院_Hospital申请中的医院",
    // },
    {
      label: "63. 医院_Hospital上周创建的医院",
      value: "63. 医院_Hospital上周创建的医院"
    }
  ];
  @track viewOption = "01. 医院_Hospital";
  @track isShowAccountInfo = false;
  @track topAccountData = [];
  //前端排序
  defaultSortDirection = "asc";
  sortDirection = "asc";
  sortedBy;
  //分页start
  @track sortBy = "";
  @track pageSize = 10;
  error;
  records;
  currentPageToken = 0;
  nextPageToken = this.pageSize;
  @track totalRecords = 0;
  @track loader = false;
  @track pageNumber = 1;
  @track paginationVisibility = false;
  @track totalPages = 1;
  pageSizeOptions = [10, 25, 50, 100];
  @track recordStart = 0;
  @track recordEnd = 0;
  //end
  @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: ""
  };
  stylesLoaded = false;
  //财年
  @track fiscalYearOptions = [
    { label: "本财年", value: "thisYear" },
    { label: "上一财年", value: "lastYear" },
    { label: "上一财年+本财年", value: "allYear" }
  ];
  @track fiscalYearOption = "thisYear";
  @track topInfo = [];
  renderedCallback() {
    if (!this.stylesLoaded) {
      Promise.all([loadStyle(this, WrappedHeaderTable)])
        .then(() => {
          console.log("Custom styles loaded");
          this.stylesLoaded = true;
        })
        .catch((error) => {
          console.error("Error loading custom styles");
        });
    }
  }
  //获取链接参数
  getQueryString(name) {
    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]);
    }
    return null;
  }
  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);
      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");
        });
    } 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;
            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) {
                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 + "%";
              }
              console.log(
                "this.topAccountData = " + JSON.stringify(this.topAccountData)
              );
              //其他
              console.log(
                "(total.toFixed(2) > 0.00 ? total.toFixed(2) : 0.00) = " +
                  (total.toFixed(2) > 0.0 ? total.toFixed(2) : "0.00")
              );
              if (total != 100) {
                this.topAccountData.push({
                  accountName: "...",
                  accountUrl: "/s/lexconsumableaccount",
                  isDisable: true,
                  proportion:
                    (total.toFixed(2) > 0.0 ? 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,
      str1Length,
      str2Length;
    //解决整数没有小数点方法
    try {
      str1Length = str1.split(".")[1].length;
    } catch (error) {
      str1Length = 0;
    }
    try {
      str2Length = str2.split(".")[1].length;
    } catch (error) {
      str2Length = 0;
    }
    var step = Math.pow(10, Math.max(str1Length, str2Length));
    console.log(step);
    switch (symbol) {
      case "+":
        result = (num1 * step + num2 * step) / step;
        break;
      case "-":
        result = (num1 * step - num2 * step) / step;
        break;
      case "*":
        result = (num1 * step * (num2 * step)) / step / step;
        break;
      case "/":
        result = (num1 * step) / (num2 * step);
        break;
      default:
        break;
    }
    return result;
  }
  keepTwoDecimalStr(num) {
    const result = Number(num.toString().match(/^\d+(?:\.\d{0,2})?/));
    let s = result.toString();
    let rs = s.indexOf(".");
    if (rs < 0) {
      rs = s.length;
      s += ".";
    }
    while (s.length <= rs + 2) {
      s += "0";
    }
    return s;
  }
  dataChange(event) {
    let fieldName = event.target.getAttribute("data-field");
    let value = event.detail.value;
    console.log("fieldName = " + fieldName + " value = " + value);
    switch (fieldName) {
      case "viewOption":
        this.viewOption = value;
        this.changelistView();
        break;
      case "fiscalYearOption":
        this.fiscalYearOption = value;
        this.changeFiscalYear();
        break;
    }
  }
  changeFiscalYear() {
    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) > 0.0 ? 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");
    columns = columns;
    topColumns = topColumns;
    @track isShowSpinner = false;
    @track pageRecords = [];
    @track accountId = '';
    @track agencyProType = '';
    @track agencyProTypestr = '';
    @track listViewOptions = [
        {
            label: '01. 医院_Hospital',
            value: '01. 医院_Hospital'
        },
        // {
        //     label: "61. 医院_Hospital草案中的医院",
        //     value: "61. 医院_Hospital草案中的医院",
        // },
        // {
        //     label: "62. 医院_Hospital申请中的医院",
        //     value: "62. 医院_Hospital申请中的医院",
        // },
        {
            label: '63. 医院_Hospital上周创建的医院',
            value: '63. 医院_Hospital上周创建的医院'
        }
      })
      .catch((error) => {
        console.log("error = " + JSON.stringify(error));
        this.showMyToast("Error", "销量前十客户初始化失败", "Error");
      });
  }
    ];
    @track viewOption = '01. 医院_Hospital';
  changelistView() {
    this.isShowSpinner = true;
    changelistView({
      filterNameLwc: this.viewOption,
      accountIdLwc: this.accountId,
      agencyProTypeLwc: this.agencyProType,
      pageSizeLWC: this.pageSize,
      pageTokenLWC: this.currentPageToken,
      sortFieldLWC: this.sortBy,
      sortOrderLWC: this.sortDirection
    })
      .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;
    @track isShowAccountInfo = false;
    @track topAccountData = [];
          this.pageRecords = r.entity.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.isShowSpinner = false;
        } else {
          this.showMyToast("Error", r.msg, "Error");
        }
      })
      .catch((error) => {
        console.log("error = " + JSON.stringify(error.message));
      });
  }
    //前端排序
    defaultSortDirection = 'asc';
    sortDirection = 'asc';
    sortedBy;
  showMyToast(title, message, variant) {
    this.isShowSpinner = false;
    console.log("show custom message");
    var iconName = "";
    var content = "";
    if (variant.toLowerCase() == "success") {
      iconName = "utility:check";
    } else {
      iconName = "utility:error";
    }
    if (message != "") {
      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);
  }
    //分页start
    @track sortBy = '';
    @track pageSize = 200;
    error;
    records;
    currentPageToken = 0;
    nextPageToken = this.pageSize;
    @track totalRecords = 0;
    @track loader = false;
    @track pageNumber = 1;
    @track paginationVisibility = false;
    @track totalPages = 1;
    pageSizeOptions = [100, 200, 300];
    @track recordStart = 0;
    @track recordEnd = 0;
    //end
  sortByMethod(field, reverse, primer) {
    const key = primer
      ? function (x) {
          return primer(x[field]);
        }
      : function (x) {
          return x[field];
        };
    return function (a, b) {
      a = key(a);
      b = key(b);
      return reverse * ((a > b) - (b > a));
    @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: ''
    };
  }
  onHandleSort(event) {
    console.log("event.detail.fieldName = " + event.detail.fieldName);
    this.sortBy = event.detail.fieldName;
    switch (this.sortBy) {
      case "NameUrl":
        this.sortBy = "Name";
        break;
      case "StateMasterName":
        this.sortBy = "State_Master__r.Name";
        break;
      case "RecordTypeName":
        this.sortBy = "RecordType.Name";
        break;
      case "CityMasterName":
        this.sortBy = "City_Master__r.Name";
        break;
    stylesLoaded = false;
    //财年
    @track fiscalYearOptions = [
        { label: '本财年', value: 'thisYear' },
        { label: '上一财年', value: 'lastYear' },
        { label: '上一财年+本财年', value: 'allYear' }
    ];
    @track fiscalYearOption = 'thisYear';
    @track topInfo = [];
    renderedCallback() {
        if (!this.stylesLoaded) {
            Promise.all([loadStyle(this, WrappedHeaderTable)])
                .then(() => {
                    console.log('Custom styles loaded');
                    this.stylesLoaded = true;
                })
                .catch((error) => {
                    console.error('Error loading custom styles');
                });
        }
    }
    this.sortDirection = event.detail.sortDirection;
    this.currentPageToken = 0;
    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.sortDirection = sortDirection;
    this.sortedBy = sortedBy;
  }
  handlePrevious() {
    this.currentPageToken =
      Number(this.currentPageToken) - Number(this.pageSize);
    this.changelistView();
  }
    //获取链接参数
    getQueryString(name) {
        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]);
        }
        return null;
    }
  handleNext() {
    this.currentPageToken =
      Number(this.currentPageToken) + Number(this.pageSize);
    this.changelistView();
  }
  handleFirst() {
    this.currentPageToken = 0;
    this.changelistView();
  }
    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);
            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');
                });
        } 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;
  handleLast() {
    this.currentPageToken =
      this.totalPages > 1 ? (this.totalPages - 1) * this.pageSize : 0;
    this.changelistView();
  }
                        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)
                        );
  handlePageschange(event) {
    console.log(event.detail);
    this.pageSize = event.detail;
    this.currentPageToken = 0;
    this.changelistView();
  }
  get previousButtonDisabled() {
    return this.currentPageToken === 0;
  }
                        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 + '%';
                            }
  get nextButtonDisabled() {
    return this.nextPageToken === undefined;
  }
}
                            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,
            str1Length,
            str2Length;
        //解决整数没有小数点方法
        try {
            str1Length = str1.split('.')[1].length;
        } catch (error) {
            str1Length = 0;
        }
        try {
            str2Length = str2.split('.')[1].length;
        } catch (error) {
            str2Length = 0;
        }
        var step = Math.pow(10, Math.max(str1Length, str2Length));
        console.log(step);
        switch (symbol) {
            case '+':
                result = (num1 * step + num2 * step) / step;
                break;
            case '-':
                result = (num1 * step - num2 * step) / step;
                break;
            case '*':
                result = (num1 * step * (num2 * step)) / step / step;
                break;
            case '/':
                result = (num1 * step) / (num2 * step);
                break;
            default:
                break;
        }
        return result;
    }
    keepTwoDecimalStr(num) {
        const result = Number(num.toString().match(/^\d+(?:\.\d{0,2})?/));
        let s = result.toString();
        let rs = s.indexOf('.');
        if (rs < 0) {
            rs = s.length;
            s += '.';
        }
        while (s.length <= rs + 2) {
            s += '0';
        }
        return s;
    }
    dataChange(event) {
        let fieldName = event.target.getAttribute('data-field');
        let value = event.detail.value;
        console.log('fieldName = ' + fieldName + ' value = ' + value);
        switch (fieldName) {
            case 'viewOption':
                this.viewOption = value;
                this.changelistView();
                break;
            case 'fiscalYearOption':
                this.fiscalYearOption = value;
                this.changeFiscalYear();
                break;
        }
    }
    changeFiscalYear() {
        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) > 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() {
        this.isShowSpinner = true;
        changelistView({
            filterNameLwc: this.viewOption,
            accountIdLwc: this.accountId,
            agencyProTypeLwc: this.agencyProType,
            pageSizeLWC: this.pageSize,
            pageTokenLWC: this.currentPageToken,
            sortFieldLWC: this.sortBy,
            sortOrderLWC: this.sortDirection
        })
            .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;
                    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.isShowSpinner = false;
                } else {
                    this.showMyToast('Error', r.msg, 'Error');
                }
            })
            .catch((error) => {
                console.log('error = ' + JSON.stringify(error.message));
            });
    }
    showMyToast(title, message, variant) {
        this.isShowSpinner = false;
        console.log('show custom message');
        var iconName = '';
        var content = '';
        if (variant.toLowerCase() == 'success') {
            iconName = 'utility:check';
        } else {
            iconName = 'utility:error';
        }
        if (message != '') {
            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);
    }
    sortByMethod(field, reverse, primer) {
        const key = primer
            ? function (x) {
                return primer(x[field]);
            }
            : function (x) {
                return x[field];
            };
        return function (a, b) {
            a = key(a);
            b = key(b);
            return reverse * ((a > b) - (b > a));
        };
    }
    onHandleSort(event) {
        console.log('event.detail.fieldName = ' + event.detail.fieldName)
        this.sortBy = event.detail.fieldName;
        switch (this.sortBy) {
            case 'NameUrl':
                this.sortBy = 'Name';
                break;
            case 'StateMasterName':
                this.sortBy = 'State_Master__r.Name';
                break;
            case 'RecordTypeName':
                this.sortBy = 'RecordType.Name';
                break;
            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);
        this.changelistView();
        const { fieldName: sortedBy, sortDirection } = event.detail;
        this.sortByMethod(sortedBy, sortDirection === 'asc' ? 1 : -1);
        this.sortDirection = sortDirection;
        this.sortedBy = sortedBy;
    }
    handlePrevious() {
        this.currentPageToken =
            Number(this.currentPageToken) - Number(this.pageSize);
        this.changelistView();
    }
    handleNext() {
        this.currentPageToken =
            Number(this.currentPageToken) + Number(this.pageSize);
        this.changelistView();
    }
    handleFirst() {
        this.currentPageToken = 0;
        this.changelistView();
    }
    handleLast() {
        this.currentPageToken =
            this.totalPages > 1 ? (this.totalPages - 1) * this.pageSize : 0;
        this.changelistView();
    }
    handlePageschange(event) {
        console.log(event.detail);
        this.pageSize = event.detail;
        this.currentPageToken = 0;
        this.changelistView();
    }
    get previousButtonDisabled() {
        return this.currentPageToken === 0;
    }
    get nextButtonDisabled() {
        return this.nextPageToken === undefined;
    }
}