This commit is contained in:
2023-02-03 21:47:54 +08:00
parent d1c66a3d80
commit 27f2bbdb47
17 changed files with 845 additions and 505 deletions

10
Dockerfile Normal file
View File

@@ -0,0 +1,10 @@
FROM node:19
EXPOSE 3000
COPY . /app
WORKDIR /app
RUN ["npm", "run", "build"]
CMD ["npm", "run", "start"]

193
components/Timetable.tsx Normal file
View File

@@ -0,0 +1,193 @@
import React from "react";
interface Conflicts {
[index: string]: HTMLInputElement[];
}
interface ConflictsTmp {
[index: string]: Set<string>;
}
interface IndexToElement {
[index: string]: HTMLInputElement;
}
const indexToElement: IndexToElement = {};
const conflicts: Conflicts = {};
const marks: (HTMLInputElement | null)[][] = [];
const Timetable = ({ user }) => {
const [editable, setEditable] = React.useState(true);
const ref = React.useRef();
const handleSelect = async (event: Event) => {
const target: HTMLInputElement = event.target;
console.log("select", target.name, target.checked);
const changedInputs: any = [];
// find whether there are checked input in conflict
for (const input of conflicts[target.name]) {
if (input.name === target.name) continue;
if (input.checked) {
alert("Error: Conflict select");
location.reload();
return
}
}
for (const input of conflicts[target.name]) {
if (input.name === target.name) continue;
if (target.checked) {
if (input.getAttribute("disabled") === null) {
input.setAttribute("disabled", "true");
changedInputs.push({ input, disable: false });
}
} else {
if (input.getAttribute("disabled") === "true") {
input.removeAttribute("disabled");
changedInputs.push({ input, disable: true });
}
}
}
// post request
const resp = await fetch("/api/record", {
method: "POST",
headers: { "Content-Type": "appliction/json" },
body: JSON.stringify({
name: target.name,
checked: target.checked,
user,
}),
});
if (!resp.ok) {
const json = await resp.json();
alert(json.error);
// revert conflict changed input
for (const { input, disable } of changedInputs) {
if (disable) {
input.addAttribute("disabled", "true");
} else {
input.removeAttribute("disabled");
}
}
}
};
const handleInput = (event: React.ChangeEvent<HTMLInputElement>): boolean => {
const { target } = event;
// validate
if (target?.children[0]?.tagName !== "TABLE") {
console.log("not a table");
return false;
}
console.log(target.innerHTML);
// turn off editable
setEditable(false);
const table = target.children[0];
table.setAttribute("border", "1");
// mark cell
const conflictsTmp: ConflictsTmp = {};
const tbody = table.children[table.children.length - 1];
for (const tr_index in tbody.children) {
const tr = tbody.children[tr_index];
const row: (HTMLInputElement | null)[] = [];
for (const td_index in tr.children) {
const td = tr.children[td_index];
if (td.tagName !== "TD") continue;
if (td.getAttribute("bgcolor")?.toUpperCase() !== "#39CEFF") {
row.push(null);
continue;
}
const index = `${tr_index},${td_index}`;
const placeholders = td.textContent?.trim().split(",");
if (placeholders === undefined) continue;
if (conflictsTmp[index] === undefined) conflictsTmp[index] = new Set();
for (const ph of placeholders) conflictsTmp[index].add(ph);
// mount click event
const input = document.createElement("input");
input.setAttribute("type", "checkbox");
input.onchange = handleSelect;
input.name = index;
td.innerHTML = "";
td.appendChild(input);
indexToElement[index] = input;
row.push(input);
}
marks.push(row);
}
// resolve conflicts
for (const index in conflictsTmp) {
if (conflicts[index] === undefined) conflicts[index] = [];
for (const ph of Array.from(conflictsTmp[index])) {
for (const conflictIndex in conflictsTmp) {
if (conflictsTmp[conflictIndex].has(ph))
conflicts[index].push(indexToElement[conflictIndex]);
}
}
}
console.log(conflicts);
return true;
};
const refresh = async () => {
const resp = await fetch(`/api/record?name=${user}`);
const json = await resp.json();
const occupied: string[] = json.occupied;
const myselect: string[] = json.myselect;
console.log(json);
for (const index in indexToElement) {
if (occupied.includes(index)) {
indexToElement[index].style.display = "none";
} else {
indexToElement[index].style.display = "";
}
indexToElement[index].checked = myselect.includes(index);
}
};
React.useEffect(() => {
const interval = setInterval(() => {
refresh();
}, 1000);
return () => {
clearInterval(interval);
};
});
React.useEffect(() => {
fetch("/api/html")
.then((resp) => resp.json())
.then((json) => {
console.log(ref);
ref.current.innerHTML = json.html;
})
.then(() => {
handleInput({ target: ref.current });
refresh();
});
}, []);
return (
<>
<button onClick={refresh}>Test</button>
<span>Login as {user}</span>
<div
ref={ref}
contentEditable={editable}
style={{
overflow: "scroll",
}}
onInput={handleInput}
></div>
</>
);
};
export default Timetable;

