|
|
|
@ -1,16 +1,10 @@
|
|
|
|
|
import { NavLink } from "react-router-dom";
|
|
|
|
|
import { useEffect, useState } from "react";
|
|
|
|
|
import { useEffect } from "react";
|
|
|
|
|
import { observer } from "mobx-react";
|
|
|
|
|
import { toJS } from "mobx";
|
|
|
|
|
import { Row, Col, Space, Button, Table, Divider, Typography, List, Descriptions, DatePicker, Card } from "antd";
|
|
|
|
|
import { Row, Col, Space, Button, Table, Divider, Typography, DatePicker } from "antd";
|
|
|
|
|
import { useStore } from "@/stores/StoreContext.js";
|
|
|
|
|
import * as config from "@/config";
|
|
|
|
|
import * as comm from "@/utils/commons";
|
|
|
|
|
import dayjs from "dayjs";
|
|
|
|
|
import { usePDF } from "react-to-pdf";
|
|
|
|
|
|
|
|
|
|
const { Title } = Typography;
|
|
|
|
|
|
|
|
|
|
function Index() {
|
|
|
|
|
const { reportStore, authStore } = useStore();
|
|
|
|
|
const { search_date_start, search_date_end, vendorScoresData, productScoresData, commendScoresData } = reportStore;
|
|
|
|
@ -25,8 +19,8 @@ function Index() {
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: "Groups",
|
|
|
|
|
dataIndex: "GroupsNum",
|
|
|
|
|
key: "GroupsNum",
|
|
|
|
|
dataIndex: "Groups",
|
|
|
|
|
key: "Groups",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: "Number of People",
|
|
|
|
@ -65,56 +59,6 @@ function Index() {
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
const columns_dmc = [
|
|
|
|
|
{
|
|
|
|
|
title: "Category",
|
|
|
|
|
dataIndex: "Category",
|
|
|
|
|
key: "Category",
|
|
|
|
|
onCell: (_, index) => {
|
|
|
|
|
if (index === 0) {
|
|
|
|
|
return {
|
|
|
|
|
rowSpan: 3,
|
|
|
|
|
//colSpan:0,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
if (index >= 1 && index <= 2) {
|
|
|
|
|
return {
|
|
|
|
|
rowSpan: 0,
|
|
|
|
|
colSpan: 0,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: "Item",
|
|
|
|
|
dataIndex: "Item",
|
|
|
|
|
key: "Item",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: "Your Scores",
|
|
|
|
|
dataIndex: "Your Scores",
|
|
|
|
|
key: "Your Scores",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: "Final Scores",
|
|
|
|
|
dataIndex: "Final Scores",
|
|
|
|
|
key: "Final Scores",
|
|
|
|
|
onCell: (_, index) => {
|
|
|
|
|
if (index === 0) {
|
|
|
|
|
return {
|
|
|
|
|
rowSpan: 5, //合并五行
|
|
|
|
|
//colSpan: 5,
|
|
|
|
|
};
|
|
|
|
|
} else {
|
|
|
|
|
return {
|
|
|
|
|
rowSpan: 0, //不显示其他数据
|
|
|
|
|
colSpan: 0,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
const columns_guide = [
|
|
|
|
|
{
|
|
|
|
|
title: "导游",
|
|
|
|
@ -171,44 +115,6 @@ function Index() {
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
const dataSource_dmc = [
|
|
|
|
|
{
|
|
|
|
|
key: "1",
|
|
|
|
|
Category: "Category1",
|
|
|
|
|
Item: "Item1",
|
|
|
|
|
"Your Scores": "Your Scores1",
|
|
|
|
|
"Final Scores": "Final Scores1",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
key: "2",
|
|
|
|
|
Category: "Category2",
|
|
|
|
|
Item: "Item2",
|
|
|
|
|
"Your Scores": "Your Scores2",
|
|
|
|
|
"Final Scores": "Final Scores2",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
key: "3",
|
|
|
|
|
Category: "Category3",
|
|
|
|
|
Item: "Item3",
|
|
|
|
|
"Your Scores": "Your Scores3",
|
|
|
|
|
"Final Scores": "Final Scores3",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
key: "4",
|
|
|
|
|
Category: "Category4",
|
|
|
|
|
Item: "Item4",
|
|
|
|
|
"Your Scores": "Your Scores4",
|
|
|
|
|
"Final Scores": "Final Scores4",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
key: "5",
|
|
|
|
|
Category: "Category5",
|
|
|
|
|
Item: "Item5",
|
|
|
|
|
"Your Scores": "Your Scores5",
|
|
|
|
|
"Final Scores": "Final Scores5",
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
const { toPDF, targetRef } = usePDF({
|
|
|
|
|
method: "save",
|
|
|
|
|
filename: "GHH-Report.pdf",
|
|
|
|
@ -219,9 +125,9 @@ function Index() {
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<Space direction="vertical" style={{ width: "100%" }}>
|
|
|
|
|
<Title level={3}>
|
|
|
|
|
<Typography.Title level={3}>
|
|
|
|
|
<div></div>
|
|
|
|
|
</Title>
|
|
|
|
|
</Typography.Title>
|
|
|
|
|
<Row gutter={16}>
|
|
|
|
|
<Col md={24} lg={8} xxl={6}>
|
|
|
|
|
<Space direction="horizontal">
|
|
|
|
@ -265,244 +171,282 @@ function Index() {
|
|
|
|
|
<Button onClick={() => toPDF()}>Download PDF</Button>
|
|
|
|
|
</Col>
|
|
|
|
|
</Row>
|
|
|
|
|
<Title level={3}></Title>
|
|
|
|
|
<Typography.Title level={3}></Typography.Title>
|
|
|
|
|
|
|
|
|
|
<Row ref={targetRef}>
|
|
|
|
|
<Col md={24} lg={13} xxl={13}>
|
|
|
|
|
<Descriptions title="Primary Data" layout="vertical" bordered column={8}>
|
|
|
|
|
<Descriptions.Item label="Groups">{evaluationScores.Groups}</Descriptions.Item>
|
|
|
|
|
<Descriptions.Item label="Number of People">{evaluationScores.PersonNum}</Descriptions.Item>
|
|
|
|
|
<Descriptions.Item label="Transaction Amount(USD)">{evaluationScores.AmountUSD}</Descriptions.Item>
|
|
|
|
|
<Descriptions.Item label="Evaluation Score">{evaluationScores.EvaluationScore}</Descriptions.Item>
|
|
|
|
|
<Descriptions.Item label="TP Reviews">{evaluationScores.TPReviews}</Descriptions.Item>
|
|
|
|
|
<Descriptions.Item label="TP Reviews Rate">{evaluationScores.TPReviewRate}</Descriptions.Item>
|
|
|
|
|
<Descriptions.Item label="Complaints">{evaluationScores.Complaints}</Descriptions.Item>
|
|
|
|
|
<Descriptions.Item label="Complaint Rate">{evaluationScores.ComplaintRate}</Descriptions.Item>
|
|
|
|
|
</Descriptions>
|
|
|
|
|
<Col md={24} lg={24} xxl={16}>
|
|
|
|
|
<div className="ant-table-wrapper ant-spin-nested-loading css-dev-only-do-not-override-3op25v ant-spin-container">
|
|
|
|
|
<div className="ant-table ant-table-bordered">
|
|
|
|
|
<div className="ant-table-container ant-table-content">
|
|
|
|
|
<table style={{ textAlign: "center" }}>
|
|
|
|
|
<thead className="ant-table-thead">
|
|
|
|
|
<tr>
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
Groups
|
|
|
|
|
</th>
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
Number of People
|
|
|
|
|
</th>
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
Transaction Amount(USD)
|
|
|
|
|
</th>
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
Evaluation Score
|
|
|
|
|
</th>
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
TP Reviews
|
|
|
|
|
</th>
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
TP Reviews Rate
|
|
|
|
|
</th>
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
Complaints
|
|
|
|
|
</th>
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
Complaint Rate
|
|
|
|
|
</th>
|
|
|
|
|
</tr>
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody className="ant-table-tbody">
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.Groups}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.PersonNum}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.AmountUSD}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.EvaluationScore}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.TPReviews}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.TPReviewRate}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.Complaints}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.ComplaintRate}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</Col>
|
|
|
|
|
|
|
|
|
|
<Col md={24} lg={13} xxl={13}>
|
|
|
|
|
<Col md={24} lg={24} xxl={16}>
|
|
|
|
|
<Divider orientation="left">Monthly Data</Divider>
|
|
|
|
|
<Table dataSource={vendorScoresData.MonthlyData} columns={columns_month} pagination={false} bordered />
|
|
|
|
|
</Col>
|
|
|
|
|
|
|
|
|
|
<Col md={24} lg={13} xxl={13}>
|
|
|
|
|
<Col md={24} lg={24} xxl={16}>
|
|
|
|
|
<Divider orientation="center">
|
|
|
|
|
地接考核分数 Final Scores:
|
|
|
|
|
<Typography.Title level={3} type="danger">
|
|
|
|
|
{evaluationScores.FinalScores}
|
|
|
|
|
</Typography.Title>
|
|
|
|
|
</Divider>
|
|
|
|
|
<div class="ant-table-wrapper ant-spin-nested-loading css-dev-only-do-not-override-3op25v ant-spin-container">
|
|
|
|
|
<div class="ant-table ant-table-bordered">
|
|
|
|
|
<div class="ant-table-container ant-table-content">
|
|
|
|
|
<div className="ant-table-wrapper ant-spin-nested-loading css-dev-only-do-not-override-3op25v ant-spin-container">
|
|
|
|
|
<div className="ant-table ant-table-bordered">
|
|
|
|
|
<div className="ant-table-container ant-table-content">
|
|
|
|
|
<table style={{ textAlign: "center" }}>
|
|
|
|
|
<thead class="ant-table-thead">
|
|
|
|
|
<thead className="ant-table-thead">
|
|
|
|
|
<tr>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
Customer Satisfaction
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
3 scores
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
4 scores
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
5 scores
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
Your Scores
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
Final Scores
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
备注
|
|
|
|
|
</th>
|
|
|
|
|
</tr>
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody class="ant-table-tbody">
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">TP review rating</td>
|
|
|
|
|
<td class="ant-table-cell">\</td>
|
|
|
|
|
<td class="ant-table-cell">30%</td>
|
|
|
|
|
<td class="ant-table-cell">60%</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.TPReviewRating}</td>
|
|
|
|
|
<td class="ant-table-cell" rowspan="5">
|
|
|
|
|
<tbody className="ant-table-tbody">
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">TP review rating</td>
|
|
|
|
|
<td className="ant-table-cell">\</td>
|
|
|
|
|
<td className="ant-table-cell">30%</td>
|
|
|
|
|
<td className="ant-table-cell">60%</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.TPReviewRating}</td>
|
|
|
|
|
<td className="ant-table-cell" rowSpan="5">
|
|
|
|
|
{evaluationScores.AvgCusSatisfaction}
|
|
|
|
|
</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.TPReviewRatingText}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.TPReviewRatingText}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">Post tour complaints</td>
|
|
|
|
|
<td class="ant-table-cell">1</td>
|
|
|
|
|
<td class="ant-table-cell">0</td>
|
|
|
|
|
<td class="ant-table-cell">0</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.PostTourComplaints}</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.PostTourComplaintsText}</td>
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">Post tour complaints</td>
|
|
|
|
|
<td className="ant-table-cell">1</td>
|
|
|
|
|
<td className="ant-table-cell">0</td>
|
|
|
|
|
<td className="ant-table-cell">0</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.PostTourComplaints}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.PostTourComplaintsText}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">Complaints resolved during the tour</td>
|
|
|
|
|
<td class="ant-table-cell" colspan="3">
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">Complaints resolved during the tour</td>
|
|
|
|
|
<td className="ant-table-cell" colSpan={3}>
|
|
|
|
|
3
|
|
|
|
|
</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.ComplaintsDuringTour}</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.ComplaintsDuringTourText}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.ComplaintsDuringTour}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.ComplaintsDuringTourText}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">Customer photos</td>
|
|
|
|
|
<td class="ant-table-cell">\</td>
|
|
|
|
|
<td class="ant-table-cell">30%</td>
|
|
|
|
|
<td class="ant-table-cell">50%</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.CustomerPhotoRate}</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.CustomerPhotoRateText}</td>
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">Customer photos</td>
|
|
|
|
|
<td className="ant-table-cell">\</td>
|
|
|
|
|
<td className="ant-table-cell">30%</td>
|
|
|
|
|
<td className="ant-table-cell">50%</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.CustomerPhotoRate}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.CustomerPhotoRateText}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">Evaluation scores</td>
|
|
|
|
|
<td class="ant-table-cell" colspan="3">
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">Evaluation scores</td>
|
|
|
|
|
<td className="ant-table-cell" colSpan={3}>
|
|
|
|
|
4.5
|
|
|
|
|
</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.EvaluationFormScore}</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.EvaluationFormScoreText}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.EvaluationFormScore}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.EvaluationFormScoreText}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
|
</table>
|
|
|
|
|
<br />
|
|
|
|
|
<table style={{ textAlign: "center" }}>
|
|
|
|
|
<thead class="ant-table-thead">
|
|
|
|
|
<thead className="ant-table-thead">
|
|
|
|
|
<tr>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
Operator Support & Local resources
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
3 scores
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
4 scores
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
5 scores
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
Your Scores
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
Final Scores
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
备注
|
|
|
|
|
</th>
|
|
|
|
|
</tr>
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody class="ant-table-tbody">
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">Response efficiency</td>
|
|
|
|
|
<td class="ant-table-cell">1d</td>
|
|
|
|
|
<td class="ant-table-cell">6hrs</td>
|
|
|
|
|
<td class="ant-table-cell">3hrs</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.ResponseEfficiency}</td>
|
|
|
|
|
<td class="ant-table-cell" rowspan="6">
|
|
|
|
|
<tbody className="ant-table-tbody">
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">Response efficiency</td>
|
|
|
|
|
<td className="ant-table-cell">1d</td>
|
|
|
|
|
<td className="ant-table-cell">6hrs</td>
|
|
|
|
|
<td className="ant-table-cell">3hrs</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.ResponseEfficiency}</td>
|
|
|
|
|
<td className="ant-table-cell" rowSpan="6">
|
|
|
|
|
{evaluationScores.AvgLocalResources}
|
|
|
|
|
</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.ResponseEfficiencyText}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.ResponseEfficiencyText}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">Provide suggestions and alternatives</td>
|
|
|
|
|
<td class="ant-table-cell">\</td>
|
|
|
|
|
<td class="ant-table-cell">√</td>
|
|
|
|
|
<td class="ant-table-cell">√</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.ProvideSuggestions}</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.ProvideSuggestionsText}</td>
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">Provide suggestions and alternatives</td>
|
|
|
|
|
<td className="ant-table-cell">\</td>
|
|
|
|
|
<td className="ant-table-cell">√</td>
|
|
|
|
|
<td className="ant-table-cell">√</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.ProvideSuggestions}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.ProvideSuggestionsText}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">Provide local tourism information</td>
|
|
|
|
|
<td class="ant-table-cell">\</td>
|
|
|
|
|
<td class="ant-table-cell">√</td>
|
|
|
|
|
<td class="ant-table-cell">√</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.ProvideLocalInfo}</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.ProvideLocalInfoText}</td>
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">Provide local tourism information</td>
|
|
|
|
|
<td className="ant-table-cell">\</td>
|
|
|
|
|
<td className="ant-table-cell">√</td>
|
|
|
|
|
<td className="ant-table-cell">√</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.ProvideLocalInfo}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.ProvideLocalInfoText}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">Assist in developing exclusive products</td>
|
|
|
|
|
<td class="ant-table-cell">\</td>
|
|
|
|
|
<td class="ant-table-cell">\</td>
|
|
|
|
|
<td class="ant-table-cell">√</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.ExclusiveProducts}</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.ExclusiveProductsText}</td>
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">Assist in developing exclusive products</td>
|
|
|
|
|
<td className="ant-table-cell">\</td>
|
|
|
|
|
<td className="ant-table-cell">\</td>
|
|
|
|
|
<td className="ant-table-cell">√</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.ExclusiveProducts}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.ExclusiveProductsText}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">Dedicated tour guide team for AH</td>
|
|
|
|
|
<td class="ant-table-cell">\</td>
|
|
|
|
|
<td class="ant-table-cell">√</td>
|
|
|
|
|
<td class="ant-table-cell">√</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.DedicatedTourGuide}</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.DedicatedTourGuideText}</td>
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">Dedicated tour guide team for AH</td>
|
|
|
|
|
<td className="ant-table-cell">\</td>
|
|
|
|
|
<td className="ant-table-cell">√</td>
|
|
|
|
|
<td className="ant-table-cell">√</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.DedicatedTourGuide}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.DedicatedTourGuideText}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">Partner hotels with contracted rate</td>
|
|
|
|
|
<td class="ant-table-cell">\</td>
|
|
|
|
|
<td class="ant-table-cell">√</td>
|
|
|
|
|
<td class="ant-table-cell">√</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.PartnerHotels}</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.PartnerHotelsText}</td>
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">Partner hotels with contracted rate</td>
|
|
|
|
|
<td className="ant-table-cell">\</td>
|
|
|
|
|
<td className="ant-table-cell">√</td>
|
|
|
|
|
<td className="ant-table-cell">√</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.PartnerHotels}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.PartnerHotelsText}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
|
</table>
|
|
|
|
|
<br />
|
|
|
|
|
<table style={{ textAlign: "center" }}>
|
|
|
|
|
<thead class="ant-table-thead">
|
|
|
|
|
<thead className="ant-table-thead">
|
|
|
|
|
<tr>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
Pricing & Settlement (20%)
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
3 scores
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
4 scores
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
5 scores
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
Your Scores
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
Final Scores
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
备注
|
|
|
|
|
</th>
|
|
|
|
|
</tr>
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody class="ant-table-tbody">
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">Quotation</td>
|
|
|
|
|
<td class="ant-table-cell">Package</td>
|
|
|
|
|
<td class="ant-table-cell">Day tours</td>
|
|
|
|
|
<td class="ant-table-cell">Individual services</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.Quotation}</td>
|
|
|
|
|
<td class="ant-table-cell" rowspan="3">
|
|
|
|
|
<tbody className="ant-table-tbody">
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">Quotation</td>
|
|
|
|
|
<td className="ant-table-cell">Package</td>
|
|
|
|
|
<td className="ant-table-cell">Day tours</td>
|
|
|
|
|
<td className="ant-table-cell">Individual services</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.Quotation}</td>
|
|
|
|
|
<td className="ant-table-cell" rowSpan="3">
|
|
|
|
|
{evaluationScores.AvgPricingAndSettlement}
|
|
|
|
|
</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.QuotationText}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.QuotationText}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">Settlement</td>
|
|
|
|
|
<td class="ant-table-cell">Prepayment</td>
|
|
|
|
|
<td class="ant-table-cell">Monthly Prepayment</td>
|
|
|
|
|
<td class="ant-table-cell">Monthly settlement after the tours</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.Settlement}</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.SettlementText}</td>
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">Settlement</td>
|
|
|
|
|
<td className="ant-table-cell">Prepayment</td>
|
|
|
|
|
<td className="ant-table-cell">Monthly Prepayment</td>
|
|
|
|
|
<td className="ant-table-cell">Monthly settlement after the tours</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.Settlement}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.SettlementText}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">Cancellation policy</td>
|
|
|
|
|
<td class="ant-table-cell">30 days</td>
|
|
|
|
|
<td class="ant-table-cell">21 days</td>
|
|
|
|
|
<td class="ant-table-cell">1 day</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.CancellationPolicy}</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.CancellationPolicyText}</td>
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">Cancellation policy</td>
|
|
|
|
|
<td className="ant-table-cell">30 days</td>
|
|
|
|
|
<td className="ant-table-cell">21 days</td>
|
|
|
|
|
<td className="ant-table-cell">1 day</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.CancellationPolicy}</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.CancellationPolicyText}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
|
</table>
|
|
|
|
@ -510,80 +454,86 @@ function Index() {
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<br />
|
|
|
|
|
<List header={<div>Scoring Rules</div>} bordered>
|
|
|
|
|
<List.Item>1. The maximum score is 5</List.Item>
|
|
|
|
|
<List.Item>
|
|
|
|
|
2. The three categories are:
|
|
|
|
|
<List>
|
|
|
|
|
<List.Item>1). Customer satisfaction (40%)</List.Item>
|
|
|
|
|
<List.Item>2). Operator support & local resources (40%) </List.Item>
|
|
|
|
|
<List.Item>3). Pricing & settlement (20%)</List.Item>
|
|
|
|
|
</List>
|
|
|
|
|
</List.Item>
|
|
|
|
|
<List.Item>3. For each category, you can only get the corresponding score if you meet the standards of all items under the score.</List.Item>
|
|
|
|
|
<List.Item>4. The final score is the sum of the scores of each category multiplied by the proportion of the category.</List.Item>
|
|
|
|
|
</List>
|
|
|
|
|
<Typography>
|
|
|
|
|
<Typography.Title level={3}>Scoring Rules</Typography.Title>
|
|
|
|
|
<Typography.Paragraph>
|
|
|
|
|
<ol>
|
|
|
|
|
<li>The maximum score is 5</li>
|
|
|
|
|
<li>
|
|
|
|
|
The three categories are:
|
|
|
|
|
<ul>
|
|
|
|
|
<li>Customer satisfaction (40%)</li>
|
|
|
|
|
<li>Operator support & local resources (40%)</li>
|
|
|
|
|
<li>Pricing & settlement (20%)</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</li>
|
|
|
|
|
<li>For each category, you can only get the corresponding score if you meet the standards of all items under the score.</li>
|
|
|
|
|
<li>The final score is the sum of the scores of each category multiplied by the proportion of the category.</li>
|
|
|
|
|
</ol>
|
|
|
|
|
</Typography.Paragraph>
|
|
|
|
|
</Typography>
|
|
|
|
|
|
|
|
|
|
<br />
|
|
|
|
|
<Divider orientation="left">反馈表分析</Divider>
|
|
|
|
|
<div class="ant-table-wrapper ant-spin-nested-loading css-dev-only-do-not-override-3op25v ant-spin-container">
|
|
|
|
|
<div class="ant-table ant-table-bordered">
|
|
|
|
|
<div class="ant-table-container ant-table-content">
|
|
|
|
|
<div className="ant-table-wrapper ant-spin-nested-loading css-dev-only-do-not-override-3op25v ant-spin-container">
|
|
|
|
|
<div className="ant-table ant-table-bordered">
|
|
|
|
|
<div className="ant-table-container ant-table-content">
|
|
|
|
|
<table style={{ textAlign: "center" }}>
|
|
|
|
|
<thead class="ant-table-thead">
|
|
|
|
|
<thead className="ant-table-thead">
|
|
|
|
|
<tr>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
项目
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
产品
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
得分
|
|
|
|
|
</th>
|
|
|
|
|
<th class="ant-table-cell" scope="col">
|
|
|
|
|
<th className="ant-table-cell" scope="col">
|
|
|
|
|
备注说明
|
|
|
|
|
</th>
|
|
|
|
|
</tr>
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody class="ant-table-tbody">
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell" rowspan="4">
|
|
|
|
|
<tbody className="ant-table-tbody">
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell" rowSpan="4">
|
|
|
|
|
地接接待
|
|
|
|
|
</td>
|
|
|
|
|
<td class="ant-table-cell">导游</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.FRTGuide}</td>
|
|
|
|
|
<td class="ant-table-cell" rowspan="7">
|
|
|
|
|
<td className="ant-table-cell">导游</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.FRTGuide}</td>
|
|
|
|
|
<td className="ant-table-cell" rowSpan="7">
|
|
|
|
|
{evaluationScores.FRTText}
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">司机+车</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.FRTGriver}</td>
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">司机+车</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.FRTGriver}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">餐</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.FRTMeal}</td>
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">餐</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.FRTMeal}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">产品体验</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.FRTProduct}</td>
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">产品体验</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.FRTProduct}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell" rowspan="3">
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell" rowSpan="3">
|
|
|
|
|
线路安排
|
|
|
|
|
</td>
|
|
|
|
|
<td class="ant-table-cell">酒店</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.FRTHotel}</td>
|
|
|
|
|
<td className="ant-table-cell">酒店</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.FRTHotel}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">游船</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.FRTCruise}</td>
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">游船</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.FRTCruise}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr class="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td class="ant-table-cell">顾问服务</td>
|
|
|
|
|
<td class="ant-table-cell">{evaluationScores.FRTAdvisor}</td>
|
|
|
|
|
<tr className="ant-table-row ant-table-row-level-0">
|
|
|
|
|
<td className="ant-table-cell">顾问服务</td>
|
|
|
|
|
<td className="ant-table-cell">{evaluationScores.FRTAdvisor}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
|
</table>
|
|
|
|
@ -591,7 +541,7 @@ function Index() {
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</Col>
|
|
|
|
|
<Col md={24} lg={13} xxl={13}>
|
|
|
|
|
<Col md={24} lg={24} xxl={16}>
|
|
|
|
|
<Divider orientation="left">导游接待情况</Divider>
|
|
|
|
|
<Table dataSource={productScoresData.GuideScores} columns={columns_guide} pagination={false} bordered />
|
|
|
|
|
|
|
|
|
@ -601,7 +551,7 @@ function Index() {
|
|
|
|
|
<Divider orientation="left">投诉情况</Divider>
|
|
|
|
|
<Table dataSource={commendScoresData.ComplaintScores} columns={columns_commend} pagination={false} bordered />
|
|
|
|
|
|
|
|
|
|
<Divider orientation="left">批评建议</Divider>
|
|
|
|
|
<Divider orientation="left">建议</Divider>
|
|
|
|
|
<Table dataSource={commendScoresData.CriticizeScores} columns={columns_commend} pagination={false} bordered />
|
|
|
|
|
</Col>
|
|
|
|
|
</Row>
|
|
|
|
|