You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
dashboard/src/stores/CustomerServices.js

592 lines
18 KiB
JavaScript

import {makeAutoObservable, runInAction} from "mobx";
import moment from "moment";
import { NavLink } from "react-router-dom";
import * as config from "../config";
import * as req from '../utils/request';
import { prepareUrl } from '../utils/commons';
class CustomerServices {
constructor(rootStore) {
this.rootStore = rootStore;
this.startDate = moment().startOf('week').subtract(7, 'days');
this.endDate = moment().endOf('week').subtract(7, 'days');
this.startDateString = this.startDate.format(config.DATE_FORMAT);
this.endDateString = this.endDate.format(config.DATE_FORMAT) + '%2023:59';
this.dateType = 'startDate';
this.inProgress = false;
this.selectedAgent = '';
this.selectedTeam = '';
this.selectedCountry = '';
this.selectedOrderStatus = '-1';
makeAutoObservable(this);
}
fetchAllAgent() {
this.inProgress = true;
req.fetchJSON(config.HT_HOST + '/service-web/QueryData/GetVEIName')
.then(json => {
if (json.errcode === 0) {
runInAction(() => {
this.agentList = json.result1;
});
}
})
.then(() => {
this.inProgress = false;
});
}
fetchAgentGroupCount() {
this.inProgress = true;
const fetchUrl = prepareUrl(config.HT_HOST + '/service-web/QueryData/GetAgentGroupInfoALL')
.append('DateType', this.dateType)
.append('Date1', this.startDateString)
.append('Date2', this.endDateString)
.append('OldDate1', this.startDateString)
.append('OldDate2', this.endDateString)
.append('VEI_SN', this.selectedAgent)
.append('DepList', this.selectedTeam)
.append('Country', this.selectedCountry)
.build();
req.fetchJSON(fetchUrl)
.then(json => {
if (json.errcode === 0) {
runInAction(() => {
this.agentGroupList = json.result1;
const total1 = json.total1;
this.agentGroupListColumns = [
{
title: '地接社名称',
dataIndex: 'VendorName',
fixed: 'left',
children: [{
// title: this.startDate.format(config.DATE_FORMAT) + '~' + this.endDate.format(config.DATE_FORMAT),
dataIndex: 'VendorName',
fixed: 'left',
render: (text, record) => <NavLink to={`/agent/${record.EOI_ObjSN}/group/list`}>{record.VendorName}</NavLink>
}
]
},
{
title: '团数',
dataIndex: 'GroupCount',
sorter: (a, b) => a.GroupCount - b.GroupCount,
children: [{
title: total1.GroupCount,
dataIndex: 'GroupCount'
}
]
},
{
title: '人数',
dataIndex: 'PersonNum',
sorter: (a, b) => a.PersonNum - b.PersonNum,
children: [{
title: total1.PersonNum,
dataIndex: 'PersonNum'
}
]
},
{
title: '团天数',
dataIndex: 'GroupDays',
sorter: (a, b) => a.GroupDays - b.GroupDays,
children: [{
title: total1.GroupDays,
dataIndex: 'GroupDays'
}
]
},
{
title: '交易额',
dataIndex: 'totalcost',
sorter: (a, b) => a.totalcost - b.totalcost,
children: [{
title: total1.totalcost,
dataIndex: 'totalcost'
}
]
},
{
title: '前勤分',
dataIndex: 'qianqin',
sorter: (a, b) => a.qianqin - b.qianqin,
children: [{
title: total1.qianqin,
dataIndex: 'qianqin'
}
]
},
{
title: '好评数',
dataIndex: 'GoodCount',
sorter: (a, b) => a.GoodCount - b.GoodCount,
children: [{
title: total1.GoodCount,
dataIndex: 'GoodCount'
}
]
},
{
title: '好评率',
dataIndex: 'GoodRate',
sorter: (a, b) => parseInt(a.GoodRate) - parseInt(b.GoodRate),
children: [{
title: total1.GoodRate,
dataIndex: 'GoodRate'
}
]
},
{
title: '差评数',
dataIndex: 'BadCount',
sorter: (a, b) => a.BadCount - b.BadCount,
children: [{
title: total1.BadCount,
dataIndex: 'BadCount'
}
]
},
{
title: '差评率',
dataIndex: 'BadRate',
sorter: (a, b) => parseInt(a.BadRate) - parseInt(b.BadRate),
children: [{
title: total1.BadRate,
dataIndex: 'BadRate'
}
]
}
];
});
}
})
.then(() => {
this.inProgress = false;
});
}
fetchGroupListByAgentId(agentId) {
this.inProgress = true;
this.agentCompany = '...';
this.groupList = [];
this.groupListColumns = [];
const fetchUrl = prepareUrl(config.HT_HOST + '/service-web/QueryData/GetAgentGroupInfo')
.append('VEI_SN', agentId)
.append('DateType', this.dateType)
.append('Date1', this.startDateString)
.append('Date2', this.endDateString)
.append('OldDate1', this.startDateString)
.append('OldDate2', this.endDateString)
.append('DepList', this.selectedTeam)
.build();
req.fetchJSON(fetchUrl)
.then(json => {
if (json.errcode === 0) {
runInAction(() => {
this.groupList = json.result1;
if (json.result1.length > 0) {
this.agentCompany = json.result1[0].VendorName;
}
const total1 = json.total1;
this.groupListColumns = [
{
title: '团名',
dataIndex: 'GRI_Name',
children: [{
title: '',
dataIndex: 'GRI_Name'
}
]
},
{
title: '人数',
dataIndex: 'COLI_PersonNum',
sorter: (a, b) => a.COLI_PersonNum - b.COLI_PersonNum,
children: [{
title: total1.COLI_PersonNum,
dataIndex: 'COLI_PersonNum'
}
]
},
{
title: '天数',
dataIndex: 'COLI_Days',
sorter: (a, b) => a.COLI_Days - b.COLI_Days,
children: [{
title: total1.COLI_Days,
dataIndex: 'COLI_Days'
}
]
},
{
title: '交易额',
dataIndex: 'totalcost',
sorter: (a, b) => a.totalcost - b.totalcost,
children: [{
title: total1.totalcost,
dataIndex: 'totalcost'
}
]
},
{
title: '导游',
dataIndex: 'GuideName',
children: [{
title: '-',
dataIndex: 'GuideName'
}
]
},
{
title: '前勤分',
dataIndex: 'qianqin',
children: [{
title: total1.qianqin,
dataIndex: 'qianqin'
}
]
},
{
title: '好评',
dataIndex: 'Good',
sorter: (a, b) => a.Good - b.Good,
children: [{
title: total1.Good,
dataIndex: 'Good'
}
]
},
{
title: '差评',
dataIndex: 'Bad',
sorter: (a, b) => a.Bad - b.Bad,
children: [{
title: total1.Bad,
dataIndex: 'Bad'
}
]
}
];
});
}
})
.then(() => {
this.inProgress = false;
});
}
fetchDestinationGroupCount() {
this.inProgress = true;
const fetchUrl = prepareUrl(config.HT_HOST + '/service-web/QueryData/GetdistGroupInfoAll')
.append('DateType', this.dateType)
.append('Date1', this.startDateString)
.append('Date2', this.endDateString)
.append('OldDate1', this.startDateString)
.append('OldDate2', this.endDateString)
.append('DepList', this.selectedTeam)
.append('Country', this.selectedCountry)
.append('OrderStatus', this.selectedOrderStatus)
.build();
req.fetchJSON(fetchUrl)
.then(json => {
if (json.errcode === 0) {
runInAction(() => {
this.destinationGroupCount = json.result1;
const total1 = json.total1;
this.destinationGroupCountColumns = [
{
title: '城市',
dataIndex: 'COLD_ServiceCityName',
fixed: 'left',
children: [{
dataIndex: 'COLD_ServiceCityName',
fixed: 'left',
render: (text, record) => <NavLink to={`/destination/${record.COLD_ServiceCity}/group/list`}>{record.COLD_ServiceCityName}</NavLink>
}
]
},
{
title: '团数',
dataIndex: 'GroupCount',
sorter: (a, b) => a.GroupCount - b.GroupCount,
children: [{
title: total1.GroupCount,
dataIndex: 'GroupCount'
}
]
},
{
title: '人数',
dataIndex: 'PersonNum',
sorter: (a, b) => a.PersonNum - b.PersonNum,
children: [{
title: total1.PersonNum,
dataIndex: 'PersonNum'
}
]
},
{
title: '团天数',
dataIndex: 'GroupDays',
sorter: (a, b) => a.GroupDays - b.GroupDays,
children: [{
title: total1.GroupDays,
dataIndex: 'GroupDays'
}
]
},
{
title: '交易额',
dataIndex: 'TotalCost',
sorter: (a, b) => a.TotalCost - b.TotalCost,
children: [{
title: total1.totalcost,
dataIndex: 'TotalCost'
}
]
},
{
title: '报价',
dataIndex: 'TotalPrice',
sorter: (a, b) => a.TotalPrice - b.TotalPrice,
children: [{
title: total1.totalprice,
dataIndex: 'TotalPrice'
}
]
}
];
});
}
})
.then(() => {
this.inProgress = false;
});
}
fetchGroupListByDestinationId(destinationId) {
this.inProgress = true;
this.destinationName = '...';
this.destinationGroupList = [];
this.destinationGroupListColumns = [];
const fetchUrl = prepareUrl(config.HT_HOST + '/service-web/QueryData/GetdistGroupInfo')
.append('city', destinationId)
.append('DateType', this.dateType)
.append('Date1', this.startDateString)
.append('Date2', this.endDateString)
.append('OldDate1', this.startDateString)
.append('OldDate2', this.endDateString)
.append('DepList', this.selectedTeam)
.append('Country', this.selectedCountry)
.build();
req.fetchJSON(fetchUrl)
.then(json => {
if (json.errcode === 0) {
runInAction(() => {
this.destinationGroupList = json.result1;
if (json.result1.length > 0) {
// this.destinationName = json.result1[0].VendorName;
}
const total1 = json.total1;
this.destinationGroupListColumns = [
{
title: '团名',
dataIndex: 'GRI_Name',
children: [{
title: '',
dataIndex: 'GRI_Name'
}
]
},
{
title: '人数',
dataIndex: 'COLI_PersonNum',
sorter: (a, b) => a.COLI_PersonNum - b.COLI_PersonNum,
children: [{
title: total1.COLI_PersonNum,
dataIndex: 'COLI_PersonNum'
}
]
},
{
title: '天数',
dataIndex: 'COLI_Days',
sorter: (a, b) => a.COLI_Days - b.COLI_Days,
children: [{
title: total1.COLI_Days,
dataIndex: 'COLI_Days'
}
]
},
{
title: '交易额',
dataIndex: 'COLD_TotalCost',
sorter: (a, b) => a.COLD_TotalCost - b.COLD_TotalCost,
children: [{
title: total1.COLD_TotalCost,
dataIndex: 'COLD_TotalCost'
}
]
},
{
title: '确认日期',
dataIndex: 'COLI_ConfirmDate',
children: [{
title: '-',
dataIndex: 'COLI_ConfirmDate'
}
]
},
{
title: '出发日期',
dataIndex: 'COLI_OrderStartDate',
children: [{
title: '-',
dataIndex: 'COLI_OrderStartDate'
}
]
}
];
});
}
})
.then(() => {
this.inProgress = false;
});
}
searchValues = {
DateType: { key: 'startDate', label: '走团日期'},
};
setSearchValues(obj, values) {
this.dateType = obj.DateType;
this.selectedAgent = obj.agency;
this.startDateString = obj.Date1;
this.endDateString = obj.Date2;
this.selectedCountry = obj.countryArea;
this.selectedTeam = obj.DepartmentList.replace('ALL', '');
this.selectedOrderStatus = obj.orderStatus;
}
selectDateRange(startDate, endDate) {
this.startDate = startDate;
this.endDate = endDate;
this.startDateString = startDate.format(config.DATE_FORMAT);
this.endDateString = endDate.format(config.DATE_FORMAT) + '%2023:59';
}
selectDateType(dateType) {
this.dateType = dateType;
}
selectAgent(agent) {
this.selectedAgent = agent;
}
selectTeam(team) {
this.selectedTeam = team;
}
selectCountry(country) {
this.selectedCountry = country;
}
selectStatus(status) {
this.selectedOrderStatus = status;
}
startDate;
endDate;
startDateString;
endDateString;
dateType;
selectedAgent;
selectedTeam;
selectedCountry;
selectedOrderStatus;
inProgress;
agentList = [];
groupList = [];
groupListColumns = [];
destinationGroupCount = [];
destinationGroupCountColumns =[];
agentGroupList = [{
EOI_ObjSN: 1,
VendorName: '---',
GroupCount: 0,
PersonNum: 0,
GroupDays: 0,
totalcost: 0,
GoodCount: 0,
GoodRate: '-',
BadCount: 0,
BadRate: '-',
key: 1
}];
agentGroupListColumns = [
{
title: '地接社名称',
dataIndex: 'VendorName',
fixed: 'left',
render: (text, record) => {
if (record.EOI_ObjSN === -1) {
return text;
} else {
return <a>{text}</a>;
}
}
},
{
title: '团数',
dataIndex: 'GroupCount',
sorter: (a, b) => a.GroupCount - b.GroupCount
},
{
title: '人数',
dataIndex: 'PersonNum',
sorter: (a, b) => a.PersonNum - b.PersonNum
},
{
title: '团天数',
dataIndex: 'GroupDays',
sorter: (a, b) => a.GroupDays - b.GroupDays
},
{
title: '交易额',
dataIndex: 'totalcost',
sorter: (a, b) => a.totalcost - b.totalcost
},
{
title: '好评数',
dataIndex: 'GoodCount',
sorter: (a, b) => a.GoodCount - b.GoodCount
},
{
title: '好评率',
dataIndex: 'GoodRate',
sorter: (a, b) => parseInt(a.GoodRate) - parseInt(b.GoodRate)
},
{
title: '差评数',
dataIndex: 'BadCount',
sorter: (a, b) => a.BadCount - b.BadCount
},
{
title: '差评率',
dataIndex: 'BadRate',
sorter: (a, b) => parseInt(a.BadRate) - parseInt(b.BadRate)
}
];
}
export default CustomerServices;