|
|
|
@ -2,6 +2,7 @@ import { makeAutoObservable, runInAction } from "mobx";
|
|
|
|
|
import { CaretUpOutlined, CaretDownOutlined } from "@ant-design/icons";
|
|
|
|
|
import { Tag } from "antd";
|
|
|
|
|
import * as config from "../config";
|
|
|
|
|
import * as comm from "../utils/commons";
|
|
|
|
|
import moment from "moment";
|
|
|
|
|
import { NavLink } from "react-router-dom";
|
|
|
|
|
|
|
|
|
@ -13,7 +14,10 @@ class OrdersStore {
|
|
|
|
|
|
|
|
|
|
loading = false;
|
|
|
|
|
site_select_mode = false; //是否多选站点
|
|
|
|
|
webcode = "AH";
|
|
|
|
|
group_select_mode = false;
|
|
|
|
|
groups = ["1,2,28,7"];
|
|
|
|
|
webcode = "ALL";
|
|
|
|
|
date_type = "applyDate";
|
|
|
|
|
include_tickets = "1"; //是否包含门票,1是含有,0不含
|
|
|
|
|
//diff_count_day = 0; //开始日期和结束日期的间隔,用于计算平均数
|
|
|
|
|
active_tab_key = "Form"; //当前切换的标签页
|
|
|
|
@ -25,19 +29,30 @@ class OrdersStore {
|
|
|
|
|
diff_days1 = 0; //日期相差天数,用于计算日平均值
|
|
|
|
|
diff_days2 = 0; //日期相差天数,比较数据时使用
|
|
|
|
|
|
|
|
|
|
//选择事业部
|
|
|
|
|
group_handleChange(value) {
|
|
|
|
|
this.groups = value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
get diff_count_day(){
|
|
|
|
|
//计算两个时间段的有多少天
|
|
|
|
|
get diff_count_day() {
|
|
|
|
|
const date_picker_store = this.rootStore.date_picker_store;
|
|
|
|
|
let _start_date = moment(date_picker_store.start_date.format(config.DATE_FORMAT));
|
|
|
|
|
let _end_date = moment(date_picker_store.end_date.format(config.DATE_FORMAT));
|
|
|
|
|
return _end_date.diff(_start_date, "days")+1;
|
|
|
|
|
return _end_date.diff(_start_date, "days") + 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//下单日期、确认日期、出发日期
|
|
|
|
|
onChange_datetype(value) {
|
|
|
|
|
this.date_type = value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
handleChange_webcode = (value) => {
|
|
|
|
|
//选择来源网站
|
|
|
|
|
handleChange_webcode = value => {
|
|
|
|
|
this.webcode = value;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
handleChange_include_tickets = (value) => {
|
|
|
|
|
//是否包含门票
|
|
|
|
|
handleChange_include_tickets = value => {
|
|
|
|
|
this.include_tickets = value;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -54,11 +69,15 @@ class OrdersStore {
|
|
|
|
|
format_data_source(data_source, start_date, end_date) {
|
|
|
|
|
let result = [];
|
|
|
|
|
for (let item of data_source.ordercount1) {
|
|
|
|
|
result.push({
|
|
|
|
|
if (result[item.ApplyDate]) {
|
|
|
|
|
result[item.ApplyDate].yField += item.orderCount;
|
|
|
|
|
} else {
|
|
|
|
|
result[item.ApplyDate] = {
|
|
|
|
|
xField: item.ApplyDate,
|
|
|
|
|
yField: item.orderCount,
|
|
|
|
|
seriesField: item.groups,
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (data_source.ordercount2 && end_date) {
|
|
|
|
|
//不能直接用diff计算,因为日期是含有时间的,会导致计算差一天,先转成格式化的日期再比较
|
|
|
|
@ -66,14 +85,20 @@ class OrdersStore {
|
|
|
|
|
let _end_date = moment(end_date.format(config.DATE_FORMAT));
|
|
|
|
|
let diff_days = _start_date.diff(_end_date, "days");
|
|
|
|
|
for (let item of data_source.ordercount2) {
|
|
|
|
|
result.push({
|
|
|
|
|
xField: moment(item.ApplyDate).add(diff_days, "days").format(config.DATE_FORMAT),
|
|
|
|
|
let ApplyDate = moment(item.ApplyDate).add(diff_days, "days").format(config.DATE_FORMAT);
|
|
|
|
|
let ApplyDate_key = ApplyDate + "_";//这个作为key
|
|
|
|
|
if (result[ApplyDate_key]) {
|
|
|
|
|
result[ApplyDate_key].yField += item.orderCount;
|
|
|
|
|
} else {
|
|
|
|
|
result[ApplyDate_key] = {
|
|
|
|
|
xField: ApplyDate,
|
|
|
|
|
yField: item.orderCount,
|
|
|
|
|
seriesField: item.groups,
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
return comm.set_array_index(result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//网站订单数量,根据类型
|
|
|
|
@ -82,19 +107,20 @@ class OrdersStore {
|
|
|
|
|
const date_picker_store = this.rootStore.date_picker_store;
|
|
|
|
|
let url = "/service-web/QueryData/GetOrderCount";
|
|
|
|
|
url += `?OrderType=${ordertype}&OrderType_val=${ordertype_sub}&IncludeTickets=${this.include_tickets}`;
|
|
|
|
|
url += `&DepartmentList=${this.groups.toString()}&DateType=${this.date_type}`;
|
|
|
|
|
url += "&WebCode=" + this.webcode + "&COLI_ApplyDate1=" + date_picker_store.start_date.format(config.DATE_FORMAT) + "&COLI_ApplyDate2=" + date_picker_store.end_date.format(config.DATE_FORMAT) + "%2023:59:59";
|
|
|
|
|
if (date_picker_store.start_date_cp && date_picker_store.end_date_cp) {
|
|
|
|
|
url += "&COLI_ApplyDateold1=" + date_picker_store.start_date_cp.format(config.DATE_FORMAT) + "&COLI_ApplyDateold2=" + date_picker_store.end_date_cp.format(config.DATE_FORMAT) + "%2023:59:59";
|
|
|
|
|
}
|
|
|
|
|
fetch(config.HT_HOST + url)
|
|
|
|
|
.then((response) => response.json())
|
|
|
|
|
.then((json) => {
|
|
|
|
|
.then(response => response.json())
|
|
|
|
|
.then(json => {
|
|
|
|
|
runInAction(() => {
|
|
|
|
|
this.orderCountData_type = this.format_data_source(json, date_picker_store.start_date, date_picker_store.start_date_cp);
|
|
|
|
|
this.loading = false;
|
|
|
|
|
});
|
|
|
|
|
})
|
|
|
|
|
.catch((error) => {
|
|
|
|
|
.catch(error => {
|
|
|
|
|
this.loading = false;
|
|
|
|
|
console.log("fetch data failed", error);
|
|
|
|
|
});
|
|
|
|
@ -105,28 +131,21 @@ class OrdersStore {
|
|
|
|
|
this.loading = true;
|
|
|
|
|
const date_picker_store = this.rootStore.date_picker_store;
|
|
|
|
|
let url = "/service-web/QueryData/GetOrderCount"; //?WebCode=cht&COLI_ApplyDate1=2022-08-01&COLI_ApplyDate2=2022-08-31&COLI_ApplyDateold1=2021-08-01&COLI_ApplyDateold2=2021-08-31';
|
|
|
|
|
url +=
|
|
|
|
|
"?WebCode=" +
|
|
|
|
|
this.webcode +
|
|
|
|
|
"&IncludeTickets=" +
|
|
|
|
|
this.include_tickets +
|
|
|
|
|
"&COLI_ApplyDate1=" +
|
|
|
|
|
date_picker_store.start_date.format(config.DATE_FORMAT) +
|
|
|
|
|
"&COLI_ApplyDate2=" +
|
|
|
|
|
date_picker_store.end_date.format(config.DATE_FORMAT) +
|
|
|
|
|
"%2023:59:59";
|
|
|
|
|
url += "?WebCode=" + this.webcode + "&IncludeTickets=" + this.include_tickets;
|
|
|
|
|
url += "&COLI_ApplyDate1=" + date_picker_store.start_date.format(config.DATE_FORMAT) + "&COLI_ApplyDate2=" + date_picker_store.end_date.format(config.DATE_FORMAT) + "%2023:59:59";
|
|
|
|
|
url += `&DepartmentList=${this.groups.toString()}&DateType=${this.date_type}`;
|
|
|
|
|
if (date_picker_store.start_date_cp && date_picker_store.end_date_cp) {
|
|
|
|
|
url += "&COLI_ApplyDateold1=" + date_picker_store.start_date_cp.format(config.DATE_FORMAT) + "&COLI_ApplyDateold2=" + date_picker_store.end_date_cp.format(config.DATE_FORMAT) + "%2023:59:59";
|
|
|
|
|
}
|
|
|
|
|
fetch(config.HT_HOST + url)
|
|
|
|
|
.then((response) => response.json())
|
|
|
|
|
.then((json) => {
|
|
|
|
|
.then(response => response.json())
|
|
|
|
|
.then(json => {
|
|
|
|
|
runInAction(() => {
|
|
|
|
|
this.orderCountData = this.format_data_source(json, date_picker_store.start_date, date_picker_store.start_date_cp);
|
|
|
|
|
this.loading = false;
|
|
|
|
|
});
|
|
|
|
|
})
|
|
|
|
|
.catch((error) => {
|
|
|
|
|
.catch(error => {
|
|
|
|
|
this.loading = false;
|
|
|
|
|
console.log("fetch data failed", error);
|
|
|
|
|
});
|
|
|
|
@ -137,19 +156,20 @@ class OrdersStore {
|
|
|
|
|
const date_picker_store = this.rootStore.date_picker_store;
|
|
|
|
|
let url = "/service-web/QueryData/GetOrderCountByType";
|
|
|
|
|
url += "?WebCode=" + this.webcode + "&OrderType=" + order_type + "&IncludeTickets=" + this.include_tickets;
|
|
|
|
|
url += `&DepartmentList=${this.groups.toString()}&DateType=${this.date_type}`;
|
|
|
|
|
url += "&COLI_ApplyDate1=" + date_picker_store.start_date.format(config.DATE_FORMAT) + "&COLI_ApplyDate2=" + date_picker_store.end_date.format(config.DATE_FORMAT) + "%2023:59:59";
|
|
|
|
|
if (date_picker_store.start_date_cp && date_picker_store.end_date_cp) {
|
|
|
|
|
url += "&COLI_ApplyDateold1=" + date_picker_store.start_date_cp.format(config.DATE_FORMAT) + "&COLI_ApplyDateold2=" + date_picker_store.end_date_cp.format(config.DATE_FORMAT) + "%2023:59:59";
|
|
|
|
|
}
|
|
|
|
|
fetch(config.HT_HOST + url)
|
|
|
|
|
.then((response) => response.json())
|
|
|
|
|
.then((json) => {
|
|
|
|
|
.then(response => response.json())
|
|
|
|
|
.then(json => {
|
|
|
|
|
runInAction(() => {
|
|
|
|
|
//错误:[MOBX]由于启用了严格模式,所以不允许改变观察到的在动作之外的值。如果此更改是有意的,请将代码包在“Actudio”中。
|
|
|
|
|
this.orderCountData_Form = json;
|
|
|
|
|
});
|
|
|
|
|
})
|
|
|
|
|
.catch((error) => {
|
|
|
|
|
.catch(error => {
|
|
|
|
|
console.log("fetch data failed", error);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
@ -158,23 +178,25 @@ class OrdersStore {
|
|
|
|
|
getOrderCountByType_sub(ordertype, ordertype_sub, sub_type) {
|
|
|
|
|
const date_picker_store = this.rootStore.date_picker_store;
|
|
|
|
|
let url = "/service-web/QueryData/GetOrderCountByType_Sub";
|
|
|
|
|
if (sub_type=='page_cxstate1'){ //统计成行订单的路径
|
|
|
|
|
sub_type='page&cxstate=1'
|
|
|
|
|
if (sub_type == "page_cxstate1") {
|
|
|
|
|
//统计成行订单的路径
|
|
|
|
|
sub_type = "page&cxstate=1";
|
|
|
|
|
}
|
|
|
|
|
url += `?WebCode=${this.webcode}&OrderType=${ordertype}&OrderType_val=${ordertype_sub}&SubOrderType=${sub_type}` + "&IncludeTickets=" + this.include_tickets;
|
|
|
|
|
url += `&DepartmentList=${this.groups.toString()}&DateType=${this.date_type}`;
|
|
|
|
|
url += "&COLI_ApplyDate1=" + date_picker_store.start_date.format(config.DATE_FORMAT) + "&COLI_ApplyDate2=" + date_picker_store.end_date.format(config.DATE_FORMAT) + "%2023:59:59";
|
|
|
|
|
if (date_picker_store.start_date_cp && date_picker_store.end_date_cp) {
|
|
|
|
|
url += "&COLI_ApplyDateold1=" + date_picker_store.start_date_cp.format(config.DATE_FORMAT) + "&COLI_ApplyDateold2=" + date_picker_store.end_date_cp.format(config.DATE_FORMAT) + "%2023:59:59";
|
|
|
|
|
}
|
|
|
|
|
fetch(config.HT_HOST + url)
|
|
|
|
|
.then((response) => response.json())
|
|
|
|
|
.then((json) => {
|
|
|
|
|
.then(response => response.json())
|
|
|
|
|
.then(json => {
|
|
|
|
|
runInAction(() => {
|
|
|
|
|
//错误:[MOBX]由于启用了严格模式,所以不允许改变观察到的在动作之外的值。如果此更改是有意的,请将代码包在“Actudio”中。
|
|
|
|
|
this.orderCountData_Form_sub = json;
|
|
|
|
|
});
|
|
|
|
|
})
|
|
|
|
|
.catch((error) => {
|
|
|
|
|
.catch(error => {
|
|
|
|
|
console.log("fetch data failed", error);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|