4
config/index.ts Normal file
View File

@@ -0,0 +1,4 @@
export default {
begin: false,
limit: 2,
}

View File

@@ -1,6 +1,9 @@
/** @type {import('next').NextConfig} */ /** @type {import('next').NextConfig} */
const nextConfig = { const nextConfig = {
reactStrictMode: true, reactStrictMode: true,
typescript: {
ignoreBuildErrors: true,
},
} }
module.exports = nextConfig module.exports = nextConfig

23
pages/api/admin.ts Normal file
View File

@@ -0,0 +1,23 @@
import type { NextApiRequest, NextApiResponse } from "next";
import store from "@/store";
export default function handler(
req: NextApiRequest,
res: NextApiResponse<Record<string, string>>,
) {
if (req.method === 'POST') {
// update store
console.log('admin', req.body)
const json = req.body
for (const key in json) {
store[key] = json[key];
}
const keys = Object.keys(json)
for (const key in store) {
if (json[key] === undefined) {
delete store[key]
}
}
}
res.status(200).json(store);
}

10
pages/api/begin.ts Normal file
View File

@@ -0,0 +1,10 @@
import type { NextApiRequest, NextApiResponse } from "next";
import config from "@/config";
export default function handler(
req: NextApiRequest,
res: NextApiResponse,
) {
config.begin = true;
res.status(200).json(config);
}

View File

@@ -1,13 +0,0 @@
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
import type { NextApiRequest, NextApiResponse } from 'next'
type Data = {
name: string
}
export default function handler(
req: NextApiRequest,
res: NextApiResponse<Data>
) {
res.status(200).json({ name: 'John Doe' })
}

467
pages/api/html.ts Normal file
View File

