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) => {record.VendorName} } ] }, { 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) => {record.COLD_ServiceCityName} } ] }, { 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 {text}; } } }, { 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;