import { LightningElement, wire, api, track } from "lwc";
|
import { ShowToastEvent } from "lightning/platformShowToastEvent";
|
import { NavigationMixin } from "lightning/navigation";
|
import initPage from "@salesforce/apex/LexTopPageController.initPage";
|
import initTotalNum from "@salesforce/apex/LexConsumableGoodsInfo.initTotalNum";
|
import initArrDet from "@salesforce/apex/LexConsumableGoodsInfo.initArrDet";
|
import initArrDetAll from "@salesforce/apex/LexConsumableGoodsInfo.initArrDetAll";
|
import initDeliveryDet from "@salesforce/apex/LexConsumableGoodsInfo.initDeliveryDet";
|
import initDeliveryDetAll from "@salesforce/apex/LexConsumableGoodsInfo.initDeliveryDetAll";
|
import initNotArrDet from "@salesforce/apex/LexConsumableGoodsInfo.initNotArrDet";
|
import initNotArrDetAll from "@salesforce/apex/LexConsumableGoodsInfo.initNotArrDetAll";
|
import initMoreThan7 from "@salesforce/apex/LexConsumableGoodsInfo.initMoreThan7";
|
import initMoreThan7All from "@salesforce/apex/LexConsumableGoodsInfo.initMoreThan7All";
|
//table css
|
import { loadStyle } from "lightning/platformResourceLoader";
|
import WrappedHeaderTable from "@salesforce/resourceUrl/lexdatatable";
|
|
export default class LexTopPage extends NavigationMixin(LightningElement) {
|
@track title = [];
|
@track raesList = [];
|
@track column = [];
|
@track overlimitdateorderdetails = [];
|
@track productLimitRecords = [];
|
@track accountInfo;
|
@track accountId;
|
@track userPro_Type;
|
@track pageRecords = [];
|
@track csvData = [];
|
@track product_Limit;
|
@track over_view = false;
|
@track overlimit = false;
|
@track hasHos = false;
|
@track activeSections = ["A", "B", "C"];
|
@track isRender = false;
|
@track consumableorderdetailsRecordsview;
|
@track showSpinner = true;
|
@track showPage = false;
|
//
|
@track showPop = false;
|
@track popTitle;
|
@track totalNum;
|
@track orderNumberArrived;
|
@track deliveryDetailCount;
|
@track orderNumberNotarrive;
|
@track moreThanSevenDays;
|
stylesLoaded = false;
|
|
@track showTable = false;
|
@track hidecheckboxcolumn = true;
|
//排序
|
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 isNoteStay = true;
|
|
//未全部发货订单明细col
|
@track colms = [
|
{
|
label: "消耗品订单名称",
|
type: "customOutputGood",
|
typeAttributes: {
|
outputValue: { fieldName: "Name" },
|
type: "Title",
|
recordId: { fieldName: "Id" }
|
},
|
hideDefaultActions: true,
|
// initialWidth: 200,
|
wrapText: true
|
},
|
{
|
label: "SAP合同号",
|
fieldName: "ContractNo__c",
|
hideDefaultActions: true,
|
wrapText: true,
|
initialWidth: 180
|
},
|
{
|
label: "订单总数",
|
type: "customOutputGood",
|
typeAttributes: {
|
outputValue: { fieldName: "Total_num__c" },
|
type: "TotalNum",
|
recordId: { fieldName: "Id" }
|
},
|
hideDefaultActions: true,
|
initialWidth: 100
|
},
|
{
|
label: "已到货数量",
|
type: "customOutputGood",
|
typeAttributes: {
|
outputValue: { fieldName: "OrderNumber_arrived__c" },
|
type: "ArrDet",
|
recordId: { fieldName: "Id" }
|
},
|
hideDefaultActions: true,
|
initialWidth: 100
|
},
|
{
|
label: "待系统操作入库数量",
|
type: "customOutputGood",
|
typeAttributes: {
|
outputValue: { fieldName: "Delivery_detail_count__c" },
|
type: "DeliveryDet",
|
recordId: { fieldName: "Id" }
|
},
|
hideDefaultActions: true,
|
initialWidth: 150
|
},
|
{
|
label: "还没发货数量",
|
type: "customOutputGood",
|
typeAttributes: {
|
outputValue: { fieldName: "OrderNumber_notarrive__c" },
|
type: "NotArrDet",
|
recordId: { fieldName: "Id" }
|
},
|
hideDefaultActions: true,
|
initialWidth: 120
|
},
|
{
|
label: "发货七天还未到货数",
|
type: "customOutputGood",
|
typeAttributes: {
|
outputValue: { fieldName: "More_than_seven_days__c" },
|
type: "MoreThan7",
|
recordId: { fieldName: "Id" }
|
},
|
hideDefaultActions: true,
|
initialWidth: 150
|
},
|
{
|
label: "最新发货日期",
|
fieldName: "Shipment_date__c",
|
hideDefaultActions: true,
|
initialWidth: 105
|
},
|
{
|
label: "首次发货日期",
|
fieldName: "First_Delivery__c",
|
hideDefaultActions: true,
|
initialWidth: 105
|
}
|
];
|
|
@track colms2 = [
|
{ label: "产品型号", fieldName: "prodModel", hideDefaultActions: true },
|
{
|
label: "数量",
|
fieldName: "recordCount",
|
hideDefaultActions: true,
|
initialWidth: 60,
|
cellAttributes: { alignment: "center" }
|
}
|
];
|
|
//使用期限小于一年的产品col
|
@track colm3 = [
|
{ label: "产品型号", fieldName: "prodName", hideDefaultActions: true },
|
{
|
label: "数量",
|
fieldName: "countid",
|
hideDefaultActions: true,
|
cellAttributes: { alignment: "left" }
|
},
|
{
|
label: "单位",
|
fieldName: "BoxPiece",
|
hideDefaultActions: true,
|
cellAttributes: { alignment: "left" }
|
}
|
];
|
|
//经销商库存上下限col
|
@track colm4 = [
|
{ label: "产品型号", fieldName: "prodName", hideDefaultActions: true },
|
{
|
label: "库存下限",
|
fieldName: "limitLow",
|
hideDefaultActions: true,
|
cellAttributes: { alignment: "left" }
|
},
|
{
|
label: "库存上限",
|
fieldName: "limitUp",
|
hideDefaultActions: true,
|
cellAttributes: { alignment: "left" }
|
}
|
];
|
@track columns = [
|
{
|
label: "消耗品名称",
|
fieldName: "Name__c",
|
type: "Name",
|
sortable: true,
|
hideDefaultActions: true,
|
wrapText: true,
|
cellAttributes: { alignment: "left" }
|
},
|
{
|
label: "规格",
|
fieldName: "packing_list",
|
cellAttributes: { alignment: "right" },
|
initialWidth: 50,
|
wrapText: true,
|
hideDefaultActions: true
|
},
|
{
|
label: "第三分类",
|
fieldName: "Category3__c",
|
initialWidth: 85,
|
cellAttributes: { alignment: "left" },
|
hideDefaultActions: true,
|
wrapText: true
|
},
|
{
|
label: "第四分类",
|
fieldName: "Category4__c",
|
cellAttributes: { alignment: "left" },
|
initialWidth: 85,
|
hideDefaultActions: true,
|
wrapText: true
|
},
|
{
|
label: "第五分类",
|
fieldName: "Category5__c",
|
cellAttributes: { alignment: "left" },
|
initialWidth: 85,
|
hideDefaultActions: true,
|
wrapText: true,
|
sortable: true
|
},
|
{
|
label: "CFDA状态",
|
fieldName: "SFDA_Status__c",
|
cellAttributes: { alignment: "left" },
|
initialWidth: 80,
|
hideDefaultActions: true
|
},
|
{
|
label: "注册证编码号",
|
fieldName: "approbation_No",
|
cellAttributes: { alignment: "left" },
|
wrapText: true,
|
initialWidth: 155,
|
hideDefaultActions: true
|
},
|
{
|
label: "注册证效期",
|
fieldName: "expiration_Date",
|
cellAttributes: { alignment: "left" },
|
wrapText: true,
|
hideDefaultActions: true,
|
initialWidth: 100
|
},
|
{
|
label: "产品数量下限",
|
fieldName: "lowerlimit",
|
cellAttributes: { alignment: "right" },
|
wrapText: true,
|
hideDefaultActions: true,
|
initialWidth: 100
|
},
|
{
|
label: "使用期限",
|
fieldName: "guaranteeperiod",
|
cellAttributes: { alignment: "left" },
|
hideDefaultActions: true,
|
initialWidth: 95
|
},
|
|
{
|
label: "有效期内库存",
|
type: "customInventoryColor",
|
cellAttributes: { alignment: "right" },
|
typeAttributes: {
|
value: { fieldName: "limitCount" },
|
upperlimit: { fieldName: "upperlimit" },
|
lowerlimit: { fieldName: "lowerlimit" },
|
boxPrice: { fieldName: "BoxPiece" }
|
},
|
hideDefaultActions: true,
|
|
initialWidth: 95
|
},
|
{
|
label: "过期库存",
|
fieldName: "overlimitCount",
|
hideDefaultActions: true,
|
cellAttributes: { alignment: "right" },
|
initialWidth: 75
|
},
|
{
|
label: "单位",
|
fieldName: "BoxPiece",
|
cellAttributes: { alignment: "left" },
|
initialWidth: 50,
|
wrapText: true,
|
hideDefaultActions: true
|
}
|
];
|
|
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");
|
});
|
}
|
}
|
|
connectedCallback() {
|
this.loader = true;
|
this.init();
|
}
|
init() {
|
this.showSpinner = true;
|
initPage({
|
pageSizeLWC: this.pageSize,
|
pageTokenLWC: this.currentPageToken
|
})
|
.then((result) => {
|
this.isNoteStay = result.isNoteStay;
|
console.log("isNoteStay:" + result.isNoteStay);
|
if (result.result == "Success") {
|
//分页start
|
this.nextPageToken = result.paginatedAccounts.nextPageToken;
|
this.totalRecords = result.paginatedAccounts.totalRecords;
|
this.recordStart = result.paginatedAccounts.recordStart;
|
this.recordEnd = result.paginatedAccounts.recordEnd;
|
this.totalPages = Math.ceil(
|
result.paginatedAccounts.totalRecords / this.pageSize
|
);
|
console.log("this.totalPages = " + this.totalPages);
|
this.paginationVisibility = this.totalPages > 1 ? true : false;
|
console.log("this.sortDirection = " + this.sortDirection);
|
this.loader = false;
|
//分页end
|
this.title = result.title;
|
this.totalNum = result.totalNum;
|
this.orderNumberArrived = result.orderNumberArrived;
|
this.deliveryDetailCount = result.deliveryDetailCount;
|
this.orderNumberNotarrive = result.orderNumberNotarrive;
|
this.moreThanSevenDays = result.moreThanSevenDays;
|
this.raesList = result.raesList;
|
this.raesList.push({
|
Id: "1",
|
Name: "待操作入库订单汇总",
|
Total_num__c: this.totalNum,
|
OrderNumber_arrived__c: this.orderNumberArrived,
|
Delivery_detail_count__c: this.deliveryDetailCount,
|
OrderNumber_notarrive__c: this.orderNumberNotarrive,
|
More_than_seven_days__c: this.moreThanSevenDays
|
});
|
this.column = result.column;
|
this.accountInfo = result.accountInfo;
|
this.accountId = result.accountInfo.Id;
|
this.pageRecords = result.pageRecords;
|
this.overlimitdateorderdetails = result.overlimitdateorderdetails;
|
this.over_view = result.over_view;
|
this.overlimit = result.overlimit;
|
this.hasHos = result.hasHos;
|
this.product_Limit = result.product_Limit;
|
console.log("result==>" + JSON.stringify(result));
|
for (var i in this.pageRecords) {
|
this.pageRecords[i]["Name__c"] = this.pageRecords[i].Prod.Name__c;
|
this.pageRecords[i]["Category3__c"] =
|
this.pageRecords[i].Prod.Category3__c;
|
this.pageRecords[i]["Category4__c"] =
|
this.pageRecords[i].Prod.Category3__c;
|
this.pageRecords[i]["Category5__c"] =
|
this.pageRecords[i].Prod.Category3__c;
|
this.pageRecords[i]["SFDA_Status__c"] =
|
this.pageRecords[i].Prod.SFDA_Status__c;
|
}
|
//hasHos = true 医院特价
|
if (this.hasHos) {
|
let object1 = {
|
label: "医院特价",
|
fieldName: "hospitalSpecialOffer",
|
hideDefaultActions: true,
|
type: "boolean",
|
cellAttributes: { alignment: "left" },
|
initialWidth: 75
|
};
|
this.columns.push(object1);
|
console.log(" this.columns" + this.columns);
|
for (var j in this.pageRecords) {
|
this.pageRecords[j]["Name__c"] = this.pageRecords[j].Prod.Name__c;
|
this.pageRecords[j]["Category3__c"] =
|
this.pageRecords[j].Prod.Category3__c;
|
this.pageRecords[j]["Category4__c"] =
|
this.pageRecords[j].Prod.Category3__c;
|
this.pageRecords[j]["Category5__c"] =
|
this.pageRecords[j].Prod.Category3__c;
|
this.pageRecords[j]["SFDA_Status__c"] =
|
this.pageRecords[j].Prod.SFDA_Status__c;
|
this.pageRecords[j]["hospitalSpecialOffer__c"] =
|
this.pageRecords[j].hospitalSpecialOffer;
|
}
|
}
|
this.showTable = true;
|
if (this.product_Limit != null && this.product_Limit != "") {
|
var records = this.product_Limit.split(",");
|
for (var i in records) {
|
var parms = records[i].split("|");
|
var record = new Object();
|
record["prodName"] = parms[0];
|
record["limitLow"] = parms[1];
|
record["limitUp"] = parms[2];
|
this.productLimitRecords.push(record);
|
}
|
}
|
// this.productLimitRecords = records;
|
console.log(
|
"productLimitRecords:" + JSON.stringify(this.productLimitRecords)
|
);
|
console.log("product_Limit:" + this.product_Limit);
|
this.consumableorderdetailsRecordsview =
|
result.consumableorderdetailsRecordsview;
|
//add by WangXueqin 2023/05/05
|
this.userPro_Type = result.userPro_Type;
|
console.log("this.accountId:" + this.accountId);
|
console.log("this.accountInfo:" + JSON.stringify(this.accountInfo));
|
this.showSpinner = false;
|
this.showPage = true;
|
// this.showMyToast('初始化页面成功', '', 'success');
|
} else {
|
this.showPage = true;
|
this.showSpinner = false;
|
console.log("Error:" + result.errorMsg);
|
this.showMyToast("初始化页面失败", result.errorMsg, "error");
|
}
|
})
|
.catch((error) => {
|
this.showSpinner = false;
|
console.log("Error:" + error);
|
this.showMyToast("初始化页面失败", JSON.stringify(error), "error");
|
});
|
}
|
|
//点击链接
|
clickLick(event) {
|
var outputValue = event.detail.data.value;
|
var outputType = event.detail.data.type;
|
var recordId = event.detail.data.recordId;
|
console.log("click:" + outputValue + "---" + outputType + "---" + recordId);
|
if (outputType == "Title") {
|
const config = {
|
type: "standard__webPage",
|
attributes: {
|
url: "/lexarrivegoods?ESetId=" + recordId
|
}
|
};
|
this[NavigationMixin.Navigate](config);
|
} else if (outputType == "TotalNum") {
|
this.popTitle = "所有产品一览";
|
initTotalNum({ ordId: recordId, type: "" }).then((result) => {
|
if (result.result == "Success") {
|
this.recordList = result.recordList;
|
console.log("data:" + JSON.stringify(this.recordList));
|
this.showPop = true;
|
} else {
|
this.showMyToast(
|
"加载所有产品一览页面失败",
|
result.errorMsg,
|
"error"
|
);
|
}
|
});
|
} else if (outputType == "ArrDet") {
|
if (recordId == "1") {
|
this.popTitle = "所有已到货产品一览";
|
initArrDetAll({ type: "" }).then((result) => {
|
if (result.result == "Success") {
|
this.recordList = result.recordList;
|
console.log("data:" + JSON.stringify(this.recordList));
|
this.showPop = true;
|
} else {
|
this.showMyToast(
|
"加载所有已到货产品一览页面失败",
|
result.errorMsg,
|
"error"
|
);
|
}
|
});
|
} else {
|
this.popTitle = "已到货产品一览";
|
initArrDet({ orderId: recordId }).then((result) => {
|
if (result.result == "Success") {
|
this.recordList = result.recordList;
|
console.log("data:" + JSON.stringify(this.recordList));
|
this.showPop = true;
|
} else {
|
this.showMyToast(
|
"加载已到货产品一览页面失败",
|
result.errorMsg,
|
"error"
|
);
|
}
|
});
|
}
|
} else if (outputType == "DeliveryDet") {
|
if (recordId == "1") {
|
this.popTitle = "所有已发货还没到货产品一览";
|
initDeliveryDetAll({ type: "" }).then((result) => {
|
if (result.result == "Success") {
|
this.recordList = result.recordList;
|
console.log("data:" + JSON.stringify(this.recordList));
|
this.showPop = true;
|
} else {
|
this.showMyToast(
|
"加载所有已发货还没到货产品一览页面失败",
|
result.errorMsg,
|
"error"
|
);
|
}
|
});
|
} else {
|
this.popTitle = "未到货产品一览";
|
initDeliveryDet({ orderId: recordId }).then((result) => {
|
if (result.result == "Success") {
|
this.recordList = result.recordList;
|
console.log("data:" + JSON.stringify(this.recordList));
|
this.showPop = true;
|
} else {
|
this.showMyToast(
|
"加载未到货产品一览页面失败",
|
result.errorMsg,
|
"error"
|
);
|
}
|
});
|
}
|
} else if (outputType == "NotArrDet") {
|
if (recordId == "1") {
|
this.popTitle = "所有还没发货产品一览";
|
initNotArrDetAll({ type: "" }).then((result) => {
|
if (result.result == "Success") {
|
this.recordList = result.recordList;
|
console.log("data:" + JSON.stringify(this.recordList));
|
this.showPop = true;
|
} else {
|
this.showMyToast(
|
"加载所有还没发货产品一览页面失败",
|
result.errorMsg,
|
"error"
|
);
|
}
|
});
|
} else {
|
this.popTitle = "还没发货数量";
|
initNotArrDet({ orderId: recordId }).then((result) => {
|
if (result.result == "Success") {
|
this.recordList = result.recordList;
|
console.log("data:" + JSON.stringify(this.recordList));
|
this.showPop = true;
|
} else {
|
this.showMyToast(
|
"加载还没发货数量页面失败",
|
result.errorMsg,
|
"error"
|
);
|
}
|
});
|
}
|
} else if (outputType == "MoreThan7") {
|
if (recordId == "1") {
|
this.popTitle = "所有发货七天还未到货数";
|
initMoreThan7All({ type: "" }).then((result) => {
|
if (result.result == "Success") {
|
this.recordList = result.recordList;
|
console.log("data:" + JSON.stringify(this.recordList));
|
this.showPop = true;
|
} else {
|
this.showMyToast(
|
"加载所有发货七天还未到货数页面失败",
|
result.errorMsg,
|
"error"
|
);
|
}
|
});
|
} else {
|
this.popTitle = "发货七天还未到货数";
|
initMoreThan7({ orderId: recordId }).then((result) => {
|
if (result.result == "Success") {
|
this.recordList = result.recordList;
|
console.log("data:" + JSON.stringify(this.recordList));
|
this.showPop = true;
|
} else {
|
this.showMyToast(
|
"加载发货七天还未到货数页面失败",
|
result.errorMsg,
|
"error"
|
);
|
}
|
});
|
}
|
}
|
}
|
|
//关闭弹窗
|
closePop() {
|
this.showPop = false;
|
}
|
|
editProductLimit(event) {
|
//add by Wang Xueqin 2023/05/05
|
let url =
|
"/LexProductLimitEdit?accountid=" +
|
this.accountId +
|
"&userPro_Type=" +
|
this.userPro_Type;
|
const config = {
|
type: "standard__webPage",
|
attributes: {
|
url: url
|
}
|
};
|
this[NavigationMixin.Navigate](config);
|
}
|
|
//新建消耗品订单
|
newOrder() {
|
this[NavigationMixin.Navigate]({
|
type: "standard__objectPage",
|
attributes: {
|
objectApiName: "Consumable_order__c",
|
actionName: "new"
|
},
|
state: {
|
useRecordTypeCheck: 1
|
}
|
});
|
}
|
|
showMyToast(title, message, variant) {
|
console.log("show custom message");
|
var iconName = "";
|
var content = "";
|
if (variant == "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);
|
// var mode;
|
// if(this.isNoteStay){
|
// mode ='sticky';
|
// }else{
|
// mode = 'dismissable';
|
// }
|
// const evt = new ShowToastEvent({
|
// title: title,
|
// message: message,
|
// variant: variant,
|
// mode: mode
|
// });
|
// this.dispatchEvent(evt);
|
}
|
//排序
|
|
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("Sort");
|
this.sortBy = event.detail.fieldName;
|
this.sortDirection = event.detail.sortDirection;
|
this.currentPageToken = 0;
|
console.log("this.sortBy = " + this.sortBy);
|
console.log("this.sortDirection = " + this.sortDirection);
|
const { fieldName: sortedBy, sortDirection } = event.detail;
|
const cloneData = [...this.pageRecords];
|
cloneData.sort(
|
this.sortByMethod(sortedBy, sortDirection === "asc" ? 1 : -1)
|
);
|
this.pageRecords = cloneData;
|
this.sortDirection = sortDirection;
|
this.sortedBy = sortedBy;
|
}
|
//分页
|
handlePaginatorChange(event) {
|
this.recordsToDisplay = event.detail.recordsToDisplay;
|
this.preSelected = event.detail.preSelected;
|
if (this.recordsToDisplay && this.recordsToDisplay > 0) {
|
this.rowNumberOffset = this.recordsToDisplay[0].rowNumber - 1;
|
} else {
|
this.rowNumberOffset = 0;
|
}
|
}
|
handlePrevious() {
|
this.currentPageToken =
|
Number(this.currentPageToken) - Number(this.pageSize);
|
this.init();
|
}
|
|
handleNext() {
|
this.currentPageToken =
|
Number(this.currentPageToken) + Number(this.pageSize);
|
this.init();
|
}
|
handleFirst() {
|
this.currentPageToken = 0;
|
this.init();
|
}
|
|
handleLast() {
|
this.currentPageToken =
|
this.totalPages > 1 ? (this.totalPages - 1) * this.pageSize : 0;
|
this.init();
|
}
|
|
handlePageschange(event) {
|
console.log(event.detail);
|
this.pageSize = event.detail;
|
this.currentPageToken = 0;
|
this.init();
|
}
|
get previousButtonDisabled() {
|
return this.currentPageToken === 0;
|
}
|
|
get nextButtonDisabled() {
|
return this.nextPageToken === undefined;
|
}
|
}
|