import * as React from "react"; import { Box, Typography, TextField, Checkbox, Button } from "@mui/material"; import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider"; import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs"; import { DesktopDatePicker } from "@mui/x-date-pickers/DesktopDatePicker"; import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; import TableCell from "@mui/material/TableCell"; import TableRow from "@mui/material/TableRow"; import TableContainer from "@mui/material/TableContainer"; import Paper from "@mui/material/Paper"; import { DataGrid, GridColDef, GridSelectionModel, GridToolbar } from "@mui/x-data-grid"; import MenuItem from "@mui/material/MenuItem"; import Select, { SelectChangeEvent } from "@mui/material/Select"; import { PrivilegesProps, PromocodeProps } from "./types"; import useStore, { StoreState } from "../../../../store"; import theme from "../../../../theme"; const columns: GridColDef[] = [ { field: "id", headerName: "ID", width: 30, sortable: false, }, { field: "name", headerName: "Название промокода", width: 200, sortable: false, }, { field: "endless", headerName: "Бесконечный", width: 120, sortable: false, }, { field: "from", headerName: "От", width: 120, sortable: false, }, { field: "dueTo", headerName: "До", width: 120, sortable: false, }, { field: "privileges", headerName: "Привилегии", width: 210, sortable: false, } ]; const rows:Array = [ { id: 1, name: "Промокод 1", endless: false, from: "", dueTo: "", privileges: [ { good: "Товар 1", discount: 0.3 }, { good: "Товар 2", discount: 0.2 } ] }, { id: 2, name: "Промокод 2", endless: false, from: "", dueTo: "", privileges: [ { good: "Товар 3", discount: 0.3 }, { good: "Товар 4", discount: 0.2 } ] }, { id: 3, name: "Промокод 3", endless: false, from: "", dueTo: "", privileges: [ { good: "Товар 5", discount: 0.3 }, { good: "Товар 6", discount: 0.2 } ] }, ]; const Promocode: React.FC = () => { const [checkboxState, setCheckboxState] = React.useState(false); const toggleCheckbox = () => { setCheckboxState( !checkboxState ); } const [value1, setValue1] = React.useState( new Date() ); const [value2, setValue2] = React.useState( new Date() ); const [service, setService] = React.useState("Шаблонизатор"); const handleChange = (event: SelectChangeEvent) => { setService(event.target.value as string); }; const { promocodeArray, promocodeArraySet } = useStore((state) => state); const promocodeArrayConverted = promocodeArray.map( (item) => { const dateFrom = item.from ? new Date( Number(item.from) ) : ""; const dateDueTo = item.from ? new Date( Number(item.dueTo) ) : ""; const strFrom = dateFrom ? `${dateFrom.getDate()}.${dateFrom.getMonth()}.${dateFrom.getFullYear()}` : "-" const strDueTo = dateDueTo ? `${dateDueTo.getDate()}.${dateDueTo.getMonth()}.${dateDueTo.getFullYear()}` : "-" if( item.privileges.length ) { const result = item.privileges.reduce( (acc, privilege) => { acc = acc ? `${acc}, ${privilege.good} - ${privilege.discount}%` : `${privilege.good} - ${privilege.discount * 100}%`; return acc; }, "" ); return { ...item, privileges: result, from: strFrom, dueTo: strDueTo } } else { return { ...item, from: strFrom, dueTo: strDueTo } } } ); const createPromocode = ( name:string, discount: number ) => { const newPromocode = { id: new Date().getTime(), name, endless: checkboxState, from: checkboxState ? "" : new Date( value1 ).getTime() +"", dueTo: checkboxState ? "" : new Date( value2 ).getTime() +"", privileges: [{ good: service, discount: discount / 100 }] } const promocodeArrayUpdated = [ ...promocodeArray, newPromocode ]; promocodeArraySet( promocodeArrayUpdated ); } const fieldName = React.useRef(null); const fieldDiscount = React.useRef(null); const checkFields = () => { if( fieldName.current != null && fieldDiscount.current != null ) { createPromocode( fieldName.current.value, Number(fieldDiscount.current.value) ); } } return ( ПРОМОКОД Название: Условия: Работает, если заплатите 100500 денег Вы должны будете продать душу дьяволу
Дата действия: С { if(e) { setValue1(e) } } } renderInput={(params) => } InputProps={{ sx: { height: "40px", color: theme.palette.secondary.main, border: "1px solid", borderColor: theme.palette.secondary.main, "& .MuiSvgIcon-root": { color: theme.palette.secondary.main } } }} /> по { if(e) { setValue2(e) } } } renderInput={(params) => } InputProps={{ sx: { height: "40px", color: theme.palette.secondary.main, border: "1px solid", borderColor: theme.palette.secondary.main, "& .MuiSvgIcon-root": { color: theme.palette.secondary.main } } }} /> toggleCheckbox() } /> Бессрочно
console.log("datagrid select") } />
); } export default Promocode;