@@ -0,0 +1,467 @@
import type { NextApiRequest, NextApiResponse } from "next";
import store from "@/store";
export default function handler(
req: NextApiRequest,
res: NextApiResponse<Record<string, string>>,
) {
res.status(200).json({
html: `
<table cellspacing="0" border="0">
<colgroup width="141"></colgroup>
<colgroup width="173" span="4"></colgroup>
<colgroup width="189"></colgroup>
<colgroup width="232"></colgroup>
<colgroup width="172"></colgroup>
<colgroup width="189"></colgroup>
<tbody><tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" height="38" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC" color="#000000">T6值班</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月6日/周一</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月7日/周二</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月8日/周三</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月9日/周四</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月10日/周五</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC" color="#000000">T6值班</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月11日/周六</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月12日/周日</font></b></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">08:00-10:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">1</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">2</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">4</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">5</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">6</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">09:00-12:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">32</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">38</font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">10:00-12:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">7</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">8</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">9</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">10</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">11</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">12:00-15:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">33</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">39</font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">12:00-14:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">12</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">13</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">14</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">15</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">16</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">15:00-17:30</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">34</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">40</font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">14:00-16:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">17</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">18</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">19</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">20</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">21</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">16:00-18:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">22</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">23</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">24</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">25</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">26</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">18:00-21:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">27</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">28</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">29</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">30</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">31</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" height="30" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC" color="#000000">T6值班</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月13日/周一</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月14日/周二</font></b></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">08:00-10:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">44</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">50</font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">10:00-12:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">45</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">51</font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">12:00-14:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">46</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">52</font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">14:00-16:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">47</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">53</font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">16:00-18:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">48</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">54</font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">18:00-21:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">49</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">55</font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td valign="bottom" height="23" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td valign="bottom" height="23" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" height="41" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC" color="#000000">V26值班</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月6日/周一</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月7日/周二</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月8日/周三</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月9日/周四</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月10日/周五</font></b></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">08:00-10:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">1</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">2</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">4</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">5</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">6</font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">10:00-12:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">7</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">8</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">9</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">10</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">11</font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">12:00-14:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">12</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">13</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">14</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">15</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">16</font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">14:00-16:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">17</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">18</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">19</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">20</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">21</font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">16:00-18:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">22</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">23</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">24</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">25</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">26</font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">18:00-21:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">27</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">28</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">29</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">30</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">31</font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" height="30" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC" color="#000000">V26值班</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月13日/周一</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月14日/周二</font></b></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">08:00-10:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">44</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">50</font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">10:00-12:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">45</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">51</font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">12:00-14:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">46</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">52</font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">14:00-16:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">47</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">53</font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">16:00-18:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">48</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">54</font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">18:00-21:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">49</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">55</font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="center"><font size="4" face="Noto Sans CJK SC"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td valign="bottom" height="23" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" height="42" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">电话值班</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月6日/周一</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月7日/周二</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月8日/周三</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月9日/周四</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月10日/周五</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">电话值班+图书馆值班</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月11日/周六</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月12日/周日</font></b></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">07:50-08:50</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">1</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">2</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">4</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">5</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">6</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">09:00-12:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">32</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">38</font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">11:30-13:30</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">7,12</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">8,13</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">9,14</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">10,15</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">11,16</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">12:00-15:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">33</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">39</font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="83" bgcolor="#729FCF" align="center"><font size="4" face="Noto Sans CJK SC" color="#000000">17:00-21:00<br>电话值班+图书馆值班</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">22,27</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">23,28</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">24,29</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">25,30</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">36,31</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">15:00-17:30</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">34</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">40</font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" height="30" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">电话值班</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月13日/周一</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="middle" bgcolor="#729FCF" align="center"><b><font size="4" face="Noto Sans CJK SC">2月14日/周二</font></b></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" align="center"><font size="4" color="#000000"><br></font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">17:30-21:00</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">35</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">36</font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">07:50-08:50</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">44</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">50</font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="23" bgcolor="#729FCF" align="center"><font size="4" face="幼圆" color="#000000">11:30-13:30</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">45,46</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">51,52</font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" height="83" bgcolor="#729FCF" align="center"><font size="4" face="Noto Sans CJK SC" color="#000000">17:00-21:00<br>电话值班+图书馆值班</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">48,49</font></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" valign="bottom" bgcolor="#39CEFF" align="center"><font size="4" face="Noto Sans CJK SC">54,55</font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
<td valign="bottom" align="left"><font size="4" color="#000000"><br></font></td>
</tr>
</tbody></table>
<style type="text/css">body,div,table,thead,tbody,tfoot,tr,th,td,p { font-family:"等线"; font-size:x-small }a.comment-indicator:hover + comment { background:#ffd; position:absolute; display:block; border:1px solid black; padding:0.5em; }a.comment-indicator { background:red; display:inline-block; border:1px solid black; width:0.5em; height:0.5em; }comment { display:none; }</style>
edit.tsx:6:12
`
});
}

10
pages/api/limit.ts Normal file
View File

@@ -0,0 +1,10 @@
import type { NextApiRequest, NextApiResponse } from "next";
import config from "@/config";
export default function handler(
req: NextApiRequest,
res: NextApiResponse,
) {
config.limit = parseInt(req.query.limit) || 2;
res.status(200).json(config);
}

10
pages/api/pause.ts Normal file
View File

@@ -0,0 +1,10 @@
import type { NextApiRequest, NextApiResponse } from "next";
import config from "@/config";
export default function handler(
req: NextApiRequest,
res: NextApiResponse,
) {
config.begin = false;
res.status(200).json(config);
}

57
pages/api/record.ts Normal file
View File

