Add: 修改

This commit is contained in:
2022-04-02 17:42:30 +08:00
parent 880c26b8d3
commit 7bc70f5c25
3 changed files with 68 additions and 17 deletions

View File

@@ -33,9 +33,13 @@ const insertTimeRange = db.prepare(
); );
const getTimeRanges = db.prepare(`SELECT * FROM time_ranges`); const getTimeRanges = db.prepare(`SELECT * FROM time_ranges`);
const deleteTimeRange = db.prepare(`DELETE FROM time_ranges WHERE id = ?`); const deleteTimeRange = db.prepare(`DELETE FROM time_ranges WHERE id = ?`);
const update = db.prepare(
`UPDATE time_ranges SET name = ?, range = ?, username = ? WHERE id = ?`
);
const updateUsername = db.prepare( const updateUsername = db.prepare(
`UPDATE time_ranges SET username = ? WHERE id = ?` `UPDATE time_ranges SET username = ? WHERE id = ?`
); );
const countUser = db.prepare( const countUser = db.prepare(
`SELECT COUNT(*) as count FROM time_ranges WHERE username = ?` `SELECT COUNT(*) as count FROM time_ranges WHERE username = ?`
); );
@@ -88,6 +92,7 @@ export {
insertTimeRange, insertTimeRange,
getTimeRanges, getTimeRanges,
deleteTimeRange, deleteTimeRange,
update,
updateUsername, updateUsername,
updateUsernameWithLimit, updateUsernameWithLimit,
getLimit, getLimit,

View File

@@ -2,6 +2,7 @@ import {
deleteTimeRange, deleteTimeRange,
getLimit, getLimit,
authenticate, authenticate,
update,
updateUsername, updateUsername,
updateUsernameWithLimit, updateUsernameWithLimit,
} from "../../../../libs/db"; } from "../../../../libs/db";
@@ -34,26 +35,28 @@ export default function handler(req, res) {
// update username // update username
} else if (req.method === "PUT") { } else if (req.method === "PUT") {
// check if id is valid
// check if username is valid
const { username } = req.body; const { username } = req.body;
if (username === undefined) {
res.status(400).json({
error: `缺少参数 username`,
});
return;
}
// admin update username // admin update username
const { token } = req.body; const { token } = req.body;
if (authenticate(token)) { if (authenticate(token)) {
updateUsername.run(username, id); const { name, username, id, range } = req.body;
const result = update.run(name, range, username, id);
res.status(200).json({ res.status(200).json({
success: true, success: true,
}); });
return; return;
} }
// check if id is valid
// check if username is valid
if (username === undefined) {
res.status(400).json({
error: `缺少参数 username`,
});
return;
}
try { try {
const limit = getLimit(); const limit = getLimit();
updateUsernameWithLimit(username, id, limit); updateUsernameWithLimit(username, id, limit);

View File

@@ -5,6 +5,10 @@ import {
Snackbar, Snackbar,
Button, Button,
Stack, Stack,
Dialog,
DialogTitle,
DialogContent,
DialogActions,
Typography, Typography,
TextField, TextField,
TableContainer, TableContainer,
@@ -32,18 +36,17 @@ export default function Time(props) {
const [token, setToken] = useState(""); const [token, setToken] = useState("");
const [stats, setStats] = useState({}); const [stats, setStats] = useState({});
const [modifyTime, setModifyTime] = useState({});
const router = useRouter(); const router = useRouter();
const updateUsernameByAdmin = (id, username) => { const modifyRange = () => {
fetch(`${prefix}/api/time/ranges/${id}`, { fetch(`${prefix}/api/time/ranges/${modifyTime.id}`, {
method: "PUT", method: "PUT",
headers: { headers: {
"Content-Type": "application/json", "Content-Type": "application/json",
}, },
body: JSON.stringify({ body: JSON.stringify({ token, ...modifyTime }),
username,
token,
}),
}) })
.then((res) => res.json()) .then((res) => res.json())
.then((res) => { .then((res) => {
@@ -51,6 +54,7 @@ export default function Time(props) {
setSnackbarError(true); setSnackbarError(true);
setSnackbarErrorMessage(res.error); setSnackbarErrorMessage(res.error);
} else { } else {
setModifyTime({});
setSnackbarSuccess(true); setSnackbarSuccess(true);
refreshRanges(); refreshRanges();
} }
@@ -356,9 +360,10 @@ export default function Time(props) {
<> <>
<Button <Button
variant="contained" variant="contained"
onClick={() => updateUsernameByAdmin(range.id, "")} color="secondary"
onClick={() => setModifyTime(range)}
> >
清空 修改
</Button> </Button>
<Button <Button
variant="contained" variant="contained"
@@ -401,6 +406,44 @@ export default function Time(props) {
操作成功 操作成功
</Alert> </Alert>
</Snackbar> </Snackbar>
<Dialog open={modifyTime.id} onClose={() => setModifyTime({})}>
<DialogTitle>修改时间段 {modifyTime.id}</DialogTitle>
<DialogContent>
<Stack
sx={{
mt: 1,
}}
spacing={2}
>
<TextField
label="名称"
value={modifyTime.name}
onChange={(e) =>
setModifyTime({ ...modifyTime, name: e.target.value })
}
/>
<TextField
label="时间段"
value={modifyTime.range}
onChange={(e) =>
setModifyTime({ ...modifyTime, range: e.target.value })
}
placeholder="2022-01-01 00:00:00"
/>
<TextField
label="姓名"
value={modifyTime.username}
onChange={(e) =>
setModifyTime({ ...modifyTime, username: e.target.value })
}
/>
</Stack>
</DialogContent>
<DialogActions>
<Button onClick={() => setModifyTime({})}>取消</Button>
<Button onClick={modifyRange}>确定</Button>
</DialogActions>
</Dialog>
</Container> </Container>
); );
} }