help me ?

85 阅读2分钟

import { Button, Checkbox, DatePicker, Form, Input, Modal, Select, Space, Table, message, } from "antd"; import Search from "antd/es/input/Search"; import { ColumnsType } from "antd/es/table"; import { useState, useEffect, MouseEventHandler } from "react"; import { useDispatch, useSelector } from "react-redux"; import { RootState } from "../redux/store"; import { addPackageTicket, fetchPackageTicket, updatePackageTicket, } from "../redux/packageTicket"; import { edit } from "../assets/js"; import moment from "moment";

interface PackageTicket { id?: string; codePackage: string; name: string; dou: string; trd: string; price: string; priceCombo: string; numberTicket: number; status: string; }

const PackageService = () => { const columns: ColumnsType = [ { title: "STT", dataIndex: "stt", key: "stt", }, { title: "Mã gói", dataIndex: "codePackage", key: "codePackage", }, { title: "Tên gói vé", dataIndex: "name", key: "name", }, { title: "Ngày áp dụng", dataIndex: "dou", key: "dou", }, { title: "Ngày hết hạn", dataIndex: "trd", key: "trd", }, { title: "Giá vé (VND/Vé)", dataIndex: "price", key: "price", }, { title: "Giá Combo (VNĐ/Combo)", dataIndex: "priceCombo", key: "priceCombo", render: (record: PackageTicket, text: any) => { return {${text.priceCombo}/${text.numberTicket} vé}; }, }, { title: "Tình trạng", dataIndex: "status", key: "status", }, { title: "Hành động", key: "action", render: (text: any, record: PackageTicket) => ( <Button danger className="border-none flex items-center" onClick={() => handleOpenModal(record.id)} > edit转存失败,建议直接上传图片文件

Cập nhật

), }, ]; const dispatch: any = useDispatch(); const dataPackageTicket = useSelector( (state: RootState) => state.packageTicket.packageTicket );

const grantTime = moment().format("DD/MM/YYYY HH:mm"); const expiry = moment().add(1, "day").format("DD/MM/YYYY HH:mm"); const random = Math.random().toString(36).slice(2); const [isOpenModal, setIsOpenModal] = useState(false); const [selectedRecordId, setSelectedRecordId] = useState<string | null>(null); const [inputValues, setInputValues] = useState({ codePackage: random, name: "", dou: grantTime, trd: expiry, price: "", priceCombo: "", numberTicket: 0, status: "", });

useEffect(() => { dispatch(fetchPackageTicket()); }, [dispatch]);

const handleOpenModal = (recordId: string | null = null) => { setSelectedRecordId(recordId);

if (recordId) {
  const record = findRecordById(recordId);
  if (record) {
    setInputValues({
      codePackage: record.codePackage,
      name: record.name,
      dou: "",
      trd: "",
      price: record.price,
      priceCombo: record.priceCombo,
      numberTicket: record.numberTicket,
      status: record.status,
    });
  }
} else {
  // If no recordId provided, reset the input values to the initial state
  setInputValues({
    codePackage: random,
    name: "",
    dou: grantTime,
    trd: expiry,
    price: "",
    priceCombo: "",
    numberTicket: 0,
    status: "",
  });
}

setIsOpenModal(true);

};

const closeModal = () => { setIsOpenModal(false); };

const handleInputChange = (event: React.ChangeEvent) => { const { name, value } = event.target; setInputValues((prevValues) => ({ ...prevValues, [name]: value, })); };

const handleSelectChange = (value: string) => { setInputValues((prevValues) => ({ ...prevValues, status: value, })); };

const handleAddData: MouseEventHandler = async (event) => { event.preventDefault(); const newTicket = { ...inputValues }; try { if (!newTicket.name) { message.error("Vui lòng nhập tên gói vé !!!"); return; } await dispatch(addPackageTicket(newTicket)); message.success("Thêm thiết bị thành công !!!"); closeModal(); setInputValues({ codePackage: "", name: "", dou: "", trd: "", price: "", priceCombo: "", numberTicket: 0, status: "", }); } catch (error) { message.error(Lỗi khi thêm thiết bị: ${error}); } };

const findRecordById = (id: string) => { return dataPackageTicket.find((record) => record.id === id); };

const handleUpdateData: MouseEventHandler = async ( event ) => { event.preventDefault(); const updatedTicket = { ...inputValues }; try { if (!updatedTicket.name) { message.error("Vui lòng nhập tên gói vé !!!"); return; }

  if (!selectedRecordId) {
    message.error("Không có ID gói vé được chọn để cập nhật !!!");
    return;
  }

  await dispatch(
    updatePackageTicket({ id: selectedRecordId, updatedTicket })
  );
  message.success("Cập nhật góithành công !!!");
  closeModal();
} catch (error) {
  message.error(`Lỗi khi cập nhật gói vé: ${error}`);
}

};

return (

Danh sách gói vé

Xuất file {(.csv)} <Button danger onClick={() => handleOpenModal()}> Thêm gói vé
<Table size="small" columns={columns} dataSource={dataPackageTicket} className="table-striped-rows" rowKey={(record: PackageTicket) => record.codePackage} pagination={{ pageSize: 3 }} >

  <Modal
    open={isOpenModal}
    footer={false}
    closeIcon={false}
    onCancel={closeModal}
  >
    <div className="text-center add-title">
      {selectedRecordId ? "Cập nhật gói vé" : "Thêm gói vé"}
    </div>
    <Form layout="vertical" className="pt-2">
      <div className="w-2/4">
        <Form.Item
          label={
            <p>
              Tên gói vé <span className="red">*</span>
            </p>
          }
          className="mb-2"
        >
          <Input
            onChange={handleInputChange}
            value={inputValues.name}
            name="name"
          ></Input>
        </Form.Item>
      </div>
      <div className="flex items-center justify-between">
        <Form.Item label="Ngày áp dụng" className="mb-2">
          <DatePicker name="dou" format={"DD/MM/YY HH:mm:ss"}></DatePicker>
        </Form.Item>

        <Form.Item label="Ngày hết hạn" className="mb-2">
          <DatePicker name="trd" format={"DD/MM/YY HH:mm:ss"}></DatePicker>
        </Form.Item>
      </div>
      <div>
        <Form.Item label="Giá vé áp dụng" className="mb-2">
          <span>
            <Space>
              <Checkbox></Checkbox>
              Vé lẻ {"(vnđ/vé)"} với giá
              <Input
                className="w-24"
                name="price"
                placeholder="Giá vé"
                onChange={handleInputChange}
                value={inputValues.price}
              ></Input>
              {"/vé"}
            </Space>
          </span>
        </Form.Item>
        <Form.Item className="mb-2">
          <span>
            <Space>
              <Checkbox></Checkbox>
              Combo vé với giá
              <Input
                className="w-24"
                name="priceCombo"
                placeholder="Giá vé"
                onChange={handleInputChange}
                value={inputValues.priceCombo}
              ></Input>
              {"/"}
              <Input
                className="w-12"
                name="numberTicket"
                placeholder="vé"
                onChange={handleInputChange}
                value={inputValues.numberTicket}
              ></Input>
              {"/vé"}
            </Space>
          </span>
        </Form.Item>
        <div className="w-1/3">
          <Form.Item label="Tình trạng">
            <Select
              defaultValue="Đang áp dụng"
              options={[
                { value: "Đang áp dụng", label: "Đang áp dụng" },
                { value: "Tắt", label: "Tắt" },
              ]}
              data-name="status"
              onChange={handleSelectChange}
              value={inputValues.status}
            />
          </Form.Item>
        </div>
      </div>
      <footer className="text-center">
        <Space>
          <Button danger className="w-32 h-10" onClick={closeModal}>
            Hủy
          </Button>
          <button
            className="comparison"
            onClick={selectedRecordId ? handleUpdateData : handleAddData}
          >
            <span className="btn-compar">
              {selectedRecordId ? "Cập nhật" : "Lưu"}
            </span>
          </button>
        </Space>
      </footer>
    </Form>
  </Modal>
</div>

); };

export default PackageService;

我想将 datepicker 的值获取到 inputValues 中,我该怎么做?