@@ -0,0 +1,57 @@
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
import type { NextApiRequest, NextApiResponse } from "next";
import store from "@/store";
import config from "@/config";
export default function handler(
req: NextApiRequest,
res: NextApiResponse,
) {
if (req.method === "POST") {
if (!config.begin) {
res.status(400).json({
error: "还没到开时间哦",
});
return;
}
const json = JSON.parse(req.body);
console.log("request", json);
if (json.checked) {
let count = 0;
for (const name in store) {
if (store[name] == json.user) {
count += 1;
if (count >= config.limit) {
res.status(403).json({
error: `超过选择数量限制: ${config.limit}`,
});
return;
}
}
}
// check whether it is alreadly occupied
if (store[json.name] !== undefined) {
res.status(403).json({
error: `当前位置已被他人占用`,
});
return;
}
store[json.name] = json.user;
} else {
delete store[json.name];
}
}
console.log("query", req.query);
const resp = {
occupied: [],
myselect: [],
};
for (const key in store) {
if (store[key] !== req.query.name) {
resp.occupied.push(key);
} else {
resp.myselect.push(key);
}
}
res.status(200).json(resp);
}

11
pages/edit.tsx Normal file
View File

@@ -0,0 +1,11 @@
import React from "react";
const EditPage = () => {
return <div
onInput={(event) => {
console.log(event.currentTarget.innerHTML);
}}
contentEditable="true"></div>;
};
export default EditPage;

View File

