Untitled

 avatar
unknown
javascript
2 years ago
19 kB
4
Indexable
import {
    Document,
    Page,
    Text,
    Font,
    StyleSheet,
    PDFDownloadLink,
    View,
    Image,
} from "@react-pdf/renderer";

// import times from "../../../../public/fonts/times.ttf";
// import roboto from "./../../../../public/fonts/roboto.ttf";
// import robotoBold from "./../../../../public/fonts/roboto-bold.ttf";
// import timesBold from "./../../../../public/fonts/times-bold.ttf";
// import timesItalic from "./../../../../public/fonts/times-italic.ttf";
import signature from "./../../../../public/image/signature.png";

import { Button } from "antd";
import { DownloadOutlined } from "@ant-design/icons";

// Font.register({
//     family: "Times New Roman",
//     src: times,
// });

// Font.register({
//     family: "Roboto",
//     src: roboto,
// });

// Font.register({
//     family: "Roboto Bold",
//     src: robotoBold,
// });

// Font.register({
//     family: "Times New Roman Bold",
//     src: timesBold,
// });

// Font.register({
//     family: "Times New Roman Italic",
//     src: timesItalic,
// });

const center = {
    textAlign: "center",
    textTransform: "uppercase",
    fontSize: 14,
};

const flex = {
    display: "flex",
    flexDirection: "row",
    alignItems: "center",
};

const Title = (props) => {
    return (
        <View
            break={props.break}
            style={{ ...props.style, ...flex, fontSize: 14, marginBottom: 6 }}
        >
            <Text
                style={{
                    textTransform: "uppercase",
                }}
            >
                {props.title}{" "}
            </Text>
            <Text
                style={{
                    textTransform: "uppercase",
                }}
            >
                {props.english}
            </Text>
        </View>
    );
};

const Item = (props) => {
    return (
        <View style={flex} break={props.break}>
            <Text>{props.title}: </Text>
            {props.english && <Text>{props.english} </Text>}
            <Text
                style={{
                    fontSize: 12,
                }}
            >
                {props.value}
            </Text>
        </View>
    );
};

const processDate = (date) => {
    if (!date) return;
    const newDate = new Date(date);
    const [month, day, year] = newDate.toLocaleDateString().split("/");
    return [day.padStart(2, "0"), month.padStart(2, "0"), year].join("/");
};