@@ -1,11 +1,15 @@
import Head from 'next/head' import React from "react";
import Image from 'next/image' import Head from "next/head";
import { Inter } from '@next/font/google' import Timetable from "@/components/Timetable";
import styles from '@/styles/Home.module.css'
const inter = Inter({ subsets: ['latin'] })
export default function Home() { export default function Home() {
const [user, setUser] = React.useState("");
const [begin, setBegin] = React.useState(false);
React.useEffect(() => {
setUser(localStorage.getItem("user") || "");
}, []);
return ( return (
<> <>
<Head> <Head>
@@ -14,110 +18,31 @@ export default function Home() {
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/favicon.ico" />
</Head> </Head>
<main className={styles.main}> <main>
<div className={styles.description}> {!begin && (
<p>
Get started by editing&nbsp;
<code className={styles.code}>pages/index.tsx</code>
</p>
<div> <div>
<a <input
href="https://vercel.com?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app" placeholder="在这输你的名字"
target="_blank" value={user}
rel="noopener noreferrer" onChange={(event) => setUser(event.target.value)}
>
By{' '}
<Image
src="/vercel.svg"
alt="Vercel Logo"
className={styles.vercelLogo}
width={100}
height={24}
priority
/>
</a>
</div>
</div>
<div className={styles.center}>
<Image
className={styles.logo}
src="/next.svg"
alt="Next.js Logo"
width={180}
height={37}
priority
/>
<div className={styles.thirteen}>
<Image
src="/thirteen.svg"
alt="13"
width={40}
height={31}
priority
/> />
<button
onClick={() => {
if (user.trim() === "") {
alert("姓名不能为空");
return;
}
setUser(user.trim());
setBegin(true);
localStorage.setItem("user", user);
}}
>
Login
</button>
</div> </div>
</div> )}
{begin && <Timetable user={user} />}
<div className={styles.grid}>
<a
href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
className={styles.card}
target="_blank"
rel="noopener noreferrer"
>
<h2 className={inter.className}>
Docs <span>-&gt;</span>
</h2>
<p className={inter.className}>
Find in-depth information about Next.js features and&nbsp;API.
</p>
</a>
<a
href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
className={styles.card}
target="_blank"
rel="noopener noreferrer"
>
<h2 className={inter.className}>
Learn <span>-&gt;</span>
</h2>
<p className={inter.className}>
Learn about Next.js in an interactive course with&nbsp;quizzes!
</p>
</a>
<a
href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
className={styles.card}
target="_blank"
rel="noopener noreferrer"
>
<h2 className={inter.className}>
Templates <span>-&gt;</span>
</h2>
<p className={inter.className}>
Discover and deploy boilerplate example Next.js&nbsp;projects.
</p>
</a>
<a
href="https://vercel.com/new?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
className={styles.card}
target="_blank"
rel="noopener noreferrer"
>
<h2 className={inter.className}>
Deploy <span>-&gt;</span>
</h2>
<p className={inter.className}>
Instantly deploy your Next.js site to a shareable URL
with&nbsp;Vercel.
</p>
</a>
</div>
</main> </main>
</> </>
) );
} }

2
store/index.ts Normal file
View File

@@ -0,0 +1,2 @@
const store: Record<string, string> = {};
export default store;

View File

@@ -1,278 +0,0 @@
.main {
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
padding: 6rem;
min-height: 100vh;
}
.description {
display: inherit;
justify-content: inherit;
align-items: inherit;
font-size: 0.85rem;
max-width: var(--max-width);
width: 100%;
z-index: 2;
font-family: var(--font-mono);
}
.description a {
display: flex;
justify-content: center;
align-items: center;
gap: 0.5rem;
}
.description p {
position: relative;
margin: 0;
padding: 1rem;
background-color: rgba(var(--callout-rgb), 0.5);
border: 1px solid rgba(var(--callout-border-rgb), 0.3);
border-radius: var(--border-radius);
}
.code {
font-weight: 700;
font-family: var(--font-mono);
}
.grid {
display: grid;
grid-template-columns: repeat(4, minmax(25%, auto));
width: var(--max-width);
max-width: 100%;
}
.card {
padding: 1rem 1.2rem;
border-radius: var(--border-radius);
background: rgba(var(--card-rgb), 0);
border: 1px solid rgba(var(--card-border-rgb), 0);
transition: background 200ms, border 200ms;
}
.card span {
display: inline-block;
transition: transform 200ms;
}
.card h2 {
font-weight: 600;
margin-bottom: 0.7rem;
}
.card p {
margin: 0;
opacity: 0.6;
font-size: 0.9rem;
line-height: 1.5;
max-width: 30ch;
}
.center {
display: flex;
justify-content: center;
align-items: center;
position: relative;
padding: 4rem 0;
}
.center::before {
background: var(--secondary-glow);
border-radius: 50%;
width: 480px;
height: 360px;
margin-left: -400px;
}
.center::after {
background: var(--primary-glow);
width: 240px;
height: 180px;
z-index: -1;
}
.center::before,
.center::after {
content: '';
left: 50%;
position: absolute;
filter: blur(45px);
transform: translateZ(0);
}
.logo,
.thirteen {
position: relative;
}
.thirteen {
display: flex;
justify-content: center;
align-items: center;
width: 75px;
height: 75px;
padding: 25px 10px;
margin-left: 16px;
transform: translateZ(0);
border-radius: var(--border-radius);
overflow: hidden;
box-shadow: 0px 2px 8px -1px #0000001a;
}
.thirteen::before,
.thirteen::after {
content: '';
position: absolute;
z-index: -1;
}
/* Conic Gradient Animation */
.thirteen::before {
animation: 6s rotate linear infinite;
width: 200%;
height: 200%;
background: var(--tile-border);
}
/* Inner Square */
.thirteen::after {
inset: 0;
padding: 1px;
border-radius: var(--border-radius);
background: linear-gradient(
to bottom right,
rgba(var(--tile-start-rgb), 1),
rgba(var(--tile-end-rgb), 1)
);
background-clip: content-box;
}
/* Enable hover only on non-touch devices */
@media (hover: hover) and (pointer: fine) {
.card:hover {
background: rgba(var(--card-rgb), 0.1);
border: 1px solid rgba(var(--card-border-rgb), 0.15);
}
.card:hover span {
transform: translateX(4px);
}
}
@media (prefers-reduced-motion) {
.thirteen::before {
animation: none;
}
.card:hover span {
transform: none;
}
}
/* Mobile */
@media (max-width: 700px) {
.content {
padding: 4rem;
}
.grid {
grid-template-columns: 1fr;
margin-bottom: 120px;
max-width: 320px;
text-align: center;
}
.card {
padding: 1rem 2.5rem;
}
.card h2 {
margin-bottom: 0.5rem;
}
.center {
padding: 8rem 0 6rem;
}
.center::before {
transform: none;
height: 300px;
}
.description {
font-size: 0.8rem;
}
.description a {
padding: 1rem;
}
.description p,
.description div {
display: flex;
justify-content: center;
position: fixed;
width: 100%;
}
.description p {
align-items: center;
inset: 0 0 auto;
padding: 2rem 1rem 1.4rem;
border-radius: 0;
border: none;
border-bottom: 1px solid rgba(var(--callout-border-rgb), 0.25);
background: linear-gradient(
to bottom,
rgba(var(--background-start-rgb), 1),
rgba(var(--callout-rgb), 0.5)
);
background-clip: padding-box;
backdrop-filter: blur(24px);
}
.description div {
align-items: flex-end;
pointer-events: none;
inset: auto 0 0;
padding: 2rem;
height: 200px;
background: linear-gradient(
to bottom,
transparent 0%,
rgb(var(--background-end-rgb)) 40%
);
z-index: 1;
}
}
/* Tablet and Smaller Desktop */
@media (min-width: 701px) and (max-width: 1120px) {
.grid {
grid-template-columns: repeat(2, 50%);
}
}
@media (prefers-color-scheme: dark) {
.vercelLogo {
filter: invert(1);
}
.logo,
.thirteen img {
filter: invert(1) drop-shadow(0 0 0.3rem #ffffff70);
}
}
@keyframes rotate {
from {
transform: rotate(360deg);
}
to {
transform: rotate(0deg);
}
}

View File

@@ -1,107 +0,0 @@
:root {
--max-width: 1100px;
--border-radius: 12px;
--font-mono: ui-monospace, Menlo, Monaco, 'Cascadia Mono', 'Segoe UI Mono',
'Roboto Mono', 'Oxygen Mono', 'Ubuntu Monospace', 'Source Code Pro',
'Fira Mono', 'Droid Sans Mono', 'Courier New', monospace;
--foreground-rgb: 0, 0, 0;
--background-start-rgb: 214, 219, 220;
--background-end-rgb: 255, 255, 255;
--primary-glow: conic-gradient(
from 180deg at 50% 50%,
#16abff33 0deg,
#0885ff33 55deg,
#54d6ff33 120deg,
#0071ff33 160deg,
transparent 360deg
);
--secondary-glow: radial-gradient(
rgba(255, 255, 255, 1),
rgba(255, 255, 255, 0)
);
--tile-start-rgb: 239, 245, 249;
--tile-end-rgb: 228, 232, 233;
--tile-border: conic-gradient(
#00000080,
#00000040,
#00000030,
#00000020,
#00000010,
#00000010,
#00000080
);
--callout-rgb: 238, 240, 241;
--callout-border-rgb: 172, 175, 176;
--card-rgb: 180, 185, 188;
--card-border-rgb: 131, 134, 135;
}
@media (prefers-color-scheme: dark) {
:root {
--foreground-rgb: 255, 255, 255;
--background-start-rgb: 0, 0, 0;
--background-end-rgb: 0, 0, 0;
--primary-glow: radial-gradient(rgba(1, 65, 255, 0.4), rgba(1, 65, 255, 0));
--secondary-glow: linear-gradient(
to bottom right,
rgba(1, 65, 255, 0),
rgba(1, 65, 255, 0),
rgba(1, 65, 255, 0.3)
);
--tile-start-rgb: 2, 13, 46;
--tile-end-rgb: 2, 5, 19;
--tile-border: conic-gradient(
#ffffff80,
#ffffff40,
#ffffff30,
#ffffff20,
#ffffff10,
#ffffff10,
#ffffff80
);
--callout-rgb: 20, 20, 20;
--callout-border-rgb: 108, 108, 108;
--card-rgb: 100, 100, 100;
--card-border-rgb: 200, 200, 200;
}
}
* {
box-sizing: border-box;
padding: 0;
margin: 0;
}
html,
body {
max-width: 100vw;
overflow-x: hidden;
}
body {
color: rgb(var(--foreground-rgb));
background: linear-gradient(
to bottom,
transparent,
rgb(var(--background-end-rgb))
)
rgb(var(--background-start-rgb));
}
a {
color: inherit;
text-decoration: none;
}
@media (prefers-color-scheme: dark) {
html {
color-scheme: dark;
}
}

13
test.ts Normal file
View File

@@ -0,0 +1,13 @@
const json = await fetch("https://itsc.yongyuancv.cn/api/admin").then((resp) =>
resp.json()
);
const result = await fetch("http://localhost:3000/api/admin", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(json),
}).then(resp => resp.text())
console.log(result)