const InspectionPDF = ({ inspectionData }) => {
    const Inspecion = () => (
        <Document>
            <Page
                size="A5"
                style={{
                    paddingTop: 35,
                    paddingBottom: 35,
                    paddingHorizontal: 30,
                    // fontFamily: "Times New Roman",
                    fontSize: 13,
                }}
            >
                <Text style={center}>Bộ giao thông vận tải</Text>
                <Text
                    style={{
                        ...center,
                        // fontFamily: "Times New Roman Bold",
                        textDecoration: "underline",
                    }}
                >
                    Cục đăng kiểm Việt Nam
                </Text>
                <Text style={{ ...center, textTransform: "none" }}>
                    MOT &ndash; Vietnam Register
                </Text>

                <Text
                    style={{
                        ...center,
                        color: "red",
                        // fontFamily: "Times New Roman Bold",
                        marginTop: 120,
                        fontSize: 15,
                    }}
                >
                    Giấy chứng nhận kiểm định
                </Text>
                <Text
                    style={{
                        ...center,
                        // fontFamily: "Times New Roman Bold",
                        fontSize: 13,
                        color: "red",
                        marginTop: 12,
                    }}
                >
                    An toàn kĩ thuật và bảo vệ môi trường
                </Text>
                <Text
                    style={{
                        ...center,
                        // fontFamily: "Times New Roman Bold",
                        fontSize: 13,
                        marginBottom: 12,
                        color: "red",
                    }}
                >
                    Phương tiện giao thông cơ giới đường bộ
                </Text>
                <Text
                    style={{
                        ...center,
                        // fontFamily: "Roboto Bold",
                        fontSize: 10,
                    }}
                >
                    Periodical inspection certificate
                </Text>
                <Text
                    style={{
                        ...center,
                        // fontFamily: "Roboto Bold",
                        fontSize: 10,
                    }}
                >
                    of motor vehicle for compliance with technical safety
                </Text>
                <Text
                    style={{
                        ...center,
                        // fontFamily: "Roboto Bold",
                        fontSize: 10,
                    }}
                >
                    and environment protection requirements
                </Text>
                <Title
                    break={true}
                    title="1. Phương tiện"
                    english="(Vehicle)"
                />
                <Item
                    title="Biển đăng ký"
                    english="(Registration Number)"
                    value={inspectionData.number_plate}
                    bold={true}
                />
                <Item
                    title="Số quản lý"
                    english="(Vehicle Inspection No.)"
                    value={inspectionData.inspection_number}
                />
                <Item
                    title="Loại phương tiện"
                    english="(Type)"
                    value={inspectionData.type}
                />
                <Item
                    title="Nhãn hiệu"
                    english="(Mark)"
                    value={inspectionData.brand}
                />
                <Item
                    title="Số loại"
                    english="(Model Code)"
                    value={inspectionData.model_code}
                />
                <Item
                    title="Số máy"
                    english="(Engine Number)"
                    value={inspectionData.engine_number}
                />
                <Item
                    title="Số khung"
                    english="(Chassis Number)"
                    value={inspectionData.chassis_number}
                />
                <Item
                    title="Năm, Nước sản xuất"
                    value={`${inspectionData.manufactured_year}, ${inspectionData.manufactured_country}`}
                />
                <Text>(Manufactured Year and Country)</Text>

                <Item
                    title="Kinh doanh vận tải"
                    english="(Commercial Use)"
                    value={
                        inspectionData.purpose === "business" ? "Có" : "Không"
                    }
                />
                <Item
                    title="Cải tạo"
                    english="(Modification)"
                    value={inspectionData.recovered ? "Có" : "Không"}
                />
                <Title
                    break={false}
                    title="2. Thông số kỹ thuật"
                    english="(Specifications)"
                    style={{ marginTop: 10 }}
                />

                <Title
                    break={false}
                    title="2. Thông số kỹ thuật"
                    english="(Specifications)"
                    style={{ marginTop: 10 }}
                />
                <Item
                    title="Công thức bánh xe"
                    english="(Wheel Formula)"
                    value={inspectionData.wheel_formula}
                />
                <Item
                    title="Vết bánh xe"
                    english="(Wheel Tread)"
                    value={inspectionData.wheel_tread}
                />
                <Item
                    title="Kích thước bao"
                    english="(Overall Dimension)"
                    value={inspectionData.overall_dimension}
                />
                <Item
                    title="Kích thước lòng thùng xe"
                    value={inspectionData.container_dimension}
                />
                <Text>(Inside cargo container dimension)</Text>
                <Item
                    title="Chiều dài cơ sở"
                    english="(Wheelbase)"
                    value={inspectionData.length_base}
                />
                <Item
                    title="Khối lượng bản thân"
                    english="(Kerb mass)"
                    value={inspectionData.kerb_mass}
                />
                <Item
                    title="Khối lượng hàng CC theo TK/CP TGGT"
                    value={inspectionData.designed_and_authorized_payload}
                />
                <Text>(Design/Authorized pay load)</Text>
                <Item
                    title="Khối lượng toàn bộ theo TK/CP TGGT"
                    value={inspectionData.designed_and_authorized_total_mass}
                />
                <Text>(Design/Authorized total load)</Text>
                <Item
                    title="Khối lượng kéo theo TK/CP TGGT"
                    value={inspectionData.designed_and_authorized_towed_mass}
                />
                <Text>(Design/Authorized towed load)</Text>
                <Item
                    title="Số lượng người cho phép chở"
                    value={`${inspectionData.permissible_carry} chỗ ngồi, 0 chỗ đứng, 0 chỗ nằm`}
                />
                <Text>
                    (Permissible No. of Pers Carried: seat, stood place, laying
                    place)
                </Text>
                <Item
                    title="Loại nhiên liệu"
                    english="(Type of Fuel Used)"
                    value={inspectionData.fuel}
                />
                <Item
                    title="Thể tích làm việc của động cơ"
                    english="(Engine Displacement)"
                    value={inspectionData.engine_displacement}
                />
                <Item
                    title="Công suất lớn nhất/tốc độ quay"
                    english="(Max output/rpm)"
                    value={inspectionData.maximum_output_to_rpm_ratio}
                />
                <Item
                    title="Số lượng lốp, cỡ lốp/trục"
                    value={inspectionData.number_of_tires_and_tire_size.replace(
                        "tires",
                        "lốp"
                    )}
                    break={true}
                />
                <Text>(Number of tires; Tires size/axle)</Text>

                <View
                    style={{
                        ...flex,
                        marginTop: 30,
                        justifyContent: "center",
                        alignItems: "flex-start",
                    }}
                >
                    <View
                        style={{
                            flex: 1,
                            display: "flex",
                            alignItems: "center",
                        }}
                    >
                        <Text>Có hiệu lực đến hết ngày</Text>
                        <View style={flex}>
                            <Text>(Valid until) </Text>
                            <Text>
                                {processDate(inspectionData.expired_date)}
                            </Text>
                        </View>
                    </View>
                    {/* <View style={{ display: "flex", alignItems: "center" }}>
                        <Text>
                            {data.madeBy.workFor.name
                                .split(" ")
                                .slice(4, -2)
                                .join(" ")
                                .replace("Tỉnh", "")
                                .replace("Thành phố", "TP.")
                                .trim()}
                            , ngày {date} tháng {month} năm {year}
                        </Text>
                        <Text style={{ ...italic, textAlign: "center" }}>
                            (Issued on, Day/Month/Year)
                        </Text>
                        <Text style={{ ...bold, textTransform: "uppercase" }}>
                            Đơn vị kiểm định
                        </Text>
                        <Text
                            style={{
                                ...italic,
                                fontSize: 13,
                                textTransform: "uppercase",
                            }}
                        >
                            (Inspection center)
                        </Text>
                        <Image
                            src={signature}
                            style={{ width: 60, marginTop: 5 }}
                        />
                    </View> */}
                </View>

                <Text
                    style={{ ...center, fontFamily: "Times New Roman Bold" }}
                    break
                >
                    Chủ phương tiện, lái xe cần biết
                </Text>
                <Text
                    style={{
                        fontSize: 10,
                        textAlign: "center",
                        marginBottom: 16,
                    }}
                >
                    Vehicle owners, drivers are to be aware of the followings:
                </Text>
                <Text>
                    1. Khi tham gia giao thông phải mang theo Giấy chứng nhận
                    kiểm định. Nộp lại Giấy chứng nhận kiểm định và Tem kiểm
                    định khi có thông báo thu hồi của các Đơn vị đăng kiểm.
                </Text>
                <Text style={{ marginTop: 6, marginBottom: 6 }}>
                    When in traffic, drivers are requested to carry the
                    certificate of inspections. Return certificate and
                    inspection stamp when receiving a withdrawal notice from the
                    Registration and Inspection Center.
                </Text>
                <Text>
                    2. Lái xe khi lưu hành qua cầu, hầm đường bộ phải tuân thủ
                    các biển báo hiệu đường bộ được đặt trước công trình.
                </Text>
                <Text style={{ marginTop: 6, marginBottom: 6 }}>
                    When passing the bridges, road tunnels, drivers must comply
                    with road warning signs put forward its.
                </Text>
                <Text>
                    3. Thực hiện bảo dưỡng, sửa chữa nhằm duy trì tình trạng kỹ
                    thuật của xe giữa hai kỳ kiểm định.
                </Text>
                <Text style={{ marginTop: 6, marginBottom: 6 }}>
                    Perform maintenance and/or repair to the good technical
                    conditions of the vehicle between two consecutive
                    inspections.
                </Text>
                <Text>
                    4. Khi có thay đổi thông tin hành chính, thông số kỹ thuật
                    thì phải đến Đơn vị đăng kiểm để được hước dẫn làm thủ tục
                    ghi nhận thay đổi.
                </Text>
                <Text style={{ marginTop: 6, marginBottom: 6 }}>
                    When roaming, transfer of vehicle ownership, renovation,
                    modification of frame (chassis) or changing of engine No,
                    ... the concerned Registration and Inspection Center
                    (Vietnam Registration) should be notified for instructions
                    and the required procedures are to be followed.
                </Text>
                <Text>
                    5. Xe cơ giới bị tai nạn giao thông đến mức không đảm bảo an
                    toàn kỹ thuật và bảo vệ môi trường theo quy định phải sửa
                    chữa, khắc phục và đến Đơn vị đăng kiểm để kiểm định lại.
                </Text>
                <Text style={{ marginTop: 6, marginBottom: 6 }}>
                    A motor vehicle which is damaged by accident and the
                    requirements for technical safety and environment protection
                    are not assured, is to be repaired and brought for
                    re-inspection at an Inspection Center.
                </Text>
            </Page>
        </Document>
    );
    return (
        <PDFDownloadLink
            document={<Inspecion />}
            fileName={`${inspectionData.inspection_number}.pdf`}
        >
            <Button
                type="primary"
                size="large"
                style={{
                    marginTop: "2rem",
                }}
                onClick={() => console.log("CLicked")}
                icon={
                    <DownloadOutlined
                        style={{
                            fontSize: "18px",
                            verticalAlign: "middle",
                            marginBottom: "6px",
                        }}
                    />
                }
            >
                Tải xuống đăng kiểm
            </Button>
        </PDFDownloadLink>
    );
};

export default InspectionPDF;
Editor is loading...
Leave a Comment