Commit 8fa8ef2e by duxingshan

Merge remote-tracking branch 'origin/master'

parents 7a11f08a 8d6055af
import request from "@/utils/request";
// 报修
export function listTeacherbx(query) {
return request({
url: "/teacher/teacherjy/bxlist",
method: "get",
params: query,
});
}
// 领用
export function listTeacherly(query) {
return request({
url: "/teacher/teacherjy/lylist",
method: "get",
params: query,
});
}
// 借用
export function listTeacherjy(query) {
return request({
url: "/teacher/teacherjy/jylist",
method: "get",
params: query,
});
}
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693271473479" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="31779" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M618.688 214.016c27.2 37.76 32.32 69.952 22.592 132.16-7.68 48.32-7.68 53.888 5.12 53.888 12.288 0 22.528 91.648-27.2 107.712 0 0-2.56 53.888-20.032 75.52-12.288 16.128-24.576 16.128 24.64 62.208 44.608 40.576 122.112 72.768 181.568 94.464 59.52 21.632 72.32 78.272 72.32 156.032H512v-0.576H146.304c0-78.272 12.288-132.16 72.32-156.032 59.52-24.448 136.96-53.888 181.568-94.4 49.728-45.568 37.44-45.568 24.64-62.208-17.472-21.696-20.032-75.52-20.032-75.52-51.84-15.552-39.488-107.2-27.2-107.2 12.352 0 12.352-5.568 5.12-53.888-9.728-62.208-5.12-94.4 22.592-132.16 25.6-35.584 97.536-42.56 105.856-43.264l0.832-0.064s79.488 5.504 106.688 43.328zM805.376 460.8h0.832c6.4 0.384 48.384 3.392 63.232 21.76 18.176 18.432 20.288 35.008 14.08 65.792-5.76 25.6-5.76 27.456 2.048 27.456 7.872 0 14.08 45.824-16.128 52.992 0 0-2.048 27.456-11.968 38.336-7.872 7.104-16.128 7.104 14.08 30.784 25.984 19.968 72.32 36.48 108.224 47.36 33.6 10.048 42.88 35.52 44.096 69.504l0.128 8.704h-96.256s6.144-76.288-56.256-95.104c-59.904-18.048-116.096-45.44-116.096-45.44s7.872-40.256-4.16-49.28c-21.888-18.048-17.728-30.784-7.808-54.464 9.92-23.68 9.92-39.872 7.808-56.384-1.6-18.432-19.84-27.456-19.84-27.456 3.776-3.712 5.824-8.96 9.984-12.8 14.848-18.368 56.832-21.376 63.232-21.76h1.6-0.832z m-522.752 21.76c4.16 3.84 6.208 9.088 9.92 12.8 0 0-18.176 9.024-19.84 27.456-2.048 16.512-2.048 32.64 7.872 56.32s14.08 36.48-7.808 54.528c-12.032 9.024-4.16 49.28-4.16 49.28s-56.192 27.392-116.096 45.44c-62.4 18.816-56.256 95.104-56.256 95.104H0c0-38.4 7.872-67.264 44.16-78.208 36.032-10.88 82.304-27.392 108.352-47.36 30.08-23.68 21.888-23.68 14.08-30.784-9.984-10.88-12.032-38.4-12.032-38.4-30.208-7.04-24-52.928-16.128-52.928s7.872-1.92 2.048-27.456c-6.208-30.784-4.096-47.36 14.08-65.728 14.848-18.432 56.832-21.44 63.232-21.76l0.832-0.064s47.936 1.92 64 21.76z" p-id="31780"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693207404210" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4728" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M224 64A96 96 0 0 0 128 160v704A96 96 0 0 0 224 960H512a32 32 0 0 0 0-64H224a32 32 0 0 1-32-32v-704a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32V384a32 32 0 0 0 64 0V160A96 96 0 0 0 800 64h-576z m512 416a64 64 0 0 0-64 64v144.896a32 32 0 0 1-3.392 14.336l-82.496 164.928a96 96 0 0 0-10.112 42.944v16.896a64 64 0 0 0 64 64h256a64 64 0 0 0 64-64v-16.896a96 96 0 0 0-10.112-42.88l-82.56-165.056a32 32 0 0 1-3.328-14.272V544a64 64 0 0 0-64-64h-64z m0 64h64v144.896c0 14.912 3.456 29.632 10.112 42.88l82.56 165.056a32 32 0 0 1 3.328 14.272v16.896h-256v-16.896a32 32 0 0 1 3.392-14.336l82.496-164.928a96 96 0 0 0 10.112-42.944V544zM256 352a32 32 0 0 1 32-32h256a32 32 0 0 1 0 64h-256a32 32 0 0 1-32-32zM288 448a32 32 0 0 0 0 64h192a32 32 0 0 0 0-64h-192z" fill="#2A2E3C" fill-opacity=".64" p-id="4729"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693207404210" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4728" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M224 64A96 96 0 0 0 128 160v704A96 96 0 0 0 224 960H512a32 32 0 0 0 0-64H224a32 32 0 0 1-32-32v-704a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32V384a32 32 0 0 0 64 0V160A96 96 0 0 0 800 64h-576z m512 416a64 64 0 0 0-64 64v144.896a32 32 0 0 1-3.392 14.336l-82.496 164.928a96 96 0 0 0-10.112 42.944v16.896a64 64 0 0 0 64 64h256a64 64 0 0 0 64-64v-16.896a96 96 0 0 0-10.112-42.88l-82.56-165.056a32 32 0 0 1-3.328-14.272V544a64 64 0 0 0-64-64h-64z m0 64h64v144.896c0 14.912 3.456 29.632 10.112 42.88l82.56 165.056a32 32 0 0 1 3.328 14.272v16.896h-256v-16.896a32 32 0 0 1 3.392-14.336l82.496-164.928a96 96 0 0 0 10.112-42.944V544zM256 352a32 32 0 0 1 32-32h256a32 32 0 0 1 0 64h-256a32 32 0 0 1-32-32zM288 448a32 32 0 0 0 0 64h192a32 32 0 0 0 0-64h-192z" fill="#2A2E3C" fill-opacity=".64" p-id="4729"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693210995992" class="icon" viewBox="0 0 1026 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="30500" xmlns:xlink="http://www.w3.org/1999/xlink" width="200.390625" height="200"><path d="M118.1696 484.4544h196.9152a118.1696 118.1696 0 0 0 118.1696-118.1696V169.3696A118.1696 118.1696 0 0 0 315.0848 51.2H118.1696A118.1696 118.1696 0 0 0 0 169.3696v196.9152a118.1696 118.1696 0 0 0 118.1696 118.1696z m-39.3728-315.136c0-21.76 17.6128-39.3728 39.3728-39.3728l196.9152 0.0512c21.76 0 39.3728 17.6128 39.3728 39.3728v196.9152a39.3728 39.3728 0 0 1-39.3728 39.3728H118.1696a39.3728 39.3728 0 0 1-39.3728-39.3728V169.3184zM984.6272 720.7424h-433.2544a39.3728 39.3728 0 1 0 0 78.7456h433.2544a39.3728 39.3728 0 1 0 0-78.7456zM984.6272 208.7424h-433.2544a39.3728 39.3728 0 1 0 0 78.7456h433.2544a39.3728 39.3728 0 1 0 0-78.7456zM118.1696 996.4544h196.9152a118.1696 118.1696 0 0 0 118.1696-118.1696v-196.9152A118.1696 118.1696 0 0 0 315.0848 563.2H118.1696A118.1696 118.1696 0 0 0 0 681.3696v196.9152a118.1696 118.1696 0 0 0 118.1696 118.1696z m-39.3728-315.136c0-21.76 17.6128-39.3728 39.3728-39.3728l196.9152 0.0512c21.76 0 39.3728 17.6128 39.3728 39.3728v196.864a39.3728 39.3728 0 0 1-39.3728 39.3728H118.1696a39.3728 39.3728 0 0 1-39.3728-39.3728v-196.9152z" p-id="30501"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693210995992" class="icon" viewBox="0 0 1026 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="30500" xmlns:xlink="http://www.w3.org/1999/xlink" width="200.390625" height="200"><path d="M118.1696 484.4544h196.9152a118.1696 118.1696 0 0 0 118.1696-118.1696V169.3696A118.1696 118.1696 0 0 0 315.0848 51.2H118.1696A118.1696 118.1696 0 0 0 0 169.3696v196.9152a118.1696 118.1696 0 0 0 118.1696 118.1696z m-39.3728-315.136c0-21.76 17.6128-39.3728 39.3728-39.3728l196.9152 0.0512c21.76 0 39.3728 17.6128 39.3728 39.3728v196.9152a39.3728 39.3728 0 0 1-39.3728 39.3728H118.1696a39.3728 39.3728 0 0 1-39.3728-39.3728V169.3184zM984.6272 720.7424h-433.2544a39.3728 39.3728 0 1 0 0 78.7456h433.2544a39.3728 39.3728 0 1 0 0-78.7456zM984.6272 208.7424h-433.2544a39.3728 39.3728 0 1 0 0 78.7456h433.2544a39.3728 39.3728 0 1 0 0-78.7456zM118.1696 996.4544h196.9152a118.1696 118.1696 0 0 0 118.1696-118.1696v-196.9152A118.1696 118.1696 0 0 0 315.0848 563.2H118.1696A118.1696 118.1696 0 0 0 0 681.3696v196.9152a118.1696 118.1696 0 0 0 118.1696 118.1696z m-39.3728-315.136c0-21.76 17.6128-39.3728 39.3728-39.3728l196.9152 0.0512c21.76 0 39.3728 17.6128 39.3728 39.3728v196.864a39.3728 39.3728 0 0 1-39.3728 39.3728H118.1696a39.3728 39.3728 0 0 1-39.3728-39.3728v-196.9152z" p-id="30501"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693211059655" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="36735" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M621.67 686.49a55.21 55.21 0 0 0-17 40.91c0.13 19.7 12.42 32.26 20.14 39.9l92.51 102.64q0.53 0.59 1.09 1.14l0.07 0.07c4.51 4.39 13.89 13.53 30.39 13.53 23.42 0 41.09-17.65 41.09-41v-39c38.78 4.11 68.62 25.32 94.67 66.6 7.82 14.71 19.41 22.16 34.47 22.16 19.41 0 41-16.86 41-41a24.21 24.21 0 0 0-0.16-2.75c-0.21-1.87-0.42-4.74-0.66-8.06-1.61-22.17-5-68.29-30.26-110.27a164.36 164.36 0 0 0-58.74-57.83c-22.75-13.25-49.74-22-80.45-26.15v-31.73c0-11.16-4.9-22.46-13.43-31s-19.83-13.43-31-13.43c-17.09 0-26.72 9.88-30.82 14.1l-0.48 0.51z m31.59 39.92a6.66 6.66 0 0 1 2.15-5q0.74-0.68 1.42-1.43l84.53-92v41.31a24.28 24.28 0 0 0 22.86 24.24c106.36 6.23 135.4 67.14 144.14 127.22-14.88-18.58-31.06-32.95-49-43.56C832 761 800 753.71 764.44 755.61a24.28 24.28 0 0 0-23 24.24v44.28l-81-89.86q-0.47-0.53-1-1c-1.69-1.73-5.17-5.16-6.18-6.85zM538.13 855.62h-52.7c-20.49 0-24.89 4.39-24.89 24.88v54.16c0 20.5 4.39 24.89 24.89 24.89h52.7c20.5 0 24.89-4.39 24.89-24.89v-54.15c-1.46-20.51-5.85-24.89-24.89-24.89zM362.48 855.62h-52.7c-20.49 0-24.89 4.39-24.89 24.88v54.16c0 20.5 4.39 24.89 24.89 24.89h52.7c20.49 0 24.88-4.39 24.88-24.89v-54.15c-1.47-20.51-5.86-24.89-24.88-24.89zM362.48 667.9h-52.7c-20.49 0-24.89 4.39-24.89 24.88v52.7c0 20.49 4.39 24.88 24.89 24.88h52.7c20.49 0 24.88-4.39 24.88-24.88v-54.15c-1.47-19.04-5.86-23.43-24.88-23.43zM485.43 490.78c-20.49 0-24.88 4.39-24.88 24.88v54.16c0 20.5 4.39 24.89 24.88 24.89h52.7c20.49 0 24.88-4.39 24.88-24.89v-54.16c-1.46-20.49-5.85-24.88-24.88-24.88zM538.13 667.9h-52.7c-20.49 0-24.89 4.39-24.89 24.88v52.7c0 20.49 4.39 24.88 24.89 24.88h52.7c20.5 0 24.89-4.39 24.89-24.88v-54.15c-1.46-19.04-5.85-23.43-24.89-23.43zM362.48 490.78h-52.7c-20.49 0-24.89 4.39-24.89 24.88v54.16c0 20.49 4.39 24.88 24.89 24.88h52.7c20.49 0 24.88-4.39 24.88-24.88v-54.16c-1.47-21.95-5.86-24.88-24.88-24.88z" p-id="36736"></path><path d="M914.29 427.93A28.7 28.7 0 1 0 948.68 382l-419-313.65a28.7 28.7 0 0 0-34.37 0L75.53 382a28.7 28.7 0 1 0 34.35 46l40.54-30.3v533.17a28.69 28.69 0 0 0 57.38 0v-576.1l304.65-227.63z" p-id="36737"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693211059655" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="36735" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M621.67 686.49a55.21 55.21 0 0 0-17 40.91c0.13 19.7 12.42 32.26 20.14 39.9l92.51 102.64q0.53 0.59 1.09 1.14l0.07 0.07c4.51 4.39 13.89 13.53 30.39 13.53 23.42 0 41.09-17.65 41.09-41v-39c38.78 4.11 68.62 25.32 94.67 66.6 7.82 14.71 19.41 22.16 34.47 22.16 19.41 0 41-16.86 41-41a24.21 24.21 0 0 0-0.16-2.75c-0.21-1.87-0.42-4.74-0.66-8.06-1.61-22.17-5-68.29-30.26-110.27a164.36 164.36 0 0 0-58.74-57.83c-22.75-13.25-49.74-22-80.45-26.15v-31.73c0-11.16-4.9-22.46-13.43-31s-19.83-13.43-31-13.43c-17.09 0-26.72 9.88-30.82 14.1l-0.48 0.51z m31.59 39.92a6.66 6.66 0 0 1 2.15-5q0.74-0.68 1.42-1.43l84.53-92v41.31a24.28 24.28 0 0 0 22.86 24.24c106.36 6.23 135.4 67.14 144.14 127.22-14.88-18.58-31.06-32.95-49-43.56C832 761 800 753.71 764.44 755.61a24.28 24.28 0 0 0-23 24.24v44.28l-81-89.86q-0.47-0.53-1-1c-1.69-1.73-5.17-5.16-6.18-6.85zM538.13 855.62h-52.7c-20.49 0-24.89 4.39-24.89 24.88v54.16c0 20.5 4.39 24.89 24.89 24.89h52.7c20.5 0 24.89-4.39 24.89-24.89v-54.15c-1.46-20.51-5.85-24.89-24.89-24.89zM362.48 855.62h-52.7c-20.49 0-24.89 4.39-24.89 24.88v54.16c0 20.5 4.39 24.89 24.89 24.89h52.7c20.49 0 24.88-4.39 24.88-24.89v-54.15c-1.47-20.51-5.86-24.89-24.88-24.89zM362.48 667.9h-52.7c-20.49 0-24.89 4.39-24.89 24.88v52.7c0 20.49 4.39 24.88 24.89 24.88h52.7c20.49 0 24.88-4.39 24.88-24.88v-54.15c-1.47-19.04-5.86-23.43-24.88-23.43zM485.43 490.78c-20.49 0-24.88 4.39-24.88 24.88v54.16c0 20.5 4.39 24.89 24.88 24.89h52.7c20.49 0 24.88-4.39 24.88-24.89v-54.16c-1.46-20.49-5.85-24.88-24.88-24.88zM538.13 667.9h-52.7c-20.49 0-24.89 4.39-24.89 24.88v52.7c0 20.49 4.39 24.88 24.89 24.88h52.7c20.5 0 24.89-4.39 24.89-24.88v-54.15c-1.46-19.04-5.85-23.43-24.89-23.43zM362.48 490.78h-52.7c-20.49 0-24.89 4.39-24.89 24.88v54.16c0 20.49 4.39 24.88 24.89 24.88h52.7c20.49 0 24.88-4.39 24.88-24.88v-54.16c-1.47-21.95-5.86-24.88-24.88-24.88z" p-id="36736"></path><path d="M914.29 427.93A28.7 28.7 0 1 0 948.68 382l-419-313.65a28.7 28.7 0 0 0-34.37 0L75.53 382a28.7 28.7 0 1 0 34.35 46l40.54-30.3v533.17a28.69 28.69 0 0 0 57.38 0v-576.1l304.65-227.63z" p-id="36737"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693211051376" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="35682" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M608 960c-4.88 0-9.78-1.11-14.31-3.38A32 32 0 0 1 576 928v-96H416c-17.67 0-32-14.33-32-32V672c0-17.67 14.33-32 32-32h160v-96a32 32 0 0 1 51.2-25.6l256 192c8.06 6.04 12.8 15.53 12.8 25.6s-4.74 19.56-12.8 25.6l-256 192c-5.65 4.23-12.4 6.4-19.2 6.4zM448 768h160c17.67 0 32 14.33 32 32v64l170.67-128L640 608v64c0 17.67-14.33 32-32 32H448v64zM927.98 448c-6.81 0-13.67-2.16-19.49-6.64L512 136.37 115.51 441.36c-14.01 10.78-34.1 8.16-44.88-5.85-10.78-14.01-8.15-34.1 5.85-44.87l416-320c11.5-8.85 27.52-8.85 39.02 0l416 320c14.01 10.78 16.63 30.87 5.85 44.87-6.29 8.19-15.78 12.49-25.37 12.49zM344 720h-60c-5.52 0-10-4.48-10-10v-60c0-5.52 4.48-10 10-10h60c5.52 0 10 4.48 10 10v60c0 5.52-4.48 10-10 10zM344 592h-60c-5.52 0-10-4.48-10-10v-60c0-5.52 4.48-10 10-10h60c5.52 0 10 4.48 10 10v60c0 5.52-4.48 10-10 10z" p-id="35683"></path><path d="M344 464h-60c-5.52 0-10-4.48-10-10v-60c0-5.52 4.48-10 10-10h60c5.52 0 10 4.48 10 10v60c0 5.52-4.48 10-10 10zM474.5 592h-60c-5.52 0-10-4.48-10-10v-60c0-5.52 4.48-10 10-10h60c5.52 0 10 4.48 10 10v60c0 5.52-4.48 10-10 10zM474.5 464h-60c-5.52 0-10-4.48-10-10v-60c0-5.52 4.48-10 10-10h60c5.52 0 10 4.48 10 10v60c0 5.52-4.48 10-10 10zM605 464h-60c-5.52 0-10-4.48-10-10v-60c0-5.52 4.48-10 10-10h60c5.52 0 10 4.48 10 10v60c0 5.52-4.48 10-10 10z" p-id="35684"></path><path d="M491 960H192c-17.67 0-32-14.33-32-32V343c0-17.67 14.33-32 32-32s32 14.33 32 32v553h267c17.67 0 32 14.33 32 32s-14.33 32-32 32z" p-id="35685"></path><path d="M832 574c-17.67 0-32-14.33-32-32V343c0-17.67 14.33-32 32-32s32 14.33 32 32v199c0 17.67-14.33 32-32 32z" p-id="35686"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693211051376" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="35682" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M608 960c-4.88 0-9.78-1.11-14.31-3.38A32 32 0 0 1 576 928v-96H416c-17.67 0-32-14.33-32-32V672c0-17.67 14.33-32 32-32h160v-96a32 32 0 0 1 51.2-25.6l256 192c8.06 6.04 12.8 15.53 12.8 25.6s-4.74 19.56-12.8 25.6l-256 192c-5.65 4.23-12.4 6.4-19.2 6.4zM448 768h160c17.67 0 32 14.33 32 32v64l170.67-128L640 608v64c0 17.67-14.33 32-32 32H448v64zM927.98 448c-6.81 0-13.67-2.16-19.49-6.64L512 136.37 115.51 441.36c-14.01 10.78-34.1 8.16-44.88-5.85-10.78-14.01-8.15-34.1 5.85-44.87l416-320c11.5-8.85 27.52-8.85 39.02 0l416 320c14.01 10.78 16.63 30.87 5.85 44.87-6.29 8.19-15.78 12.49-25.37 12.49zM344 720h-60c-5.52 0-10-4.48-10-10v-60c0-5.52 4.48-10 10-10h60c5.52 0 10 4.48 10 10v60c0 5.52-4.48 10-10 10zM344 592h-60c-5.52 0-10-4.48-10-10v-60c0-5.52 4.48-10 10-10h60c5.52 0 10 4.48 10 10v60c0 5.52-4.48 10-10 10z" p-id="35683"></path><path d="M344 464h-60c-5.52 0-10-4.48-10-10v-60c0-5.52 4.48-10 10-10h60c5.52 0 10 4.48 10 10v60c0 5.52-4.48 10-10 10zM474.5 592h-60c-5.52 0-10-4.48-10-10v-60c0-5.52 4.48-10 10-10h60c5.52 0 10 4.48 10 10v60c0 5.52-4.48 10-10 10zM474.5 464h-60c-5.52 0-10-4.48-10-10v-60c0-5.52 4.48-10 10-10h60c5.52 0 10 4.48 10 10v60c0 5.52-4.48 10-10 10zM605 464h-60c-5.52 0-10-4.48-10-10v-60c0-5.52 4.48-10 10-10h60c5.52 0 10 4.48 10 10v60c0 5.52-4.48 10-10 10z" p-id="35684"></path><path d="M491 960H192c-17.67 0-32-14.33-32-32V343c0-17.67 14.33-32 32-32s32 14.33 32 32v553h267c17.67 0 32 14.33 32 32s-14.33 32-32 32z" p-id="35685"></path><path d="M832 574c-17.67 0-32-14.33-32-32V343c0-17.67 14.33-32 32-32s32 14.33 32 32v199c0 17.67-14.33 32-32 32z" p-id="35686"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693210046169" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="22779" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M206.661818 553.425455h46.545455v48.407272h-46.545455zM479.418182 682.356364h46.545454v48.407272h-46.545454zM585.076364 732.16h46.545454v48.407273h-46.545454zM717.265455 716.8h46.545454v48.407273h-46.545454zM690.269091 813.149091h46.545454v48.407273h-46.545454zM432.872727 813.149091h46.545455v48.407273h-46.545455zM238.312727 660.945455h46.545455v48.407272h-46.545455zM203.869091 756.363636h46.545454v48.407273h-46.545454z" p-id="22780"></path><path d="M729.832727 472.436364l3.723637-229.934546a50.734545 50.734545 0 0 0 33.512727-12.567273 79.127273 79.127273 0 0 0 19.083636-61.905454c0-74.938182-51.665455-79.127273-55.854545-79.592727H512c-20.48 0-59.578182 18.152727-59.578182 86.574545A67.956364 67.956364 0 0 0 477.090909 232.727273a56.32 56.32 0 0 0 27.461818 10.705454v232.727273l-144.290909 264.378182V345.367273A71.214545 71.214545 0 0 0 393.309091 325.818182a76.8 76.8 0 0 0 20.48-58.181818 83.781818 83.781818 0 0 0-46.545455-67.956364 26.996364 26.996364 0 0 0-12.101818-2.792727h-218.763636a69.352727 69.352727 0 0 0-64.232727 78.196363 70.283636 70.283636 0 0 0 50.26909 67.956364c0 93.090909 4.189091 458.938182 4.189091 497.105455 0 63.767273 74.472727 95.418182 116.363637 95.418181a131.723636 131.723636 0 0 0 40.494545-7.912727 28.858182 28.858182 0 0 0 17.687273 7.447273h591.592727a57.716364 57.716364 0 0 0 50.734546-29.323637 65.629091 65.629091 0 0 0 0-66.094545c-12.567273-22.341818-185.250909-318.836364-213.643637-367.243636z m-171.287272 24.203636a27.461818 27.461818 0 0 0 3.258181-13.498182V215.04a29.789091 29.789091 0 0 0-11.636363-22.807273 29.323636 29.323636 0 0 0-25.6-3.723636 24.203636 24.203636 0 0 1-13.963637 0 23.738182 23.738182 0 0 1-2.792727-13.963636c0-20.48 4.654545-28.858182 6.981818-30.72h211.781818a46.545455 46.545455 0 0 1 4.654546 23.738181 79.127273 79.127273 0 0 1 0 19.083637 145.687273 145.687273 0 0 1-20.014546 0 28.392727 28.392727 0 0 0-21.410909 6.981818 26.530909 26.530909 0 0 0-9.309091 20.48l-4.18909 266.705454a31.650909 31.650909 0 0 0 3.723636 14.429091l59.112727 101.934546h-232.727273zM128 275.083636c0-18.152727 7.447273-20.945455 8.378182-21.410909h211.316363a24.669091 24.669091 0 0 1 10.24 17.221818 26.530909 26.530909 0 0 1-4.654545 16.756364 26.530909 26.530909 0 0 1-18.152727 5.12 27.927273 27.927273 0 0 0-27.927273 26.996364v136.843636H179.2V320.698182a28.392727 28.392727 0 0 0-26.065455-27.461818c-4.654545-0.930909-25.134545-3.258182-25.134545-18.152728z m54.458182 565.061819v-325.818182h124.276363v325.818182c0 28.858182-43.752727 44.218182-61.44 44.218181s-62.836364-21.410909-62.836363-44.218181z m710.283636 39.098181H348.16L472.436364 651.636364h296.494545l125.207273 216.901818a7.447273 7.447273 0 0 1-1.396364 10.705454z" p-id="22781"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693210046169" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="22779" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M206.661818 553.425455h46.545455v48.407272h-46.545455zM479.418182 682.356364h46.545454v48.407272h-46.545454zM585.076364 732.16h46.545454v48.407273h-46.545454zM717.265455 716.8h46.545454v48.407273h-46.545454zM690.269091 813.149091h46.545454v48.407273h-46.545454zM432.872727 813.149091h46.545455v48.407273h-46.545455zM238.312727 660.945455h46.545455v48.407272h-46.545455zM203.869091 756.363636h46.545454v48.407273h-46.545454z" p-id="22780"></path><path d="M729.832727 472.436364l3.723637-229.934546a50.734545 50.734545 0 0 0 33.512727-12.567273 79.127273 79.127273 0 0 0 19.083636-61.905454c0-74.938182-51.665455-79.127273-55.854545-79.592727H512c-20.48 0-59.578182 18.152727-59.578182 86.574545A67.956364 67.956364 0 0 0 477.090909 232.727273a56.32 56.32 0 0 0 27.461818 10.705454v232.727273l-144.290909 264.378182V345.367273A71.214545 71.214545 0 0 0 393.309091 325.818182a76.8 76.8 0 0 0 20.48-58.181818 83.781818 83.781818 0 0 0-46.545455-67.956364 26.996364 26.996364 0 0 0-12.101818-2.792727h-218.763636a69.352727 69.352727 0 0 0-64.232727 78.196363 70.283636 70.283636 0 0 0 50.26909 67.956364c0 93.090909 4.189091 458.938182 4.189091 497.105455 0 63.767273 74.472727 95.418182 116.363637 95.418181a131.723636 131.723636 0 0 0 40.494545-7.912727 28.858182 28.858182 0 0 0 17.687273 7.447273h591.592727a57.716364 57.716364 0 0 0 50.734546-29.323637 65.629091 65.629091 0 0 0 0-66.094545c-12.567273-22.341818-185.250909-318.836364-213.643637-367.243636z m-171.287272 24.203636a27.461818 27.461818 0 0 0 3.258181-13.498182V215.04a29.789091 29.789091 0 0 0-11.636363-22.807273 29.323636 29.323636 0 0 0-25.6-3.723636 24.203636 24.203636 0 0 1-13.963637 0 23.738182 23.738182 0 0 1-2.792727-13.963636c0-20.48 4.654545-28.858182 6.981818-30.72h211.781818a46.545455 46.545455 0 0 1 4.654546 23.738181 79.127273 79.127273 0 0 1 0 19.083637 145.687273 145.687273 0 0 1-20.014546 0 28.392727 28.392727 0 0 0-21.410909 6.981818 26.530909 26.530909 0 0 0-9.309091 20.48l-4.18909 266.705454a31.650909 31.650909 0 0 0 3.723636 14.429091l59.112727 101.934546h-232.727273zM128 275.083636c0-18.152727 7.447273-20.945455 8.378182-21.410909h211.316363a24.669091 24.669091 0 0 1 10.24 17.221818 26.530909 26.530909 0 0 1-4.654545 16.756364 26.530909 26.530909 0 0 1-18.152727 5.12 27.927273 27.927273 0 0 0-27.927273 26.996364v136.843636H179.2V320.698182a28.392727 28.392727 0 0 0-26.065455-27.461818c-4.654545-0.930909-25.134545-3.258182-25.134545-18.152728z m54.458182 565.061819v-325.818182h124.276363v325.818182c0 28.858182-43.752727 44.218182-61.44 44.218181s-62.836364-21.410909-62.836363-44.218181z m710.283636 39.098181H348.16L472.436364 651.636364h296.494545l125.207273 216.901818a7.447273 7.447273 0 0 1-1.396364 10.705454z" p-id="22781"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693211034459" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="34624" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M752.941176 60.235294v60.235294h150.588236v843.294118h-783.058824V120.470588H271.058824V60.235294h481.882352zM271.058824 180.705882H180.705882v722.82353h662.588236V180.705882H752.941176v60.235294H271.058824V180.705882z m271.058823 542.117647v60.235295H271.058824v-60.235295h271.058823zM752.941176 542.117647v60.235294H271.058824V542.117647h481.882352z m-90.352941-180.705882v60.235294H271.058824V361.411765h391.529411z m30.117647-240.941177H331.294118v60.235294h361.411764V120.470588z" fill="#2C374D" p-id="34625"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693211034459" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="34624" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M752.941176 60.235294v60.235294h150.588236v843.294118h-783.058824V120.470588H271.058824V60.235294h481.882352zM271.058824 180.705882H180.705882v722.82353h662.588236V180.705882H752.941176v60.235294H271.058824V180.705882z m271.058823 542.117647v60.235295H271.058824v-60.235295h271.058823zM752.941176 542.117647v60.235294H271.058824V542.117647h481.882352z m-90.352941-180.705882v60.235294H271.058824V361.411765h391.529411z m30.117647-240.941177H331.294118v60.235294h361.411764V120.470588z" fill="#2C374D" p-id="34625"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693210103734" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="26594" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M792.4 297.3c-8.5 0-16.6-3.4-22.6-9.4l-90.4-90.4c-12.5-12.5-12.5-32.7 0-45.2s32.7-12.5 45.2 0l67.8 67.8 113-113c12.5-12.5 32.7-12.5 45.2 0s12.5 32.7 0 45.2L815 288c-6 6-14.1 9.3-22.6 9.3zM544 255H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32zM792.4 618c-8.5 0-16.6-3.4-22.6-9.4l-90.4-90.4c-12.5-12.5-12.5-32.7 0-45.2s32.7-12.5 45.2 0l67.8 67.8 113-113c12.5-12.5 32.7-12.5 45.2 0s12.5 32.7 0 45.2L815 608.7c-6 6-14.1 9.3-22.6 9.3zM544 576H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32zM792.4 937.8c-8.5 0-16.6-3.4-22.6-9.4L679.4 838c-12.5-12.5-12.5-32.7 0-45.2s32.7-12.5 45.2 0l67.8 67.8 113-113c12.5-12.5 32.7-12.5 45.2 0s12.5 32.7 0 45.2L815 928.4c-6 6-14.1 9.4-22.6 9.4zM544 896H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32z" p-id="26595"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693210103734" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="26594" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M792.4 297.3c-8.5 0-16.6-3.4-22.6-9.4l-90.4-90.4c-12.5-12.5-12.5-32.7 0-45.2s32.7-12.5 45.2 0l67.8 67.8 113-113c12.5-12.5 32.7-12.5 45.2 0s12.5 32.7 0 45.2L815 288c-6 6-14.1 9.3-22.6 9.3zM544 255H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32zM792.4 618c-8.5 0-16.6-3.4-22.6-9.4l-90.4-90.4c-12.5-12.5-12.5-32.7 0-45.2s32.7-12.5 45.2 0l67.8 67.8 113-113c12.5-12.5 32.7-12.5 45.2 0s12.5 32.7 0 45.2L815 608.7c-6 6-14.1 9.3-22.6 9.3zM544 576H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32zM792.4 937.8c-8.5 0-16.6-3.4-22.6-9.4L679.4 838c-12.5-12.5-12.5-32.7 0-45.2s32.7-12.5 45.2 0l67.8 67.8 113-113c12.5-12.5 32.7-12.5 45.2 0s12.5 32.7 0 45.2L815 928.4c-6 6-14.1 9.4-22.6 9.4zM544 896H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32z" p-id="26595"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692924665966" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="26258" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M25.6 414.72C223.744 249.9584 412.928 176.6912 593.0496 195.072v823.9616H25.6V414.72z m216.1664 24.7296v192.256h135.168V439.4496h-135.168z m0 274.6368v192.256h135.168v-192.256h-135.168zM998.4 222.464C944.3328 57.7024 827.2384-15.5648 647.1168 2.7648v1016.2176H998.4V222.464z" fill="#64676F" p-id="26259"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692924665966" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="26258" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M25.6 414.72C223.744 249.9584 412.928 176.6912 593.0496 195.072v823.9616H25.6V414.72z m216.1664 24.7296v192.256h135.168V439.4496h-135.168z m0 274.6368v192.256h135.168v-192.256h-135.168zM998.4 222.464C944.3328 57.7024 827.2384-15.5648 647.1168 2.7648v1016.2176H998.4V222.464z" fill="#64676F" p-id="26259"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693210146171" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="29428" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M657.6355552 311.75111147a36.40888853 36.40888853 0 1 1 0-72.81777814h182.0444448a36.40888853 36.40888853 0 1 1 0 72.81777814v142.97770666C945.73909333 492.21176853 1021.7244448 593.35566187 1021.7244448 712.24888853a272.33848853 272.33848853 0 0 1-87.41774293 200.2488896H985.3155552a36.40888853 36.40888853 0 1 1 0 72.81777707H38.6844448a36.40888853 36.40888853 0 1 1 0-72.81777707h19.98848a92.3875552 92.3875552 0 0 1 22.13660373-80.3180096L293.54666667 598.88981333v-355.5328A81.92 81.92 0 0 1 339.05777813 93.29777813l200.24888854-0.0182048a81.92 81.92 0 0 1 45.51111146 150.04103147V493.7955552a272.41130667 272.41130667 0 0 1 72.81777707-39.04853333V311.75111147z m109.22666667 0h-36.40888854v194.4598752l-48.55125333 17.16679146A200.15786667 200.15786667 0 0 0 584.81777813 597.06936853v1.8204448l212.73713707 233.2899552a92.20551147 92.20551147 0 0 1 23.81141333 66.7192896C896.00455147 869.79015147 948.90666667 797.19082667 948.90666667 712.24888853c0-85.56088853-54.15822187-160.83626667-133.49319147-188.8711104L766.86222187 506.21098667V311.75111147zM134.62186667 881.25895147c-6.88128 7.53664-6.46257813 19.9702752 0.8192 26.92437333a15.01866667 15.01866667 0 0 0 10.37653333 4.31445333h586.7292448c8.51968 0 16.11093333-7.77329813 16.11093333-18.2044448 0-4.95160853-1.8204448-9.6483552-4.9152-13.03438186L512 627.10670187V204.4541152l32.31288853-21.62688A9.10222187 9.10222187 0 0 0 539.30666667 166.1155552h-200.24888854a9.10222187 9.10222187 0 0 0-5.00622293 16.71168L366.3644448 204.4541152v422.65258667L134.62186667 881.24074667z" p-id="29429"></path><path d="M202.5244448 876.08888853l145.6355552-163.84h182.0444448l145.6355552 163.84H202.5244448z m200.24888853-36.40888853a36.40888853 36.40888853 0 1 0 0-72.81777813 36.40888853 36.40888853 0 0 0 0 72.81777813z m91.02222187-36.40888853a18.2044448 18.2044448 0 1 0 0-36.4088896 18.2044448 18.2044448 0 0 0 0 36.4088896z" p-id="29430"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693210146171" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="29428" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M657.6355552 311.75111147a36.40888853 36.40888853 0 1 1 0-72.81777814h182.0444448a36.40888853 36.40888853 0 1 1 0 72.81777814v142.97770666C945.73909333 492.21176853 1021.7244448 593.35566187 1021.7244448 712.24888853a272.33848853 272.33848853 0 0 1-87.41774293 200.2488896H985.3155552a36.40888853 36.40888853 0 1 1 0 72.81777707H38.6844448a36.40888853 36.40888853 0 1 1 0-72.81777707h19.98848a92.3875552 92.3875552 0 0 1 22.13660373-80.3180096L293.54666667 598.88981333v-355.5328A81.92 81.92 0 0 1 339.05777813 93.29777813l200.24888854-0.0182048a81.92 81.92 0 0 1 45.51111146 150.04103147V493.7955552a272.41130667 272.41130667 0 0 1 72.81777707-39.04853333V311.75111147z m109.22666667 0h-36.40888854v194.4598752l-48.55125333 17.16679146A200.15786667 200.15786667 0 0 0 584.81777813 597.06936853v1.8204448l212.73713707 233.2899552a92.20551147 92.20551147 0 0 1 23.81141333 66.7192896C896.00455147 869.79015147 948.90666667 797.19082667 948.90666667 712.24888853c0-85.56088853-54.15822187-160.83626667-133.49319147-188.8711104L766.86222187 506.21098667V311.75111147zM134.62186667 881.25895147c-6.88128 7.53664-6.46257813 19.9702752 0.8192 26.92437333a15.01866667 15.01866667 0 0 0 10.37653333 4.31445333h586.7292448c8.51968 0 16.11093333-7.77329813 16.11093333-18.2044448 0-4.95160853-1.8204448-9.6483552-4.9152-13.03438186L512 627.10670187V204.4541152l32.31288853-21.62688A9.10222187 9.10222187 0 0 0 539.30666667 166.1155552h-200.24888854a9.10222187 9.10222187 0 0 0-5.00622293 16.71168L366.3644448 204.4541152v422.65258667L134.62186667 881.24074667z" p-id="29429"></path><path d="M202.5244448 876.08888853l145.6355552-163.84h182.0444448l145.6355552 163.84H202.5244448z m200.24888853-36.40888853a36.40888853 36.40888853 0 1 0 0-72.81777813 36.40888853 36.40888853 0 0 0 0 72.81777813z m91.02222187-36.40888853a18.2044448 18.2044448 0 1 0 0-36.4088896 18.2044448 18.2044448 0 0 0 0 36.4088896z" p-id="29430"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693207304202" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2576" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M890.947742 1021.243077H133.424049c-49.624615 0-93.341538-26.072615-116.972307-69.710769-23.630769-43.716923-21.425231-94.523077 5.750153-136.034462L359.570511 300.110769V27.726769c0-12.839385 10.476308-23.315692 23.236923-23.315692h258.756923a23.236923 23.236923 0 0 1 23.315692 23.315692V300.110769l337.447385 515.465846c27.175385 41.590154 29.223385 92.396308 5.592615 136.113231-23.630769 43.480615-67.347692 69.553231-116.972307 69.553231zM406.123126 51.042462v256a23.473231 23.473231 0 0 1-3.780923 12.760615L61.192665 841.019077A84.992 84.992 0 0 0 57.490511 929.476923c14.966154 28.120615 44.268308 45.528615 76.012307 45.292308h757.523693c32.295385 0 60.652308-16.935385 76.091077-45.292308a85.385846 85.385846 0 0 0-3.780923-88.457846L622.187126 319.645538a23.315692 23.315692 0 0 1-3.859692-12.681846V50.963692H406.123126z m284.199385 0H334.128049a23.315692 23.315692 0 1 1 0-46.631385h356.036923a23.315692 23.315692 0 0 1 0 46.631385z m154.939077 596.834461h-670.326154a23.315692 23.315692 0 0 1 0-46.552615h670.326154a23.315692 23.315692 0 1 1 0 46.552615z" fill="#333940" p-id="2577"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693207304202" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2576" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M890.947742 1021.243077H133.424049c-49.624615 0-93.341538-26.072615-116.972307-69.710769-23.630769-43.716923-21.425231-94.523077 5.750153-136.034462L359.570511 300.110769V27.726769c0-12.839385 10.476308-23.315692 23.236923-23.315692h258.756923a23.236923 23.236923 0 0 1 23.315692 23.315692V300.110769l337.447385 515.465846c27.175385 41.590154 29.223385 92.396308 5.592615 136.113231-23.630769 43.480615-67.347692 69.553231-116.972307 69.553231zM406.123126 51.042462v256a23.473231 23.473231 0 0 1-3.780923 12.760615L61.192665 841.019077A84.992 84.992 0 0 0 57.490511 929.476923c14.966154 28.120615 44.268308 45.528615 76.012307 45.292308h757.523693c32.295385 0 60.652308-16.935385 76.091077-45.292308a85.385846 85.385846 0 0 0-3.780923-88.457846L622.187126 319.645538a23.315692 23.315692 0 0 1-3.859692-12.681846V50.963692H406.123126z m284.199385 0H334.128049a23.315692 23.315692 0 1 1 0-46.631385h356.036923a23.315692 23.315692 0 0 1 0 46.631385z m154.939077 596.834461h-670.326154a23.315692 23.315692 0 0 1 0-46.552615h670.326154a23.315692 23.315692 0 1 1 0 46.552615z" fill="#333940" p-id="2577"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693207350870" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3585" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M942.08 0C987.328 0 1024 36.672 1024 81.92v860.16A81.92 81.92 0 0 1 942.08 1024H81.92A81.92 81.92 0 0 1 0 942.08V81.92C0 36.672 36.672 0 81.92 0z m0 51.2H81.92a30.72 30.72 0 0 0-30.72 30.72v860.16c0 16.96 13.76 30.72 30.72 30.72h860.16a30.72 30.72 0 0 0 30.72-30.72V81.92a30.72 30.72 0 0 0-30.72-30.72zM691.2 137.216v51.2H640v204.288l236.544 409.6a56.576 56.576 0 0 1-48.64 84.992H196.096a56.32 56.32 0 0 1-48.64-84.48L384 392.704V188.416h-51.2v-51.2h358.4z m-41.984 373.76H374.784l-183.296 316.928a4.672 4.672 0 0 0 0 5.12c0.96 1.6 2.752 2.56 4.608 2.56h631.296c1.92 0 3.648-0.96 4.608-2.56a5.888 5.888 0 0 0 0.512-5.12l-183.296-316.928z m11.264 169.472a61.44 61.44 0 1 1 0 122.88 61.44 61.44 0 0 1 0-122.88zM409.6 630.272a80.896 80.896 0 1 1 0 161.792 80.896 80.896 0 0 1 0-161.792z m250.88 91.136a20.48 20.48 0 1 0 0 40.96 20.48 20.48 0 0 0 0-40.96zM409.6 680.96a29.696 29.696 0 1 0 0 59.392 29.696 29.696 0 0 0 0-59.392z m177.664-135.168a35.84 35.84 0 1 1 0 71.68 35.84 35.84 0 0 1 0-71.68z m1.024-354.304h-153.6v214.528l-30.72 53.76H619.52l-31.232-53.76V191.488z" fill="#9B9B9B" p-id="3586"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693207350870" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3585" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M942.08 0C987.328 0 1024 36.672 1024 81.92v860.16A81.92 81.92 0 0 1 942.08 1024H81.92A81.92 81.92 0 0 1 0 942.08V81.92C0 36.672 36.672 0 81.92 0z m0 51.2H81.92a30.72 30.72 0 0 0-30.72 30.72v860.16c0 16.96 13.76 30.72 30.72 30.72h860.16a30.72 30.72 0 0 0 30.72-30.72V81.92a30.72 30.72 0 0 0-30.72-30.72zM691.2 137.216v51.2H640v204.288l236.544 409.6a56.576 56.576 0 0 1-48.64 84.992H196.096a56.32 56.32 0 0 1-48.64-84.48L384 392.704V188.416h-51.2v-51.2h358.4z m-41.984 373.76H374.784l-183.296 316.928a4.672 4.672 0 0 0 0 5.12c0.96 1.6 2.752 2.56 4.608 2.56h631.296c1.92 0 3.648-0.96 4.608-2.56a5.888 5.888 0 0 0 0.512-5.12l-183.296-316.928z m11.264 169.472a61.44 61.44 0 1 1 0 122.88 61.44 61.44 0 0 1 0-122.88zM409.6 630.272a80.896 80.896 0 1 1 0 161.792 80.896 80.896 0 0 1 0-161.792z m250.88 91.136a20.48 20.48 0 1 0 0 40.96 20.48 20.48 0 0 0 0-40.96zM409.6 680.96a29.696 29.696 0 1 0 0 59.392 29.696 29.696 0 0 0 0-59.392z m177.664-135.168a35.84 35.84 0 1 1 0 71.68 35.84 35.84 0 0 1 0-71.68z m1.024-354.304h-153.6v214.528l-30.72 53.76H619.52l-31.232-53.76V191.488z" fill="#9B9B9B" p-id="3586"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692863846612" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4117" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M801.1 895.75H222.9c-33.32 0-63.48-17.17-80.67-45.92-17.41-29.1-18.22-64.31-2.18-94.19 0.43-0.8 0.9-1.58 1.39-2.33l229.64-364.2V182.96c0-17.48 14.17-31.65 31.65-31.65s31.65 14.17 31.65 31.65v215.28c0 2.71-0.36 5.42-1.03 8.04-0.85 3.47-2.29 6.77-4.25 9.76L195.28 786.6c-7 14.09-1.49 26.15 1.26 30.75 2.72 4.54 10.73 15.11 26.36 15.11h578.2c15.64 0 23.64-10.57 26.36-15.11 2.75-4.61 8.27-16.66 1.27-30.75L594.95 416.1a31.76 31.76 0 0 1-4.39-10.36c-0.59-2.44-0.93-5.11-0.93-7.59V184.01c0-17.48 14.17-31.65 31.65-31.65s31.65 14.17 31.65 31.65v205.13L882.56 753.3c0.51 0.75 0.97 1.53 1.39 2.33 16.05 29.88 15.24 65.1-2.18 94.19-17.2 28.77-47.36 45.94-80.67 45.93z" fill="#A8A8A8" p-id="4118"></path><path d="M701.87 191.54H322.12c-17.48 0-31.65-14.17-31.65-31.65s14.17-31.65 31.65-31.65h379.75c17.48 0 31.65 14.17 31.65 31.65s-14.18 31.65-31.65 31.65zM675.9 767.6H346.76c-15.15 0-27.43-14.17-27.43-31.65 0-17.48 12.28-31.65 27.43-31.65H675.9c15.15 0 27.43 14.17 27.43 31.65 0 17.48-12.28 31.65-27.43 31.65z" fill="#A8A8A8" p-id="4119"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692863846612" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4117" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M801.1 895.75H222.9c-33.32 0-63.48-17.17-80.67-45.92-17.41-29.1-18.22-64.31-2.18-94.19 0.43-0.8 0.9-1.58 1.39-2.33l229.64-364.2V182.96c0-17.48 14.17-31.65 31.65-31.65s31.65 14.17 31.65 31.65v215.28c0 2.71-0.36 5.42-1.03 8.04-0.85 3.47-2.29 6.77-4.25 9.76L195.28 786.6c-7 14.09-1.49 26.15 1.26 30.75 2.72 4.54 10.73 15.11 26.36 15.11h578.2c15.64 0 23.64-10.57 26.36-15.11 2.75-4.61 8.27-16.66 1.27-30.75L594.95 416.1a31.76 31.76 0 0 1-4.39-10.36c-0.59-2.44-0.93-5.11-0.93-7.59V184.01c0-17.48 14.17-31.65 31.65-31.65s31.65 14.17 31.65 31.65v205.13L882.56 753.3c0.51 0.75 0.97 1.53 1.39 2.33 16.05 29.88 15.24 65.1-2.18 94.19-17.2 28.77-47.36 45.94-80.67 45.93z" fill="#A8A8A8" p-id="4118"></path><path d="M701.87 191.54H322.12c-17.48 0-31.65-14.17-31.65-31.65s14.17-31.65 31.65-31.65h379.75c17.48 0 31.65 14.17 31.65 31.65s-14.18 31.65-31.65 31.65zM675.9 767.6H346.76c-15.15 0-27.43-14.17-27.43-31.65 0-17.48 12.28-31.65 27.43-31.65H675.9c15.15 0 27.43 14.17 27.43 31.65 0 17.48-12.28 31.65-27.43 31.65z" fill="#A8A8A8" p-id="4119"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692923739918" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8176" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M451.764706 78.305882c-66.258824 0-120.470588 54.211765-120.470588 120.470589v421.647058h361.411764v-421.647058c0-66.258824-54.211765-120.470588-120.470588-120.470589H451.764706z m0-60.235294h120.470588c102.4 0 180.705882 78.305882 180.705882 180.705883v421.647058c0 36.141176-24.094118 60.235294-60.235294 60.235295H331.294118c-36.141176 0-60.235294-24.094118-60.235294-60.235295v-421.647058c0-102.4 78.305882-180.705882 180.705882-180.705883z" fill="#999999" p-id="8177"></path><path d="M518.023529 548.141176c-126.494118 0-180.705882 24.094118-186.729411 72.282353h373.458823c-6.023529-48.188235-60.235294-72.282353-186.729412-72.282353z m0-60.235294c156.611765 0 234.917647 42.164706 246.964706 126.494118 0 36.141176-24.094118 60.235294-54.211764 66.258824H331.294118c-36.141176 0-60.235294-24.094118-60.235294-60.235295v-12.047058c6.023529-78.305882 90.352941-120.470588 246.964705-120.470589z" fill="#999999" p-id="8178"></path><path d="M481.882353 650.541176h60.235294v210.82353h-60.235294z" fill="#999999" p-id="8179"></path><path d="M662.588235 831.247059c18.070588 0 30.117647 12.047059 30.117647 30.117647s-12.047059 30.117647-30.117647 30.117647h-301.17647c-18.070588 0-30.117647-12.047059-30.117647-30.117647s12.047059-30.117647 30.117647-30.117647h301.17647zM813.176471 620.423529c0 18.070588-12.047059 30.117647-30.117647 30.117647s-30.117647-12.047059-30.117648-30.117647V313.223529c0-12.047059 12.047059-30.117647 30.117648-30.117647s30.117647 18.070588 30.117647 30.117647v307.2zM271.058824 620.423529c0 18.070588-12.047059 30.117647-30.117648 30.117647s-30.117647-12.047059-30.117647-30.117647V313.223529c0-12.047059 12.047059-30.117647 30.117647-30.117647s30.117647 18.070588 30.117648 30.117647v307.2z" fill="#999999" p-id="8180"></path><path d="M783.058824 873.411765c0-18.070588 12.047059-30.117647 30.117647-30.117647s30.117647 12.047059 30.117647 30.117647v108.423529c0 18.070588-12.047059 30.117647-30.117647 30.117647H210.823529c-18.070588 0-30.117647-12.047059-30.117647-30.117647v-120.470588c0-18.070588 12.047059-30.117647 30.117647-30.117647s30.117647 12.047059 30.117647 30.117647v90.352941h542.117648v-78.305882z" fill="#2182FC" p-id="8181"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692923739918" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8176" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M451.764706 78.305882c-66.258824 0-120.470588 54.211765-120.470588 120.470589v421.647058h361.411764v-421.647058c0-66.258824-54.211765-120.470588-120.470588-120.470589H451.764706z m0-60.235294h120.470588c102.4 0 180.705882 78.305882 180.705882 180.705883v421.647058c0 36.141176-24.094118 60.235294-60.235294 60.235295H331.294118c-36.141176 0-60.235294-24.094118-60.235294-60.235295v-421.647058c0-102.4 78.305882-180.705882 180.705882-180.705883z" fill="#999999" p-id="8177"></path><path d="M518.023529 548.141176c-126.494118 0-180.705882 24.094118-186.729411 72.282353h373.458823c-6.023529-48.188235-60.235294-72.282353-186.729412-72.282353z m0-60.235294c156.611765 0 234.917647 42.164706 246.964706 126.494118 0 36.141176-24.094118 60.235294-54.211764 66.258824H331.294118c-36.141176 0-60.235294-24.094118-60.235294-60.235295v-12.047058c6.023529-78.305882 90.352941-120.470588 246.964705-120.470589z" fill="#999999" p-id="8178"></path><path d="M481.882353 650.541176h60.235294v210.82353h-60.235294z" fill="#999999" p-id="8179"></path><path d="M662.588235 831.247059c18.070588 0 30.117647 12.047059 30.117647 30.117647s-12.047059 30.117647-30.117647 30.117647h-301.17647c-18.070588 0-30.117647-12.047059-30.117647-30.117647s12.047059-30.117647 30.117647-30.117647h301.17647zM813.176471 620.423529c0 18.070588-12.047059 30.117647-30.117647 30.117647s-30.117647-12.047059-30.117648-30.117647V313.223529c0-12.047059 12.047059-30.117647 30.117648-30.117647s30.117647 18.070588 30.117647 30.117647v307.2zM271.058824 620.423529c0 18.070588-12.047059 30.117647-30.117648 30.117647s-30.117647-12.047059-30.117647-30.117647V313.223529c0-12.047059 12.047059-30.117647 30.117647-30.117647s30.117647 18.070588 30.117648 30.117647v307.2z" fill="#999999" p-id="8180"></path><path d="M783.058824 873.411765c0-18.070588 12.047059-30.117647 30.117647-30.117647s30.117647 12.047059 30.117647 30.117647v108.423529c0 18.070588-12.047059 30.117647-30.117647 30.117647H210.823529c-18.070588 0-30.117647-12.047059-30.117647-30.117647v-120.470588c0-18.070588 12.047059-30.117647 30.117647-30.117647s30.117647 12.047059 30.117647 30.117647v90.352941h542.117648v-78.305882z" fill="#2182FC" p-id="8181"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693276779711" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="34039" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M578.458 93.461v41.007c179.575 31.108 316.733 188.059 316.733 377.532 0 212.098-171.091 383.188-383.188 383.188s-383.188-171.091-383.188-383.188c0-199.372 154.124-364.806 349.253-381.776v428.437h323.802v-41.007h-282.796v-388.845c0 0 0 0 0 0v-41.007c-1.414 0-4.242 0-5.655 0-233.307 0-424.194 190.887-424.194 424.194s190.887 424.194 424.194 424.194 424.194-190.887 424.194-424.194c-1.414-210.684-156.953-387.43-359.152-418.539z" p-id="34040"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693276779711" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="34039" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M578.458 93.461v41.007c179.575 31.108 316.733 188.059 316.733 377.532 0 212.098-171.091 383.188-383.188 383.188s-383.188-171.091-383.188-383.188c0-199.372 154.124-364.806 349.253-381.776v428.437h323.802v-41.007h-282.796v-388.845c0 0 0 0 0 0v-41.007c-1.414 0-4.242 0-5.655 0-233.307 0-424.194 190.887-424.194 424.194s190.887 424.194 424.194 424.194 424.194-190.887 424.194-424.194c-1.414-210.684-156.953-387.43-359.152-418.539z" p-id="34040"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693208104763" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="21583" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M954.181818 581.818182l-232.727273 0c-12.846545 0-23.272727-10.426182-23.272727-23.272727 0-12.846545 10.426182-23.272727 23.272727-23.272727l232.727273 0c12.846545 0 23.272727 10.426182 23.272727 23.272727C977.454545 571.392 967.028364 581.818182 954.181818 581.818182zM954.181818 418.909091 744.727273 418.909091c-12.846545 0-23.272727-10.426182-23.272727-23.272727C721.454545 382.789818 731.880727 372.363636 744.727273 372.363636l209.454545 0C967.028364 372.363636 977.454545 382.789818 977.454545 395.636364 977.454545 408.482909 967.028364 418.909091 954.181818 418.909091zM954.181818 256 744.727273 256c-12.846545 0-23.272727-10.426182-23.272727-23.272727 0-12.846545 10.426182-23.272727 23.272727-23.272727l209.454545 0C967.028364 209.454545 977.454545 219.880727 977.454545 232.727273 977.454545 245.573818 967.028364 256 954.181818 256zM534.760727 553.890909C683.659636 602.624 791.272727 742.493091 791.272727 907.636364c0 12.846545-10.426182 23.272727-23.272727 23.272727S744.727273 920.482909 744.727273 907.636364c0-179.944727-145.873455-325.818182-325.818182-325.818182s-325.818182 145.873455-325.818182 325.818182C93.090909 920.482909 82.664727 930.909091 69.818182 930.909091S46.545455 920.482909 46.545455 907.636364c0-165.143273 107.613091-305.012364 256.512-353.745455C219.927273 511.581091 162.909091 425.472 162.909091 325.818182c0-141.405091 114.594909-256 256-256s256 114.594909 256 256C674.909091 425.472 617.844364 511.581091 534.760727 553.890909zM418.909091 116.363636C303.243636 116.363636 209.454545 210.152727 209.454545 325.818182c0 115.665455 93.789091 209.454545 209.454545 209.454545s209.454545-93.789091 209.454545-209.454545C628.363636 210.152727 534.574545 116.363636 418.909091 116.363636zM814.545455 698.181818l139.636364 0c12.846545 0 23.272727 10.426182 23.272727 23.272727 0 12.846545-10.426182 23.272727-23.272727 23.272727l-139.636364 0c-12.846545 0-23.272727-10.426182-23.272727-23.272727C791.272727 708.608 801.698909 698.181818 814.545455 698.181818z" fill="#040000" p-id="21584"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693208104763" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="21583" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M954.181818 581.818182l-232.727273 0c-12.846545 0-23.272727-10.426182-23.272727-23.272727 0-12.846545 10.426182-23.272727 23.272727-23.272727l232.727273 0c12.846545 0 23.272727 10.426182 23.272727 23.272727C977.454545 571.392 967.028364 581.818182 954.181818 581.818182zM954.181818 418.909091 744.727273 418.909091c-12.846545 0-23.272727-10.426182-23.272727-23.272727C721.454545 382.789818 731.880727 372.363636 744.727273 372.363636l209.454545 0C967.028364 372.363636 977.454545 382.789818 977.454545 395.636364 977.454545 408.482909 967.028364 418.909091 954.181818 418.909091zM954.181818 256 744.727273 256c-12.846545 0-23.272727-10.426182-23.272727-23.272727 0-12.846545 10.426182-23.272727 23.272727-23.272727l209.454545 0C967.028364 209.454545 977.454545 219.880727 977.454545 232.727273 977.454545 245.573818 967.028364 256 954.181818 256zM534.760727 553.890909C683.659636 602.624 791.272727 742.493091 791.272727 907.636364c0 12.846545-10.426182 23.272727-23.272727 23.272727S744.727273 920.482909 744.727273 907.636364c0-179.944727-145.873455-325.818182-325.818182-325.818182s-325.818182 145.873455-325.818182 325.818182C93.090909 920.482909 82.664727 930.909091 69.818182 930.909091S46.545455 920.482909 46.545455 907.636364c0-165.143273 107.613091-305.012364 256.512-353.745455C219.927273 511.581091 162.909091 425.472 162.909091 325.818182c0-141.405091 114.594909-256 256-256s256 114.594909 256 256C674.909091 425.472 617.844364 511.581091 534.760727 553.890909zM418.909091 116.363636C303.243636 116.363636 209.454545 210.152727 209.454545 325.818182c0 115.665455 93.789091 209.454545 209.454545 209.454545s209.454545-93.789091 209.454545-209.454545C628.363636 210.152727 534.574545 116.363636 418.909091 116.363636zM814.545455 698.181818l139.636364 0c12.846545 0 23.272727 10.426182 23.272727 23.272727 0 12.846545-10.426182 23.272727-23.272727 23.272727l-139.636364 0c-12.846545 0-23.272727-10.426182-23.272727-23.272727C791.272727 708.608 801.698909 698.181818 814.545455 698.181818z" fill="#040000" p-id="21584"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692923833116" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10091" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M253.28 925.63c-42.854 0-85.592-17.055-117.063-50.787-60.192-64.52-56.672-165.98 7.847-226.174L467.61 346.821a160.568 160.568 0 0 1 15.419-12.685c14.324-10.353 34.328-7.133 44.68 7.19 10.353 14.323 7.133 34.327-7.19 44.68a96.214 96.214 0 0 0-9.244 7.606l-1.549 1.446-322.003 300.408c-38.715 36.119-40.828 97.002-4.708 135.718 36.119 38.716 97.002 40.829 135.718 4.709l323.552-301.854c12.923-12.057 33.171-11.354 45.228 1.569 12.056 12.923 11.354 33.172-1.569 45.228L362.391 882.689c-30.787 28.722-69.999 42.941-109.111 42.941z" fill="" p-id="10092"></path><path d="M678.571 586.088c-17.43 0-31.699-13.983-31.985-31.477-0.289-17.671 13.802-32.23 31.473-32.52 51.582-0.844 97.478-15.047 125.918-38.968 32.217-27.098 52.661-72.296 54.063-118.942l-25.426 20.658c-23.666 19.229-53.486 28.083-83.972 24.926-30.484-3.153-57.862-17.923-77.09-41.589-19.228-23.665-28.08-53.486-24.927-83.972 3.154-30.484 17.924-57.862 41.589-77.09l11.792-9.581a164.937 164.937 0 0 0-3.448-0.036c-48.679 0-84.734 11.477-110.228 35.085C555.148 261.461 535 311.105 535 359.057c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32 0-65.936 27.529-132.39 71.845-173.43 37.351-34.589 89.067-52.128 153.714-52.128 30.384 0 59.883 5.95 87.676 17.684l52.652 22.23-46.471 33.27a51.816 51.816 0 0 0-2.481 1.873l-59.362 48.231c-10.397 8.448-16.892 20.524-18.286 34.004s2.49 26.63 10.938 37.028 20.525 16.892 34.005 18.287c13.481 1.396 26.63-2.49 37.028-10.938l59.37-48.237a50.51 50.51 0 0 0 6.008-5.797l37.839-42.96 16.771 54.737c6.552 21.381 9.873 43.637 9.873 66.147 0 31.951-6.738 64.52-19.485 94.183-13.443 31.282-33.313 58.552-57.46 78.862-54.083 45.488-127.26 53.346-166.066 53.981-0.18 0.003-0.359 0.004-0.537 0.004z" fill="" p-id="10093"></path><path d="M745.678 924.643c-29.746 0-59.362-12.212-80.622-36.15L505.13 708.416c-11.736-13.214-10.537-33.439 2.677-45.176 13.214-11.736 33.44-10.537 45.176 2.678l159.926 180.076c7.703 8.674 18.402 13.834 30.126 14.528 11.719 0.704 22.957-3.164 31.632-10.869 8.674-7.703 13.834-18.402 14.528-30.126 0.695-11.724-3.165-22.957-10.869-31.632L613.229 601.996c-11.735-13.214-10.536-33.439 2.678-45.176 13.214-11.735 33.44-10.536 45.176 2.678L826.18 745.397c39.451 44.422 35.407 112.657-9.015 152.109-20.483 18.192-46.033 27.136-71.487 27.137zM210.141 302.912l45.888-44.608 174.96 179.98-45.888 44.608z" fill="" p-id="10094"></path><path d="M209.588 334.652c-3.467 0-6.955-0.195-10.453-0.589-24.266-2.734-45.976-14.707-61.131-33.711l-27.982-35.088c-2.704-3.39-5.586-6.287-8.637-9.354-8.335-8.377-20.932-21.037-20.327-41.28 0.638-21.318 15.723-38.928 41.59-62.038 19.36-18.66 45.229-39.612 74.454-37.719 27.842 1.797 44.547 22.745 55.602 36.607l27.981 35.089c31.37 39.336 24.889 96.861-14.449 128.232-16.265 12.97-36.066 19.851-56.648 19.851zM150.41 214.479c2.951 3.044 6.244 6.612 9.648 10.881l27.982 35.089c9.368 11.746 26.546 13.683 38.292 4.314 5.639-4.497 9.197-10.982 10.017-18.26 0.82-7.278-1.205-14.392-5.702-20.031l-27.982-35.089c-2.145-2.689-7.281-9.13-10.523-12.042-3.262 1.401-11.143 5.852-25.474 19.711l-0.952 0.884c-7.161 6.383-12.019 11.107-15.306 14.543z" fill="" p-id="10095"></path><path d="M258.602 766.578m-40.498 0a40.498 40.498 0 1 0 80.996 0 40.498 40.498 0 1 0-80.996 0Z" fill="" p-id="10096"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692923833116" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10091" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M253.28 925.63c-42.854 0-85.592-17.055-117.063-50.787-60.192-64.52-56.672-165.98 7.847-226.174L467.61 346.821a160.568 160.568 0 0 1 15.419-12.685c14.324-10.353 34.328-7.133 44.68 7.19 10.353 14.323 7.133 34.327-7.19 44.68a96.214 96.214 0 0 0-9.244 7.606l-1.549 1.446-322.003 300.408c-38.715 36.119-40.828 97.002-4.708 135.718 36.119 38.716 97.002 40.829 135.718 4.709l323.552-301.854c12.923-12.057 33.171-11.354 45.228 1.569 12.056 12.923 11.354 33.172-1.569 45.228L362.391 882.689c-30.787 28.722-69.999 42.941-109.111 42.941z" fill="" p-id="10092"></path><path d="M678.571 586.088c-17.43 0-31.699-13.983-31.985-31.477-0.289-17.671 13.802-32.23 31.473-32.52 51.582-0.844 97.478-15.047 125.918-38.968 32.217-27.098 52.661-72.296 54.063-118.942l-25.426 20.658c-23.666 19.229-53.486 28.083-83.972 24.926-30.484-3.153-57.862-17.923-77.09-41.589-19.228-23.665-28.08-53.486-24.927-83.972 3.154-30.484 17.924-57.862 41.589-77.09l11.792-9.581a164.937 164.937 0 0 0-3.448-0.036c-48.679 0-84.734 11.477-110.228 35.085C555.148 261.461 535 311.105 535 359.057c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32 0-65.936 27.529-132.39 71.845-173.43 37.351-34.589 89.067-52.128 153.714-52.128 30.384 0 59.883 5.95 87.676 17.684l52.652 22.23-46.471 33.27a51.816 51.816 0 0 0-2.481 1.873l-59.362 48.231c-10.397 8.448-16.892 20.524-18.286 34.004s2.49 26.63 10.938 37.028 20.525 16.892 34.005 18.287c13.481 1.396 26.63-2.49 37.028-10.938l59.37-48.237a50.51 50.51 0 0 0 6.008-5.797l37.839-42.96 16.771 54.737c6.552 21.381 9.873 43.637 9.873 66.147 0 31.951-6.738 64.52-19.485 94.183-13.443 31.282-33.313 58.552-57.46 78.862-54.083 45.488-127.26 53.346-166.066 53.981-0.18 0.003-0.359 0.004-0.537 0.004z" fill="" p-id="10093"></path><path d="M745.678 924.643c-29.746 0-59.362-12.212-80.622-36.15L505.13 708.416c-11.736-13.214-10.537-33.439 2.677-45.176 13.214-11.736 33.44-10.537 45.176 2.678l159.926 180.076c7.703 8.674 18.402 13.834 30.126 14.528 11.719 0.704 22.957-3.164 31.632-10.869 8.674-7.703 13.834-18.402 14.528-30.126 0.695-11.724-3.165-22.957-10.869-31.632L613.229 601.996c-11.735-13.214-10.536-33.439 2.678-45.176 13.214-11.735 33.44-10.536 45.176 2.678L826.18 745.397c39.451 44.422 35.407 112.657-9.015 152.109-20.483 18.192-46.033 27.136-71.487 27.137zM210.141 302.912l45.888-44.608 174.96 179.98-45.888 44.608z" fill="" p-id="10094"></path><path d="M209.588 334.652c-3.467 0-6.955-0.195-10.453-0.589-24.266-2.734-45.976-14.707-61.131-33.711l-27.982-35.088c-2.704-3.39-5.586-6.287-8.637-9.354-8.335-8.377-20.932-21.037-20.327-41.28 0.638-21.318 15.723-38.928 41.59-62.038 19.36-18.66 45.229-39.612 74.454-37.719 27.842 1.797 44.547 22.745 55.602 36.607l27.981 35.089c31.37 39.336 24.889 96.861-14.449 128.232-16.265 12.97-36.066 19.851-56.648 19.851zM150.41 214.479c2.951 3.044 6.244 6.612 9.648 10.881l27.982 35.089c9.368 11.746 26.546 13.683 38.292 4.314 5.639-4.497 9.197-10.982 10.017-18.26 0.82-7.278-1.205-14.392-5.702-20.031l-27.982-35.089c-2.145-2.689-7.281-9.13-10.523-12.042-3.262 1.401-11.143 5.852-25.474 19.711l-0.952 0.884c-7.161 6.383-12.019 11.107-15.306 14.543z" fill="" p-id="10095"></path><path d="M258.602 766.578m-40.498 0a40.498 40.498 0 1 0 80.996 0 40.498 40.498 0 1 0-80.996 0Z" fill="" p-id="10096"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692923840489" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10235" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M859.4 816.1H284.2c-4-2.5-7.7-5.5-12-7.5-23.2-11-34-27.9-33.8-54.8 0.9-126.2 0.3-252.3 0.7-378.5 0-8.3 2.4-17.2 6.1-24.7 11.3-23.3 32.7-30.5 56.3-30.6 179.2-0.4 358.5-0.2 537.7-0.2 4.1 0 8.3 0.2 12.3 0.9 33.2 5.5 48.6 23.6 48.6 56.8 0 128.2-0.2 256.5 0.2 384.7 0.1 14.9-2.1 26.5-16.7 34.3-8.9 4.9-16.1 13-24.2 19.6zM836.2 766v-20.2c0-119.2-0.4-238.5 0.5-357.7 0.1-19-6.3-22.6-23.7-22.5-163.3 0.6-326.7 0.6-490 0-17.2-0.1-22.2 4.8-22.1 22 0.7 119.2 0.4 238.4 0.4 357.7 0 6.7 0.6 13.3 0.9 20.8 178.3-0.1 354.5-0.1 534-0.1z" fill="#3FA9F5" p-id="10236"></path><path d="M718.7 216.1c1 1.6 1.8 4 3.2 4.5 47.6 16.4 46.3 33.7 41.5 76.3h-59.5c-0.9-10.8-1.7-20-2.5-30.3H169.3V650c14 0.7 27.5 1.4 42.5 2.1V696c-36-0.4-74.7 10.6-101.6-27.6-1.7-2.5-5.3-3.6-8.1-5.3V253.4c16.6-12.4 33.1-24.8 49.7-37.2 189-0.1 377.9-0.1 566.9-0.1zM775.8 651.9v45.7h-408v-45.7h408z" fill="#3FA9F5" p-id="10237"></path><path d="M685 544.4v45.9H367.7v-45.9H685zM367.3 482.8v-45.6H511v45.6H367.3z" fill="#3FA9F5" p-id="10238"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692923840489" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10235" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M859.4 816.1H284.2c-4-2.5-7.7-5.5-12-7.5-23.2-11-34-27.9-33.8-54.8 0.9-126.2 0.3-252.3 0.7-378.5 0-8.3 2.4-17.2 6.1-24.7 11.3-23.3 32.7-30.5 56.3-30.6 179.2-0.4 358.5-0.2 537.7-0.2 4.1 0 8.3 0.2 12.3 0.9 33.2 5.5 48.6 23.6 48.6 56.8 0 128.2-0.2 256.5 0.2 384.7 0.1 14.9-2.1 26.5-16.7 34.3-8.9 4.9-16.1 13-24.2 19.6zM836.2 766v-20.2c0-119.2-0.4-238.5 0.5-357.7 0.1-19-6.3-22.6-23.7-22.5-163.3 0.6-326.7 0.6-490 0-17.2-0.1-22.2 4.8-22.1 22 0.7 119.2 0.4 238.4 0.4 357.7 0 6.7 0.6 13.3 0.9 20.8 178.3-0.1 354.5-0.1 534-0.1z" fill="#3FA9F5" p-id="10236"></path><path d="M718.7 216.1c1 1.6 1.8 4 3.2 4.5 47.6 16.4 46.3 33.7 41.5 76.3h-59.5c-0.9-10.8-1.7-20-2.5-30.3H169.3V650c14 0.7 27.5 1.4 42.5 2.1V696c-36-0.4-74.7 10.6-101.6-27.6-1.7-2.5-5.3-3.6-8.1-5.3V253.4c16.6-12.4 33.1-24.8 49.7-37.2 189-0.1 377.9-0.1 566.9-0.1zM775.8 651.9v45.7h-408v-45.7h408z" fill="#3FA9F5" p-id="10237"></path><path d="M685 544.4v45.9H367.7v-45.9H685zM367.3 482.8v-45.6H511v45.6H367.3z" fill="#3FA9F5" p-id="10238"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692923893444" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10377" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M672.14 952.959H331.406c-27.134 0-53.919-7.154-77.585-20.706a46.221 46.221 0 0 1-5.711-3.038c-0.105-0.065-0.21-0.133-0.314-0.2-2.04-1.316-3.694-2.63-4.902-3.589-0.332-0.263-0.658-0.533-0.999-0.782a183.052 183.052 0 0 1-7.127-5.276 24.857 24.857 0 0 1-4.788-3.82c-2.998-2.641-5.762-5.265-8.446-7.816-5.4-5.063-10.473-10.895-15.088-17.346-1.231-1.556-2.271-3.022-3.128-4.232-0.297-0.419-0.59-0.833-0.883-1.236-0.204-0.28-0.402-0.564-0.595-0.853a134.1 134.1 0 0 1-2.104-3.29c-0.437-0.698-0.87-1.398-1.336-2.097a26.493 26.493 0 0 1-0.799-1.279l-3.146-5.395a23.647 23.647 0 0 1-0.39-0.694c-2.442-4.509-4.568-8.992-6.323-13.334-4.371-10.041-7.553-20.362-9.722-31.534-0.47-2.348-1.033-5.184-1.344-8.515-0.615-3.593-1-7.313-1.197-11.571l-0.018-0.339c-0.155-2.921-0.314-5.94-0.314-9.315V505.63H126.58c-2.657 0-4.812-0.273-6.236-0.454l-0.319-0.04-0.191-0.025c-9.596-1.277-18.56-5.559-25.335-12.081-5.561-5.07-9.584-11.224-11.965-18.303-6.365-18.612-1.112-38.64 13.396-51.143L480.723 83.028c17.819-16.067 44.571-16.071 62.393-0.009l384.952 340.563c14.544 12.531 19.788 32.624 13.355 51.272-0.086 0.249-0.176 0.497-0.27 0.744-2.363 6.203-6.089 11.878-11.074 16.865-0.145 0.145-0.29 0.286-0.438 0.427-6.999 6.667-15.81 10.885-25.488 12.202-1.456 0.209-3.827 0.538-6.733 0.538h-48.568v69.579c0 13.785-11.175 24.96-24.96 24.96s-24.96-11.175-24.96-24.96V480.67c0-13.785 11.175-24.96 24.96-24.96h65.153l-377.12-333.633L134.953 455.71h65.153c13.785 0 24.96 11.175 24.96 24.96V796.7c0 2.056 0.113 4.198 0.244 6.679l0.022 0.408 0.009 0.18c0.111 2.451 0.313 4.379 0.635 6.066 0.196 1.028 0.327 2.068 0.393 3.113 0.046 0.726 0.335 2.17 0.614 3.568l0.029 0.151c1.484 7.666 3.645 14.675 6.606 21.429 0.109 0.25 0.215 0.501 0.316 0.754 1.031 2.579 2.325 5.323 3.848 8.16l2.597 4.45c0.578 0.886 1.134 1.771 1.688 2.657 0.359 0.575 0.717 1.151 1.092 1.727 0.295 0.409 0.59 0.825 0.887 1.244 0.607 0.857 1.235 1.743 1.643 2.241 0.373 0.456 0.729 0.925 1.069 1.406 2.849 4.035 5.78 7.443 8.964 10.422l0.144 0.135c2.338 2.222 4.57 4.343 6.778 6.302 0.335 0.243 0.666 0.497 0.991 0.759a133.009 133.009 0 0 0 7.068 5.322l0.225 0.159a74.24 74.24 0 0 1 3.006 2.297c0.185 0.146 0.402 0.319 0.599 0.473 1.049 0.438 2.066 0.945 3.047 1.521 16.378 9.627 34.991 14.715 53.827 14.715H672.14c13.785 0 24.96 11.175 24.96 24.96s-11.174 24.961-24.96 24.961z m-399.355-55.035v0z m0-0.053z m-0.001-0.119z m-0.002-0.118z m-0.001-0.059l0.001 0.004-0.001-0.004z m-0.002-0.124v0z m-0.001-0.057v0z m-0.002-0.075l0.001 0.029-0.001-0.029z m-0.002-0.053l0.001 0.034-0.001-0.034z m-0.461-4.105z m-0.007-0.036l0.004 0.018a0.15 0.15 0 0 0-0.004-0.018z" fill="#666666" p-id="10378"></path><path d="M822.058 952.91c-26.896 0-53.797-10.163-74.385-30.528l-0.096-0.096L609.902 784.61c-47.293 12.792-97.204 8.753-142.166-11.781-51.142-23.351-90.132-65.224-109.786-117.905-19.654-52.681-17.618-109.86 5.734-161.004l0.049-0.106a43.583 43.583 0 0 1 8.532-12.314c8.186-8.27 19.036-12.823 30.605-12.872l0.189-0.001c11.504 0 22.327 4.461 30.495 12.574l71.292 70.508 22.097-22.096-70.337-71.118c-3.38-3.285-6.194-7.125-8.37-11.419-5.226-10.258-6.141-21.995-2.552-33 3.591-11.01 11.253-19.954 21.575-25.186 0.309-0.156 0.619-0.306 0.934-0.449 49.744-22.668 105.515-25.179 157.033-7.068 53.048 18.613 95.679 56.777 120.025 107.46 22.025 45.847 26.702 96.971 13.602 145.577l137.661 137.66c41.392 41.019 41.729 108.067 0.735 149.51-20.648 20.873-47.917 31.33-75.191 31.33z m57.448-48.885h0.01-0.01z m-96.682-17.091c21.897 21.613 57.297 21.414 78.937-0.463 21.659-21.895 21.471-57.325-0.42-78.979l-0.096-0.096L712.918 659.07a24.958 24.958 0 0 1-5.9-25.92c14.212-40.467 11.811-84.043-6.761-122.702-18.573-38.661-51.094-67.773-91.57-81.976-36.022-12.664-74.758-12.111-110.193 1.383l81.398 82.302c9.656 9.763 9.612 25.492-0.097 35.201l-57.2 57.2c-9.709 9.71-25.438 9.754-35.201 0.098l-82.038-81.136c-14.214 36.681-14.501 76.786-0.635 113.954 14.993 40.188 44.737 72.132 83.752 89.945 38.021 17.364 80.682 19.264 120.124 5.352a24.962 24.962 0 0 1 25.953 5.889l148.274 148.274zM398.415 516.656l0.017 0.016-0.017-0.016z" fill="#666666" p-id="10379"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692923893444" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10377" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M672.14 952.959H331.406c-27.134 0-53.919-7.154-77.585-20.706a46.221 46.221 0 0 1-5.711-3.038c-0.105-0.065-0.21-0.133-0.314-0.2-2.04-1.316-3.694-2.63-4.902-3.589-0.332-0.263-0.658-0.533-0.999-0.782a183.052 183.052 0 0 1-7.127-5.276 24.857 24.857 0 0 1-4.788-3.82c-2.998-2.641-5.762-5.265-8.446-7.816-5.4-5.063-10.473-10.895-15.088-17.346-1.231-1.556-2.271-3.022-3.128-4.232-0.297-0.419-0.59-0.833-0.883-1.236-0.204-0.28-0.402-0.564-0.595-0.853a134.1 134.1 0 0 1-2.104-3.29c-0.437-0.698-0.87-1.398-1.336-2.097a26.493 26.493 0 0 1-0.799-1.279l-3.146-5.395a23.647 23.647 0 0 1-0.39-0.694c-2.442-4.509-4.568-8.992-6.323-13.334-4.371-10.041-7.553-20.362-9.722-31.534-0.47-2.348-1.033-5.184-1.344-8.515-0.615-3.593-1-7.313-1.197-11.571l-0.018-0.339c-0.155-2.921-0.314-5.94-0.314-9.315V505.63H126.58c-2.657 0-4.812-0.273-6.236-0.454l-0.319-0.04-0.191-0.025c-9.596-1.277-18.56-5.559-25.335-12.081-5.561-5.07-9.584-11.224-11.965-18.303-6.365-18.612-1.112-38.64 13.396-51.143L480.723 83.028c17.819-16.067 44.571-16.071 62.393-0.009l384.952 340.563c14.544 12.531 19.788 32.624 13.355 51.272-0.086 0.249-0.176 0.497-0.27 0.744-2.363 6.203-6.089 11.878-11.074 16.865-0.145 0.145-0.29 0.286-0.438 0.427-6.999 6.667-15.81 10.885-25.488 12.202-1.456 0.209-3.827 0.538-6.733 0.538h-48.568v69.579c0 13.785-11.175 24.96-24.96 24.96s-24.96-11.175-24.96-24.96V480.67c0-13.785 11.175-24.96 24.96-24.96h65.153l-377.12-333.633L134.953 455.71h65.153c13.785 0 24.96 11.175 24.96 24.96V796.7c0 2.056 0.113 4.198 0.244 6.679l0.022 0.408 0.009 0.18c0.111 2.451 0.313 4.379 0.635 6.066 0.196 1.028 0.327 2.068 0.393 3.113 0.046 0.726 0.335 2.17 0.614 3.568l0.029 0.151c1.484 7.666 3.645 14.675 6.606 21.429 0.109 0.25 0.215 0.501 0.316 0.754 1.031 2.579 2.325 5.323 3.848 8.16l2.597 4.45c0.578 0.886 1.134 1.771 1.688 2.657 0.359 0.575 0.717 1.151 1.092 1.727 0.295 0.409 0.59 0.825 0.887 1.244 0.607 0.857 1.235 1.743 1.643 2.241 0.373 0.456 0.729 0.925 1.069 1.406 2.849 4.035 5.78 7.443 8.964 10.422l0.144 0.135c2.338 2.222 4.57 4.343 6.778 6.302 0.335 0.243 0.666 0.497 0.991 0.759a133.009 133.009 0 0 0 7.068 5.322l0.225 0.159a74.24 74.24 0 0 1 3.006 2.297c0.185 0.146 0.402 0.319 0.599 0.473 1.049 0.438 2.066 0.945 3.047 1.521 16.378 9.627 34.991 14.715 53.827 14.715H672.14c13.785 0 24.96 11.175 24.96 24.96s-11.174 24.961-24.96 24.961z m-399.355-55.035v0z m0-0.053z m-0.001-0.119z m-0.002-0.118z m-0.001-0.059l0.001 0.004-0.001-0.004z m-0.002-0.124v0z m-0.001-0.057v0z m-0.002-0.075l0.001 0.029-0.001-0.029z m-0.002-0.053l0.001 0.034-0.001-0.034z m-0.461-4.105z m-0.007-0.036l0.004 0.018a0.15 0.15 0 0 0-0.004-0.018z" fill="#666666" p-id="10378"></path><path d="M822.058 952.91c-26.896 0-53.797-10.163-74.385-30.528l-0.096-0.096L609.902 784.61c-47.293 12.792-97.204 8.753-142.166-11.781-51.142-23.351-90.132-65.224-109.786-117.905-19.654-52.681-17.618-109.86 5.734-161.004l0.049-0.106a43.583 43.583 0 0 1 8.532-12.314c8.186-8.27 19.036-12.823 30.605-12.872l0.189-0.001c11.504 0 22.327 4.461 30.495 12.574l71.292 70.508 22.097-22.096-70.337-71.118c-3.38-3.285-6.194-7.125-8.37-11.419-5.226-10.258-6.141-21.995-2.552-33 3.591-11.01 11.253-19.954 21.575-25.186 0.309-0.156 0.619-0.306 0.934-0.449 49.744-22.668 105.515-25.179 157.033-7.068 53.048 18.613 95.679 56.777 120.025 107.46 22.025 45.847 26.702 96.971 13.602 145.577l137.661 137.66c41.392 41.019 41.729 108.067 0.735 149.51-20.648 20.873-47.917 31.33-75.191 31.33z m57.448-48.885h0.01-0.01z m-96.682-17.091c21.897 21.613 57.297 21.414 78.937-0.463 21.659-21.895 21.471-57.325-0.42-78.979l-0.096-0.096L712.918 659.07a24.958 24.958 0 0 1-5.9-25.92c14.212-40.467 11.811-84.043-6.761-122.702-18.573-38.661-51.094-67.773-91.57-81.976-36.022-12.664-74.758-12.111-110.193 1.383l81.398 82.302c9.656 9.763 9.612 25.492-0.097 35.201l-57.2 57.2c-9.709 9.71-25.438 9.754-35.201 0.098l-82.038-81.136c-14.214 36.681-14.501 76.786-0.635 113.954 14.993 40.188 44.737 72.132 83.752 89.945 38.021 17.364 80.682 19.264 120.124 5.352a24.962 24.962 0 0 1 25.953 5.889l148.274 148.274zM398.415 516.656l0.017 0.016-0.017-0.016z" fill="#666666" p-id="10379"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693215123921" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="24837" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M272.128 538.752l207.36 409.472H204.736c-31.488-1.152-57.728-12.224-78.72-33.28s-32.064-47.232-33.28-78.72v-185.472c1.152-31.488 12.224-57.728 33.28-78.72s47.232-32.064 78.72-33.28h67.392z m88.768-414.784c38.784-39.104 87.616-59.52 146.56-61.248 58.944 1.728 107.776 22.144 146.56 61.248 38.784 39.104 59.072 87.808 60.8 146.112-0.576 37.952-9.92 72.64-28.032 104.128s-43.456 56.576-76.096 75.264c-32.704 18.688-67.072 28.032-103.232 28.032-36.16 0-70.592-9.344-103.232-28.032-32.704-18.688-58.048-43.776-76.096-75.264-18.112-31.488-27.456-66.176-28.032-104.128 1.728-58.304 22.016-107.008 60.8-146.112z m241.984 532.928l-95.36 201.28-95.36-201.28 95.36-83.968 95.36 83.968z m286.976-84.928c21.568 20.992 34.112 47.232 37.632 78.72v185.472c-0.576 31.488-11.52 57.728-32.832 78.72-21.312 20.992-47.68 32.064-79.168 33.28H540.736l202.112-409.472h67.392c31.488 1.216 58.048 12.288 79.616 33.28z" p-id="24838"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693215123921" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="24837" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M272.128 538.752l207.36 409.472H204.736c-31.488-1.152-57.728-12.224-78.72-33.28s-32.064-47.232-33.28-78.72v-185.472c1.152-31.488 12.224-57.728 33.28-78.72s47.232-32.064 78.72-33.28h67.392z m88.768-414.784c38.784-39.104 87.616-59.52 146.56-61.248 58.944 1.728 107.776 22.144 146.56 61.248 38.784 39.104 59.072 87.808 60.8 146.112-0.576 37.952-9.92 72.64-28.032 104.128s-43.456 56.576-76.096 75.264c-32.704 18.688-67.072 28.032-103.232 28.032-36.16 0-70.592-9.344-103.232-28.032-32.704-18.688-58.048-43.776-76.096-75.264-18.112-31.488-27.456-66.176-28.032-104.128 1.728-58.304 22.016-107.008 60.8-146.112z m241.984 532.928l-95.36 201.28-95.36-201.28 95.36-83.968 95.36 83.968z m286.976-84.928c21.568 20.992 34.112 47.232 37.632 78.72v185.472c-0.576 31.488-11.52 57.728-32.832 78.72-21.312 20.992-47.68 32.064-79.168 33.28H540.736l202.112-409.472h67.392c31.488 1.216 58.048 12.288 79.616 33.28z" p-id="24838"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M868.5 537.6V385.5c0-58.5-46.8-105.3-105.3-105.3v-46.8c0-58.5-46.8-105.3-105.3-105.3H207.3C148.8 128 102 174.8 102 233.3v608.6c0 58.5 46.8 105.3 105.3 105.3h555.9c58.5 0 105.3-46.8 105.3-105.3V689.7c29.3 0 52.7-23.4 52.7-52.7v-46.8c0-29.2-23.4-52.6-52.7-52.6z m0 99.5H716.4v-46.8h152.1v46.8zM172.2 198.2c5.9-11.7 23.4-17.6 35.1-17.6h456.4c11.7 0 29.3 5.9 35.1 17.6 11.7 11.7 17.5 23.4 17.5 35.1V286h-509c-11.7 0-29.3-5.9-35.1-17.6-11.7-11.7-17.6-23.4-17.6-35.1 0.1-17.5 5.9-29.2 17.6-35.1z m632 678.8c-11.7 11.7-23.4 17.6-35.1 17.6H207.3c-11.7 0-29.3-5.9-35.1-17.6-5.9-11.7-17.6-23.4-17.6-35.1V321.1c17.6 11.7 35.1 11.7 52.7 11.7H769c11.7 0 29.3 5.9 35.1 17.6 11.7 11.7 17.6 23.4 17.6 35.1v152.1h-99.5c-35.1 0-58.5 23.4-58.5 52.7v46.8c0 29.3 23.4 52.7 52.7 52.7h99.5v152.1c0 11.7-5.9 29.2-11.7 35.1z m0 0" fill="#333333" /></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M868.5 537.6V385.5c0-58.5-46.8-105.3-105.3-105.3v-46.8c0-58.5-46.8-105.3-105.3-105.3H207.3C148.8 128 102 174.8 102 233.3v608.6c0 58.5 46.8 105.3 105.3 105.3h555.9c58.5 0 105.3-46.8 105.3-105.3V689.7c29.3 0 52.7-23.4 52.7-52.7v-46.8c0-29.2-23.4-52.6-52.7-52.6z m0 99.5H716.4v-46.8h152.1v46.8zM172.2 198.2c5.9-11.7 23.4-17.6 35.1-17.6h456.4c11.7 0 29.3 5.9 35.1 17.6 11.7 11.7 17.5 23.4 17.5 35.1V286h-509c-11.7 0-29.3-5.9-35.1-17.6-11.7-11.7-17.6-23.4-17.6-35.1 0.1-17.5 5.9-29.2 17.6-35.1z m632 678.8c-11.7 11.7-23.4 17.6-35.1 17.6H207.3c-11.7 0-29.3-5.9-35.1-17.6-5.9-11.7-17.6-23.4-17.6-35.1V321.1c17.6 11.7 35.1 11.7 52.7 11.7H769c11.7 0 29.3 5.9 35.1 17.6 11.7 11.7 17.6 23.4 17.6 35.1v152.1h-99.5c-35.1 0-58.5 23.4-58.5 52.7v46.8c0 29.3 23.4 52.7 52.7 52.7h99.5v152.1c0 11.7-5.9 29.2-11.7 35.1z m0 0" fill="#333333" /></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693277393186" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="35078" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M598.8 595.3c-36.8 14.8-65.6 14.8-87.8 1.6-0.4-0.2-0.8-0.5-1.2-0.7-31.9-16.5-66.5-17.3-102.5-2.8-13.1 5.3-19.9 21.3-15.1 35.9 4.7 14.6 19.2 22.1 32.3 16.8 23.6-9.5 44.3-9.1 63.5 0.6l1.1 0.6c35.8 20.4 78.6 20.1 127 0.6 13.1-5.3 19.9-21.4 15.1-35.9-4.8-14.5-19.3-22-32.4-16.7zM864 0H160c-53 0-96 43-96 96v832c0 53 43 96 96 96h704c53 0 96-43 96-96V96c0-53-43-96-96-96zM702.4 768H321.6c-15.1 0-29.7-5.8-41.4-16.3-28.1-25.4-32.4-71.3-9.5-102.6l147-200.9V312.1h-25.4c-13.9 0-25.2-12.6-25.2-28s11.3-28 25.2-28h238.9c13.9 0 25.2 12.6 25.2 28s-11.3 28-25.2 28h-17.4v136.5l140.5 201.9c8.9 12.8 13.7 28.5 13.7 44.6 0 40.3-29.4 72.9-65.6 72.9z" fill="#666666" p-id="35079"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693277393186" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="35078" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M598.8 595.3c-36.8 14.8-65.6 14.8-87.8 1.6-0.4-0.2-0.8-0.5-1.2-0.7-31.9-16.5-66.5-17.3-102.5-2.8-13.1 5.3-19.9 21.3-15.1 35.9 4.7 14.6 19.2 22.1 32.3 16.8 23.6-9.5 44.3-9.1 63.5 0.6l1.1 0.6c35.8 20.4 78.6 20.1 127 0.6 13.1-5.3 19.9-21.4 15.1-35.9-4.8-14.5-19.3-22-32.4-16.7zM864 0H160c-53 0-96 43-96 96v832c0 53 43 96 96 96h704c53 0 96-43 96-96V96c0-53-43-96-96-96zM702.4 768H321.6c-15.1 0-29.7-5.8-41.4-16.3-28.1-25.4-32.4-71.3-9.5-102.6l147-200.9V312.1h-25.4c-13.9 0-25.2-12.6-25.2-28s11.3-28 25.2-28h238.9c13.9 0 25.2 12.6 25.2 28s-11.3 28-25.2 28h-17.4v136.5l140.5 201.9c8.9 12.8 13.7 28.5 13.7 44.6 0 40.3-29.4 72.9-65.6 72.9z" fill="#666666" p-id="35079"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693214983853" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="18724" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M360.597 926.64H210.89c-45.646 0-82.782-37.136-82.782-82.782V180.891c0-45.646 37.136-82.782 82.782-82.782h537.403c45.646 0 82.781 37.136 82.781 82.782v193.206c0 17.673-14.327 32-32 32s-32-14.327-32-32V180.891c0-10.181-8.601-18.782-18.781-18.782H210.89c-10.181 0-18.782 8.601-18.782 18.782v662.966c0 10.181 8.601 18.782 18.782 18.782h149.707c17.673 0 32 14.327 32 32s-14.327 32.001-32 32.001z" fill="" p-id="18725"></path><path d="M618.585 324.35H292.35c-17.673 0-32-14.327-32-32s14.327-32 32-32h326.235c17.673 0 32 14.327 32 32s-14.327 32-32 32zM574.587 481.094H292.601c-17.673 0-32-14.327-32-32s14.327-32 32-32h281.986c17.673 0 32 14.327 32 32s-14.327 32-32 32zM482.592 641.085h-188.99c-17.673 0-32-14.327-32-32s14.327-32 32-32h188.99c17.673 0 32 14.327 32 32s-14.327 32-32 32zM453.311 921.976l-3.156-146.626c-5.508-17.409 2.855-35.333 12.959-46.674l263.139-295.372c7.36-8.262 17.431-13.394 28.355-14.45 11.676-1.129 23.359 2.65 32.029 10.374l108.471 96.634c17.425 15.523 18.743 42.595 2.954 60.387l-66.067 74.886c-11.692 13.254-31.915 14.519-45.166 2.826-13.253-11.691-14.519-31.914-2.826-45.166l52.461-59.464-76.253-67.932-246.373 276.553a60.84 60.84 0 0 1 0.272 4.618l1.675 77.806 68.047-7.82a81.528 81.528 0 0 0 3.246-3.442l0.226-0.251 135.027-148.398c11.894-13.07 32.131-14.026 45.205-2.133 13.071 11.895 14.026 32.133 2.133 45.205L634.747 881.818c-3.284 3.678-8.309 8.94-13.809 13.396-12.6 10.207-23.772 12.293-32.53 11.236l-135.097 15.526z m-2.105-143.727a0.203 0.203 0 0 0 0.011 0.026c-0.005-0.008-0.008-0.017-0.011-0.026z" fill="" p-id="18726"></path><path d="M803.003 671.965c-8.355 0-16.701-3.252-22.977-9.725l-98.864-101.965c-12.302-12.688-11.989-32.947 0.699-45.25 12.688-12.3 32.946-11.989 45.249 0.699l98.864 101.965c12.302 12.688 11.989 32.947-0.699 45.25-6.215 6.027-14.248 9.026-22.272 9.026z" fill="" p-id="18727"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693214983853" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="18724" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M360.597 926.64H210.89c-45.646 0-82.782-37.136-82.782-82.782V180.891c0-45.646 37.136-82.782 82.782-82.782h537.403c45.646 0 82.781 37.136 82.781 82.782v193.206c0 17.673-14.327 32-32 32s-32-14.327-32-32V180.891c0-10.181-8.601-18.782-18.781-18.782H210.89c-10.181 0-18.782 8.601-18.782 18.782v662.966c0 10.181 8.601 18.782 18.782 18.782h149.707c17.673 0 32 14.327 32 32s-14.327 32.001-32 32.001z" fill="" p-id="18725"></path><path d="M618.585 324.35H292.35c-17.673 0-32-14.327-32-32s14.327-32 32-32h326.235c17.673 0 32 14.327 32 32s-14.327 32-32 32zM574.587 481.094H292.601c-17.673 0-32-14.327-32-32s14.327-32 32-32h281.986c17.673 0 32 14.327 32 32s-14.327 32-32 32zM482.592 641.085h-188.99c-17.673 0-32-14.327-32-32s14.327-32 32-32h188.99c17.673 0 32 14.327 32 32s-14.327 32-32 32zM453.311 921.976l-3.156-146.626c-5.508-17.409 2.855-35.333 12.959-46.674l263.139-295.372c7.36-8.262 17.431-13.394 28.355-14.45 11.676-1.129 23.359 2.65 32.029 10.374l108.471 96.634c17.425 15.523 18.743 42.595 2.954 60.387l-66.067 74.886c-11.692 13.254-31.915 14.519-45.166 2.826-13.253-11.691-14.519-31.914-2.826-45.166l52.461-59.464-76.253-67.932-246.373 276.553a60.84 60.84 0 0 1 0.272 4.618l1.675 77.806 68.047-7.82a81.528 81.528 0 0 0 3.246-3.442l0.226-0.251 135.027-148.398c11.894-13.07 32.131-14.026 45.205-2.133 13.071 11.895 14.026 32.133 2.133 45.205L634.747 881.818c-3.284 3.678-8.309 8.94-13.809 13.396-12.6 10.207-23.772 12.293-32.53 11.236l-135.097 15.526z m-2.105-143.727a0.203 0.203 0 0 0 0.011 0.026c-0.005-0.008-0.008-0.017-0.011-0.026z" fill="" p-id="18726"></path><path d="M803.003 671.965c-8.355 0-16.701-3.252-22.977-9.725l-98.864-101.965c-12.302-12.688-11.989-32.947 0.699-45.25 12.688-12.3 32.946-11.989 45.249 0.699l98.864 101.965c12.302 12.688 11.989 32.947-0.699 45.25-6.215 6.027-14.248 9.026-22.272 9.026z" fill="" p-id="18727"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693209540840" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8965" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M323.328 673.28a162.133333 162.133333 0 0 0 164.608-158.336V243.626667a164.736 164.736 0 0 0-329.216 0v271.445333a161.877333 161.877333 0 0 0 164.608 158.208zM229.162667 245.290667a94.165333 94.165333 0 0 1 188.074666 0v268.117333a94.165333 94.165333 0 0 1-188.074666 0z" fill="#D2D2D2" p-id="8966"></path><path d="M405.546667 861.44h-46.933334v-72.533333a329.045333 329.045333 0 0 0 287.402667-262.485334 35.2 35.2 0 0 0-69.248-12.8 258.602667 258.602667 0 0 1-506.794667 0 35.2 35.2 0 0 0-69.248 12.8 329.002667 329.002667 0 0 0 287.317334 262.485334v72.746666h-46.933334a35.285333 35.285333 0 0 0 0 70.570667h164.352a35.285333 35.285333 0 0 0 0-70.570667zM835.114667 320.469333h-211.84a35.285333 35.285333 0 0 0 0 70.570667h211.84a35.285333 35.285333 0 1 0 0-70.570667z m0 352.810667h-211.84a35.285333 35.285333 0 0 0 0 70.570667h211.84a35.285333 35.285333 0 1 0 0-70.570667z m0-164.608h-117.674667a35.285333 35.285333 0 0 0 0 70.570667h117.674667a35.285333 35.285333 0 1 0 0-70.570667z" fill="#D2D2D2" p-id="8967"></path><path d="M893.824 108.8h-341.12a35.285333 35.285333 0 0 0 0 70.570667h317.525333a46.933333 46.933333 0 0 1 46.933334 46.933333v564.48a46.933333 46.933333 0 0 1-46.933334 46.933333h-364.458666a35.285333 35.285333 0 0 0 0 70.570667h388.266666a93.866667 93.866667 0 0 0 93.866667-93.866667V202.965333a93.866667 93.866667 0 0 0-94.08-94.165333z" fill="#D2D2D2" p-id="8968"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693209540840" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8965" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M323.328 673.28a162.133333 162.133333 0 0 0 164.608-158.336V243.626667a164.736 164.736 0 0 0-329.216 0v271.445333a161.877333 161.877333 0 0 0 164.608 158.208zM229.162667 245.290667a94.165333 94.165333 0 0 1 188.074666 0v268.117333a94.165333 94.165333 0 0 1-188.074666 0z" fill="#D2D2D2" p-id="8966"></path><path d="M405.546667 861.44h-46.933334v-72.533333a329.045333 329.045333 0 0 0 287.402667-262.485334 35.2 35.2 0 0 0-69.248-12.8 258.602667 258.602667 0 0 1-506.794667 0 35.2 35.2 0 0 0-69.248 12.8 329.002667 329.002667 0 0 0 287.317334 262.485334v72.746666h-46.933334a35.285333 35.285333 0 0 0 0 70.570667h164.352a35.285333 35.285333 0 0 0 0-70.570667zM835.114667 320.469333h-211.84a35.285333 35.285333 0 0 0 0 70.570667h211.84a35.285333 35.285333 0 1 0 0-70.570667z m0 352.810667h-211.84a35.285333 35.285333 0 0 0 0 70.570667h211.84a35.285333 35.285333 0 1 0 0-70.570667z m0-164.608h-117.674667a35.285333 35.285333 0 0 0 0 70.570667h117.674667a35.285333 35.285333 0 1 0 0-70.570667z" fill="#D2D2D2" p-id="8967"></path><path d="M893.824 108.8h-341.12a35.285333 35.285333 0 0 0 0 70.570667h317.525333a46.933333 46.933333 0 0 1 46.933334 46.933333v564.48a46.933333 46.933333 0 0 1-46.933334 46.933333h-364.458666a35.285333 35.285333 0 0 0 0 70.570667h388.266666a93.866667 93.866667 0 0 0 93.866667-93.866667V202.965333a93.866667 93.866667 0 0 0-94.08-94.165333z" fill="#D2D2D2" p-id="8968"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693213611450" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16695" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M313.4 960.2H197.7c-3.1 0-5.7-2.6-5.7-5.7V69.9c0-3.1 2.6-5.7 5.7-5.7h115.7c3.1 0 5.7 2.6 5.7 5.7v884.7c-0.1 3.1-2.6 5.6-5.7 5.6zM384.1 97.9l556.5 319.9-556.5 256.1z" p-id="16696"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693213611450" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16695" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M313.4 960.2H197.7c-3.1 0-5.7-2.6-5.7-5.7V69.9c0-3.1 2.6-5.7 5.7-5.7h115.7c3.1 0 5.7 2.6 5.7 5.7v884.7c-0.1 3.1-2.6 5.6-5.7 5.6zM384.1 97.9l556.5 319.9-556.5 256.1z" p-id="16696"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693212435237" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3608" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M513.183454 532.442588c-62.243623 0-120.763434-24.225751-164.778904-68.215638-44.020586-43.992957-68.26271-102.486162-68.26271-164.703179 0-62.215994 24.242124-120.708176 68.26271-164.702156 44.01547-43.989887 102.535281-68.216661 164.778904-68.216661 62.243623 0 120.764458 24.226774 164.778904 68.216661 44.018539 43.992957 68.260663 102.485139 68.260663 164.702156 0 62.217017-24.242124 120.710222-68.260663 164.703179C633.947911 508.215814 575.4281 532.442588 513.183454 532.442588zM513.183454 117.828592c-100.254332 0-181.817975 81.507362-181.817975 181.694155 0 100.186793 81.563644 181.695179 181.817975 181.695179 100.254332 0 181.816952-81.508385 181.816952-181.695179C695.000406 199.336978 613.437785 117.828592 513.183454 117.828592z" p-id="3609"></path><path d="M879.044072 956.940698 146.070308 956.940698l-1.243317-24.303522c-0.317225-6.202259-0.477884-12.514012-0.477884-18.762319 0-49.262984 9.751085-97.06264 28.983101-142.071739 18.562774-43.444465 45.127803-82.45085 78.95626-115.937522 33.81106-33.468253 73.183789-59.745732 117.02632-78.100776 45.3867-19.002796 93.581352-28.637224 143.245472-28.637224 49.665143 0 97.861842 9.634428 143.247518 28.637224 43.842531 18.356067 83.21526 44.632523 117.02632 78.100776 33.828456 33.486672 60.393485 72.493058 78.955236 115.937522 19.230993 45.0091 28.982078 92.808756 28.982078 142.071739 0 6.246261-0.161682 12.56006-0.480954 18.768459L879.044072 956.940698zM195.678146 905.71706l633.765251 0c-4.380774-169.130002-144.846946-305.366849-316.883137-305.366849C340.525092 600.350211 200.05892 736.587058 195.678146 905.71706z" p-id="3610"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693212435237" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3608" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M513.183454 532.442588c-62.243623 0-120.763434-24.225751-164.778904-68.215638-44.020586-43.992957-68.26271-102.486162-68.26271-164.703179 0-62.215994 24.242124-120.708176 68.26271-164.702156 44.01547-43.989887 102.535281-68.216661 164.778904-68.216661 62.243623 0 120.764458 24.226774 164.778904 68.216661 44.018539 43.992957 68.260663 102.485139 68.260663 164.702156 0 62.217017-24.242124 120.710222-68.260663 164.703179C633.947911 508.215814 575.4281 532.442588 513.183454 532.442588zM513.183454 117.828592c-100.254332 0-181.817975 81.507362-181.817975 181.694155 0 100.186793 81.563644 181.695179 181.817975 181.695179 100.254332 0 181.816952-81.508385 181.816952-181.695179C695.000406 199.336978 613.437785 117.828592 513.183454 117.828592z" p-id="3609"></path><path d="M879.044072 956.940698 146.070308 956.940698l-1.243317-24.303522c-0.317225-6.202259-0.477884-12.514012-0.477884-18.762319 0-49.262984 9.751085-97.06264 28.983101-142.071739 18.562774-43.444465 45.127803-82.45085 78.95626-115.937522 33.81106-33.468253 73.183789-59.745732 117.02632-78.100776 45.3867-19.002796 93.581352-28.637224 143.245472-28.637224 49.665143 0 97.861842 9.634428 143.247518 28.637224 43.842531 18.356067 83.21526 44.632523 117.02632 78.100776 33.828456 33.486672 60.393485 72.493058 78.955236 115.937522 19.230993 45.0091 28.982078 92.808756 28.982078 142.071739 0 6.246261-0.161682 12.56006-0.480954 18.768459L879.044072 956.940698zM195.678146 905.71706l633.765251 0c-4.380774-169.130002-144.846946-305.366849-316.883137-305.366849C340.525092 600.350211 200.05892 736.587058 195.678146 905.71706z" p-id="3610"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693209688211" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11124" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M763.424 912H260.576A99.312 99.312 0 0 1 160 814V324a99.312 99.312 0 0 1 100.576-98H336v-48.992h67.728A134.56 134.56 0 0 1 512 128a134.576 134.576 0 0 1 108.272 49.008H688V226h75.424A99.312 99.312 0 0 1 864 324v490a99.312 99.312 0 0 1-100.576 98zM637.712 226H581.84c0-27.056-31.264-48.992-69.84-48.992S442.16 198.944 442.16 226h-55.872v98h251.424v-98z m176 98a49.6 49.6 0 0 0-50.288-49.008H688v98H336v-97.984h-75.424a49.6 49.6 0 0 0-50.288 49.008V814a49.6 49.6 0 0 0 50.288 49.008h502.848a49.6 49.6 0 0 0 50.288-48.992V324zM688 765.008H336a24.512 24.512 0 1 1 0-48.992h352a24.512 24.512 0 1 1 0 48.992z m0-122.496H336a24.512 24.512 0 1 1 0-49.008h352a24.512 24.512 0 1 1 0 48.992zM688 520H336a24.512 24.512 0 1 1 0-49.008h352A24.512 24.512 0 1 1 688 520z" fill="" p-id="11125"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693209688211" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11124" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M763.424 912H260.576A99.312 99.312 0 0 1 160 814V324a99.312 99.312 0 0 1 100.576-98H336v-48.992h67.728A134.56 134.56 0 0 1 512 128a134.576 134.576 0 0 1 108.272 49.008H688V226h75.424A99.312 99.312 0 0 1 864 324v490a99.312 99.312 0 0 1-100.576 98zM637.712 226H581.84c0-27.056-31.264-48.992-69.84-48.992S442.16 198.944 442.16 226h-55.872v98h251.424v-98z m176 98a49.6 49.6 0 0 0-50.288-49.008H688v98H336v-97.984h-75.424a49.6 49.6 0 0 0-50.288 49.008V814a49.6 49.6 0 0 0 50.288 49.008h502.848a49.6 49.6 0 0 0 50.288-48.992V324zM688 765.008H336a24.512 24.512 0 1 1 0-48.992h352a24.512 24.512 0 1 1 0 48.992z m0-122.496H336a24.512 24.512 0 1 1 0-49.008h352a24.512 24.512 0 1 1 0 48.992zM688 520H336a24.512 24.512 0 1 1 0-49.008h352A24.512 24.512 0 1 1 688 520z" fill="" p-id="11125"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692956685780" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="33318" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M763.424 912H260.576A99.312 99.312 0 0 1 160 814V324a99.312 99.312 0 0 1 100.576-98H336v-48.992h67.728A134.56 134.56 0 0 1 512 128a134.576 134.576 0 0 1 108.272 49.008H688V226h75.424A99.312 99.312 0 0 1 864 324v490a99.312 99.312 0 0 1-100.576 98zM637.712 226H581.84c0-27.056-31.264-48.992-69.84-48.992S442.16 198.944 442.16 226h-55.872v98h251.424v-98z m176 98a49.6 49.6 0 0 0-50.288-49.008H688v98H336v-97.984h-75.424a49.6 49.6 0 0 0-50.288 49.008V814a49.6 49.6 0 0 0 50.288 49.008h502.848a49.6 49.6 0 0 0 50.288-48.992V324zM688 765.008H336a24.512 24.512 0 1 1 0-48.992h352a24.512 24.512 0 1 1 0 48.992z m0-122.496H336a24.512 24.512 0 1 1 0-49.008h352a24.512 24.512 0 1 1 0 48.992zM688 520H336a24.512 24.512 0 1 1 0-49.008h352A24.512 24.512 0 1 1 688 520z" fill="" p-id="33319"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1692956685780" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="33318" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M763.424 912H260.576A99.312 99.312 0 0 1 160 814V324a99.312 99.312 0 0 1 100.576-98H336v-48.992h67.728A134.56 134.56 0 0 1 512 128a134.576 134.576 0 0 1 108.272 49.008H688V226h75.424A99.312 99.312 0 0 1 864 324v490a99.312 99.312 0 0 1-100.576 98zM637.712 226H581.84c0-27.056-31.264-48.992-69.84-48.992S442.16 198.944 442.16 226h-55.872v98h251.424v-98z m176 98a49.6 49.6 0 0 0-50.288-49.008H688v98H336v-97.984h-75.424a49.6 49.6 0 0 0-50.288 49.008V814a49.6 49.6 0 0 0 50.288 49.008h502.848a49.6 49.6 0 0 0 50.288-48.992V324zM688 765.008H336a24.512 24.512 0 1 1 0-48.992h352a24.512 24.512 0 1 1 0 48.992z m0-122.496H336a24.512 24.512 0 1 1 0-49.008h352a24.512 24.512 0 1 1 0 48.992zM688 520H336a24.512 24.512 0 1 1 0-49.008h352A24.512 24.512 0 1 1 688 520z" fill="" p-id="33319"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693215049117" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="22692" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M861.433649 0H142.889371c-39.65996 0-71.853928 31.581968-71.853927 70.508929v881.346114c0 59.85794 68.913931 93.519906 116.169883 56.549943L457.608055 810.959184c25.949974-20.31998 62.429937-20.31998 88.500911 0l271.136727 197.690801c47.250952 36.848963 116.044883 3.184997 116.044883-56.674943V70.508929C933.287576 31.581968 901.093609 0 861.433649 0z m8.815991 951.974042c0 2.762997-0.724999 4.629995-2.423998 6.236994-1.791998 1.696998-4.346996 2.749997-6.670993 2.749997h-0.001c-1.187999 0-2.847997-0.23-5.143995-2.022998l-0.804999-0.624999-271.272727-197.791801c-23.469976-17.963982-52.584947-27.841972-82.121918-27.841972-29.56697 0-58.669941 9.89699-82.095917 27.890972L149.186365 958.112036l-0.821999 0.643c-2.309998 1.807998-3.977996 2.038998-5.174995 2.038998-0.09 0-9.114991-0.385-9.114991-8.938991V70.509929c0-4.047996 4.036996-7.469992 8.814991-7.469992h718.544278c4.779995 0 8.815991 3.421997 8.815991 7.470992v881.464113z" p-id="22693"></path><path d="M694.832816 367.96363l-65.854934 65.854934a28.504971 28.504971 0 0 0-7.959992 25.093974l15.548985 93.029907c3.912996 23.133977-19.83198 40.881959-40.15396 29.86497l-81.399918-43.819956c-8.079992-4.284996-17.749982-4.284996-25.708974 0l-81.402918 43.941956c-20.31998 10.895989-44.067956-6.731993-40.14696-29.86497l15.540984-93.032907c1.596998-9.179991-1.465999-18.482981-7.953992-25.096974l-65.854933-65.854934c-16.404983-16.399984-7.346993-45.043955 15.302984-48.469951l90.947909-13.587987c9.056991-1.348999 16.892983-7.222993 20.806979-15.547984l40.641959-84.584915a27.399972 27.399972 0 0 1 24.849975-15.789984 27.399972 27.399972 0 0 1 24.849975 15.789984l40.634959 84.584915c4.043996 8.324992 11.873988 14.198986 20.812979 15.547984l90.948909 13.588987c22.893977 3.304997 31.949968 31.947968 15.549984 48.352951z" p-id="22694"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693215049117" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="22692" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M861.433649 0H142.889371c-39.65996 0-71.853928 31.581968-71.853927 70.508929v881.346114c0 59.85794 68.913931 93.519906 116.169883 56.549943L457.608055 810.959184c25.949974-20.31998 62.429937-20.31998 88.500911 0l271.136727 197.690801c47.250952 36.848963 116.044883 3.184997 116.044883-56.674943V70.508929C933.287576 31.581968 901.093609 0 861.433649 0z m8.815991 951.974042c0 2.762997-0.724999 4.629995-2.423998 6.236994-1.791998 1.696998-4.346996 2.749997-6.670993 2.749997h-0.001c-1.187999 0-2.847997-0.23-5.143995-2.022998l-0.804999-0.624999-271.272727-197.791801c-23.469976-17.963982-52.584947-27.841972-82.121918-27.841972-29.56697 0-58.669941 9.89699-82.095917 27.890972L149.186365 958.112036l-0.821999 0.643c-2.309998 1.807998-3.977996 2.038998-5.174995 2.038998-0.09 0-9.114991-0.385-9.114991-8.938991V70.509929c0-4.047996 4.036996-7.469992 8.814991-7.469992h718.544278c4.779995 0 8.815991 3.421997 8.815991 7.470992v881.464113z" p-id="22693"></path><path d="M694.832816 367.96363l-65.854934 65.854934a28.504971 28.504971 0 0 0-7.959992 25.093974l15.548985 93.029907c3.912996 23.133977-19.83198 40.881959-40.15396 29.86497l-81.399918-43.819956c-8.079992-4.284996-17.749982-4.284996-25.708974 0l-81.402918 43.941956c-20.31998 10.895989-44.067956-6.731993-40.14696-29.86497l15.540984-93.032907c1.596998-9.179991-1.465999-18.482981-7.953992-25.096974l-65.854933-65.854934c-16.404983-16.399984-7.346993-45.043955 15.302984-48.469951l90.947909-13.587987c9.056991-1.348999 16.892983-7.222993 20.806979-15.547984l40.641959-84.584915a27.399972 27.399972 0 0 1 24.849975-15.789984 27.399972 27.399972 0 0 1 24.849975 15.789984l40.634959 84.584915c4.043996 8.324992 11.873988 14.198986 20.812979 15.547984l90.948909 13.588987c22.893977 3.304997 31.949968 31.947968 15.549984 48.352951z" p-id="22694"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693207879147" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14975" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M918.136 923.916c0 49.324-39.985 89.309-89.309 89.309H231.702c-49.324 0-89.309-39.985-89.309-89.309V95.77c0-49.324 39.985-89.309 89.309-89.309h374.239l-0.001 49.908H278.949c-41.519 0-75.176 35.766-75.176 79.885v740.761c0 44.119 33.657 79.885 75.176 79.885h502.632c41.518 0 75.176-35.766 75.176-79.885V293.503l61.38 0.279" fill="#656B8C" p-id="14976"></path><path d="M897.763 278.556h-278.39V0.166l278.39 278.39zM661.652 103.287v130.198H791.85L661.652 103.287zM817.214 585.975c0 9.393-7.615 17.008-17.008 17.008h-510.25c-9.393 0-17.008-7.615-17.008-17.008 0-9.393 7.615-17.008 17.008-17.008h510.25c9.393 0 17.008 7.615 17.008 17.008zM610.913 492.834c0 9.393-4.729 17.008-10.561 17.008H283.509c-5.833 0-10.561-7.615-10.561-17.008 0-9.393 4.729-17.008 10.561-17.008h316.843c5.833 0 10.561 7.615 10.561 17.008zM610.913 407.793c0 9.393-4.729 17.008-10.561 17.008H283.509c-5.833 0-10.561-7.615-10.561-17.008 0-9.393 4.729-17.008 10.561-17.008h316.843c5.833-0.001 10.561 7.614 10.561 17.008zM817.214 676.156c0 9.393-7.615 17.008-17.008 17.008h-510.25c-9.393 0-17.008-7.615-17.008-17.008 0-9.393 7.615-17.008 17.008-17.008h510.25c9.393-0.001 17.008 7.614 17.008 17.008zM820.453 768.788c0 9.393-7.615 17.008-17.008 17.008h-510.25c-9.393 0-17.008-7.615-17.008-17.008 0-9.393 7.615-17.008 17.008-17.008h510.25c9.394-0.001 17.008 7.614 17.008 17.008z" fill="#656B8C" p-id="14977"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693207879147" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14975" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M918.136 923.916c0 49.324-39.985 89.309-89.309 89.309H231.702c-49.324 0-89.309-39.985-89.309-89.309V95.77c0-49.324 39.985-89.309 89.309-89.309h374.239l-0.001 49.908H278.949c-41.519 0-75.176 35.766-75.176 79.885v740.761c0 44.119 33.657 79.885 75.176 79.885h502.632c41.518 0 75.176-35.766 75.176-79.885V293.503l61.38 0.279" fill="#656B8C" p-id="14976"></path><path d="M897.763 278.556h-278.39V0.166l278.39 278.39zM661.652 103.287v130.198H791.85L661.652 103.287zM817.214 585.975c0 9.393-7.615 17.008-17.008 17.008h-510.25c-9.393 0-17.008-7.615-17.008-17.008 0-9.393 7.615-17.008 17.008-17.008h510.25c9.393 0 17.008 7.615 17.008 17.008zM610.913 492.834c0 9.393-4.729 17.008-10.561 17.008H283.509c-5.833 0-10.561-7.615-10.561-17.008 0-9.393 4.729-17.008 10.561-17.008h316.843c5.833 0 10.561 7.615 10.561 17.008zM610.913 407.793c0 9.393-4.729 17.008-10.561 17.008H283.509c-5.833 0-10.561-7.615-10.561-17.008 0-9.393 4.729-17.008 10.561-17.008h316.843c5.833-0.001 10.561 7.614 10.561 17.008zM817.214 676.156c0 9.393-7.615 17.008-17.008 17.008h-510.25c-9.393 0-17.008-7.615-17.008-17.008 0-9.393 7.615-17.008 17.008-17.008h510.25c9.393-0.001 17.008 7.614 17.008 17.008zM820.453 768.788c0 9.393-7.615 17.008-17.008 17.008h-510.25c-9.393 0-17.008-7.615-17.008-17.008 0-9.393 7.615-17.008 17.008-17.008h510.25c9.394-0.001 17.008 7.614 17.008 17.008z" fill="#656B8C" p-id="14977"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693211009080" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="31520" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M987.52 805.12c-3.2-8.96-9.813333-16.426667-18.56-20.693333l-3.413333-2.346667c-5.973333-3.2-10.88-8.106667-14.293334-13.866667-5.12-8.96-6.613333-19.413333-3.84-29.226666s9.173333-18.133333 18.133334-23.253334l3.626666-1.92c8.533333-4.906667 14.933333-13.013333 17.706667-22.4 2.56-9.6 1.066667-19.84-4.053333-28.373333l-46.293334-78.72c-6.826667-11.306667-19.2-18.346667-32.426666-18.346667h-0.853334c-6.613333 0-13.226667 1.92-18.986666 5.12l-3.84 2.346667c-5.973333 3.413333-12.586667 5.12-19.626667 5.333333h-0.213333a38.890667 38.890667 0 0 1-39.04-39.04v-4.266666c-0.213333-10.026667-4.053333-19.413333-11.306667-26.24a36.48 36.48 0 0 0-25.813333-10.453334h-93.44c-9.6 0-18.986667 3.84-25.813334 10.666667-7.253333 6.826667-11.52 16.213333-11.306666 26.24v4.48c0.213333 13.866667-7.466667 26.88-19.84 33.28a40.234667 40.234667 0 0 1-39.253334 0l-4.053333-2.346667c-5.76-3.2-12.373333-4.906667-18.986667-4.906666-2.986667 0-6.186667 0.426667-9.386666 1.28-9.6 2.346667-17.92 8.746667-23.04 17.28l-46.293334 78.72c-4.906667 8.32-6.4 18.56-3.626666 27.946666 2.56 9.6 8.96 17.706667 17.706666 22.4l3.626667 2.346667c15.146667 8.32 22.613333 25.813333 18.346667 42.666667-2.773333 10.026667-9.386667 18.773333-18.773334 23.68l-3.626666 1.92c-8.533333 4.906667-14.72 13.013333-17.28 22.4-2.773333 9.386667-1.28 19.626667 3.626666 27.946666l46.72 78.72c6.4 11.52 18.346667 18.346667 31.36 18.346667h1.92c6.613333 0 13.226667-1.493333 18.986667-4.693333l4.053333-2.346667a40 40 0 0 1 47.146667 5.973333c1.28 1.28 2.56 2.773333 3.413333 4.266667 5.333333 6.613333 8.106667 14.72 8.106667 23.253333v2.986667c0.213333 5.973333 1.706667 11.52 4.48 16.426667 5.973333 12.16 18.56 20.266667 32.853333 20.266666H785.066667c9.813333-0.213333 19.413333-4.053333 26.453333-10.666666 7.253333-6.826667 11.306667-16.426667 11.306667-26.453334v-4.266666c0-6.826667 1.92-13.44 5.333333-18.986667 3.413333-5.973333 8.533333-10.666667 14.293333-14.08 6.186667-3.413333 13.013333-5.12 19.84-5.12 6.613333 0 13.44 1.706667 19.626667 5.12l3.84 1.92c5.76 3.413333 12.16 5.12 18.56 5.12 3.413333 0 6.613333-0.426667 9.813333-1.28 9.6-2.56 17.92-8.533333 23.04-17.066667l46.293334-78.72c3.413333-5.76 5.12-12.373333 5.12-18.986666 0-3.2-0.213333-6.4-1.066667-9.386667z m-72.96-15.36c6.826667 11.733333 16.426667 21.333333 27.946667 28.373333l0.426666 0.213334-40.106666 68.053333-1.28-0.64c-11.946667-6.613333-25.6-10.026667-39.253334-10.026667-14.293333 0-28.16 3.626667-40.746666 10.666667-12.373333 6.826667-22.826667 17.066667-29.653334 28.8-7.466667 12.16-11.52 26.026667-11.733333 40.106667h-82.773333a71.04 71.04 0 0 0-3.84-21.12c-3.84-12.8-10.88-24.533333-20.693334-33.92-15.36-14.933333-35.626667-23.253333-57.173333-23.253334-14.293333 0-28.373333 3.84-41.173333 11.093334h-0.213334l-41.173333-69.333334c18.133333-10.88 31.786667-28.586667 37.333333-49.28 8.96-34.986667-6.4-71.68-37.546666-89.813333l40.746666-69.12h0.213334c12.373333 7.04 26.453333 10.666667 40.533333 10.666667 14.08 0 27.733333-3.626667 39.893333-10.24 26.24-14.08 42.453333-40.96 42.24-69.546667h82.346667c0.426667 20.906667 9.173333 41.386667 24.106667 56.32 15.36 15.146667 35.84 23.68 58.453333 23.68a84.906667 84.906667 0 0 0 40.106667-10.88l0.64-0.426667 40.96 69.333334c-18.133333 10.666667-31.36 28.16-36.906667 48.213333-5.76 20.693333-2.773333 43.306667 8.32 62.08z" p-id="31521"></path><path d="M684.586667 60.373333H144.213333c-47.573333 0-85.973333 38.4-85.973333 85.973334V891.733333c0 47.573333 38.4 85.973333 85.973333 85.973334h208.426667c11.733333 0 21.333333-9.6 21.333333-21.333334s-9.6-21.333333-21.333333-21.333333H144.213333c-23.893333 0-43.306667-19.413333-43.306666-43.306667V146.346667c0-23.893333 19.413333-43.306667 43.306666-43.306667h540.373334c23.893333 0 43.306667 19.413333 43.306666 43.306667v203.733333c0 11.733333 9.6 21.333333 21.333334 21.333333s21.333333-9.6 21.333333-21.333333V146.346667a85.973333 85.973333 0 0 0-85.973333-85.973334zM770.56 677.12c-9.813333-4.48-20.693333-7.04-32.213333-7.04-3.626667 0-7.04 0.213333-10.453334 0.853333a78.08 78.08 0 0 0-67.84 77.44c0 39.466667 29.653333 72.32 67.84 77.226667 3.413333 0.64 6.826667 0.853333 10.453334 0.853333 11.52 0 22.4-2.56 32.213333-7.04a77.653333 77.653333 0 0 0 46.08-71.04c0-31.786667-18.773333-59.093333-46.08-71.253333z m0 86.186667c-5.546667 12.16-17.92 20.48-32.213333 20.48-3.626667 0-7.253333-0.64-10.453334-1.706667-14.506667-4.266667-25.173333-17.706667-25.173333-33.706667s10.666667-29.653333 25.173333-33.92c3.2-1.066667 6.826667-1.706667 10.453334-1.706666 14.293333 0 26.666667 8.533333 32.213333 20.693333 2.133333 4.48 3.413333 9.6 3.413333 14.933333s-1.28 10.453333-3.413333 14.933334z" p-id="31522"></path><path d="M305.28 705.706667c0 7.04-3.626667 13.44-8.96 17.28a20.48 20.48 0 0 1-12.373333 4.053333H212.906667a21.44 21.44 0 0 1 0-42.88h71.04a21.610667 21.610667 0 0 1 21.333333 21.546667zM347.733333 480.426667c0 11.733333-9.386667 21.333333-21.333333 21.333333H212.906667c-11.733333 0-21.333333-9.6-21.333334-21.333333s9.6-21.333333 21.333334-21.333334h113.493333c11.946667 0 21.333333 9.6 21.333333 21.333334zM537.386667 279.04H213.12c-11.733333 0-21.333333-9.6-21.333333-21.333333s9.6-21.333333 21.333333-21.333334H537.6c11.733333 0 21.333333 9.6 21.333333 21.333334-0.213333 11.733333-9.6 21.333333-21.546666 21.333333z" p-id="31523"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693211009080" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="31520" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M987.52 805.12c-3.2-8.96-9.813333-16.426667-18.56-20.693333l-3.413333-2.346667c-5.973333-3.2-10.88-8.106667-14.293334-13.866667-5.12-8.96-6.613333-19.413333-3.84-29.226666s9.173333-18.133333 18.133334-23.253334l3.626666-1.92c8.533333-4.906667 14.933333-13.013333 17.706667-22.4 2.56-9.6 1.066667-19.84-4.053333-28.373333l-46.293334-78.72c-6.826667-11.306667-19.2-18.346667-32.426666-18.346667h-0.853334c-6.613333 0-13.226667 1.92-18.986666 5.12l-3.84 2.346667c-5.973333 3.413333-12.586667 5.12-19.626667 5.333333h-0.213333a38.890667 38.890667 0 0 1-39.04-39.04v-4.266666c-0.213333-10.026667-4.053333-19.413333-11.306667-26.24a36.48 36.48 0 0 0-25.813333-10.453334h-93.44c-9.6 0-18.986667 3.84-25.813334 10.666667-7.253333 6.826667-11.52 16.213333-11.306666 26.24v4.48c0.213333 13.866667-7.466667 26.88-19.84 33.28a40.234667 40.234667 0 0 1-39.253334 0l-4.053333-2.346667c-5.76-3.2-12.373333-4.906667-18.986667-4.906666-2.986667 0-6.186667 0.426667-9.386666 1.28-9.6 2.346667-17.92 8.746667-23.04 17.28l-46.293334 78.72c-4.906667 8.32-6.4 18.56-3.626666 27.946666 2.56 9.6 8.96 17.706667 17.706666 22.4l3.626667 2.346667c15.146667 8.32 22.613333 25.813333 18.346667 42.666667-2.773333 10.026667-9.386667 18.773333-18.773334 23.68l-3.626666 1.92c-8.533333 4.906667-14.72 13.013333-17.28 22.4-2.773333 9.386667-1.28 19.626667 3.626666 27.946666l46.72 78.72c6.4 11.52 18.346667 18.346667 31.36 18.346667h1.92c6.613333 0 13.226667-1.493333 18.986667-4.693333l4.053333-2.346667a40 40 0 0 1 47.146667 5.973333c1.28 1.28 2.56 2.773333 3.413333 4.266667 5.333333 6.613333 8.106667 14.72 8.106667 23.253333v2.986667c0.213333 5.973333 1.706667 11.52 4.48 16.426667 5.973333 12.16 18.56 20.266667 32.853333 20.266666H785.066667c9.813333-0.213333 19.413333-4.053333 26.453333-10.666666 7.253333-6.826667 11.306667-16.426667 11.306667-26.453334v-4.266666c0-6.826667 1.92-13.44 5.333333-18.986667 3.413333-5.973333 8.533333-10.666667 14.293333-14.08 6.186667-3.413333 13.013333-5.12 19.84-5.12 6.613333 0 13.44 1.706667 19.626667 5.12l3.84 1.92c5.76 3.413333 12.16 5.12 18.56 5.12 3.413333 0 6.613333-0.426667 9.813333-1.28 9.6-2.56 17.92-8.533333 23.04-17.066667l46.293334-78.72c3.413333-5.76 5.12-12.373333 5.12-18.986666 0-3.2-0.213333-6.4-1.066667-9.386667z m-72.96-15.36c6.826667 11.733333 16.426667 21.333333 27.946667 28.373333l0.426666 0.213334-40.106666 68.053333-1.28-0.64c-11.946667-6.613333-25.6-10.026667-39.253334-10.026667-14.293333 0-28.16 3.626667-40.746666 10.666667-12.373333 6.826667-22.826667 17.066667-29.653334 28.8-7.466667 12.16-11.52 26.026667-11.733333 40.106667h-82.773333a71.04 71.04 0 0 0-3.84-21.12c-3.84-12.8-10.88-24.533333-20.693334-33.92-15.36-14.933333-35.626667-23.253333-57.173333-23.253334-14.293333 0-28.373333 3.84-41.173333 11.093334h-0.213334l-41.173333-69.333334c18.133333-10.88 31.786667-28.586667 37.333333-49.28 8.96-34.986667-6.4-71.68-37.546666-89.813333l40.746666-69.12h0.213334c12.373333 7.04 26.453333 10.666667 40.533333 10.666667 14.08 0 27.733333-3.626667 39.893333-10.24 26.24-14.08 42.453333-40.96 42.24-69.546667h82.346667c0.426667 20.906667 9.173333 41.386667 24.106667 56.32 15.36 15.146667 35.84 23.68 58.453333 23.68a84.906667 84.906667 0 0 0 40.106667-10.88l0.64-0.426667 40.96 69.333334c-18.133333 10.666667-31.36 28.16-36.906667 48.213333-5.76 20.693333-2.773333 43.306667 8.32 62.08z" p-id="31521"></path><path d="M684.586667 60.373333H144.213333c-47.573333 0-85.973333 38.4-85.973333 85.973334V891.733333c0 47.573333 38.4 85.973333 85.973333 85.973334h208.426667c11.733333 0 21.333333-9.6 21.333333-21.333334s-9.6-21.333333-21.333333-21.333333H144.213333c-23.893333 0-43.306667-19.413333-43.306666-43.306667V146.346667c0-23.893333 19.413333-43.306667 43.306666-43.306667h540.373334c23.893333 0 43.306667 19.413333 43.306666 43.306667v203.733333c0 11.733333 9.6 21.333333 21.333334 21.333333s21.333333-9.6 21.333333-21.333333V146.346667a85.973333 85.973333 0 0 0-85.973333-85.973334zM770.56 677.12c-9.813333-4.48-20.693333-7.04-32.213333-7.04-3.626667 0-7.04 0.213333-10.453334 0.853333a78.08 78.08 0 0 0-67.84 77.44c0 39.466667 29.653333 72.32 67.84 77.226667 3.413333 0.64 6.826667 0.853333 10.453334 0.853333 11.52 0 22.4-2.56 32.213333-7.04a77.653333 77.653333 0 0 0 46.08-71.04c0-31.786667-18.773333-59.093333-46.08-71.253333z m0 86.186667c-5.546667 12.16-17.92 20.48-32.213333 20.48-3.626667 0-7.253333-0.64-10.453334-1.706667-14.506667-4.266667-25.173333-17.706667-25.173333-33.706667s10.666667-29.653333 25.173333-33.92c3.2-1.066667 6.826667-1.706667 10.453334-1.706666 14.293333 0 26.666667 8.533333 32.213333 20.693333 2.133333 4.48 3.413333 9.6 3.413333 14.933333s-1.28 10.453333-3.413333 14.933334z" p-id="31522"></path><path d="M305.28 705.706667c0 7.04-3.626667 13.44-8.96 17.28a20.48 20.48 0 0 1-12.373333 4.053333H212.906667a21.44 21.44 0 0 1 0-42.88h71.04a21.610667 21.610667 0 0 1 21.333333 21.546667zM347.733333 480.426667c0 11.733333-9.386667 21.333333-21.333333 21.333333H212.906667c-11.733333 0-21.333333-9.6-21.333334-21.333333s9.6-21.333333 21.333334-21.333334h113.493333c11.946667 0 21.333333 9.6 21.333333 21.333334zM537.386667 279.04H213.12c-11.733333 0-21.333333-9.6-21.333333-21.333333s9.6-21.333333 21.333333-21.333334H537.6c11.733333 0 21.333333 9.6 21.333333 21.333334-0.213333 11.733333-9.6 21.333333-21.546666 21.333333z" p-id="31523"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693215041500" class="icon" viewBox="0 0 1028 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="21594" xmlns:xlink="http://www.w3.org/1999/xlink" width="200.78125" height="200"><path d="M955.392 982.016h-882.688c-39.936 0-72.704-32.768-72.704-72.704v-259.072l26.112 0.512h2.56c75.264-0.512 136.704-62.464 136.704-138.24 0-76.288-61.44-138.24-136.704-138.24h-2.56l-26.112 0.512v-259.072c0-39.936 32.768-72.704 72.704-72.704h882.688c39.936 0 72.704 32.768 72.704 72.704v258.56h-25.6c-75.776 0-137.216 61.952-137.216 138.24s61.44 138.24 137.216 138.24h25.6v258.56c0 39.936-32.768 72.704-72.704 72.704zM51.2 699.904v208.896c0 11.776 9.728 21.504 21.504 21.504h882.688c11.776 0 21.504-9.728 21.504-21.504V699.904c-91.648-12.8-162.816-92.16-162.816-187.904 0-95.744 71.168-175.104 162.816-187.904v-209.408c0-11.776-9.728-21.504-21.504-21.504h-882.688c-11.776 0-21.504 9.728-21.504 21.504v208.896c93.184 11.264 165.376 91.648 165.376 188.416s-72.192 176.64-165.376 187.904z" fill="#012733" p-id="21595"></path><path d="M673.792 799.744h-319.488c-14.336 0-25.6-11.264-25.6-25.6s11.264-25.6 25.6-25.6h319.488c14.336 0 25.6 11.264 25.6 25.6s-11.776 25.6-25.6 25.6zM673.792 537.6h-112.64c-39.936 0-72.704-32.768-72.704-72.704v-242.688c0-14.336 11.264-25.6 25.6-25.6s25.6 11.264 25.6 25.6V464.384c0 11.776 9.728 21.504 21.504 21.504h112.64c14.336 0 25.6 11.264 25.6 25.6s-11.776 26.112-25.6 26.112z" fill="#012733" p-id="21596"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693215041500" class="icon" viewBox="0 0 1028 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="21594" xmlns:xlink="http://www.w3.org/1999/xlink" width="200.78125" height="200"><path d="M955.392 982.016h-882.688c-39.936 0-72.704-32.768-72.704-72.704v-259.072l26.112 0.512h2.56c75.264-0.512 136.704-62.464 136.704-138.24 0-76.288-61.44-138.24-136.704-138.24h-2.56l-26.112 0.512v-259.072c0-39.936 32.768-72.704 72.704-72.704h882.688c39.936 0 72.704 32.768 72.704 72.704v258.56h-25.6c-75.776 0-137.216 61.952-137.216 138.24s61.44 138.24 137.216 138.24h25.6v258.56c0 39.936-32.768 72.704-72.704 72.704zM51.2 699.904v208.896c0 11.776 9.728 21.504 21.504 21.504h882.688c11.776 0 21.504-9.728 21.504-21.504V699.904c-91.648-12.8-162.816-92.16-162.816-187.904 0-95.744 71.168-175.104 162.816-187.904v-209.408c0-11.776-9.728-21.504-21.504-21.504h-882.688c-11.776 0-21.504 9.728-21.504 21.504v208.896c93.184 11.264 165.376 91.648 165.376 188.416s-72.192 176.64-165.376 187.904z" fill="#012733" p-id="21595"></path><path d="M673.792 799.744h-319.488c-14.336 0-25.6-11.264-25.6-25.6s11.264-25.6 25.6-25.6h319.488c14.336 0 25.6 11.264 25.6 25.6s-11.776 25.6-25.6 25.6zM673.792 537.6h-112.64c-39.936 0-72.704-32.768-72.704-72.704v-242.688c0-14.336 11.264-25.6 25.6-25.6s25.6 11.264 25.6 25.6V464.384c0 11.776 9.728 21.504 21.504 21.504h112.64c14.336 0 25.6 11.264 25.6 25.6s-11.776 26.112-25.6 26.112z" fill="#012733" p-id="21596"></path></svg>
\ No newline at end of file
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693212358229" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2610" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M662.528 525.312c76.8-49.152 127.488-135.168 127.488-232.448 0-152.576-124.416-276.48-278.016-276.48s-278.016 123.904-278.016 276.48c0 97.28 50.688 182.784 127.488 232.448-183.808 62.976-316.416 238.08-316.416 443.392 0 20.992 17.408 38.4 38.4 38.4s38.4-17.408 38.4-38.4c0-197.632 146.432-361.472 335.872-387.584l-84.992 274.432c-4.096 13.824-0.512 28.672 9.728 38.4l101.376 101.376c7.168 7.168 16.896 11.264 27.136 11.264s19.968-4.096 27.136-11.264l101.376-101.376c10.24-10.24 13.824-25.088 9.728-38.4l-84.992-274.432c190.464 25.6 337.92 189.952 337.92 388.096 0 20.992 17.408 38.4 38.4 38.4s38.4-17.408 38.4-38.4c0-205.824-132.608-380.928-316.416-443.904zM310.784 292.864c0-110.08 90.112-199.68 201.216-199.68 111.104 0 201.216 89.6 201.216 199.68s-90.112 199.68-201.216 199.68c-111.104 0-201.216-89.088-201.216-199.68z" fill="#B2B2B2" p-id="2611"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693212358229" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2610" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M662.528 525.312c76.8-49.152 127.488-135.168 127.488-232.448 0-152.576-124.416-276.48-278.016-276.48s-278.016 123.904-278.016 276.48c0 97.28 50.688 182.784 127.488 232.448-183.808 62.976-316.416 238.08-316.416 443.392 0 20.992 17.408 38.4 38.4 38.4s38.4-17.408 38.4-38.4c0-197.632 146.432-361.472 335.872-387.584l-84.992 274.432c-4.096 13.824-0.512 28.672 9.728 38.4l101.376 101.376c7.168 7.168 16.896 11.264 27.136 11.264s19.968-4.096 27.136-11.264l101.376-101.376c10.24-10.24 13.824-25.088 9.728-38.4l-84.992-274.432c190.464 25.6 337.92 189.952 337.92 388.096 0 20.992 17.408 38.4 38.4 38.4s38.4-17.408 38.4-38.4c0-205.824-132.608-380.928-316.416-443.904zM310.784 292.864c0-110.08 90.112-199.68 201.216-199.68 111.104 0 201.216 89.6 201.216 199.68s-90.112 199.68-201.216 199.68c-111.104 0-201.216-89.088-201.216-199.68z" fill="#B2B2B2" p-id="2611"></path></svg>
\ No newline at end of file
...@@ -131,29 +131,20 @@ export const dynamicRoutes = [ ...@@ -131,29 +131,20 @@ export const dynamicRoutes = [
}, },
], ],
}, },
{ {
path: "/schoolManage/schoolNotice", path: "/system/dict-data",
component: Layout, component: Layout,
hidden: true, hidden: true,
permissions: ["system:role:edit"], permissions: ["system:dict:list"],
children: [ children: [
{ {
path: "/personnelGrouping/authUser", path: "index/:dictId(\\d+)",
component: () => component: () => import("@/views/system/dict/data"),
import( name: "Data",
"@/views/smartSchool/schoolManage/schoolNotice/personnelGrouping/authUser.vue" meta: { title: "字典数据", activeMenu: "/system/dict" },
),
name: "AuthUser",
meta: {
title: "分配成员",
activeMenu:
"/smartSchool/schoolManage/schoolNotice/personnelGrouping",
},
}, },
], ],
}, },
{ {
path: "/monitor/job-log", path: "/monitor/job-log",
component: Layout, component: Layout,
......
import Layout from '@/layout' import Layout from "@/layout";
export default [ export default [
// 校园简介编辑页面 // 校园简介编辑页面
...@@ -152,6 +152,28 @@ export default [ ...@@ -152,6 +152,28 @@ export default [
}, },
], ],
}, },
//人员分组
{
path: "/schoolManage/schoolNotice",
component: Layout,
hidden: true,
permissions: ["system:role:edit"],
children: [
{
path: "/personnelGrouping/authUser",
component: () =>
import(
"@/views/smartSchool/schoolManage/schoolNotice/personnelGrouping/authUser.vue"
),
name: "AuthUser",
meta: {
title: "分配成员",
activeMenu:
"/smartSchool/schoolManage/schoolNotice/personnelGrouping",
},
},
],
},
// 公文流转--公文流转查看 // 公文流转--公文流转查看
{ {
path: "/schoolManage", path: "/schoolManage",
......
<template> <template>
<div> <div class="app-container">
<h2>实验室申请记录</h2> <el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="88px">
<el-form-item label="实验名称">
<el-input v-model="queryForm.grade" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="预约时间段">
<el-date-picker v-model="queryForm.time" type="daterange" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="申报状态">
<el-input v-model="queryForm.states" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<el-table-column align="center" type="index" label="序号" width="55" />
<el-table-column align="center" prop="subject" label="学科" />
<el-table-column align="center" prop="time" label="学年" />
<el-table-column align="center" prop="name" label="班级" />
<el-table-column align="center" prop="name" label="实验时间" />
<el-table-column align="center" prop="name" label="节次" />
<el-table-column align="center" prop="grade" label="实验名称" />
<el-table-column align="center" prop="time" label="实验分类" />
<el-table-column align="center" prop="time" label="实验室" />
<el-table-column align="center" prop="name" label="章节内容" />
<el-table-column align="center" prop="name" label="附件" />
<el-table-column align="center" prop="name" label="申报状态" />
<el-table-column align="center" fixed="right" label="操作" width="150">
<template slot-scope="scope">
<el-button @click="handleLook(scope.row)" type="text" size="small">查看</el-button>
<el-button @click="handleUpload(scope.row)" type="text" size="small">上传附件</el-button>
</template>
</el-table-column>
</el-table>
<!-- 查看弹窗 -->
<el-dialog title="申请信息" :visible.sync="dialogTableVisible" width="60%">
<el-form :model="form" ref="form" size="small" label-width="110px">
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="学科">
<el-input v-model="form.subject" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="级部">
<el-input v-model="form.name" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="学年">
<el-input v-model="form.group" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="班级">
<el-input v-model="form.year" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="实验时间">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="节次">
<el-input v-model="form.class" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="实验名称">
<el-input v-model="form.content" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="实验分类">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="实验室">
<el-input v-model="form.class" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="章节内容">
<el-input v-model="form.class" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="附件">
<el-input v-model="form.class" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="申报状态">
<el-input v-model="form.class" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer" style="text-align: center;">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button type="primary" @click="cancle">取 消</el-button>
</div>
</el-dialog>
<pagination v-show="total > 0" :total="total" :page.sync="queryForm.pageNum" :limit.sync="queryForm.pageSize"
@pagination="getList" />
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: 'index',
data() {
return {
queryForm: {
},
//表格数据
tableData: [
{
}
],
//学科分类
options: {
},
form: {
},
total: 0,
dialogTableVisible: false,
}
},
methods: {
//表单查询
getList() {
},
//分配实验室
handleAllocation() {
this.dialogTableVisible = true;
},
//查看按钮操作
handleLook() {
this.dialogTableVisible = true;
},
resetQuery() {
this.getList();
},
//提交按钮
submitForm() {
},
//上传附件按钮操作
handleUpload() {
},
//取消按钮
cancle() {
this.dialogTableVisible = false;
},
},
} }
</script> </script>
......
<template> <template>
<div> <div class="app-container">
<h2>实验室安排</h2> <el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="88px">
<el-form-item label="学科分类">
<el-input v-model="queryForm.class" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="预约时间段">
<el-date-picker v-model="queryForm.time" type="daterange" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="实验分类">
<el-select v-model="queryForm.name" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<el-table-column align="center" type="index" label="序号" width="55" />
<el-table-column align="center" prop="subject" label="学科" />
<el-table-column align="center" prop="grade" label="级部" />
<el-table-column align="center" prop="time" label="学年" />
<el-table-column align="center" prop="name" label="实验时间" />
<el-table-column align="center" prop="name" label="实验名称" />
<el-table-column align="center" prop="time" label="实验分类" />
<el-table-column align="center" prop="content" label="章节内容" />
<el-table-column align="center" prop="name" label="实验室" />
<el-table-column align="center" prop="name" label="实验用品" />
<el-table-column align="center" fixed="right" label="操作" width="150">
<template slot-scope="scope">
<el-button @click="handleApply(scope.row)" type="text" size="small">申请</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分配实验室弹窗 -->
<el-dialog title="教师实验室申请" :visible.sync="dialogTableVisible" width="70%">
<el-form :model="form" ref="form" size="small" label-width="100px">
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="实验名称">
<el-input v-model="form.name" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="实验内容">
<el-input v-model="form.content" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="实验分类">
<el-input v-model="form.year" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="学科">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="级部">
<el-input v-model="form.year" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="学年">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="班级">
<el-input v-model="form.year" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="节次">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="实验时间">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="12" style="display: flex;">
<el-form-item label="实验室选择">
<el-radio-group v-model="form.change">
<el-radio label='0'>103(空闲)</el-radio>
<el-radio label='1'>202(使用中)</el-radio>
<el-radio label='2'>302(使用中)</el-radio>
<el-radio label='3'>303(使用中)</el-radio>
<!-- <el-radio label='4'>304(空闲)</el-radio> -->
<!-- <el-radio label='5'>305(使用中)</el-radio>
<el-radio label='6'>401(空闲)</el-radio>
<el-radio label='7'>402(使用中)</el-radio>
<el-radio label='8'>405(空闲)</el-radio> -->
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="24">
<el-form-item label="备注">
<el-input v-model="form.remark" type="textarea" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer" style="text-align: center;">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button type="primary" @click="cancle">取 消</el-button>
</div>
</el-dialog>
<pagination v-show="total > 0" :total="total" :page.sync="queryForm.pageNum" :limit.sync="queryForm.pageSize"
@pagination="getList" />
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: 'index',
data() {
return {
queryForm: {
},
//表格数据
tableData: [
{
}
],
//学科分类
options: {
},
form: {
},
total: 0,
dialogTableVisible: false,
}
},
methods: {
//表单查询
getList() {
},
//查看按钮操作
handleApply() {
this.dialogTableVisible = true;
},
resetQuery() {
this.getList();
},
//提交按钮
submitForm() {
},
// 取消按钮
cancle() {
this.dialogTableVisible = false;
},
},
} }
</script> </script>
......
<template> <template>
<div> <div class="app-container">
<h2>个人试验申请</h2> <el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="88px">
<el-form-item label="实验级部">
<el-input v-model="queryForm.grade" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="实验名称">
<el-input v-model="queryForm.states" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="预约时间段">
<el-date-picker v-model="queryForm.time" type="daterange" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
</el-col>
</el-row>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<el-table-column align="center" type="index" label="序号" width="55" />
<el-table-column align="center" prop="subject" label="学科" />
<el-table-column align="center" prop="time" label="级部" />
<el-table-column align="center" prop="name" label="学年" />
<el-table-column align="center" prop="grade" label="规划时间" />
<el-table-column align="center" prop="name" label="实验名称" />
<el-table-column align="center" prop="time" label="实验分类" />
<el-table-column align="center" prop="time" label="实验用品" />
<el-table-column align="center" prop="time" label="实验室" />
<el-table-column align="center" prop="name" label="申报状态" />
<el-table-column align="center" fixed="right" label="操作" width="180">
<template slot-scope="scope">
<el-button @click="handleEdit(scope.row)" type="text" size="small">修改</el-button>
<el-button @click="handleLook(scope.row)" type="text" size="small">查看</el-button>
<el-button @click="handleDelete(scope.row)" type="text" size="small">删除</el-button>
<el-button @click="handleResult(scope.row)" type="text" size="small">实验结果</el-button>
</template>
</el-table-column>
</el-table>
<!-- 弹窗 -->
<el-dialog title="申请信息" :visible.sync="dialogTableVisible" width="60%">
<el-form :model="form" ref="form" size="small" label-width="110px">
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="学科">
<el-input v-model="form.subject" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="级部">
<el-input v-model="form.name" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="学年">
<el-input v-model="form.group" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="班级">
<el-input v-model="form.year" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="实验时间">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="节次">
<el-input v-model="form.class" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="实验名称">
<el-input v-model="form.content" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="实验分类">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="实验室">
<el-input v-model="form.class" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="章节内容">
<el-input v-model="form.class" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="附件">
<el-input v-model="form.class" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="申报状态">
<el-input v-model="form.class" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer" style="text-align: center;">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button type="primary" @click="cancle">取 消</el-button>
</div>
</el-dialog>
<pagination v-show="total > 0" :total="total" :page.sync="queryForm.pageNum" :limit.sync="queryForm.pageSize"
@pagination="getList" />
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: 'index',
data() {
return {
queryForm: {
},
//表格数据
tableData: [
{
}
],
//学科分类
options: {
},
form: {
},
total: 0,
dialogTableVisible: false,
}
},
methods: {
//表单查询
getList() {
},
//新增
handleAdd() {
},
//修改
handleEdit() {
this.dialogTableVisible = true;
},
//查看按钮操作
handleLook() {
this.dialogTableVisible = true;
},
//删除按钮操作
handleDelete() {
},
resetQuery() {
this.getList();
},
//提交按钮
submitForm() {
},
//上传附件按钮操作
handleResult() {
},
//取消按钮
cancle() {
this.dialogTableVisible = false;
},
},
} }
</script> </script>
......
...@@ -233,7 +233,8 @@ export default { ...@@ -233,7 +233,8 @@ export default {
// 分班按钮 // 分班按钮
submitForm() { submitForm() {
// 检查是否已经分班 // 检查是否已经分班
const alreadyDivided = this.selectedCourse.some(course => course.divisionClassesRule !== null); const alreadyDivided = this.selectedCourse.every(course => course.divisionClassesRule !== "");
console.log('this.selectedCourse', this.selectedCourse);
if (alreadyDivided) { if (alreadyDivided) {
this.$message.warning("已经分班,无法重复操作"); this.$message.warning("已经分班,无法重复操作");
return; return;
...@@ -243,25 +244,25 @@ export default { ...@@ -243,25 +244,25 @@ export default {
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
let that = this; // let that = this;
for (let i = 0; i < this.selectedCourse.length; i++) { // for (let i = 0; i < this.selectedCourse.length; i++) {
that.selectedCourse[i].divisionClassesRule = that.form.divisionClassesRule; // that.selectedCourse[i].divisionClassesRule = that.form.divisionClassesRule;
const course = this.selectedCourse[i]; // const course = this.selectedCourse[i];
console.log('course.divisionClassesRule:', course.divisionClassesRule); // console.log('course.divisionClassesRule:', course.divisionClassesRule);
console.log('course.classesNumber:', course.classesNumber); // console.log('course.classesNumber:', course.classesNumber);
console.log('course.peopleNumber:', course.peopleNumber); // console.log('course.peopleNumber:', course.peopleNumber);
if (course.divisionClassesRule === '' || course.classesNumber === '' || course.peopleNumber === '') { // if (course.divisionClassesRule === '' || course.classesNumber === '' || course.peopleNumber === '') {
this.$message.error("分班规则、班级数量和每班人数不能为空"); // this.$message.error("分班规则、班级数量和每班人数不能为空");
return; // return;
} // }
let totalPeopleNumber = course.classesNumber * course.peopleNumber; // let totalPeopleNumber = course.classesNumber * course.peopleNumber;
if (totalPeopleNumber > this.selectedCourse.length) { // if (totalPeopleNumber > this.selectedCourse.length) {
this.$message.error("班级数量和每班人数相乘不能超过总人数"); // this.$message.error("班级数量和每班人数相乘不能超过总人数");
return; // return;
} // }
} // }
console.log('this.selectedCourse', this.selectedCourse); // console.log('this.selectedCourse', this.selectedCourse);
addDivisionec(this.selectedCourse).then((response) => { addDivisionec(this.selectedCourse).then((response) => {
console.log('this.selectedCourse', this.selectedCourse); console.log('this.selectedCourse', this.selectedCourse);
this.$modal.msgSuccess("分班成功"); this.$modal.msgSuccess("分班成功");
......
<template> <template>
<div> <div class="app-container">
<h2>班级完成情况明细</h2> <el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="教师">
<el-input v-model="queryForm.teacher" placeholder="请输入教师" clearable></el-input>
</el-form-item>
<el-form-item label="学期">
<el-date-picker v-model="queryForm.semester" type="year" value-format="yyyy" placeholder="选择年">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<el-table-column align="center" prop="teacher" label="教师" />
<el-table-column align="center" prop="year" label="学年" />
<el-table-column align="center" prop="name" label="分组实验" />
<el-table-column align="center" prop="name" label="演示实验" />
<el-table-column align="center" prop="name" label="探究实验" />
<el-table-column align="center" prop="name" label="已完成实验数" />
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryForm.pageNum" :limit.sync="queryForm.pageSize"
@pagination="getList" />
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: 'index',
data() {
return {
queryForm: {
},
//表格数据
tableData: [
{
}
],
total: 0,
}
},
methods: {
getList() {
},
resetQuery() {
this.getList();
},
},
} }
</script> </script>
......
<template> <template>
<div> <div class="app-container">
<h2>实验计划</h2> <el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="学科分类">
<el-select v-model="queryForm.subject" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="实验级部">
<el-input v-model="queryForm.name" placeholder="请输入实验名称" clearable></el-input>
</el-form-item>
<el-form-item label="实验分类">
<el-select v-model="queryForm.name" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row class="mb8" :gutter="8">
<el-col :span="1.5">
<el-button size="mini" type="primary" icon="el-icon-plus" @click="handleAdd">新增
</el-button>
<el-button size="mini" type="success" icon="el-icon-download" @click="handleImport">导入
</el-button>
</el-col>
</el-row>
<el-table :data="tableData" border style="width: 100%">
<el-table-column align="center" type="index" label="序号" width="55" />
<el-table-column align="center" prop="grade" label="级部" />
<el-table-column align="center" prop="name" label="学年" />
<el-table-column align="center" prop="address" label="计划时间" />
<el-table-column align="center" prop="name" label="实验分类" />
<el-table-column align="center" prop="address" label="实验名称" />
<el-table-column align="center" prop="grade" label="学科分类" />
<el-table-column align="center" prop="address" label="章节内容" />
<el-table-column align="center" prop="name" label="是否已预约" />
<el-table-column align="center" fixed="right" label="操作" width="150">
<template slot-scope="scope">
<el-button @click="handleEdit(scope.row)" type="text" size="small">修改</el-button>
<el-button @click="handleLook(scope.row)" type="text" size="small">查看</el-button>
<el-button @click="handleDelete(scope.row)" type="text" size="small">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryForm.pageNum" :limit.sync="queryForm.pageSize"
@pagination="getList" />
<!-- 新增/查看 -->
<el-dialog title="详细信息" :visible.sync="dialogTableVisible" width="60%">
<el-form :model="form" ref="form" size="small" label-width="88px">
<el-row>
<el-col :span="10">
<el-form-item label="学科">
<el-input v-model="form.subject" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="级部">
<el-input v-model="form.grade" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="20">
<el-form-item label="班级">
<el-radio-group v-model="form.change" style="width: 100%;">
<el-radio label='0'>1班</el-radio>
<el-radio label='1'>2班</el-radio>
<el-radio label='2'>3班</el-radio>
<el-radio label='3'>4班</el-radio>
<el-radio label='4'>5班</el-radio>
<!-- <el-radio label='5'>6班</el-radio>
<el-radio label='6'>7班</el-radio>-->
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="10">
<el-form-item label="实验分类">
<el-select v-model="queryForm.sort" placeholder="请选择" style="width: 100%;">
<el-option v-for="item in options" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="实验名称">
<el-input v-model="form.year" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="10">
<el-form-item label="章节内容">
<el-input v-model="form.year" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="计划时间">
<el-date-picker v-model="form.time" type="monthrange" range-separator="至"
start-placeholder="开始月份" end-placeholder="结束月份" value-format="MM" style="width: 100%;">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="20">
<el-form-item label="实验用品">
<el-input v-model="form.name" type="textarea" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer" style="text-align: center;">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel"> 取 消 </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: 'index',
data() {
return {
queryForm: {
},
//表格数据
tableData: [
{
}
],
//查看弹窗表格
ExperimentalData: [],
form: {
},
//实验分类下拉框
options: {
},
//弹窗
dialogTableVisible: false,
total: 0,
}
},
methods: {
getList() {
},
resetQuery() {
this.getList();
},
//新增按钮操作
handleAdd() {
this.dialogTableVisible = true;
},
//删除按钮操作
handleDelete() {
},
//修改按钮操作
handleEdit() {
this.dialogTableVisible = true;
},
/** 导入按钮操作 */
handleImport() {
},
//查看按钮操作
handleLook() {
this.dialogTableVisible = true;
},
//取消按钮
cancel() {
this.dialogTableVisible = false;
},
//提交按钮
submitForm() {
}
},
} }
</script> </script>
......
<template> <template>
<div> <div class="app-container">
<h2>年级实验室预约</h2> <el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="88px">
<el-form-item label="学科分类">
<el-select v-model="queryForm.subject" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="计划时间">
<el-date-picker v-model="queryForm.time" type="daterange" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="实验分类">
<el-select v-model="queryForm.classification" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<el-table-column align="center" type="index" label="序号" width="55" />
<el-table-column align="center" prop="subject" label="学科" />
<el-table-column align="center" prop="grade" label="学年" />
<el-table-column align="center" prop="time" label="级部" />
<el-table-column align="center" prop="name" label="实验时间" />
<el-table-column align="center" prop="name" label="节次" />
<el-table-column align="center" prop="name" label="实验名称" />
<el-table-column align="center" prop="grade" label="实验分类" />
<el-table-column align="center" prop="time" label="实验室" />
<el-table-column align="center" prop="name" label="实验用品" />
<el-table-column align="center" prop="name" label="章节内容" />
<el-table-column align="center" prop="time" label="申请教师" />
<el-table-column align="center" prop="name" label="申报状态" />
<el-table-column align="center" fixed="right" label="操作" width="150">
<template slot-scope="scope">
<el-button @click="handleEdit(scope.row)" type="text" size="small">修改</el-button>
<el-button @click="handleLook(scope.row)" type="text" size="small">查看</el-button>
<el-button @click="handleDelete(scope.row)" type="text" size="small">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 新增/修改/查看弹窗 -->
<el-dialog title="申请信息" :visible.sync="dialogTableVisible" width="70%">
<el-form :model="form" ref="form" size="small" label-width="110px">
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="实验名称">
<el-select v-model="queryForm.subject" placeholder="请选择" style="width: 100%;">
<el-option v-for="item in options" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="章节内容">
<el-input v-model="form.name" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="级部">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="学年">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="学科">
<el-input v-model="form.content" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="实验分类">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="16">
<el-form-item label="实验时间">
<el-date-picker v-model="form.time" type="daterange" range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd"
style="width: 100%;">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="20">
<el-form-item label="实验用品">
<el-input v-model="form.name" type="textarea" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer" style="text-align: center;">
<el-button type="primary" @click="submitForm">确 认</el-button>
<el-button type="primary" @click="cancle">取 消</el-button>
</span>
<!-- <span slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancle">取 消</el-button>
</span> -->
</el-dialog>
<pagination v-show="total > 0" :total="total" :page.sync="queryForm.pageNum" :limit.sync="queryForm.pageSize"
@pagination="getList" />
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: 'index',
data() {
return {
queryForm: {
},
//表格数据
tableData: [
{
}
],
//学科分类
options: {
},
form: {
},
total: 0,
dialogTableVisible: false,
}
},
methods: {
//表单查询
getList() {
},
//查看按钮操作
handleLook() {
this.dialogTableVisible = true;
},
resetQuery() {
this.getList();
},
//提交按钮
submitForm() {
},
//分配按钮操作
allocation() {
},
//取消按钮
cancle() {
this.dialogTableVisible = false;
},
},
} }
</script> </script>
......
<template> <template>
<div> <div class="app-container">
<h2>实验室完成情况明细</h2> <el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="级部">
<el-input v-model="queryForm.grade" placeholder="请输入级部" clearable></el-input>
</el-form-item>
<el-form-item label="实验名称">
<el-input v-model="queryForm.name" placeholder="请输入实验名称" clearable></el-input>
</el-form-item>
<el-form-item label="学期">
<el-date-picker v-model="queryForm.year" type="year" value-format="yyyy" placeholder="选择年">
</el-date-picker>
<el-select v-model="queryForm.semester" @change="courseInfo" placeholder="请选择学期">
<el-option label="上学期" value="0"></el-option>
<el-option label="下学期" value="1"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<el-table-column align="center" type="index" label="序号" width="55" />
<el-table-column align="center" prop="grade" label="级部" />
<el-table-column align="center" prop="name" label="实验名称" />
<el-table-column align="center" prop="name" label="学期" />
<el-table-column align="center" prop="address" label="总班级数" />
<el-table-column align="center" prop="grade" label="已完成班级数" />
<el-table-column align="center" prop="name" label="未完成班级数" />
<el-table-column align="center" prop="address" label="完成比例" />
<el-table-column align="center" fixed="right" label="操作" width="150">
<template slot-scope="scope">
<el-button @click="handleLook(scope.row)" type="text" size="small">查看班级完成详情</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryForm.pageNum" :limit.sync="queryForm.pageSize"
@pagination="getList" />
<!-- 查看弹窗 -->
<el-dialog title="实验名称:物理研究" :visible.sync="dialogTableVisible" width="70%">
<el-form :model="form" ref="form" size="small" :inline="true" label-width="68px">
<el-form-item label="实验分类">
<el-select v-model="form.name" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="班级">
<el-input v-model="form.grade" placeholder="请输入班级" clearable></el-input>
</el-form-item>
<el-form-item label="实验时间">
<el-date-picker v-model="form.time" type="daterange" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getListtc">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuerytc">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="ExperimentalData" border style="width: 100%">
<el-table-column align="center" type="index" label="序号" width="55" />
<el-table-column align="center" prop="grade" label="实验分类" />
<el-table-column align="center" prop="name" label="班级" />
<el-table-column align="center" prop="address" label="实验时间" />
<el-table-column align="center" prop="grade" label="节次" />
<el-table-column align="center" prop="name" label="附件" />
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="form.pageNum" :limit.sync="form.pageSize"
@pagination="getListtc" />
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: 'index',
data() {
return {
queryForm: {
},
//表格数据
tableData: [
{
}
],
//查看弹窗表格
ExperimentalData: [],
form: {
},
//实验分类下拉框
options: {
},
//弹窗
dialogTableVisible: false,
total: 0,
}
},
methods: {
getList() {
},
resetQuery() {
this.getList();
},
//弹窗获取表单
getListtc() {
},
//弹窗重置按钮
resetQuerytc() {
this.getList();
},
//查看按钮操作
handleLook() {
this.dialogTableVisible = true;
},
},
} }
</script> </script>
......
<template> <template>
<div> <div class="app-container">
<h2>教师个人演示实验审批</h2> <el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="88px">
<el-form-item label="学科分类">
<el-select v-model="queryForm.subject" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="预约时间段">
<el-date-picker v-model="queryForm.time" type="daterange" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="实验级部">
<el-input v-model="queryForm.grade" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<el-table-column align="center" type="index" label="序号" width="55" />
<el-table-column align="center" prop="subject" label="学科" />
<el-table-column align="center" prop="grade" label="级部" />
<el-table-column align="center" prop="time" label="实验时间" />
<el-table-column align="center" prop="name" label="节次" />
<el-table-column align="center" prop="name" label="实验名称" />
<el-table-column align="center" prop="name" label="实验分类" />
<el-table-column align="center" prop="grade" label="实验室" />
<el-table-column align="center" prop="time" label="实验用品" />
<el-table-column align="center" prop="name" label="章节内容" />
<el-table-column align="center" prop="name" label="申请教师" />
<el-table-column align="center" prop="name" label="申报状态" />
<el-table-column align="center" fixed="right" label="操作" width="150">
<template slot-scope="scope">
<el-button @click="handleLook(scope.row)" type="text" size="small">查看</el-button>
<el-button @click="handleAllocation(scope.row)" type="text" size="small">分配实验室</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分配实验室弹窗 -->
<el-dialog title="申请信息" :visible.sync="dialogTableVisible" width="70%">
<el-form :model="form" ref="form" size="small" label-width="110px">
<el-row :gutter="30">
<el-col :span="8">
<el-form-item label="学科">
<el-input v-model="form.subject" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="实验名称">
<el-input v-model="form.name" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="实验分组">
<el-input v-model="form.group" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="8">
<el-form-item label="学年">
<el-input v-model="form.year" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="级部">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="班级">
<el-input v-model="form.class" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="8">
<el-form-item label="章节内容">
<el-input v-model="form.content" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="节次">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="申请老师">
<el-input v-model="form.class" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="16">
<el-form-item label="实验时间">
<el-date-picker v-model="form.time" type="daterange" range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd"
style="width: 100%;">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="24">
<el-form-item label="实验室选择">
<el-radio-group v-model="form.change">
<el-radio label='0'>103(空闲)</el-radio>
<el-radio label='1'>202(使用中)</el-radio>
<el-radio label='2'>302(使用中)</el-radio>
<el-radio label='3'>303(使用中)</el-radio>
<el-radio label='4'>304(空闲)</el-radio>
<!-- <el-radio label='5'>305(使用中)</el-radio>
<el-radio label='6'>401(空闲)</el-radio>
<el-radio label='7'>402(使用中)</el-radio>
<el-radio label='8'>405(空闲)</el-radio> -->
</el-radio-group>
</el-form-item>
<!-- <el-form-item label="实验室选择">
<el-input v-model="form.name" placeholder="请输入" ></el-input>
</el-form-item> -->
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="24">
<el-form-item label="实验用品">
<el-input v-model="form.name" type="textarea" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer" style="text-align: center;">
<el-button type="primary" @click="allocation">分 配</el-button>
<el-button type="danger" @click="submitForm">提 交</el-button>
</span>
<!-- <span slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancle">取 消</el-button>
</span> -->
</el-dialog>
<pagination v-show="total > 0" :total="total" :page.sync="queryForm.pageNum" :limit.sync="queryForm.pageSize"
@pagination="getList" />
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: 'index',
data() {
return {
queryForm: {
},
//表格数据
tableData: [
{
}
],
//学科分类
options: {
},
form: {
},
total: 0,
dialogTableVisible: false,
}
},
methods: {
//表单查询
getList() {
},
//分配实验室
handleAllocation() {
this.dialogTableVisible = true;
},
//查看按钮操作
handleLook() {
this.dialogTableVisible = true;
},
resetQuery() {
this.getList();
},
//提交按钮
submitForm() {
},
//分配按钮操作
allocation() {
},
//取消按钮
// cancle() {
// this.dialogTableVisible = false;
// },
},
} }
</script> </script>
......
<template> <template>
<div> <div class="app-container">
<h2>级部实验计划</h2> <el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="学年">
<el-select v-model="queryForm.year" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="实验级部">
<el-input v-model="queryForm.name" placeholder="请输入实验名称" clearable></el-input>
</el-form-item>
<el-form-item label="实验分类">
<el-select v-model="queryForm.name" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<el-table-column align="center" type="index" label="序号" width="55" />
<el-table-column align="center" prop="grade" label="级部" />
<el-table-column align="center" prop="name" label="学年" />
<el-table-column align="center" prop="address" label="计划时间" />
<el-table-column align="center" prop="grade" label="学科分类" />
<el-table-column align="center" prop="name" label="实验分类" />
<el-table-column align="center" prop="address" label="实验名称" />
<el-table-column align="center" prop="address" label="章节内容" />
<el-table-column align="center" fixed="right" label="操作" width="150">
<template slot-scope="scope">
<el-button @click="handleLook(scope.row)" type="text" size="small">查看</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryForm.pageNum" :limit.sync="queryForm.pageSize"
@pagination="getList" />
<!-- 查看弹窗 -->
<el-dialog title="详细信息" :visible.sync="dialogTableVisible" width="60%">
<el-form :model="form" ref="form" size="small" label-width="88px">
<el-row>
<el-col :span="10">
<el-form-item label="级部">
<el-input v-model="form.grade" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="学年">
<el-input v-model="form.year" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="10">
<el-form-item label="计划时间">
<el-input v-model="form.year" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="学科分类">
<el-input v-model="form.year" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="10">
<el-form-item label="实验分类">
<el-input v-model="form.year" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="实验名称">
<el-input v-model="form.year" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="20">
<el-form-item label="章节内容">
<el-input v-model="form.year" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer" style="text-align: center;">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel"> 取 消 </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: 'index',
data() {
return {
queryForm: {
},
//表格数据
tableData: [
{
}
],
//查看弹窗表格
ExperimentalData: [],
form: {
},
//实验分类下拉框
options: {
},
//弹窗
dialogTableVisible: false,
total: 0,
}
},
methods: {
getList() {
},
resetQuery() {
this.getList();
},
//查看按钮操作
handleLook() {
this.dialogTableVisible = true;
},
//取消按钮
cancel() {
this.dialogTableVisible = false;
},
//提交按钮
submitForm() {
}
},
} }
</script> </script>
......
<template> <template>
<div> <div class="app-container">
<h2>年级实验室预约</h2> <el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="88px">
<el-form-item label="实验级部">
<el-input v-model="queryForm.grade" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="实验级部">
<el-input v-model="queryForm.grade" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="预约时间段">
<el-date-picker v-model="queryForm.time" type="daterange" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<el-table-column align="center" type="index" label="序号" width="55" />
<el-table-column align="center" prop="subject" label="学科" />
<el-table-column align="center" prop="grade" label="级部" />
<el-table-column align="center" prop="time" label="学年" />
<el-table-column align="center" prop="name" label="规划时间" />
<el-table-column align="center" prop="name" label="实验名称" />
<el-table-column align="center" prop="name" label="实验分类" />
<el-table-column align="center" prop="time" label="实验用品" />
<el-table-column align="center" prop="name" label="实验室" />
<el-table-column align="center" prop="name" label="申报状态" />
<el-table-column align="center" fixed="right" label="操作" width="150">
<template slot-scope="scope">
<el-button @click="handleLook(scope.row)" type="text" size="small">查看</el-button>
<el-button @click="handleAllocation(scope.row)" type="text" size="small">分配实验室</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分配实验室弹窗 -->
<el-dialog title="申请信息" :visible.sync="dialogTableVisible" width="50%">
<el-form :model="form" ref="form" size="small" label-width="100px">
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="申请老师">
<el-input v-model="form.subject" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="实验分类">
<el-input v-model="form.name" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="10">
<el-form-item label="实验名称">
<el-input v-model="form.year" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="学科">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="20">
<el-form-item label="章节内容">
<el-input v-model="form.name" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="10">
<el-form-item label="级部">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="学年">
<el-input v-model="form.year" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="20">
<el-form-item label="实验用品">
<el-input v-model="form.name" type="textarea" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="20">
<el-form-item label="规划时间">
<el-date-picker v-model="form.time" type="daterange" range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd"
style="width: 100%;">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="实验室选择">
<el-radio-group v-model="form.change">
<el-radio label='0'>103(空闲)</el-radio>
<el-radio label='1'>202(使用中)</el-radio>
<el-radio label='2'>302(使用中)</el-radio>
<el-radio label='3'>303(使用中)</el-radio>
<el-radio label='4'>304(空闲)</el-radio>
<!-- <el-radio label='5'>305(使用中)</el-radio>
<el-radio label='6'>401(空闲)</el-radio>
<el-radio label='7'>402(使用中)</el-radio>
<el-radio label='8'>405(空闲)</el-radio> -->
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer" style="text-align: center;">
<el-button @click="cancel"> 保 存 </el-button>
<el-button type="primary" @click="submitForm">提 交</el-button>
</div>
</el-dialog>
<pagination v-show="total > 0" :total="total" :page.sync="queryForm.pageNum" :limit.sync="queryForm.pageSize"
@pagination="getList" />
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: 'index',
data() {
return {
queryForm: {
},
//表格数据
tableData: [
{
}
],
//学科分类
options: {
},
form: {
},
total: 0,
dialogTableVisible: false,
}
},
methods: {
//表单查询
getList() {
},
//分配实验室
handleAllocation() {
this.dialogTableVisible = true;
},
//查看按钮操作
handleLook() {
this.dialogTableVisible = true;
},
resetQuery() {
this.getList();
},
//提交按钮
submitForm() {
},
// 取消按钮
cancle() {
this.dialogTableVisible = false;
},
},
} }
</script> </script>
......
<template> <template>
<div> <div class="app-container">
<h2>实验室管理列表</h2> <el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="88px">
<el-form-item label="实验室">
<el-select v-model="form.name" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="实验室状态">
<el-select v-model="form.name" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
<el-row class="mb8" :gutter="8">
<el-col :span="1.5">
<el-button size="mini" type="primary" icon="el-icon-plus" @click="handleAdd">新增
</el-button>
</el-col>
</el-row>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<el-table-column align="center" type="index" label="序号" width="55" />
<el-table-column align="center" prop="grade" label="实验室名称" />
<el-table-column align="center" prop="name" label="实验室学科" />
<el-table-column align="center" prop="address" label="实验室负责人" />
<el-table-column align="center" prop="grade" label="实验室状态" />
<el-table-column align="center" fixed="right" label="操作" width="180">
<template slot-scope="scope">
<el-button @click="handleLook(scope.row)" type="text" size="small">查看</el-button>
<el-button @click="handleEdit(scope.row)" type="text" size="small">修改</el-button>
<el-button @click="handleDelete(scope.row)" type="text" size="small">删除</el-button>
<el-button @click="handleRecord(scope.row)" type="text" size="small">查看记录</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryForm.pageNum" :limit.sync="queryForm.pageSize"
@pagination="getList" />
<!-- 新增/修改/查看弹窗 -->
<el-dialog :title="title" :visible.sync="dialogTableVisible" width="60%">
<el-form :model="form" ref="form" size="small" label-width="98px">
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="实验名称">
<el-input v-model="form.name" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="学科">
<el-select v-model="form.subject" placeholder="请选择" style="width: 100%;">
<el-option v-for="item in options" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="负责人">
<el-input v-model="form.name" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="状态">
<el-radio-group v-model="form.states">
<el-radio label='0'>良好</el-radio>
<el-radio label='1'>正常</el-radio>
<el-radio label='2'>待检查</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="20">
<el-form-item label="实验用品">
<el-input v-model="form.name" type="textarea" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer" style="text-align: center;">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel"> 取 消 </el-button>
</div>
</el-dialog>
<!-- 查看记录弹窗 -->
<el-dialog :title="title" :visible.sync="open" width="80%">
<el-form :model="form" ref="form" size="small" label-width="89px">
<el-row>
<el-col :span="4">
<el-form-item label="学科">
<el-select v-model="form.subject" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="实验室级部">
<el-select v-model="form.grade" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="班级">
<el-input v-model="form.grade" placeholder="请输入"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="使用时间">
<el-date-picker v-model="form.time" type="daterange" range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getListtc">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuerytc">重置</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-table :data="ExperimentalData" border style="width: 100%">
<el-table-column align="center" type="index" label="序号" width="55" />
<el-table-column align="center" prop="grade" label="学年" />
<el-table-column align="center" prop="name" label="实验级部" />
<el-table-column align="center" prop="address" label="实验班级" />
<el-table-column align="center" prop="grade" label="实验室" />
<el-table-column align="center" prop="name" label="节次" />
<el-table-column align="center" prop="name" label="学科分类" />
<el-table-column align="center" prop="address" label="实验名称" />
<el-table-column align="center" prop="grade" label="章节内容" />
<el-table-column align="center" prop="name" label="实验分类" />
<el-table-column align="center" prop="grade" label="使用时间" />
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="form.pageNum" :limit.sync="form.pageSize"
@pagination="getListtc" />
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: 'index',
data() {
return {
queryForm: {
},
//表格数据
tableData: [
{
}
],
// 弹出层标题
title: '',
//查看弹窗表格
ExperimentalData: [],
form: {
},
//实验分类下拉框
options: {
},
//弹窗
dialogTableVisible: false,
//查看记录弹窗
open: false,
total: 0,
}
},
methods: {
getList() {
},
resetQuery() {
this.getList();
},
//弹窗搜索
getListtc() {
},
//弹窗重置
resetQuerytc() {
this.getListtc();
},
//查看按钮操作
handleLook() {
this.dialogTableVisible = true;
this.title = "实验室查看";
},
//修改按钮操作
handleEdit() {
this.dialogTableVisible = true;
this.title = "实验室修改";
},
//删除按钮操作
handleDelete() {
},
//新增按钮操作
handleAdd() {
this.dialogTableVisible = true;
this.title = "实验室新增";
},
//查看记录操作
handleRecord() {
this.open = true;
this.title = "实验室使用记录明细";
},
//取消按钮
cancel() {
this.dialogTableVisible = false;
},
//提交按钮
submitForm() {
}
},
} }
</script> </script>
......
<template> <template>
<div> <div class="app-container">
<h2>教师申请</h2> <el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="88px">
<el-form-item label="学科分类">
<el-input v-model="queryForm.class" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="预约时间段">
<el-date-picker v-model="queryForm.time" type="daterange" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="实验级部">
<el-input v-model="queryForm.grade" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<el-table-column align="center" type="index" label="序号" width="55" />
<el-table-column align="center" prop="subject" label="学科" />
<el-table-column align="center" prop="grade" label="级部" />
<el-table-column align="center" prop="time" label="学年" />
<el-table-column align="center" prop="time" label="班级" />
<el-table-column align="center" prop="name" label="实验时间" />
<el-table-column align="center" prop="name" label="节次" />
<el-table-column align="center" prop="name" label="实验名称" />
<el-table-column align="center" prop="time" label="实验分类" />
<el-table-column align="center" prop="name" label="实验室" />
<el-table-column align="center" prop="content" label="章节内容" />
<el-table-column align="center" prop="name" label="申报状态" />
<el-table-column align="center" fixed="right" label="操作" width="150">
<template slot-scope="scope">
<el-button @click="handleLook(scope.row)" type="text" size="small">查看</el-button>
<el-button @click="handleApprove(scope.row)" type="text" size="small">审批</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分配实验室弹窗 -->
<el-dialog title="申请信息" :visible.sync="dialogTableVisible" width="50%">
<el-form :model="form" ref="form" size="small" label-width="100px">
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="审批名称">
<el-input v-model="form.name" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="章节内容">
<el-input v-model="form.content" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="实验分类">
<el-input v-model="form.year" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="实验室">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="学科">
<el-input v-model="form.year" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="级部">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="班级">
<el-input v-model="form.year" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="学年">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="10">
<el-form-item label="节次">
<el-input v-model="form.year" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="实验时间">
<el-input v-model="form.grade" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="20">
<el-form-item label="实验用品">
<el-input v-model="form.name" type="textarea" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer" style="text-align: center;">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button type="primary" @click="cancle">取 消</el-button>
</div>
</el-dialog>
<pagination v-show="total > 0" :total="total" :page.sync="queryForm.pageNum" :limit.sync="queryForm.pageSize"
@pagination="getList" />
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: 'index',
data() {
return {
queryForm: {
},
//表格数据
tableData: [
{
}
],
//学科分类
options: {
},
form: {
},
total: 0,
dialogTableVisible: false,
}
},
methods: {
//表单查询
getList() {
},
//审批
handleApprove() {
this.dialogTableVisible = true;
},
//查看按钮操作
handleLook() {
this.dialogTableVisible = true;
},
resetQuery() {
this.getList();
},
//提交按钮
submitForm() {
},
// 取消按钮
cancle() {
this.dialogTableVisible = false;
},
},
} }
</script> </script>
......
<template> <template>
<div> <div class="app-container">
<h2>实验室完成情况统计</h2> <el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="级部">
<el-input v-model="queryForm.grade" placeholder="请输入级部" clearable></el-input>
</el-form-item>
<el-form-item label="实验名称">
<el-input v-model="queryForm.name" placeholder="请输入实验名称" clearable></el-input>
</el-form-item>
<el-form-item label="学期">
<el-date-picker v-model="queryForm.year" type="year" value-format="yyyy" placeholder="选择年">
</el-date-picker>
<el-select v-model="queryForm.semester" @change="courseInfo" placeholder="请选择学期">
<el-option label="上学期" value="0"></el-option>
<el-option label="下学期" value="1"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<el-table-column align="center" type="index" label="序号" width="55" />
<el-table-column align="center" prop="grade" label="级部" />
<el-table-column align="center" prop="name" label="学期" />
<el-table-column align="center" prop="address" label="总班级数" />
<el-table-column align="center" prop="grade" label="已完成班级数" />
<el-table-column align="center" prop="name" label="未完成班级数" />
<el-table-column align="center" prop="address" label="完成比例" />
<el-table-column align="center" fixed="right" label="操作" width="150">
<template slot-scope="scope">
<el-button @click="handleLook(scope.row)" type="text" size="small">查看班级完成详情</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryForm.pageNum" :limit.sync="queryForm.pageSize"
@pagination="getList" />
<!-- 查看弹窗 -->
<el-dialog title="实验名称:物理研究" :visible.sync="dialogTableVisible" width="70%">
<el-form :model="form" ref="form" size="small" :inline="true" label-width="68px">
<el-form-item label="实验分类">
<el-select v-model="form.name" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="班级">
<el-input v-model="form.grade" placeholder="请输入班级" clearable></el-input>
</el-form-item>
<el-form-item label="实验时间">
<el-date-picker v-model="form.time" type="daterange" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getListtc">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuerytc">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="ExperimentalData" border style="width: 100%">
<el-table-column align="center" type="index" label="序号" width="55" />
<el-table-column align="center" prop="grade" label="实验分类" />
<el-table-column align="center" prop="name" label="班级" />
<el-table-column align="center" prop="address" label="实验时间" />
<el-table-column align="center" prop="grade" label="节次" />
<el-table-column align="center" prop="name" label="附件" />
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="form.pageNum" :limit.sync="form.pageSize"
@pagination="getListtc" />
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: 'index',
data() {
return {
queryForm: {
},
//表格数据
tableData: [
{
}
],
//查看弹窗表格
ExperimentalData: [],
form: {
},
//实验分类下拉框
options: {
},
//弹窗
dialogTableVisible: false,
total: 0,
}
},
methods: {
getList() {
},
resetQuery() {
this.getList();
},
//弹窗获取表单
getListtc() {
},
//弹窗重置按钮
resetQuerytc() {
this.getList();
},
//查看按钮操作
handleLook() {
this.dialogTableVisible = true;
},
},
} }
</script> </script>
......
<template> <template>
<div> <div class="app-container">
<h2>实验室记录</h2> <el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="教师">
<el-input v-model="queryForm.teacher" placeholder="请输入教师" clearable></el-input>
</el-form-item>
<el-form-item label="学期">
<el-date-picker v-model="queryForm.semester" type="year" value-format="yyyy" placeholder="选择年">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<el-table-column align="center" prop="teacher" label="教师" />
<el-table-column align="center" prop="year" label="学年" />
<el-table-column align="center" prop="name" label="分组实验" />
<el-table-column align="center" prop="name" label="演示实验" />
<el-table-column align="center" prop="name" label="探究实验" />
<el-table-column align="center" prop="name" label="已完成实验数" />
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryForm.pageNum" :limit.sync="queryForm.pageSize"
@pagination="getList" />
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: 'index',
data() {
return {
queryForm: {
},
//表格数据
tableData: [
{
}
],
total: 0,
}
},
methods: {
getList() {
},
resetQuery() {
this.getList();
},
},
} }
</script> </script>
......
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="80px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="80px">
<el-form-item label="设备名称" prop="name"> <el-form-item label="设备名称" prop="equipmentname">
<el-input v-model="queryParams.name" placeholder="请输入设备名称" clearable /> <el-input v-model="queryParams.equipmentname" placeholder="请输入设备名称" clearable />
</el-form-item> </el-form-item>
<el-form-item label="借用日期" prop="date"> <el-form-item label="借用日期" prop="borrowtime">
<el-date-picker v-model="queryParams.date" type="date" placeholder="选择日期" clearable /> <el-date-picker v-model="queryParams.borrowtime" type="date" placeholder="选择日期" clearable />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
...@@ -15,13 +15,13 @@ ...@@ -15,13 +15,13 @@
</el-form> </el-form>
<el-table v-loading="loading" :data="lendingRecords" stripe> <el-table v-loading="loading" :data="lendingRecords" stripe>
<el-table-column label="序号" type="index" width="55" align="center" /> <el-table-column label="序号" type="index" width="55" align="center" />
<el-table-column label="自编码" align="center" prop="name" /> <el-table-column label="自编码" align="center" prop="encode" />
<el-table-column label="设备名称" align="center" prop="name" /> <el-table-column label="设备名称" align="center" prop="equipmentname" />
<el-table-column label="型号" align="center" prop="name" /> <el-table-column label="型号" align="center" prop="model" />
<el-table-column label="借用日期" align="center" prop="name" /> <el-table-column label="借用日期" align="center" prop="borrowtime" />
<el-table-column label="借用人" align="center" prop="name" /> <el-table-column label="借用人" align="center" prop="borrowby" />
<el-table-column label="用途" align="center" prop="name" /> <el-table-column label="用途" align="center" prop="purpose" />
<el-table-column label="借用期限" align="center" prop="name" /> <el-table-column label="借用期限" align="center" prop="deadline" />
<el-table-column label="操作" align="center" min-width="200px"> <el-table-column label="操作" align="center" min-width="200px">
<template v-slot="scope"> <template v-slot="scope">
<el-button size="mini" type="text" icon="el-icon-view" @click="handleLook(scope.row)">查看 <el-button size="mini" type="text" icon="el-icon-view" @click="handleLook(scope.row)">查看
...@@ -35,6 +35,11 @@ ...@@ -35,6 +35,11 @@
</template> </template>
<script> <script>
// import {
// listTeacherjy,
// } from "@/api/smartSchool/personWork/propertyManagement";
export default { export default {
data() { data() {
return { return {
...@@ -51,10 +56,18 @@ export default { ...@@ -51,10 +56,18 @@ export default {
total: 0, total: 0,
} }
}, },
created() {
this.getList();
},
methods: { methods: {
//获取数据信息 //获取数据信息
getList() { getList() {
// listTeacherjy(this.queryParams).then((response) => {
// this.tableData = response.rows;
// this.loading = false;
// console.log(111, response.rows);
// this.total = response.total;
// });
}, },
//重置 //重置
resetQuery() { }, resetQuery() { },
...@@ -69,4 +82,4 @@ export default { ...@@ -69,4 +82,4 @@ export default {
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>
<style lang="scss" scoped></style>
...@@ -56,10 +56,10 @@ ...@@ -56,10 +56,10 @@
<el-table v-loading="loading" stripe :data="deviceData" @selection-change="handleSelectionChange" width="100%"> <el-table v-loading="loading" stripe :data="deviceData" @selection-change="handleSelectionChange" width="100%">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column align="center" type="index" label="序号" width="55" fixed="left" /> <el-table-column align="center" type="index" label="序号" width="55" fixed="left" />
<el-table-column align="center" prop="encode" label="自编码"></el-table-column> <el-table-column align="center" prop="encode" label="自编码" width="140" fixed="left"></el-table-column>
<el-table-column align="center" prop="equipmentName" label="设备名称"></el-table-column> <el-table-column align="center" prop="equipmentName" label="设备名称" fixed="left"></el-table-column>
<el-table-column align="center" prop="model" label="型号"></el-table-column> <el-table-column align="center" prop="model" label="型号" fixed="left"></el-table-column>
<el-table-column align="center" prop="specification" label="规格"></el-table-column> <el-table-column align="center" prop="specification" label="规格" fixed="left"></el-table-column>
<el-table-column align="center" prop="classificationCode" label="分类编码"></el-table-column> <el-table-column align="center" prop="classificationCode" label="分类编码"></el-table-column>
<el-table-column align="center" prop="unit" label="单位"></el-table-column> <el-table-column align="center" prop="unit" label="单位"></el-table-column>
<el-table-column align="center" prop="affiliationType" label="归属类型"> <el-table-column align="center" prop="affiliationType" label="归属类型">
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
<div>{{ selectDictLabel(dict.type.equipment_state, row.equipmentState) }}</div> <div>{{ selectDictLabel(dict.type.equipment_state, row.equipmentState) }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="isAllowLend" label="是否允许借出"> <el-table-column align="center" prop="isAllowLend" label="是否允许借出" width="120">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<div>{{ selectDictLabel(dict.type.is_lend, row.isAllowLend) }}</div> <div>{{ selectDictLabel(dict.type.is_lend, row.isAllowLend) }}</div>
</template> </template>
...@@ -82,9 +82,9 @@ ...@@ -82,9 +82,9 @@
<div>{{ selectDictLabel(dict.type.is_lend, row.isLend) }}</div> <div>{{ selectDictLabel(dict.type.is_lend, row.isLend) }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="dateOfProduction" label="投产日期"></el-table-column> <el-table-column align="center" prop="dateOfProduction" label="投产日期" width="120"></el-table-column>
<el-table-column align="center" prop="price" label="价格(元)"></el-table-column> <el-table-column align="center" prop="price" label="价格(元)" width="100"></el-table-column>
<el-table-column align="center" prop="lifeOfUtility" label="效用年限(年)"></el-table-column> <el-table-column align="center" prop="lifeOfUtility" label="效用年限(年)" width="120"></el-table-column>
<el-table-column align="center" prop="place" label="地点"></el-table-column> <el-table-column align="center" prop="place" label="地点"></el-table-column>
<el-table-column align="center" prop="useName" label="使用人"></el-table-column> <el-table-column align="center" prop="useName" label="使用人"></el-table-column>
<el-table-column align="center" prop="remark" label="备注"></el-table-column> <el-table-column align="center" prop="remark" label="备注"></el-table-column>
...@@ -100,7 +100,7 @@ ...@@ -100,7 +100,7 @@
@pagination="getList" /> @pagination="getList" />
<!-- 添加或修改对话框 --> <!-- 添加或修改对话框 -->
<el-dialog :title="详细信息" :visible.sync="dialogVisible" width="50%" append-to-body> <el-dialog title="详细信息" :visible.sync="dialogVisible" width="50%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="110px"> <el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="24"> <el-col :span="24">
...@@ -564,6 +564,7 @@ export default { ...@@ -564,6 +564,7 @@ export default {
type: 'success', type: 'success',
message: '出库成功!' message: '出库成功!'
}); });
this.getList();
} }
}) })
}).catch(() => { }).catch(() => {
......
...@@ -20,18 +20,18 @@ ...@@ -20,18 +20,18 @@
</el-row> </el-row>
<el-table v-loading="loading" :data="lendReturnData" stripe> <el-table v-loading="loading" :data="lendReturnData" stripe>
<el-table-column label="序号" type="index" width="55" align="center" /> <el-table-column label="序号" type="index" width="55" align="center" />
<el-table-column label="自编码" align="center" prop="encode" /> <el-table-column label="自编码" align="center" prop="encode" width="140" />
<el-table-column label="设备名称" align="center" prop="equipmentName" /> <el-table-column label="设备名称" align="center" prop="equipmentName" />
<el-table-column label="型号" align="center" prop="model" /> <el-table-column label="型号" align="center" prop="model" />
<el-table-column label="借用日期" align="center" prop="borrowTime" /> <el-table-column label="借用日期" align="center" prop="borrowTime" width="160" />
<el-table-column label="借用人" align="center" prop="borrowBy" /> <el-table-column label="借用人" align="center" prop="borrowBy" />
<el-table-column label="用途" align="center" prop="purpose" /> <el-table-column label="用途" align="center" prop="purpose" />
<el-table-column label="借用期限(天)" align="center" prop="deadline" /> <el-table-column label="借用期限(天)" align="center" prop="deadline" width="140" />
<el-table-column label="归还日期" align="center" prop="returnTime" /> <el-table-column label="归还日期" align="center" prop="returnTime" width="160" />
<el-table-column label="归还时设备情况" align="center" prop="returnEquipmentCondition" /> <el-table-column label="归还时设备情况" align="center" prop="returnEquipmentCondition" width="160" />
<el-table-column label="接收人" align="center" prop="receivedBy" /> <el-table-column label="接收人" align="center" prop="receivedBy" />
<el-table-column label="预计使用时间" align="center" prop="yjuseTime" /> <el-table-column label="预计使用时间" align="center" prop="yjuseTime" width="160" />
<el-table-column label="实际使用时间" align="center" prop="sjuseTime" /> <el-table-column label="实际使用时间" align="center" prop="sjuseTime" width="160" />
<el-table-column label="备注" align="center" prop="remark" /> <el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" prop="orgname" width="150" fixed="right"> <el-table-column label="操作" align="center" prop="orgname" width="150" fixed="right">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="借用人" prop="borrowById"> <el-form-item label="借用人" prop="borrowById">
<el-select v-model="lendReturnForm.borrowById" filterable placeholder="请选择借用人" <el-select v-model="lendReturnForm.borrowById" filterable placeholder="请选择借用人"
:disabled="nowType == 2 ? true : false" clearable> :disabled="nowType == 2 ? true : false" clearable style="width: 100%;">
<el-option v-for="(item, index) in userList" :key="index" :label="item.userName" :value="item.userId"> <el-option v-for="(item, index) in userList" :key="index" :label="item.userName" :value="item.userId">
</el-option> </el-option>
</el-select> </el-select>
...@@ -83,14 +83,16 @@ ...@@ -83,14 +83,16 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="借用日期" prop="borrowTime"> <el-form-item label="借用日期" prop="borrowTime">
<el-date-picker v-model="lendReturnForm.borrowTime" type="datetime" clearable class="selectWidth" <el-date-picker v-model="lendReturnForm.borrowTime" type="datetime" clearable class="selectWidth"
placeholder="请选择借用日期" value-format="yyyy-MM-dd HH:mm:ss" :disabled="nowType == 2 ? true : false"> placeholder="请选择借用日期" value-format="yyyy-MM-dd HH:mm:ss" :disabled="nowType == 2 ? true : false"
style="width: 100%;">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="归还日期" prop="returnTime"> <el-form-item label="归还日期" prop="returnTime">
<el-date-picker v-model="lendReturnForm.returnTime" type="datetime" clearable class="selectWidth" <el-date-picker v-model="lendReturnForm.returnTime" type="datetime" clearable class="selectWidth"
placeholder="请选择归还日期" value-format="yyyy-MM-dd HH:mm:ss" :disabled="nowType == 2 ? true : false"> placeholder="请选择归还日期" value-format="yyyy-MM-dd HH:mm:ss" :disabled="nowType == 2 ? true : false"
style="width: 100%;">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -104,7 +106,8 @@ ...@@ -104,7 +106,8 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="归还时设备情况" prop="returnEquipmentCondition"> <el-form-item label="归还时设备情况" prop="returnEquipmentCondition">
<el-select v-model="lendReturnForm.returnEquipmentCondition" clearable placeholder="请选择归还时设备情况"> <el-select v-model="lendReturnForm.returnEquipmentCondition" clearable placeholder="请选择归还时设备情况"
style="width: 100%;">
<el-option v-for="(item, index) in dict.type.equipment_state" :key="index" :label="item.label" <el-option v-for="(item, index) in dict.type.equipment_state" :key="index" :label="item.label"
:value="item.value" :disabled="nowType == 2 ? true : false"></el-option> :value="item.value" :disabled="nowType == 2 ? true : false"></el-option>
</el-select> </el-select>
...@@ -121,7 +124,7 @@ ...@@ -121,7 +124,7 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="接收人" prop="receivedById"> <el-form-item label="接收人" prop="receivedById">
<el-select v-model="lendReturnForm.receivedById" filterable placeholder="请选择接收人" <el-select v-model="lendReturnForm.receivedById" filterable placeholder="请选择接收人"
:disabled="nowType == 2 ? true : false" clearable> :disabled="nowType == 2 ? true : false" clearable style="width: 100%;">
<el-option v-for="(item, index) in adminUserList" :key="index" :label="item.admin" :value="item.adminId"> <el-option v-for="(item, index) in adminUserList" :key="index" :label="item.admin" :value="item.adminId">
</el-option> </el-option>
</el-select> </el-select>
......
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
<td>申请时间</td> <td>申请时间</td>
<td>{{ applyTime }}</td> <td>{{ applyTime }}</td>
<td>状态</td> <td>状态</td>
<td class="btntext" colspan="5">{{ statu }}</td> <td class="btntext" colspan="5">{{ statu === '1' ? '预约成功' : '已取消' }}</td>
</tr> </tr>
</table> </table>
</div> </div>
......
...@@ -93,17 +93,17 @@ ...@@ -93,17 +93,17 @@
</tr> </tr>
<tr> <tr>
<td>是否彩排</td> <td>是否彩排</td>
<td class="btntext">{{ isRehearsal }}</td> <td class="btntext">{{ isRehearsal === '1' ? '是' : '否' }}</td>
<td>是否录像</td> <td>是否录像</td>
<td class="btntext">{{ isVideo }}</td> <td class="btntext">{{ isVideo === '1' ? '是' : '否' }}</td>
<td style="width: 100px">是否直播</td> <td style="width: 100px">是否直播</td>
<td class="btntext">{{ isLive }}</td> <td class="btntext">{{ isLive === '1' ? '是' : '否' }}</td>
</tr> </tr>
<tr> <tr>
<td>话筒数量</td> <td>话筒数量</td>
<td>{{ htNumber }}</td> <td>{{ htNumber === '1' ? '是' : '否' }}</td>
<td>是否需要大屏</td> <td>是否需要大屏</td>
<td class="btntext" colspan="5">{{ isBigScreen }}</td> <td class="btntext" colspan="5">{{ isBigScreen === '1' ? '是' : '否' }}</td>
</tr> </tr>
<tr> <tr>
<td rowspan="2" class="btntxt">附件</td> <td rowspan="2" class="btntxt">附件</td>
......
package yangtz.cs.liu.campus.controller.auditorium; package yangtz.cs.liu.campus.controller.auditorium;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -42,6 +44,7 @@ import yangtz.cs.liu.campus.service.auditorium.ISchoolAuditoriumService; ...@@ -42,6 +44,7 @@ import yangtz.cs.liu.campus.service.auditorium.ISchoolAuditoriumService;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import yangtz.cs.liu.campus.service.teacher.ISchoolTeacherService; import yangtz.cs.liu.campus.service.teacher.ISchoolTeacherService;
import yangtz.cs.liu.campus.util.VxTemlateSendApi;
import yangtz.cs.liu.campus.vo.auditorium.SchoolAuditoriumVo; import yangtz.cs.liu.campus.vo.auditorium.SchoolAuditoriumVo;
import yangtz.cs.liu.campus.vo.teacher.TeacherLeaveVO; import yangtz.cs.liu.campus.vo.teacher.TeacherLeaveVO;
import yangtz.cs.liu.wechat.service.api.IWxApiService; import yangtz.cs.liu.wechat.service.api.IWxApiService;
...@@ -167,17 +170,30 @@ public class SchoolAuditoriumController extends BaseController ...@@ -167,17 +170,30 @@ public class SchoolAuditoriumController extends BaseController
schoolAuditorium.setApplyTime(DateUtils.getNowDate()); schoolAuditorium.setApplyTime(DateUtils.getNowDate());
schoolAuditoriumService.submitApply(schoolAuditorium, userName, AUDITORIUMAPPLY, new HashMap<>()); schoolAuditoriumService.submitApply(schoolAuditorium, userName, AUDITORIUMAPPLY, new HashMap<>());
//转换时间
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date time = schoolAuditorium.getApplyTime();
String applyTime = format.format(time);
/**发送模板消息到分管领导*/ /**发送模板消息到分管领导*/
AuditoriumTemplate template = new AuditoriumTemplate(); //获取用户openid
String openId = teacherService.getOpenIdByUserId(schoolAuditorium.getLeadershipId()); String openId = teacherService.getOpenIdByUserId(schoolAuditorium.getLeadershipId());
template.setToUserOpenId(openId); Map<String,Object> map = new HashMap<>();
template.setFirst("您好,您有礼堂预约申请等待审批。"); map.put("toUserOpenId",openId);
template.setApplyUser(schoolAuditorium.getApplyName()); map.put("applyTime",applyTime);
template.setContent(schoolAuditorium.getActivityName()); map.put("remark","请您尽快处理。");
template.setApplyTime(schoolAuditorium.getApplyTime()); map.put("applyUser",schoolAuditorium.getApplyName());
template.setRemark("请您尽快处理。"); map.put("content",schoolAuditorium.getActivityName());
wxApiService.sendAuditoriumTemplate(template); map.put("first","您好,您有礼堂预约申请等待审批!");
VxTemlateSendApi.sendVxTemlate(map);
// AuditoriumTemplate template = new AuditoriumTemplate();
// template.setToUserOpenId(openId);
// template.setFirst("您好,您有礼堂预约申请等待审批。");
// template.setApplyUser(schoolAuditorium.getApplyName());
// template.setContent(schoolAuditorium.getActivityName());
// template.setApplyTime(schoolAuditorium.getApplyTime());
// template.setRemark("请您尽快处理。");
// wxApiService.sendAuditoriumTemplate(template);
return AjaxResult.success("提交成功"); return AjaxResult.success("提交成功");
} }
...@@ -229,20 +245,25 @@ public class SchoolAuditoriumController extends BaseController ...@@ -229,20 +245,25 @@ public class SchoolAuditoriumController extends BaseController
schoolAuditoriumService.updateById(leave); schoolAuditoriumService.updateById(leave);
/**发送模板消息到申请人,审批结果*/ /**发送模板消息到申请人,审批结果*/
LeaveResultTemplate template = new LeaveResultTemplate();
template.setFirst("您好,您的礼堂预约申请已回复。");
//获取申请人openId //获取申请人openId
String openId = teacherService.getOpenIdByUserId(leave.getApplyId()); String openId = teacherService.getOpenIdByUserId(leave.getApplyId());
template.setToUserOpenId(openId); Map<String,Object> map = new HashMap<>();
template.setResult(flag ? "已通过" : "已驳回"); map.put("toUserOpenId",openId);
template.setRemark("审批留言: "+ variables.get("comment")); map.put("first","您好,您的礼堂预约申请已回复。");
List<HistoricActivity> list = processService.selectHistoryList(instanceId,new HistoricActivity()); map.put("content",flag ? "已通过" : "已驳回");
if(StringUtils.isNotNull(list) && list.size() > 0){ map.put("remark","审批留言: "+ variables.get("comment"));
HistoricActivity activity = list.get(0); VxTemlateSendApi.sendVxTemlate(map);
template.setAuditTime(activity.getEndTime()); // LeaveResultTemplate template = new LeaveResultTemplate();
} // template.setFirst("您好,您的礼堂预约申请已回复。");
wxApiService.sendLeaveResultTemplate(template); // template.setToUserOpenId(openId);
// template.setResult(flag ? "已通过" : "已驳回");
// template.setRemark("审批留言: "+ variables.get("comment"));
// List<HistoricActivity> list = processService.selectHistoryList(instanceId,new HistoricActivity());
// if(StringUtils.isNotNull(list) && list.size() > 0){
// HistoricActivity activity = list.get(0);
// template.setAuditTime(activity.getEndTime());
// }
// wxApiService.sendLeaveResultTemplate(template);
return AjaxResult.success("审批完成"); return AjaxResult.success("审批完成");
} }
return AjaxResult.success("审批完成"); return AjaxResult.success("审批完成");
......
...@@ -26,15 +26,14 @@ import yangtz.cs.liu.campus.service.assetsType.ISchoolAssetsTypeService; ...@@ -26,15 +26,14 @@ import yangtz.cs.liu.campus.service.assetsType.ISchoolAssetsTypeService;
import yangtz.cs.liu.campus.service.purchase.ISchoolPurchaseDetailService; import yangtz.cs.liu.campus.service.purchase.ISchoolPurchaseDetailService;
import yangtz.cs.liu.campus.service.purchase.ISchoolPurchaseService; import yangtz.cs.liu.campus.service.purchase.ISchoolPurchaseService;
import yangtz.cs.liu.campus.service.teacher.ISchoolTeacherService; import yangtz.cs.liu.campus.service.teacher.ISchoolTeacherService;
import yangtz.cs.liu.campus.util.VxTemlateSendApi;
import yangtz.cs.liu.campus.vo.purchase.SchoolPurchaseDetailsVo; import yangtz.cs.liu.campus.vo.purchase.SchoolPurchaseDetailsVo;
import yangtz.cs.liu.campus.vo.purchase.PurchaseVo; import yangtz.cs.liu.campus.vo.purchase.PurchaseVo;
import yangtz.cs.liu.campus.vo.purchase.SchoolPurchaseVo; import yangtz.cs.liu.campus.vo.purchase.SchoolPurchaseVo;
import yangtz.cs.liu.wechat.service.api.IWxApiService; import yangtz.cs.liu.wechat.service.api.IWxApiService;
import java.util.ArrayList; import java.text.SimpleDateFormat;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
...@@ -169,17 +168,33 @@ public class SchoolPurchaseController extends BaseController { ...@@ -169,17 +168,33 @@ public class SchoolPurchaseController extends BaseController {
schoolPurchase.setApplyTime(DateUtils.getNowDate()); schoolPurchase.setApplyTime(DateUtils.getNowDate());
schoolPurchaseService.submitApply(schoolPurchase, userName, PURCHASEREQUEST, new HashMap<>()); schoolPurchaseService.submitApply(schoolPurchase, userName, PURCHASEREQUEST, new HashMap<>());
//转换时间
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date time = schoolPurchase.getApplyTime();
String applyTime = format.format(time);
/**发送模板消息到处室领导*/ /**发送模板消息到处室领导*/
PurchaseTemplate template = new PurchaseTemplate(); //获取openid
//String openId = userService.getOpenIdByUserId(schoolPurchase.getHandUserId1());
String openId = teacherService.getOpenIdByUserId(schoolPurchase.getHandUserId1()); String openId = teacherService.getOpenIdByUserId(schoolPurchase.getHandUserId1());
template.setToUserOpenId(openId); Map<String,Object> map = new HashMap<>();
template.setFirst("您好,您有采购申请等待审批。"); map.put("toUserOpenId",openId);
template.setApplyUser(schoolPurchase.getApplyUser()); map.put("applyTime",applyTime);
template.setContent(schoolPurchase.getPurchaseName()); map.put("remark","请您尽快处理。");
template.setApplyTime(schoolPurchase.getApplyTime()); map.put("applyUser",schoolPurchase.getApplyUser());
template.setRemark("请您尽快处理。"); map.put("content",schoolPurchase.getPurchaseName());
wxApiService.sendPurchaseTemplate(template); map.put("first","您好,您有采购申请等待审批。");
VxTemlateSendApi.sendVxTemlate(map);
// PurchaseTemplate template = new PurchaseTemplate();
// //String openId = userService.getOpenIdByUserId(schoolPurchase.getHandUserId1());
//
// template.setToUserOpenId(openId);
// template.setFirst("您好,您有采购申请等待审批。");
// template.setApplyUser(schoolPurchase.getApplyUser());
// template.setContent(schoolPurchase.getPurchaseName());
// template.setApplyTime(schoolPurchase.getApplyTime());
// template.setRemark("请您尽快处理。");
// wxApiService.sendPurchaseTemplate(template);
return AjaxResult.success("审批完成"); return AjaxResult.success("审批完成");
} }
...@@ -227,34 +242,62 @@ public class SchoolPurchaseController extends BaseController { ...@@ -227,34 +242,62 @@ public class SchoolPurchaseController extends BaseController {
} }
/** 修改任务结果 */ /** 修改任务结果 */
schoolPurchaseService.updateById(schoolPurchase); schoolPurchaseService.updateById(schoolPurchase);
/**发送模板消息到申请人,审批结果*/ /**发送模板消息到申请人,审批结果*/
LeaveResultTemplate template = new LeaveResultTemplate(); //获取openid
template.setFirst("您好,您的采购申请已回复。");
//获取申请人openId
//String openId = userService.getOpenIdByUserId(schoolPurchase.getApplyId());
String openId = teacherService.getOpenIdByUserId(schoolPurchase.getApplyId()); String openId = teacherService.getOpenIdByUserId(schoolPurchase.getApplyId());
template.setToUserOpenId(openId); Map<String,Object> map = new HashMap<>();
template.setResult(flag ? "已通过" : "已驳回"); map.put("toUserOpenId",openId);
template.setRemark("审批留言: "+ variables.get("comment")); map.put("first","您好,您的采购申请已回复。");
List<HistoricActivity> list = processService.selectHistoryList(instanceId,new HistoricActivity()); map.put("content",flag ? "已通过" : "已驳回");
if(StringUtils.isNotNull(list) && list.size() > 0){ map.put("remark","审批留言: "+ variables.get("comment"));
HistoricActivity activity = list.get(0); VxTemlateSendApi.sendVxTemlate(map);
template.setAuditTime(activity.getEndTime());
} // LeaveResultTemplate template = new LeaveResultTemplate();
wxApiService.sendLeaveResultTemplate(template); // template.setFirst("您好,您的采购申请已回复。");
// //获取申请人openId
// //String openId = userService.getOpenIdByUserId(schoolPurchase.getApplyId());
//
// template.setToUserOpenId(openId);
// template.setResult(flag ? "已通过" : "已驳回");
// template.setRemark("审批留言: "+ variables.get("comment"));
// List<HistoricActivity> list = processService.selectHistoryList(instanceId,new HistoricActivity());
// if(StringUtils.isNotNull(list) && list.size() > 0){
// HistoricActivity activity = list.get(0);
// template.setAuditTime(activity.getEndTime());
// }
// wxApiService.sendLeaveResultTemplate(template);
return AjaxResult.success("审批完成"); return AjaxResult.success("审批完成");
} }
//转换时间
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date time = schoolPurchase.getApplyTime();
String applyTime = format.format(time);
/**发送模板消息到财务领导*/ /**发送模板消息到财务领导*/
PurchaseTemplate template = new PurchaseTemplate(); //获取openid
//String openId = userService.getOpenIdByUserId(schoolPurchase.getHandUserId2());
String openId = teacherService.getOpenIdByUserId(schoolPurchase.getHandUserId2()); String openId = teacherService.getOpenIdByUserId(schoolPurchase.getHandUserId2());
template.setToUserOpenId(openId);
template.setFirst("您好,您有采购申请等待审批。"); Map<String,Object> map = new HashMap<>();
template.setApplyUser(schoolPurchase.getApplyUser()); map.put("toUserOpenId",openId);
template.setContent(schoolPurchase.getPurchaseName()); map.put("applyTime",applyTime);
template.setApplyTime(schoolPurchase.getApplyTime()); map.put("remark","请您尽快处理。");
template.setRemark("请您尽快处理。"); map.put("applyUser",schoolPurchase.getApplyUser());
wxApiService.sendPurchaseTemplate(template); map.put("content",schoolPurchase.getPurchaseName());
map.put("first","您好,您有采购申请等待审批。");
VxTemlateSendApi.sendVxTemlate(map);
// PurchaseTemplate template = new PurchaseTemplate();
// //String openId = userService.getOpenIdByUserId(schoolPurchase.getHandUserId2());
//
// template.setToUserOpenId(openId);
// template.setFirst("您好,您有采购申请等待审批。");
// template.setApplyUser(schoolPurchase.getApplyUser());
// template.setContent(schoolPurchase.getPurchaseName());
// template.setApplyTime(schoolPurchase.getApplyTime());
// template.setRemark("请您尽快处理。");
// wxApiService.sendPurchaseTemplate(template);
return AjaxResult.success("审批完成"); return AjaxResult.success("审批完成");
} }
...@@ -310,7 +353,8 @@ public class SchoolPurchaseController extends BaseController { ...@@ -310,7 +353,8 @@ public class SchoolPurchaseController extends BaseController {
@GetMapping("/selectRegisterById/{id}") @GetMapping("/selectRegisterById/{id}")
public AjaxResult selectRegisterById(@PathVariable("id") Long id) { public AjaxResult selectRegisterById(@PathVariable("id") Long id) {
// return AjaxResult.success(schoolPurchaseService.getById(id)); // return AjaxResult.success(schoolPurchaseService.getById(id));
// TODO 修改采购信息详情
//修改采购信息详情
SchoolPurchase schoolPurchase = schoolPurchaseService.getById(id); SchoolPurchase schoolPurchase = schoolPurchaseService.getById(id);
PurchaseVo purchaseVo = new PurchaseVo(); PurchaseVo purchaseVo = new PurchaseVo();
BeanUtils.copyProperties(schoolPurchase,purchaseVo); BeanUtils.copyProperties(schoolPurchase,purchaseVo);
......
...@@ -232,9 +232,14 @@ public class SchoolAttController extends BaseController { ...@@ -232,9 +232,14 @@ public class SchoolAttController extends BaseController {
schoolAttService.checkImport(list); schoolAttService.checkImport(list);
//处理数据 //处理数据
List<SchoolAtt> attList = schoolAttService.dealData(list); List<SchoolAtt> attList = schoolAttService.dealData(list);
//验证是否迟到早退
List<SchoolAtt> attLists = schoolAttService.verifyLateness(attList);
//数据导入 //数据导入
String message = schoolAttService.importData(attList); // String message = schoolAttService.importData(attLists);
return AjaxResult.success(message); boolean b = schoolAttService.saveBatch(attLists);
return AjaxResult.success(b);
} }
......
...@@ -24,10 +24,13 @@ import yangtz.cs.liu.campus.domain.temp.DepartmentBudgetTemplate; ...@@ -24,10 +24,13 @@ import yangtz.cs.liu.campus.domain.temp.DepartmentBudgetTemplate;
import yangtz.cs.liu.campus.domain.temp.LeaveResultTemplate; import yangtz.cs.liu.campus.domain.temp.LeaveResultTemplate;
import yangtz.cs.liu.campus.service.schoolDepartmentBudget.ISchoolDepartmentBudgetService; import yangtz.cs.liu.campus.service.schoolDepartmentBudget.ISchoolDepartmentBudgetService;
import yangtz.cs.liu.campus.service.teacher.ISchoolTeacherService; import yangtz.cs.liu.campus.service.teacher.ISchoolTeacherService;
import yangtz.cs.liu.campus.util.VxTemlateSendApi;
import yangtz.cs.liu.campus.vo.schoolDepartmentBudget.SchoolDepartmentBudgetVo; import yangtz.cs.liu.campus.vo.schoolDepartmentBudget.SchoolDepartmentBudgetVo;
import yangtz.cs.liu.wechat.service.api.IWxApiService; import yangtz.cs.liu.wechat.service.api.IWxApiService;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -156,15 +159,30 @@ public class SchoolDepartmentBudgetController extends BaseController ...@@ -156,15 +159,30 @@ public class SchoolDepartmentBudgetController extends BaseController
schoolDepartmentBudgetService.submitApply(schoolDepartmentBudget,userName,DEPARTMENTBUDGET,new HashMap<>()); schoolDepartmentBudgetService.submitApply(schoolDepartmentBudget,userName,DEPARTMENTBUDGET,new HashMap<>());
/**发送模板消息到分管领导*/ /**发送模板消息到分管领导*/
DepartmentBudgetTemplate template = new DepartmentBudgetTemplate(); //转换时间
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date time = schoolDepartmentBudget.getApplyTime();
String applyTime = format.format(time);
//获取openid
String openId = teacherService.getOpenIdByUserId(schoolDepartmentBudget.getLeadershipId()); String openId = teacherService.getOpenIdByUserId(schoolDepartmentBudget.getLeadershipId());
template.setToUserOpenId(openId); Map<String,Object> map = new HashMap<>();
template.setFirst("您好,您有科室预算申请等待审批。"); map.put("toUserOpenId",openId);
template.setApplyUser(schoolDepartmentBudget.getApplyName()); map.put("applyTime",applyTime);
template.setContent(schoolDepartmentBudget.getYear() + "年度" + schoolDepartmentBudget.getDeptName() + "预算申请"); map.put("remark","请您尽快处理。");
template.setApplyTime(schoolDepartmentBudget.getApplyTime()); map.put("applyUser",schoolDepartmentBudget.getApplyName());
template.setRemark("请您尽快处理。"); map.put("content",schoolDepartmentBudget.getYear() + "年度" + schoolDepartmentBudget.getDeptName() + "预算申请");
wxApiService.sendDepartmentBudgetTemplate(template); map.put("first","您好,您有科室预算申请等待审批。");
VxTemlateSendApi.sendVxTemlate(map);
// DepartmentBudgetTemplate template = new DepartmentBudgetTemplate();
// template.setToUserOpenId(openId);
// template.setFirst("您好,您有科室预算申请等待审批。");
// template.setApplyUser(schoolDepartmentBudget.getApplyName());
// template.setContent(schoolDepartmentBudget.getYear() + "年度" + schoolDepartmentBudget.getDeptName() + "预算申请");
// template.setApplyTime(schoolDepartmentBudget.getApplyTime());
// template.setRemark("请您尽快处理。");
// wxApiService.sendDepartmentBudgetTemplate(template);
return AjaxResult.success("提交成功"); return AjaxResult.success("提交成功");
} }
...@@ -200,7 +218,7 @@ public class SchoolDepartmentBudgetController extends BaseController ...@@ -200,7 +218,7 @@ public class SchoolDepartmentBudgetController extends BaseController
SchoolDepartmentBudget leave = schoolDepartmentBudgetService.getOne(wrapper); SchoolDepartmentBudget leave = schoolDepartmentBudgetService.getOne(wrapper);
Boolean flag = Boolean.parseBoolean(variables.get("pass").toString()); Boolean flag = Boolean.parseBoolean(variables.get("pass").toString());
/**判断流程是否结束,如果结束则更新礼堂预约状态*/ /**判断流程是否结束,如果结束则更新科室预算状态*/
ProcessInstance rpi = runtimeService ProcessInstance rpi = runtimeService
.createProcessInstanceQuery()//创建流程实例查询对象 .createProcessInstanceQuery()//创建流程实例查询对象
.processInstanceId(instanceId) .processInstanceId(instanceId)
...@@ -212,20 +230,26 @@ public class SchoolDepartmentBudgetController extends BaseController ...@@ -212,20 +230,26 @@ public class SchoolDepartmentBudgetController extends BaseController
schoolDepartmentBudgetService.updateById(leave); schoolDepartmentBudgetService.updateById(leave);
/**发送模板消息到申请人,审批结果*/ /**发送模板消息到申请人,审批结果*/
LeaveResultTemplate template = new LeaveResultTemplate();
template.setFirst("您好,您的科室预算申请已回复。");
//获取申请人openId //获取申请人openId
String openId = teacherService.getOpenIdByUserId(leave.getApplyId()); String openId = teacherService.getOpenIdByUserId(leave.getApplyId());
template.setToUserOpenId(openId); Map<String,Object> map = new HashMap<>();
template.setResult(flag ? "已通过" : "已驳回"); map.put("toUserOpenId",openId);
template.setRemark("审批留言: "+ variables.get("comment")); map.put("first","您好,您的科室预算申请已回复。");
List<HistoricActivity> list = processService.selectHistoryList(instanceId,new HistoricActivity()); map.put("content",flag ? "已通过" : "已驳回");
if(StringUtils.isNotNull(list) && list.size() > 0){ map.put("remark","审批留言: "+ variables.get("comment"));
HistoricActivity activity = list.get(0); VxTemlateSendApi.sendVxTemlate(map);
template.setAuditTime(activity.getEndTime());
}
wxApiService.sendLeaveResultTemplate(template);
// LeaveResultTemplate template = new LeaveResultTemplate();
// template.setFirst("您好,您的科室预算申请已回复。");
// template.setToUserOpenId(openId);
// template.setResult(flag ? "已通过" : "已驳回");
// template.setRemark("审批留言: "+ variables.get("comment"));
// List<HistoricActivity> list = processService.selectHistoryList(instanceId,new HistoricActivity());
// if(StringUtils.isNotNull(list) && list.size() > 0){
// HistoricActivity activity = list.get(0);
// template.setAuditTime(activity.getEndTime());
// }
// wxApiService.sendLeaveResultTemplate(template);
return AjaxResult.success("审批完成"); return AjaxResult.success("审批完成");
} }
//说明流程实例结束了 //说明流程实例结束了
...@@ -239,20 +263,26 @@ public class SchoolDepartmentBudgetController extends BaseController ...@@ -239,20 +263,26 @@ public class SchoolDepartmentBudgetController extends BaseController
schoolDepartmentBudgetService.updateById(leave); schoolDepartmentBudgetService.updateById(leave);
/**发送模板消息到申请人,审批结果*/ /**发送模板消息到申请人,审批结果*/
LeaveResultTemplate template = new LeaveResultTemplate();
template.setFirst("您好,您的科室预算申请已回复。");
//获取申请人openId //获取申请人openId
String openId = teacherService.getOpenIdByUserId(leave.getApplyId()); String openId = teacherService.getOpenIdByUserId(leave.getApplyId());
template.setToUserOpenId(openId); Map<String,Object> map = new HashMap<>();
template.setResult(flag ? "已通过" : "已驳回"); map.put("toUserOpenId",openId);
template.setRemark("审批留言: "+ variables.get("comment")); map.put("first","您好,您的科室预算申请已回复。");
List<HistoricActivity> list = processService.selectHistoryList(instanceId,new HistoricActivity()); map.put("content",flag ? "已通过" : "已驳回");
if(StringUtils.isNotNull(list) && list.size() > 0){ map.put("remark","审批留言: "+ variables.get("comment"));
HistoricActivity activity = list.get(0); VxTemlateSendApi.sendVxTemlate(map);
template.setAuditTime(activity.getEndTime());
}
wxApiService.sendLeaveResultTemplate(template);
// LeaveResultTemplate template = new LeaveResultTemplate();
// template.setFirst("您好,您的科室预算申请已回复。");
// template.setToUserOpenId(openId);
// template.setResult(flag ? "已通过" : "已驳回");
// template.setRemark("审批留言: "+ variables.get("comment"));
// List<HistoricActivity> list = processService.selectHistoryList(instanceId,new HistoricActivity());
// if(StringUtils.isNotNull(list) && list.size() > 0){
// HistoricActivity activity = list.get(0);
// template.setAuditTime(activity.getEndTime());
// }
// wxApiService.sendLeaveResultTemplate(template);
return AjaxResult.success("审批完成"); return AjaxResult.success("审批完成");
} }
return AjaxResult.success("审批完成"); return AjaxResult.success("审批完成");
......
package yangtz.cs.liu.campus.controller.schoolLab;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolExperimentPlan;
import yangtz.cs.liu.campus.domain.schoolgrade.SchoolGrade;
import yangtz.cs.liu.campus.service.schoolLab.ISchoolExperimentPlanService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import yangtz.cs.liu.campus.service.schoolgrade.ISchoolGradeService;
import yangtz.cs.liu.campus.vo.schoolLab.SchoolExperimentPlanVo;
import yangtz.cs.liu.campus.vo.schoolgrade.GradeTreeSelect;
import static yangtz.cs.liu.campus.constant.GradeConstant.NEWTERM;
import static yangtz.cs.liu.campus.constant.GradeConstant.UNNEW;
/**
* 实验计划Controller
*
* @author ruoyi
* @date 2023-08-29
*/
@RestController
@RequestMapping("/experimentPlan")
public class SchoolExperimentPlanController extends BaseController
{
@Autowired
private ISchoolExperimentPlanService schoolExperimentPlanService;
/**
* 查询实验计划列表
*/
@GetMapping("/list")
public TableDataInfo list(SchoolExperimentPlanVo schoolExperimentPlanVo)
{
startPage();
List<SchoolExperimentPlanVo> list = schoolExperimentPlanService.selectSchoolExperimentPlanList(schoolExperimentPlanVo);
return getDataTable(list);
}
/**
* 导出实验计划列表
*/
@Log(title = "实验计划", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, SchoolExperimentPlanVo schoolExperimentPlanVo)
{
List<SchoolExperimentPlanVo> list = schoolExperimentPlanService.selectSchoolExperimentPlanList(schoolExperimentPlanVo);
ExcelUtil<SchoolExperimentPlanVo> util = new ExcelUtil<SchoolExperimentPlanVo>(SchoolExperimentPlanVo.class);
util.exportExcel(response, list, "实验计划数据");
}
/**
* 获取实验计划详细信息
*/
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(schoolExperimentPlanService.selectSchoolExperimentPlanById(id));
}
/**
* 新增实验计划
*/
@Log(title = "实验计划", businessType = BusinessType.INSERT)
@PostMapping("/add")
public AjaxResult add(@RequestBody SchoolExperimentPlanVo schoolExperimentPlanVo)
{
return toAjax(schoolExperimentPlanService.insertSchoolExperimentPlan(schoolExperimentPlanVo));
}
/**
* 修改实验计划
*/
@Log(title = "实验计划", businessType = BusinessType.UPDATE)
@PutMapping("/edit")
public AjaxResult edit(@RequestBody SchoolExperimentPlanVo schoolExperimentPlanVo)
{
return toAjax(schoolExperimentPlanService.updateSchoolExperimentPlan(schoolExperimentPlanVo));
}
/**
* 删除实验计划
*/
@Log(title = "实验计划", businessType = BusinessType.DELETE)
@PostMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(schoolExperimentPlanService.deleteSchoolExperimentPlanByIds(ids));
}
/**
* 根据学年查询级部下拉框
*/
@GetMapping("/getGrade/{schoolYear}")
public AjaxResult getGrade(@PathVariable("schoolYear") int schoolYear){
return AjaxResult.success(schoolExperimentPlanService.getGrade(schoolYear));
}
/**
* 根据级部查询对应班级
*/
@GetMapping("/getClass/{gradeId}")
public AjaxResult getSchoolClass(@PathVariable("gradeId") Long gradeId){
return AjaxResult.success(schoolExperimentPlanService.getSchoolClass(gradeId));
}
/**
* 获取当前学期
*/
@GetMapping("/getSemester")
public AjaxResult getSemester(){
AjaxResult ajaxResult = AjaxResult.success();
Calendar cal = Calendar.getInstance();
//获取当前年月
int nowYear = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
//设置当前学期
String term = "1";
//2-7为第二学期,8-1为第一学期
//如果当前月份小于8月,则该学年应为当前年-1 到 当前年,例如当前年月为2023年7月,则该学年为2022-2023年的第二学期
if (month >= 2 && month < 8) {
term = "2";
}
ajaxResult.put("semester",term);
return ajaxResult;
}
}
package yangtz.cs.liu.campus.controller.schoolLab;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolLabClassYear;
import yangtz.cs.liu.campus.service.schoolLab.ISchoolLabClassYearService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 年级实验室预约Controller
*
* @author ruoyi
* @date 2023-08-29
*/
@RestController
@RequestMapping("/schoolLabClassYear")
public class SchoolLabClassYearController extends BaseController
{
@Autowired
private ISchoolLabClassYearService schoolLabClassYearService;
/**
* 查询年级实验室预约列表
*/
@GetMapping("/list")
public TableDataInfo list(SchoolLabClassYear schoolLabClassYear)
{
startPage();
List<SchoolLabClassYear> list = schoolLabClassYearService.selectSchoolLabClassYearList(schoolLabClassYear);
return getDataTable(list);
}
/**
* 导出年级实验室预约列表
*/
@Log(title = "年级实验室预约", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, SchoolLabClassYear schoolLabClassYear)
{
List<SchoolLabClassYear> list = schoolLabClassYearService.selectSchoolLabClassYearList(schoolLabClassYear);
ExcelUtil<SchoolLabClassYear> util = new ExcelUtil<SchoolLabClassYear>(SchoolLabClassYear.class);
util.exportExcel(response, list, "年级实验室预约数据");
}
/**
* 获取年级实验室预约详细信息
*/
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(schoolLabClassYearService.selectSchoolLabClassYearById(id));
}
/**
* 新增年级实验室预约
*/
@Log(title = "年级实验室预约", businessType = BusinessType.INSERT)
@PostMapping("/add")
public AjaxResult add(@RequestBody SchoolLabClassYear schoolLabClassYear)
{
return toAjax(schoolLabClassYearService.insertSchoolLabClassYear(schoolLabClassYear));
}
/**
* 修改年级实验室预约
*/
@Log(title = "年级实验室预约", businessType = BusinessType.UPDATE)
@PutMapping("/edit")
public AjaxResult edit(@RequestBody SchoolLabClassYear schoolLabClassYear)
{
return toAjax(schoolLabClassYearService.updateSchoolLabClassYear(schoolLabClassYear));
}
/**
* 删除年级实验室预约
*/
@Log(title = "年级实验室预约", businessType = BusinessType.DELETE)
@PostMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(schoolLabClassYearService.deleteSchoolLabClassYearByIds(ids));
}
}
package yangtz.cs.liu.campus.controller.schoolLab;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolLabCompetition;
import yangtz.cs.liu.campus.service.schoolLab.ISchoolLabCompetitionService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 实验室竞赛Controller
*
* @author ruoyi
* @date 2023-08-29
*/
@RestController
@RequestMapping("/schoolLabCompetition")
public class SchoolLabCompetitionController extends BaseController
{
@Autowired
private ISchoolLabCompetitionService schoolLabCompetitionService;
/**
* 查询实验室竞赛列表
*/
@GetMapping("/list")
public TableDataInfo list(SchoolLabCompetition schoolLabCompetition)
{
startPage();
List<SchoolLabCompetition> list = schoolLabCompetitionService.selectSchoolLabCompetitionList(schoolLabCompetition);
return getDataTable(list);
}
/**
* 导出实验室竞赛列表
*/
@Log(title = "实验室竞赛", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, SchoolLabCompetition schoolLabCompetition)
{
List<SchoolLabCompetition> list = schoolLabCompetitionService.selectSchoolLabCompetitionList(schoolLabCompetition);
ExcelUtil<SchoolLabCompetition> util = new ExcelUtil<SchoolLabCompetition>(SchoolLabCompetition.class);
util.exportExcel(response, list, "实验室竞赛数据");
}
/**
* 获取实验室竞赛详细信息
*/
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(schoolLabCompetitionService.selectSchoolLabCompetitionById(id));
}
/**
* 新增实验室竞赛
*/
@Log(title = "实验室竞赛", businessType = BusinessType.INSERT)
@PostMapping("/add")
public AjaxResult add(@RequestBody SchoolLabCompetition schoolLabCompetition)
{
return toAjax(schoolLabCompetitionService.insertSchoolLabCompetition(schoolLabCompetition));
}
/**
* 修改实验室竞赛
*/
@Log(title = "实验室竞赛", businessType = BusinessType.UPDATE)
@PutMapping("/edit")
public AjaxResult edit(@RequestBody SchoolLabCompetition schoolLabCompetition)
{
return toAjax(schoolLabCompetitionService.updateSchoolLabCompetition(schoolLabCompetition));
}
/**
* 删除实验室竞赛
*/
@Log(title = "实验室竞赛", businessType = BusinessType.DELETE)
@PostMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(schoolLabCompetitionService.deleteSchoolLabCompetitionByIds(ids));
}
}
package yangtz.cs.liu.campus.controller.schoolLab;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolLab;
import yangtz.cs.liu.campus.service.schoolLab.ISchoolLabService;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 实验室Controller
*
* @author ruoyi
* @date 2023-08-29
*/
@RestController
@RequestMapping("/schoolLab")
public class SchoolLabController extends BaseController
{
@Autowired
private ISchoolLabService schoolLabService;
/**
* 查询实验室列表
*/
@GetMapping("/list")
public TableDataInfo list(SchoolLab schoolLab)
{
startPage();
List<SchoolLab> list = schoolLabService.selectSchoolLabList(schoolLab);
return getDataTable(list);
}
/**
* 导出实验室列表
*/
@Log(title = "实验室", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, SchoolLab schoolLab)
{
List<SchoolLab> list = schoolLabService.selectSchoolLabList(schoolLab);
ExcelUtil<SchoolLab> util = new ExcelUtil<SchoolLab>(SchoolLab.class);
util.exportExcel(response, list, "实验室数据");
}
/**
* 获取实验室详细信息
*/
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(schoolLabService.selectSchoolLabById(id));
}
/**
* 新增实验室
*/
@Log(title = "实验室", businessType = BusinessType.INSERT)
@PostMapping("/add")
public AjaxResult add(@RequestBody SchoolLab schoolLab)
{
return toAjax(schoolLabService.insertSchoolLab(schoolLab));
}
/**
* 修改实验室
*/
@Log(title = "实验室", businessType = BusinessType.UPDATE)
@PutMapping("/edit")
public AjaxResult edit(@RequestBody SchoolLab schoolLab)
{
return toAjax(schoolLabService.updateSchoolLab(schoolLab));
}
/**
* 删除实验室
*/
@Log(title = "实验室", businessType = BusinessType.DELETE)
@PostMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(schoolLabService.deleteSchoolLabByIds(ids));
}
/**
* 获取实验室负责人下拉框
* @return
*/
@GetMapping("/getLabAdmin")
public AjaxResult getLabAdmin(){
return AjaxResult.success(schoolLabService.getLabAdmin());
}
/**
* 获取学科下拉框
* @return
*/
@GetMapping("/getSub")
public AjaxResult getSub(){
return AjaxResult.success(schoolLabService.getSub());
}
}
package yangtz.cs.liu.campus.controller.schoolLab;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolTeacherExperimentApply;
import yangtz.cs.liu.campus.service.schoolLab.ISchoolTeacherExperimentApplyService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 教师个人实验申请Controller
*
* @author ruoyi
* @date 2023-08-29
*/
@RestController
@RequestMapping("/schoolTeacherExperimentApply")
public class SchoolTeacherExperimentApplyController extends BaseController
{
@Autowired
private ISchoolTeacherExperimentApplyService schoolTeacherExperimentApplyService;
/**
* 查询教师个人实验申请列表
*/
@GetMapping("/list")
public TableDataInfo list(SchoolTeacherExperimentApply schoolTeacherExperimentApply)
{
startPage();
List<SchoolTeacherExperimentApply> list = schoolTeacherExperimentApplyService.selectSchoolTeacherExperimentApplyList(schoolTeacherExperimentApply);
return getDataTable(list);
}
/**
* 导出教师个人实验申请列表
*/
@Log(title = "教师个人实验申请", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, SchoolTeacherExperimentApply schoolTeacherExperimentApply)
{
List<SchoolTeacherExperimentApply> list = schoolTeacherExperimentApplyService.selectSchoolTeacherExperimentApplyList(schoolTeacherExperimentApply);
ExcelUtil<SchoolTeacherExperimentApply> util = new ExcelUtil<SchoolTeacherExperimentApply>(SchoolTeacherExperimentApply.class);
util.exportExcel(response, list, "教师个人实验申请数据");
}
/**
* 获取教师个人实验申请详细信息
*/
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(schoolTeacherExperimentApplyService.selectSchoolTeacherExperimentApplyById(id));
}
/**
* 新增教师个人实验申请
*/
@Log(title = "教师个人实验申请", businessType = BusinessType.INSERT)
@PostMapping("/add")
public AjaxResult add(@RequestBody SchoolTeacherExperimentApply schoolTeacherExperimentApply)
{
return toAjax(schoolTeacherExperimentApplyService.insertSchoolTeacherExperimentApply(schoolTeacherExperimentApply));
}
/**
* 修改教师个人实验申请
*/
@Log(title = "教师个人实验申请", businessType = BusinessType.UPDATE)
@PutMapping("/edit")
public AjaxResult edit(@RequestBody SchoolTeacherExperimentApply schoolTeacherExperimentApply)
{
return toAjax(schoolTeacherExperimentApplyService.updateSchoolTeacherExperimentApply(schoolTeacherExperimentApply));
}
/**
* 删除教师个人实验申请
*/
@Log(title = "教师个人实验申请", businessType = BusinessType.DELETE)
@PostMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(schoolTeacherExperimentApplyService.deleteSchoolTeacherExperimentApplyByIds(ids));
}
}
package yangtz.cs.liu.campus.controller.schoolLab;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolTeacherLabApply;
import yangtz.cs.liu.campus.service.schoolLab.ISchoolTeacherLabApplyService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 教师实验室申请Controller
*
* @author ruoyi
* @date 2023-08-29
*/
@RestController
@RequestMapping("/schoolTeacherLabApply")
public class SchoolTeacherLabApplyController extends BaseController
{
@Autowired
private ISchoolTeacherLabApplyService schoolTeacherLabApplyService;
/**
* 查询教师实验室申请列表
*/
@GetMapping("/list")
public TableDataInfo list(SchoolTeacherLabApply schoolTeacherLabApply)
{
startPage();
List<SchoolTeacherLabApply> list = schoolTeacherLabApplyService.selectSchoolTeacherLabApplyList(schoolTeacherLabApply);
return getDataTable(list);
}
/**
* 导出教师实验室申请列表
*/
@Log(title = "教师实验室申请", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, SchoolTeacherLabApply schoolTeacherLabApply)
{
List<SchoolTeacherLabApply> list = schoolTeacherLabApplyService.selectSchoolTeacherLabApplyList(schoolTeacherLabApply);
ExcelUtil<SchoolTeacherLabApply> util = new ExcelUtil<SchoolTeacherLabApply>(SchoolTeacherLabApply.class);
util.exportExcel(response, list, "教师实验室申请数据");
}
/**
* 获取教师实验室申请详细信息
*/
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(schoolTeacherLabApplyService.selectSchoolTeacherLabApplyById(id));
}
/**
* 新增教师实验室申请
*/
@Log(title = "教师实验室申请", businessType = BusinessType.INSERT)
@PostMapping("/add")
public AjaxResult add(@RequestBody SchoolTeacherLabApply schoolTeacherLabApply)
{
return toAjax(schoolTeacherLabApplyService.insertSchoolTeacherLabApply(schoolTeacherLabApply));
}
/**
* 修改教师实验室申请
*/
@Log(title = "教师实验室申请", businessType = BusinessType.UPDATE)
@PutMapping("/edit")
public AjaxResult edit(@RequestBody SchoolTeacherLabApply schoolTeacherLabApply)
{
return toAjax(schoolTeacherLabApplyService.updateSchoolTeacherLabApply(schoolTeacherLabApply));
}
/**
* 删除教师实验室申请
*/
@Log(title = "教师实验室申请", businessType = BusinessType.DELETE)
@PostMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(schoolTeacherLabApplyService.deleteSchoolTeacherLabApplyByIds(ids));
}
}
...@@ -2,6 +2,7 @@ package yangtz.cs.liu.campus.controller.schooloffical; ...@@ -2,6 +2,7 @@ package yangtz.cs.liu.campus.controller.schooloffical;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.core.utils.HolidayDateUtil;
import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
...@@ -32,6 +33,7 @@ import yangtz.cs.liu.campus.service.pubFile.IPubFileService; ...@@ -32,6 +33,7 @@ import yangtz.cs.liu.campus.service.pubFile.IPubFileService;
import yangtz.cs.liu.campus.service.schooloffical.ISchoolOfficalService; import yangtz.cs.liu.campus.service.schooloffical.ISchoolOfficalService;
import yangtz.cs.liu.campus.service.schooloffical.ISchoolOfficialFlowService; import yangtz.cs.liu.campus.service.schooloffical.ISchoolOfficialFlowService;
import yangtz.cs.liu.campus.service.teacher.ISchoolTeacherService; import yangtz.cs.liu.campus.service.teacher.ISchoolTeacherService;
import yangtz.cs.liu.campus.util.VxTemlateSendApi;
import yangtz.cs.liu.campus.vo.schoolOfficial.SchoolOfficialFlowVo; import yangtz.cs.liu.campus.vo.schoolOfficial.SchoolOfficialFlowVo;
import yangtz.cs.liu.campus.vo.schoolOfficial.SchoolOfficialVo; import yangtz.cs.liu.campus.vo.schoolOfficial.SchoolOfficialVo;
import yangtz.cs.liu.campus.vo.schooloffical.SchoolOfficalVO; import yangtz.cs.liu.campus.vo.schooloffical.SchoolOfficalVO;
...@@ -39,7 +41,11 @@ import yangtz.cs.liu.wechat.service.api.IWxApiService; ...@@ -39,7 +41,11 @@ import yangtz.cs.liu.wechat.service.api.IWxApiService;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import static yangtz.cs.liu.campus.constant.OfficalConstant.*; import static yangtz.cs.liu.campus.constant.OfficalConstant.*;
...@@ -159,17 +165,35 @@ public class SchoolOfficalController extends BaseController { ...@@ -159,17 +165,35 @@ public class SchoolOfficalController extends BaseController {
} }
/**发送模板消息到批阅人*/ /**发送模板消息到批阅人*/
// TODO 模板消息
public void send(SchoolOfficialVo vo){ public void send(SchoolOfficialVo vo){
OfficalTemplate template = new OfficalTemplate(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
template.setFirst("您好,您有一个新的公文需要批阅"); Date time = DateUtils.getNowDate();
//String openId = userService.getOpenIdByUserId(vo.getReceiveUser()); String applyTime = format.format(time);
String applyTime1 = HolidayDateUtil.format1.format(vo.getDeadline());
//获取openid
String openId = teacherService.getOpenIdByUserId(vo.getReceiveUser()); String openId = teacherService.getOpenIdByUserId(vo.getReceiveUser());
template.setToUserOpenId(openId); Map<String,Object> map = new HashMap<>();
template.setTitle(vo.getIssuedName()); map.put("toUserOpenId",openId);
template.setFinishTime(vo.getDeadline()); map.put("applyTime",applyTime);
template.setContent("请领导批阅"); map.put("remark","请您于" + applyTime1 + "前前往电脑端进行处理。");
template.setRemark("请您前往电脑端进行处理"); map.put("applyUser","");
String s = wxApiService.sendOfficalTemplate(template); map.put("content",vo.getIssuedName());
map.put("first","您好,您有一个新的公文需要批阅");
VxTemlateSendApi.sendVxTemlate(map);
// OfficalTemplate template = new OfficalTemplate();
// template.setFirst("您好,您有一个新的公文需要批阅");
// //String openId = userService.getOpenIdByUserId(vo.getReceiveUser());
//
// template.setToUserOpenId(openId);
// template.setTitle(vo.getIssuedName());
// template.setFinishTime(vo.getDeadline());
// template.setContent("请领导批阅");
// template.setRemark("请您前往电脑端进行处理");
// String s = wxApiService.sendOfficalTemplate(template);
} }
/** /**
......
...@@ -141,6 +141,7 @@ public class SchoolStudentController extends BaseController { ...@@ -141,6 +141,7 @@ public class SchoolStudentController extends BaseController {
} }
} }
if (StringUtils.isNotBlank(schoolStudent.getProvincialNumber())){
LambdaQueryWrapper<SchoolStudent> lqw2 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SchoolStudent> lqw2 = new LambdaQueryWrapper<>();
lqw2 lqw2
.eq(SchoolStudent::getProvincialNumber, schoolStudent.getProvincialNumber()); .eq(SchoolStudent::getProvincialNumber, schoolStudent.getProvincialNumber());
...@@ -150,7 +151,10 @@ public class SchoolStudentController extends BaseController { ...@@ -150,7 +151,10 @@ public class SchoolStudentController extends BaseController {
throw new ServiceException("省学籍辅号已存在"); throw new ServiceException("省学籍辅号已存在");
} }
} }
}
if (StringUtils.isNotBlank(schoolStudent.getNationalNumber())){
LambdaQueryWrapper<SchoolStudent> lqw3 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SchoolStudent> lqw3 = new LambdaQueryWrapper<>();
lqw3 lqw3
.eq(SchoolStudent::getNationalNumber, schoolStudent.getNationalNumber()); .eq(SchoolStudent::getNationalNumber, schoolStudent.getNationalNumber());
...@@ -160,7 +164,10 @@ public class SchoolStudentController extends BaseController { ...@@ -160,7 +164,10 @@ public class SchoolStudentController extends BaseController {
throw new ServiceException("全国学籍号已存在"); throw new ServiceException("全国学籍号已存在");
} }
} }
}
if (StringUtils.isNotBlank(schoolStudent.getOneCard())){
LambdaQueryWrapper<SchoolStudent> lqw4 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SchoolStudent> lqw4 = new LambdaQueryWrapper<>();
lqw4 lqw4
.eq(SchoolStudent::getOneCard, schoolStudent.getOneCard()); .eq(SchoolStudent::getOneCard, schoolStudent.getOneCard());
...@@ -171,6 +178,7 @@ public class SchoolStudentController extends BaseController { ...@@ -171,6 +178,7 @@ public class SchoolStudentController extends BaseController {
} }
} }
} }
}
private void checkStudentUnique(SchoolStudent schoolStudent) { private void checkStudentUnique(SchoolStudent schoolStudent) {
// TODO 原代码 // TODO 原代码
...@@ -235,6 +243,7 @@ public class SchoolStudentController extends BaseController { ...@@ -235,6 +243,7 @@ public class SchoolStudentController extends BaseController {
} }
} }
if (StringUtils.isNotBlank(schoolStudent.getProvincialNumber())){
LambdaQueryWrapper<SchoolStudent> lqw2 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SchoolStudent> lqw2 = new LambdaQueryWrapper<>();
lqw2 lqw2
.eq(SchoolStudent::getProvincialNumber, schoolStudent.getProvincialNumber()) .eq(SchoolStudent::getProvincialNumber, schoolStudent.getProvincialNumber())
...@@ -245,7 +254,9 @@ public class SchoolStudentController extends BaseController { ...@@ -245,7 +254,9 @@ public class SchoolStudentController extends BaseController {
throw new ServiceException("省学籍辅号已存在"); throw new ServiceException("省学籍辅号已存在");
} }
} }
}
if (StringUtils.isNotBlank(schoolStudent.getNationalNumber())){
LambdaQueryWrapper<SchoolStudent> lqw3 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SchoolStudent> lqw3 = new LambdaQueryWrapper<>();
lqw3 lqw3
.eq(SchoolStudent::getNationalNumber, schoolStudent.getNationalNumber()) .eq(SchoolStudent::getNationalNumber, schoolStudent.getNationalNumber())
...@@ -256,7 +267,9 @@ public class SchoolStudentController extends BaseController { ...@@ -256,7 +267,9 @@ public class SchoolStudentController extends BaseController {
throw new ServiceException("全国学籍号已存在"); throw new ServiceException("全国学籍号已存在");
} }
} }
}
if (StringUtils.isNotBlank(schoolStudent.getOneCard())){
LambdaQueryWrapper<SchoolStudent> lqw4 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SchoolStudent> lqw4 = new LambdaQueryWrapper<>();
lqw4 lqw4
.eq(SchoolStudent::getOneCard, schoolStudent.getOneCard()) .eq(SchoolStudent::getOneCard, schoolStudent.getOneCard())
...@@ -268,6 +281,7 @@ public class SchoolStudentController extends BaseController { ...@@ -268,6 +281,7 @@ public class SchoolStudentController extends BaseController {
} }
} }
} }
}
//添加学生与班级关系表 //添加学生与班级关系表
private boolean addRelation(SchoolStudent schoolStudent) { private boolean addRelation(SchoolStudent schoolStudent) {
......
...@@ -39,14 +39,18 @@ import yangtz.cs.liu.campus.service.student.ISchoolStudentLeaveService; ...@@ -39,14 +39,18 @@ import yangtz.cs.liu.campus.service.student.ISchoolStudentLeaveService;
import yangtz.cs.liu.campus.service.student.ISchoolStudentParentService; import yangtz.cs.liu.campus.service.student.ISchoolStudentParentService;
import yangtz.cs.liu.campus.service.student.ISchoolStudentService; import yangtz.cs.liu.campus.service.student.ISchoolStudentService;
import yangtz.cs.liu.campus.service.teacher.ISchoolTeacherService; import yangtz.cs.liu.campus.service.teacher.ISchoolTeacherService;
import yangtz.cs.liu.campus.util.VxTemlateSendApi;
import yangtz.cs.liu.campus.vo.student.SchoolStudentVO; import yangtz.cs.liu.campus.vo.student.SchoolStudentVO;
import yangtz.cs.liu.campus.vo.student.StudentLeaveVO; import yangtz.cs.liu.campus.vo.student.StudentLeaveVO;
import yangtz.cs.liu.wechat.domain.TemplateInfo;
import yangtz.cs.liu.wechat.domain.template.LeaveStateTemplate; import yangtz.cs.liu.wechat.domain.template.LeaveStateTemplate;
import yangtz.cs.liu.wechat.domain.template.LeaveTemplate; import yangtz.cs.liu.wechat.domain.template.LeaveTemplate;
import yangtz.cs.liu.wechat.domain.template.StudentLeaveTemplate; import yangtz.cs.liu.wechat.domain.template.StudentLeaveTemplate;
import yangtz.cs.liu.wechat.service.api.IWxApiService; import yangtz.cs.liu.wechat.service.api.IWxApiService;
import yangtz.cs.liu.wechat.utils.DateUtil;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -232,17 +236,45 @@ public class SchoolStudentLeaveController extends BaseController { ...@@ -232,17 +236,45 @@ public class SchoolStudentLeaveController extends BaseController {
String userName = getUsername(); String userName = getUsername();
schoolStudentLeaveService.submitApply(schoolStudentLeave, userName, STUDENTLEAVE, new HashMap<>()); schoolStudentLeaveService.submitApply(schoolStudentLeave, userName, STUDENTLEAVE, new HashMap<>());
/** 提交请假模板消息 */ //转换时间
LeaveTemplate leaveTemplate = new LeaveTemplate(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date time = schoolStudentLeave.getApplyTime();
String applyTime = format.format(time);
//获取openid
String openId = userService.getOpenIdByUserId(schoolStudentLeave.getHandUserId()); String openId = userService.getOpenIdByUserId(schoolStudentLeave.getHandUserId());
leaveTemplate.setIdentity(0); Map<String,Object> map = new HashMap<>();
leaveTemplate.setToUserOpenId(openId); map.put("toUserOpenId",openId);
leaveTemplate.setReasonForLeave(schoolStudentLeave.getLeaveReason()); map.put("applyTime",applyTime);
leaveTemplate.setLeaveStartTime(schoolStudentLeave.getStartTime()); map.put("remark","请假原因:" + schoolStudentLeave.getLeaveReason());
leaveTemplate.setLeaveEndTime(schoolStudentLeave.getEndTime()); map.put("applyUser",schoolStudentLeave.getStudentName());
leaveTemplate.setUserName(schoolStudentLeave.getStudentName());
Date leaveStartTime = schoolStudentLeave.getStartTime();
Date leaveEndTime = schoolStudentLeave.getEndTime();
Double hours = DateUtil.getHoursBetween2Date(leaveStartTime, leaveEndTime);
String content = "";
if (hours < 24.0) content = hours + "小时";
else {
Integer t1 = (int) (hours / 24);
Double d2 = hours - 24 * t1;
if (d2 == 0.0) content = t1 + "天";
else content = t1 + "天" + d2 + "小时";
}
map.put("content",content);
map.put("first","您有一个待审批的请假事项");
VxTemlateSendApi.sendVxTemlate(map);
/** 提交请假模板消息 */
// LeaveTemplate leaveTemplate = new LeaveTemplate();
// leaveTemplate.setIdentity(0);
// leaveTemplate.setToUserOpenId(openId);
// leaveTemplate.setReasonForLeave(schoolStudentLeave.getLeaveReason());
// leaveTemplate.setLeaveStartTime(schoolStudentLeave.getStartTime());
// leaveTemplate.setLeaveEndTime(schoolStudentLeave.getEndTime());
// leaveTemplate.setUserName(schoolStudentLeave.getStudentName());
return AjaxResult.success(wxApiService.sendTemplate(leaveTemplate)); return AjaxResult.success("提交成功");
} }
/** /**
...@@ -285,36 +317,49 @@ public class SchoolStudentLeaveController extends BaseController { ...@@ -285,36 +317,49 @@ public class SchoolStudentLeaveController extends BaseController {
leave.setState(REFUSE); leave.setState(REFUSE);
} }
schoolStudentLeaveService.updateById(leave); schoolStudentLeaveService.updateById(leave);
//正常的话,销假有自己的接口,能进到这一步,一般是班主任或者级部主任驳回了请假申请
LeaveResultTemplate resultTemplate = new LeaveResultTemplate();
resultTemplate.setFirst("您好," + leave.getStudentName() + "同学的请假申请已回复");
resultTemplate.setResult("已驳回");
resultTemplate.setRemark("审批留言: " + comment);
SchoolStudentParent parent = schoolStudentParentService.getById(leave.getApplyUserId());
//获取请假申请人openId //获取请假申请人openId
//String openId = userService.getOpenIdByUserId(parent.getUserId()); //String openId = userService.getOpenIdByUserId(parent.getUserId());
String openId = schoolStudentParentService.getOpenIdById(leave.getApplyUserId()); String openId = schoolStudentParentService.getOpenIdById(leave.getApplyUserId());
resultTemplate.setToUserOpenId(openId);
List<HistoricActivity> list = processService.selectHistoryList(instanceId, new HistoricActivity()); Map<String,Object> map = new HashMap<>();
if (StringUtils.isNotNull(list) && list.size() > 0) { map.put("toUserOpenId",openId);
HistoricActivity activity = list.get(0); map.put("first","您好," + leave.getStudentName() + "同学的请假申请已回复");
resultTemplate.setAuditTime(activity.getEndTime()); map.put("content","已驳回");
} map.put("remark","审批留言: " + comment);
wxApiService.sendLeaveResultTemplate(resultTemplate); VxTemlateSendApi.sendVxTemlate(map);
//正常的话,销假有自己的接口,能进到这一步,一般是班主任或者级部主任驳回了请假申请
// LeaveResultTemplate resultTemplate = new LeaveResultTemplate();
// resultTemplate.setFirst("您好," + leave.getStudentName() + "同学的请假申请已回复");
// resultTemplate.setResult("已驳回");
// resultTemplate.setRemark("审批留言: " + comment);
// SchoolStudentParent parent = schoolStudentParentService.getById(leave.getApplyUserId());
//
// resultTemplate.setToUserOpenId(openId);
// List<HistoricActivity> list = processService.selectHistoryList(instanceId, new HistoricActivity());
// if (StringUtils.isNotNull(list) && list.size() > 0) {
// HistoricActivity activity = list.get(0);
// resultTemplate.setAuditTime(activity.getEndTime());
// }
// wxApiService.sendLeaveResultTemplate(resultTemplate);
return AjaxResult.success("审批完成"); return AjaxResult.success("审批完成");
} }
/** 发送申请通知 */ /** 发送申请通知 */
StudentLeaveTemplate template = new StudentLeaveTemplate();
Map<String,Object> map = new HashMap<>();
// StudentLeaveTemplate template = new StudentLeaveTemplate();
String openId = ""; String openId = "";
template.setType(leave.getType()); // template.setType(leave.getType());
template.setReasonForLeave(leave.getLeaveReason()); // template.setReasonForLeave(leave.getLeaveReason());
template.setStudentName(leave.getStudentName()); // template.setStudentName(leave.getStudentName());
SchoolStudent ss = schoolStudentService.getById(leave.getStudentId()); // SchoolStudent ss = schoolStudentService.getById(leave.getStudentId());
SchoolClass sc = schoolClassService.getById(ss.getClassId()); // SchoolClass sc = schoolClassService.getById(ss.getClassId());
template.setClassName(sc.getClassAlias()); // template.setClassName(sc.getClassAlias());
template.setLeaveStartTime(leave.getStartTime()); // template.setLeaveStartTime(leave.getStartTime());
template.setLeaveEndTime(leave.getEndTime()); // template.setLeaveEndTime(leave.getEndTime());
//流程没结束,目前已到级部主任或者等待销假 //流程没结束,目前已到级部主任或者等待销假
List<Task> taskList = taskService.createTaskQuery() List<Task> taskList = taskService.createTaskQuery()
.processInstanceId(leave.getInstanceId()) .processInstanceId(leave.getInstanceId())
...@@ -324,19 +369,45 @@ public class SchoolStudentLeaveController extends BaseController { ...@@ -324,19 +369,45 @@ public class SchoolStudentLeaveController extends BaseController {
//级部主任审批 //级部主任审批
if (JIBU.equals(task.getName())) { if (JIBU.equals(task.getName())) {
template.setFirst("您好,您有请假申请等待审批。"); // template.setFirst("您好,您有请假申请等待审批。");
map.put("first","您好,您有请假申请等待审批。");
//openId = userService.getOpenIdByUserId(leave.getHandUserId2()); //openId = userService.getOpenIdByUserId(leave.getHandUserId2());
openId = teacherService.getOpenIdByUserId(leave.getHandUserId2()); openId = teacherService.getOpenIdByUserId(leave.getHandUserId2());
} }
//等待班主任销假 //等待班主任销假
if (XIAOJIA.equals(task.getName())) { if (XIAOJIA.equals(task.getName())) {
template.setFirst("您好,您有请假申请等待销假。"); // template.setFirst("您好,您有请假申请等待销假。");
map.put("first","您好,您有请假申请等待销假。");
//openId = userService.getOpenIdByUserId(leave.getHandUserId()); //openId = userService.getOpenIdByUserId(leave.getHandUserId());
openId = teacherService.getOpenIdByUserId(leave.getHandUserId()); openId = teacherService.getOpenIdByUserId(leave.getHandUserId());
} }
} }
template.setToUserOpenId(openId); // template.setToUserOpenId(openId);
wxApiService.sendStudentLeaveTemplate(template); // wxApiService.sendStudentLeaveTemplate(template);
//申请时间
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date time = leave.getApplyTime();
String applyTime = format.format(time);
map.put("toUserOpenId",openId);
map.put("applyTime",applyTime);
map.put("remark","请假原因:" + leave.getLeaveReason());
map.put("applyUser",leave.getStudentName());
Date leaveStartTime = leave.getStartTime();
Date leaveEndTime = leave.getEndTime();
Double hours = DateUtil.getHoursBetween2Date(leaveStartTime, leaveEndTime);
String content = "";
if (hours < 24.0) content = hours + "小时";
else {
Integer t1 = (int) (hours / 24);
Double d2 = hours - 24 * t1;
if (d2 == 0.0) content = t1 + "天";
else content = t1 + "天" + d2 + "小时";
}
map.put("content",content);
VxTemlateSendApi.sendVxTemlate(map);
return AjaxResult.success("审批完成"); return AjaxResult.success("审批完成");
} }
...@@ -365,21 +436,31 @@ public class SchoolStudentLeaveController extends BaseController { ...@@ -365,21 +436,31 @@ public class SchoolStudentLeaveController extends BaseController {
LambdaQueryWrapper<SchoolStudentLeave> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SchoolStudentLeave> lqw = new LambdaQueryWrapper<>();
lqw.eq(SchoolStudentLeave::getInstanceId, instanceId); lqw.eq(SchoolStudentLeave::getInstanceId, instanceId);
SchoolStudentLeave leave = schoolStudentLeaveService.getOne(lqw); SchoolStudentLeave leave = schoolStudentLeaveService.getOne(lqw);
LeaveResultTemplate resultTemplate = new LeaveResultTemplate();
resultTemplate.setFirst("您好," + leave.getStudentName() + "同学的销假申请已回复");
resultTemplate.setResult("已销假");
resultTemplate.setRemark(leave.getStudentName() + "同学已返校");
SchoolStudentParent parent = schoolStudentParentService.getById(leave.getApplyUserId());
//获取请假申请人openId //获取请假申请人openId
//String openId = userService.getOpenIdByUserId(parent.getUserId()); //String openId = userService.getOpenIdByUserId(parent.getUserId());
String openId = schoolStudentParentService.getOpenIdById(leave.getApplyUserId()); String openId = schoolStudentParentService.getOpenIdById(leave.getApplyUserId());
resultTemplate.setToUserOpenId(openId);
List<HistoricActivity> list = processService.selectHistoryList(instanceId, new HistoricActivity()); Map<String,Object> map = new HashMap<>();
if (StringUtils.isNotNull(list) && list.size() > 0) { map.put("toUserOpenId",openId);
HistoricActivity activity = list.get(0); map.put("remark",leave.getStudentName() + "同学已返校");
resultTemplate.setAuditTime(activity.getEndTime()); map.put("content","已销假");
} map.put("first","您好," + leave.getStudentName() + "同学的销假申请已回复");
wxApiService.sendLeaveResultTemplate(resultTemplate); VxTemlateSendApi.sendVxTemlate(map);
// LeaveResultTemplate resultTemplate = new LeaveResultTemplate();
// resultTemplate.setFirst("您好," + leave.getStudentName() + "同学的销假申请已回复");
// resultTemplate.setResult("已销假");
// resultTemplate.setRemark(leave.getStudentName() + "同学已返校");
// SchoolStudentParent parent = schoolStudentParentService.getById(leave.getApplyUserId());
//
// resultTemplate.setToUserOpenId(openId);
// List<HistoricActivity> list = processService.selectHistoryList(instanceId, new HistoricActivity());
// if (StringUtils.isNotNull(list) && list.size() > 0) {
// HistoricActivity activity = list.get(0);
// resultTemplate.setAuditTime(activity.getEndTime());
// }
// wxApiService.sendLeaveResultTemplate(resultTemplate);
return AjaxResult.success("销假完成"); return AjaxResult.success("销假完成");
} }
......
...@@ -36,6 +36,7 @@ import yangtz.cs.liu.campus.service.schoolgrade.ISchoolGradeMentorService; ...@@ -36,6 +36,7 @@ import yangtz.cs.liu.campus.service.schoolgrade.ISchoolGradeMentorService;
import yangtz.cs.liu.campus.service.teacher.ISchoolTeacherLeaveService; import yangtz.cs.liu.campus.service.teacher.ISchoolTeacherLeaveService;
import yangtz.cs.liu.campus.service.teacher.ISchoolTeacherService; import yangtz.cs.liu.campus.service.teacher.ISchoolTeacherService;
import yangtz.cs.liu.campus.service.workDay.ISchoolWorkDayService; import yangtz.cs.liu.campus.service.workDay.ISchoolWorkDayService;
import yangtz.cs.liu.campus.util.VxTemlateSendApi;
import yangtz.cs.liu.campus.vo.teacher.SchoolTeacherLeaveVO; import yangtz.cs.liu.campus.vo.teacher.SchoolTeacherLeaveVO;
import yangtz.cs.liu.campus.vo.teacher.SchoolTeacherVO; import yangtz.cs.liu.campus.vo.teacher.SchoolTeacherVO;
import yangtz.cs.liu.campus.vo.teacher.TeacherLeaveVO; import yangtz.cs.liu.campus.vo.teacher.TeacherLeaveVO;
...@@ -44,6 +45,7 @@ import yangtz.cs.liu.wechat.domain.template.LeaveTemplate; ...@@ -44,6 +45,7 @@ import yangtz.cs.liu.wechat.domain.template.LeaveTemplate;
import yangtz.cs.liu.wechat.service.api.IWxApiService; import yangtz.cs.liu.wechat.service.api.IWxApiService;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import static com.core.constant.ProcessDefinition.TEACHERLEAVE; import static com.core.constant.ProcessDefinition.TEACHERLEAVE;
...@@ -222,20 +224,49 @@ public class SchoolTeacherLeaveController extends BaseController { ...@@ -222,20 +224,49 @@ public class SchoolTeacherLeaveController extends BaseController {
schoolTeacherLeave.setApplyTime(DateUtils.getNowDate()); schoolTeacherLeave.setApplyTime(DateUtils.getNowDate());
schoolTeacherLeaveService.submitApply(schoolTeacherLeave, userName, TEACHERLEAVE, new HashMap<>()); schoolTeacherLeaveService.submitApply(schoolTeacherLeave, userName, TEACHERLEAVE, new HashMap<>());
//转换时间
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date time = schoolTeacherLeave.getApplyTime();
String applyTime = format.format(time);
/** 发送申请通知 */ /** 发送申请通知 */
TeacherLeaveTemplate template = new TeacherLeaveTemplate(); //获取openid
//String openId = userService.getOpenIdByUserId(schoolTeacherLeave.getHandUserId1());
String openId = schoolTeacherService.getOpenIdByUserId(schoolTeacherLeave.getHandUserId1()); String openId = schoolTeacherService.getOpenIdByUserId(schoolTeacherLeave.getHandUserId1());
template.setUserType(schoolTeacherLeave.getApplyType()); Map<String,Object> map = new HashMap<>();
template.setToUserOpenId(openId); map.put("toUserOpenId",openId);
//template.setReasonForLeave(schoolTeacherLeave.getReasonForLeave()); map.put("applyTime",applyTime);
template.setType(schoolTeacherLeave.getType()); map.put("remark","共计" + schoolTeacherLeave.getTotalTime() +"天,请您尽快处理");
template.setLeaveStartTime(schoolTeacherLeave.getStartTime()); map.put("applyUser",schoolTeacherLeave.getTeacherName());
template.setLeaveEndTime(schoolTeacherLeave.getEndTime()); String start = "";
template.setStartSort(schoolTeacherLeave.getStartSort()); String end = "";
template.setEndSort(schoolTeacherLeave.getEndSort()); //请假开始时间、结束时间
template.setUserName(schoolTeacherLeave.getTeacherName()); //教工
wxApiService.sendTeacherLeaveTemplate(template); if("0".equals(schoolTeacherLeave.getApplyType())){
start = HolidayDateUtil.format.format(schoolTeacherLeave.getStartTime()) +" 第" + schoolTeacherLeave.getStartSort() + "节课";
end = HolidayDateUtil.format.format(schoolTeacherLeave.getEndTime()) +" 第" + schoolTeacherLeave.getEndSort() + "节课";
}else{
//教工
start = HolidayDateUtil.format.format(schoolTeacherLeave.getStartTime());
end = HolidayDateUtil.format.format(schoolTeacherLeave.getEndTime());
}
map.put("content","从" + start + "至" + end);
map.put("first",schoolTeacherLeave.getTeacherName() + "的请假申请需要您审批。");
VxTemlateSendApi.sendVxTemlate(map);
// TeacherLeaveTemplate template = new TeacherLeaveTemplate();
// //String openId = userService.getOpenIdByUserId(schoolTeacherLeave.getHandUserId1());
//// String openId = schoolTeacherService.getOpenIdByUserId(schoolTeacherLeave.getHandUserId1());
// template.setUserType(schoolTeacherLeave.getApplyType());
// template.setToUserOpenId(openId);
// //template.setReasonForLeave(schoolTeacherLeave.getReasonForLeave());
// template.setType(schoolTeacherLeave.getType());
// template.setLeaveStartTime(schoolTeacherLeave.getStartTime());
// template.setLeaveEndTime(schoolTeacherLeave.getEndTime());
// template.setStartSort(schoolTeacherLeave.getStartSort());
// template.setEndSort(schoolTeacherLeave.getEndSort());
// template.setUserName(schoolTeacherLeave.getTeacherName());
// wxApiService.sendTeacherLeaveTemplate(template);
return AjaxResult.success("提交成功"); return AjaxResult.success("提交成功");
} }
...@@ -282,35 +313,43 @@ public class SchoolTeacherLeaveController extends BaseController { ...@@ -282,35 +313,43 @@ public class SchoolTeacherLeaveController extends BaseController {
/** 修改任务结果 */ /** 修改任务结果 */
schoolTeacherLeaveService.updateById(leave); schoolTeacherLeaveService.updateById(leave);
//请假结果模板消息 //获取openid
LeaveResultTemplate resultTemplate = new LeaveResultTemplate();
resultTemplate.setFirst("您好,您的请假申请已回复。");
resultTemplate.setResult(flag ? "已批准 ": "已驳回");
resultTemplate.setRemark("审批留言: "+comment);
//获取请假教师openId
//String openId = userService.getOpenIdByUserId(leave.getTeacherId());
String openId = schoolTeacherService.getOpenIdByUserId(leave.getTeacherId()); String openId = schoolTeacherService.getOpenIdByUserId(leave.getTeacherId());
resultTemplate.setToUserOpenId(openId); Map<String,Object> map = new HashMap<>();
List<HistoricActivity> list = processService.selectHistoryList(instanceId,new HistoricActivity()); map.put("toUserOpenId",openId);
if(StringUtils.isNotNull(list) && list.size() > 0){ map.put("first","您好,您的请假申请已回复。");
HistoricActivity activity = list.get(0); map.put("content",flag ? "已批准 ": "已驳回");
resultTemplate.setAuditTime(activity.getEndTime()); map.put("remark","审批留言: "+comment);
} VxTemlateSendApi.sendVxTemlate(map);
wxApiService.sendLeaveResultTemplate(resultTemplate); //请假结果模板消息
// LeaveResultTemplate resultTemplate = new LeaveResultTemplate();
// resultTemplate.setFirst("您好,您的请假申请已回复。");
// resultTemplate.setResult(flag ? "已批准 ": "已驳回");
// resultTemplate.setRemark("审批留言: "+comment);
// //获取请假教师openId
// //String openId = userService.getOpenIdByUserId(leave.getTeacherId());
//
// resultTemplate.setToUserOpenId(openId);
// List<HistoricActivity> list = processService.selectHistoryList(instanceId,new HistoricActivity());
// if(StringUtils.isNotNull(list) && list.size() > 0){
// HistoricActivity activity = list.get(0);
// resultTemplate.setAuditTime(activity.getEndTime());
// }
// wxApiService.sendLeaveResultTemplate(resultTemplate);
return AjaxResult.success("审批完成"); return AjaxResult.success("审批完成");
} }
/** 发送申请通知 */ /** 发送申请通知 */
TeacherLeaveTemplate template = new TeacherLeaveTemplate(); // TeacherLeaveTemplate template = new TeacherLeaveTemplate();
String openId = ""; String openId = "";
template.setUserType(leave.getApplyType()); // template.setUserType(leave.getApplyType());
//template.setReasonForLeave(schoolTeacherLeave.getReasonForLeave()); // //template.setReasonForLeave(schoolTeacherLeave.getReasonForLeave());
template.setType(leave.getType()); // template.setType(leave.getType());
template.setLeaveStartTime(leave.getStartTime()); // template.setLeaveStartTime(leave.getStartTime());
template.setLeaveEndTime(leave.getEndTime()); // template.setLeaveEndTime(leave.getEndTime());
template.setStartSort(leave.getStartSort()); // template.setStartSort(leave.getStartSort());
template.setEndSort(leave.getEndSort()); // template.setEndSort(leave.getEndSort());
template.setUserName(leave.getTeacherName()); // template.setUserName(leave.getTeacherName());
//流程没结束,目前已到分管领导或主要领导 //流程没结束,目前已到分管领导或主要领导
List<Task> taskList = taskService.createTaskQuery() List<Task> taskList = taskService.createTaskQuery()
...@@ -331,8 +370,34 @@ public class SchoolTeacherLeaveController extends BaseController { ...@@ -331,8 +370,34 @@ public class SchoolTeacherLeaveController extends BaseController {
} }
} }
template.setToUserOpenId(openId); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
wxApiService.sendTeacherLeaveTemplate(template); Date time = leave.getApplyTime();
String applyTime = format.format(time);
Map<String,Object> map = new HashMap<>();
map.put("toUserOpenId",openId);
map.put("applyTime",applyTime);
map.put("remark","共计" + leave.getTotalTime() +"天,请您尽快处理");
map.put("applyUser",leave.getTeacherName());
String start = "";
String end = "";
//请假开始时间、结束时间
//教工
if("0".equals(leave.getApplyType())){
start = HolidayDateUtil.format.format(leave.getStartTime()) +" 第" + leave.getStartSort() + "节课";
end = HolidayDateUtil.format.format(leave.getEndTime()) +" 第" + leave.getEndSort() + "节课";
}else{
//教工
start = HolidayDateUtil.format.format(leave.getStartTime());
end = HolidayDateUtil.format.format(leave.getEndTime());
}
map.put("content","从" + start + "至" + end);
map.put("first",leave.getTeacherName() + "的请假申请需要您审批。");
VxTemlateSendApi.sendVxTemlate(map);
// template.setToUserOpenId(openId);
// wxApiService.sendTeacherLeaveTemplate(template);
return AjaxResult.success("审批完成"); return AjaxResult.success("审批完成");
} }
......
...@@ -46,5 +46,10 @@ public class SchoolAtt extends OurBaseEntity { ...@@ -46,5 +46,10 @@ public class SchoolAtt extends OurBaseEntity {
@Excel(name = "打卡时间") @Excel(name = "打卡时间")
private String clockTime; private String clockTime;
/**
* 迟到 早退
*/
private String workStatus;
private String remark; private String remark;
} }
package yangtz.cs.liu.campus.domain.schoolLab;
import com.core.domain.OurBaseEntity;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.util.List;
/**
* 实验计划对象 school_experiment_plan
*
* @author ruoyi
* @date 2023-08-29
*/
@Data
public class SchoolExperimentPlan extends OurBaseEntity
{
/** 学科(1物理,2化学,3生物) */
private String sub;
/** 级部id */
private Long gradeId;
/** 级部 */
private String grade;
/** 学年 */
private String schoolYear;
/** 学期(1上学期,2下学期) */
private String semester;
/** 实验分类(1分组实验,2演示实验,3探究实验) */
private String experimentClassify;
/** 实验名称 */
private String experimentName;
/** 章节内容 */
private String chapterContent;
/** 是否已预约 */
private String isAppointment;
/** 计划开始时间 */
private String plannedStartTime;
/** 计划结束时间 */
private String plannedEndTime;
/** 实验用品 */
private String experimentUseGoods;
}
package yangtz.cs.liu.campus.domain.schoolLab;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
/**
* 实验计划与班级关系对象 school_experiment_plan_class
*
* @author ruoyi
* @date 2023-08-29
*/
@Data
public class SchoolExperimentPlanClass
{
/** 主键id */
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/** 实验计划主键id */
private Long experimentPlanId;
/** 班级id */
private Long classId;
/** 删除状态 */
private String delFlag;
}
package yangtz.cs.liu.campus.domain.schoolLab;
import com.core.domain.OurBaseEntity;
import lombok.Data;
/**
* 实验室对象 school_lab
*
* @author ruoyi
* @date 2023-08-29
*/
@Data
public class SchoolLab extends OurBaseEntity
{
/** 实验室名称 */
private String labName;
/** 实验室学科(1物理,2化学,3生物) */
private String labSub;
/** 负责人id */
private Long inChargeId;
/** 负责人 */
private String inChargeName;
/** 实验室状态(1良好,2正常,3待检查) */
private String labState;
/** 实验室用品 */
private String labUseGoods;
}
package yangtz.cs.liu.campus.domain.schoolLab;
import java.util.List;
import java.util.Date;
import com.core.domain.OurBaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
/**
* 年级实验室预约对象 school_lab_class_year
*
* @author ruoyi
* @date 2023-08-29
*/
@Data
public class SchoolLabClassYear extends OurBaseEntity
{
/** 实验计划id */
private String experimentPlanId;
/** 级部 */
@Excel(name = "级部")
private String grade;
/** 学年 */
@Excel(name = "学年")
private String schoolYear;
/** 学期(1上学期,2下学期) */
@Excel(name = "学期", readConverterExp = "1=上学期,2=下学期")
private String semester;
/** 学科(1物理,2化学,3生物) */
@Excel(name = "学科", readConverterExp = "1=物理,2=化学,3=生物")
private String sub;
/** 实验分类(1分组实验,2演示实验,3探究实验) */
@Excel(name = "实验分类", readConverterExp = "1=分组实验,2=演示实验,3=探究实验")
private String experimentClassify;
/** 计划开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "计划开始时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date plannedStartTime;
/** 计划结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "计划结束时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date plannedEndTime;
/** 章节内容 */
@Excel(name = "章节内容")
private String chapterContent;
/** 实验用品 */
@Excel(name = "实验用品")
private String experimentUseGoods;
/** 申报状态(0未申报,1已申报,2已阅读,3已分配) */
@Excel(name = "申报状态", readConverterExp = "0=未申报,1=已申报,2=已阅读,3=已分配")
private String declareState;
/** 申报人id */
@Excel(name = "申报人id")
private Long applyId;
/** 申报人 */
@Excel(name = "申报人")
private String applyName;
/** 申报时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "申报时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date applyTime;
/** 年级实验室预约和实验室关系信息 */
private List<SchoolLabClassYearRelation> schoolLabClassYearRelationList;
}
package yangtz.cs.liu.campus.domain.schoolLab;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
/**
* 年级实验室预约和实验室关系对象 school_lab_class_year_relation
*
* @author ruoyi
* @date 2023-08-29
*/
@Data
public class SchoolLabClassYearRelation
{
/** 主键id */
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/** 年级实验室预约主键id */
private Long labClassYearId;
/** 实验室id */
private Long labId;
/** 删除状态 */
private String delFlag;
}
package yangtz.cs.liu.campus.domain.schoolLab;
import com.core.domain.OurBaseEntity;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
/**
* 实验室竞赛对象 school_lab_competition
*
* @author ruoyi
* @date 2023-08-29
*/
@Data
public class SchoolLabCompetition extends OurBaseEntity
{
/** 学年 */
@Excel(name = "学年")
private String schoolYear;
/** 参赛教师id */
@Excel(name = "参赛教师id")
private String teacherId;
/** 参赛教师 */
@Excel(name = "参赛教师")
private String teacherName;
/** 参赛课题 */
@Excel(name = "参赛课题")
private String entrySubject;
/** 比赛项目名称 */
@Excel(name = "比赛项目名称")
private String competitionName;
/** 比赛类型(1说课比赛,2自制教具比赛,3实验教学能力大赛) */
@Excel(name = "比赛类型", readConverterExp = "1=说课比赛,2=自制教具比赛,3=实验教学能力大赛")
private String competitionType;
/** 比赛级别(1省级,2市级) */
@Excel(name = "比赛级别", readConverterExp = "1=省级,2=市级")
private String competitionLevel;
/** 备注1 */
@Excel(name = "备注1")
private String remark1;
/** 备注2 */
@Excel(name = "备注2")
private String remark2;
/** 备注3 */
@Excel(name = "备注3")
private String remark3;
}
package yangtz.cs.liu.campus.domain.schoolLab;
import java.util.Date;
import com.core.domain.OurBaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
/**
* 教师个人实验申请对象 school_teacher_experiment_apply
*
* @author ruoyi
* @date 2023-08-29
*/
@Data
public class SchoolTeacherExperimentApply extends OurBaseEntity
{
/** 学科(1物理,2化学,3生物) */
@Excel(name = "学科", readConverterExp = "1=物理,2=化学,3=生物")
private String sub;
/** 级部id */
@Excel(name = "级部id")
private Long gradeId;
/** 级部 */
@Excel(name = "级部")
private String grade;
/** 学年 */
@Excel(name = "学年")
private String schoolYear;
/** 学期 */
@Excel(name = "学期")
private String semester;
/** 规划时间 */
@Excel(name = "规划时间")
private String plannedTime;
/** 实验名称 */
@Excel(name = "实验名称")
private String experimentName;
/** 实验分类(1分组实验,2演示实验,3探究实验) */
@Excel(name = "实验分类", readConverterExp = "1=分组实验,2=演示实验,3=探究实验")
private String experimentClassify;
/** 实验用品 */
@Excel(name = "实验用品")
private String experimentUseGoods;
/** 实验室id */
@Excel(name = "实验室id")
private String labId;
/** 实验室名称 */
@Excel(name = "实验室名称")
private String labName;
/** 申报状态(0未申报,1已申报,2已阅读,3已分配) */
@Excel(name = "申报状态", readConverterExp = "0=未申报,1=已申报,2=已阅读,3=已分配")
private String declareState;
/** 申报人id */
@Excel(name = "申报人id")
private Long applyId;
/** 申报人名称 */
@Excel(name = "申报人名称")
private String applyName;
/** 申报时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "申报时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date applyTime;
}
package yangtz.cs.liu.campus.domain.schoolLab;
import java.util.Date;
import com.core.domain.OurBaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
/**
* 教师实验室申请对象 school_teacher_lab_apply
*
* @author ruoyi
* @date 2023-08-29
*/
@Data
public class SchoolTeacherLabApply extends OurBaseEntity
{
/** 年级实验室预约主键id */
@Excel(name = "年级实验室预约主键id")
private String labClassYearId;
/** 实验分类(1分组实验,2演示实验,3探究实验) */
@Excel(name = "实验分类", readConverterExp = "1=分组实验,2=演示实验,3=探究实验")
private String experimentClassify;
/** 学科(1物理,2化学,3生物) */
@Excel(name = "学科", readConverterExp = "1=物理,2=化学,3=生物")
private String sub;
/** 级部 */
@Excel(name = "级部")
private String grade;
/** 学年 */
@Excel(name = "学年")
private String schoolYear;
/** 学期(1上学期,2下学期) */
@Excel(name = "学期", readConverterExp = "1=上学期,2=下学期")
private String semester;
/** 班级id */
@Excel(name = "班级id")
private String classId;
/** 班级名称 */
@Excel(name = "班级名称")
private String className;
/** 章节内容 */
@Excel(name = "章节内容")
private String chapterContent;
/** 实验时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "实验时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date experimentTime;
/** 节次 */
@Excel(name = "节次")
private String section;
/** 实验室id */
@Excel(name = "实验室id")
private Long labId;
/** 实验室名称 */
@Excel(name = "实验室名称")
private String labName;
/** 申请状态(1已确认,0未确认) */
@Excel(name = "申请状态", readConverterExp = "1=已确认,0=未确认")
private String applyState;
/** 申请人id */
@Excel(name = "申请人id")
private Long applyId;
/** 申请人 */
@Excel(name = "申请人")
private String applyName;
/** 申请时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date applyTime;
}
package yangtz.cs.liu.campus.domain.workTimes;
import java.util.Date;
import lombok.Data;
/**
* 考勤时间
*/
@Data
public class WorkTime {
/**
* 上午开始时间
*/
private Date amStartTime;
/**
* 上午结束时间
*/
private Date amEndTime;
/**
* 下午开始时间
*/
private Date pmStartTime;
/**
* 下午结束时间
*/
private Date pmEndTime;
/**
* 上午工作迟到时间点
*/
private Date amLateTime;
/**
* 下午打卡时间开始点
*/
private Date pmMiddleTime;
/**
* 下午工作迟到时间点
*/
private Date pmLateTime;
}
package yangtz.cs.liu.campus.mapper.WorkTimes;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import yangtz.cs.liu.campus.domain.schoolAtt.SchoolAtt;
import yangtz.cs.liu.campus.domain.workTimes.WorkTime;
/**
* 考勤打卡时间
*/
@Mapper
public interface WorkTimeMapper extends BaseMapper<WorkTime> {
}
package yangtz.cs.liu.campus.mapper.schoolLab;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolExperimentPlan;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolExperimentPlanClass;
import yangtz.cs.liu.campus.vo.schoolLab.SchoolExperimentPlanVo;
import java.util.List;
import java.util.Map;
/**
* 实验计划Mapper接口
*
* @author ruoyi
* @date 2023-08-29
*/
public interface SchoolExperimentPlanMapper extends BaseMapper<SchoolExperimentPlan>
{
/**
* 查询实验计划
*
* @param id 实验计划主键
* @return 实验计划
*/
public SchoolExperimentPlanVo selectSchoolExperimentPlanById(Long id);
/**
* 查询实验计划列表
*
* @param schoolExperimentPlanVo 实验计划
* @return 实验计划集合
*/
public List<SchoolExperimentPlanVo> selectSchoolExperimentPlanList(SchoolExperimentPlanVo schoolExperimentPlanVo);
/**
* 新增实验计划
*
* @param schoolExperimentPlan 实验计划
* @return 结果
*/
public int insertSchoolExperimentPlan(SchoolExperimentPlan schoolExperimentPlan);
/**
* 修改实验计划
*
* @param schoolExperimentPlan 实验计划
* @return 结果
*/
public int updateSchoolExperimentPlan(SchoolExperimentPlan schoolExperimentPlan);
/**
* 删除实验计划
*
* @param id 实验计划主键
* @return 结果
*/
public int deleteSchoolExperimentPlanById(Long id);
/**
* 批量删除实验计划
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteSchoolExperimentPlanByIds(Long[] ids);
/**
* 批量删除实验计划与班级关系
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteSchoolExperimentPlanClassByExperimentPlanIds(Long[] ids);
/**
* 批量新增实验计划与班级关系
*
* @param schoolExperimentPlanClassList 实验计划与班级关系列表
* @return 结果
*/
public int batchSchoolExperimentPlanClass(List<SchoolExperimentPlanClass> schoolExperimentPlanClassList);
/**
* 通过实验计划主键删除实验计划与班级关系信息
*
* @param id 实验计划ID
* @return 结果
*/
public int deleteSchoolExperimentPlanClassByExperimentPlanId(Long id);
/**
* 根据学年查询级部下拉框
* @param schoolYear
* @return
*/
List<Map<String, String>> getGrade(@Param("schoolYear") int schoolYear,@Param("userId") Long userId);
/**
* 根据级部查询对应班级
* @param gradeId
* @return
*/
List<Map<String, String>> getSchoolClass(@Param("gradeId") Long gradeId);
}
package yangtz.cs.liu.campus.mapper.schoolLab;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolLabClassYear;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolLabClassYearRelation;
import java.util.List;
/**
* 年级实验室预约Mapper接口
*
* @author ruoyi
* @date 2023-08-29
*/
public interface SchoolLabClassYearMapper extends BaseMapper<SchoolLabClassYear>
{
/**
* 查询年级实验室预约
*
* @param id 年级实验室预约主键
* @return 年级实验室预约
*/
public SchoolLabClassYear selectSchoolLabClassYearById(Long id);
/**
* 查询年级实验室预约列表
*
* @param schoolLabClassYear 年级实验室预约
* @return 年级实验室预约集合
*/
public List<SchoolLabClassYear> selectSchoolLabClassYearList(SchoolLabClassYear schoolLabClassYear);
/**
* 新增年级实验室预约
*
* @param schoolLabClassYear 年级实验室预约
* @return 结果
*/
public int insertSchoolLabClassYear(SchoolLabClassYear schoolLabClassYear);
/**
* 修改年级实验室预约
*
* @param schoolLabClassYear 年级实验室预约
* @return 结果
*/
public int updateSchoolLabClassYear(SchoolLabClassYear schoolLabClassYear);
/**
* 删除年级实验室预约
*
* @param id 年级实验室预约主键
* @return 结果
*/
public int deleteSchoolLabClassYearById(Long id);
/**
* 批量删除年级实验室预约
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteSchoolLabClassYearByIds(Long[] ids);
/**
* 批量删除年级实验室预约和实验室关系
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteSchoolLabClassYearRelationByLabClassYearIds(Long[] ids);
/**
* 批量新增年级实验室预约和实验室关系
*
* @param schoolLabClassYearRelationList 年级实验室预约和实验室关系列表
* @return 结果
*/
public int batchSchoolLabClassYearRelation(List<SchoolLabClassYearRelation> schoolLabClassYearRelationList);
/**
* 通过年级实验室预约主键删除年级实验室预约和实验室关系信息
*
* @param id 年级实验室预约ID
* @return 结果
*/
public int deleteSchoolLabClassYearRelationByLabClassYearId(Long id);
}
package yangtz.cs.liu.campus.mapper.schoolLab;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolLabCompetition;
import java.util.List;
/**
* 实验室竞赛Mapper接口
*
* @author ruoyi
* @date 2023-08-29
*/
public interface SchoolLabCompetitionMapper extends BaseMapper<SchoolLabCompetition>
{
/**
* 查询实验室竞赛
*
* @param id 实验室竞赛主键
* @return 实验室竞赛
*/
public SchoolLabCompetition selectSchoolLabCompetitionById(Long id);
/**
* 查询实验室竞赛列表
*
* @param schoolLabCompetition 实验室竞赛
* @return 实验室竞赛集合
*/
public List<SchoolLabCompetition> selectSchoolLabCompetitionList(SchoolLabCompetition schoolLabCompetition);
/**
* 新增实验室竞赛
*
* @param schoolLabCompetition 实验室竞赛
* @return 结果
*/
public int insertSchoolLabCompetition(SchoolLabCompetition schoolLabCompetition);
/**
* 修改实验室竞赛
*
* @param schoolLabCompetition 实验室竞赛
* @return 结果
*/
public int updateSchoolLabCompetition(SchoolLabCompetition schoolLabCompetition);
/**
* 删除实验室竞赛
*
* @param id 实验室竞赛主键
* @return 结果
*/
public int deleteSchoolLabCompetitionById(Long id);
/**
* 批量删除实验室竞赛
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteSchoolLabCompetitionByIds(Long[] ids);
}
package yangtz.cs.liu.campus.mapper.schoolLab;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolLab;
import java.util.List;
import java.util.Map;
/**
* 实验室Mapper接口
*
* @author ruoyi
* @date 2023-08-29
*/
public interface SchoolLabMapper extends BaseMapper<SchoolLab>
{
/**
* 查询实验室
*
* @param id 实验室主键
* @return 实验室
*/
public SchoolLab selectSchoolLabById(Long id);
/**
* 查询实验室列表
*
* @param schoolLab 实验室
* @return 实验室集合
*/
public List<SchoolLab> selectSchoolLabList(SchoolLab schoolLab);
/**
* 新增实验室
*
* @param schoolLab 实验室
* @return 结果
*/
public int insertSchoolLab(SchoolLab schoolLab);
/**
* 修改实验室
*
* @param schoolLab 实验室
* @return 结果
*/
public int updateSchoolLab(SchoolLab schoolLab);
/**
* 删除实验室
*
* @param id 实验室主键
* @return 结果
*/
public int deleteSchoolLabById(Long id);
/**
* 批量删除实验室
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteSchoolLabByIds(Long[] ids);
/**
* 查询所有实验室管理员
* @return
*/
public List<Map<String,String>> getLabAdminAll();
/**
* 查询指定实验室管理员
* @return
*/
public Map<String,String> getLabAdmin(@Param("roleKey") String roleKey);
/**
* 查询全部学科
* @return
*/
public List<Map<String, String>> getSubAll();
/**
* 查询指定学科
* @param dictValue
* @return
*/
Map<String, String> getSub(@Param("dictValue") String dictValue);
}
package yangtz.cs.liu.campus.mapper.schoolLab;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolTeacherExperimentApply;
import java.util.List;
/**
* 教师个人实验申请Mapper接口
*
* @author ruoyi
* @date 2023-08-29
*/
public interface SchoolTeacherExperimentApplyMapper extends BaseMapper<SchoolTeacherExperimentApply>
{
/**
* 查询教师个人实验申请
*
* @param id 教师个人实验申请主键
* @return 教师个人实验申请
*/
public SchoolTeacherExperimentApply selectSchoolTeacherExperimentApplyById(Long id);
/**
* 查询教师个人实验申请列表
*
* @param schoolTeacherExperimentApply 教师个人实验申请
* @return 教师个人实验申请集合
*/
public List<SchoolTeacherExperimentApply> selectSchoolTeacherExperimentApplyList(SchoolTeacherExperimentApply schoolTeacherExperimentApply);
/**
* 新增教师个人实验申请
*
* @param schoolTeacherExperimentApply 教师个人实验申请
* @return 结果
*/
public int insertSchoolTeacherExperimentApply(SchoolTeacherExperimentApply schoolTeacherExperimentApply);
/**
* 修改教师个人实验申请
*
* @param schoolTeacherExperimentApply 教师个人实验申请
* @return 结果
*/
public int updateSchoolTeacherExperimentApply(SchoolTeacherExperimentApply schoolTeacherExperimentApply);
/**
* 删除教师个人实验申请
*
* @param id 教师个人实验申请主键
* @return 结果
*/
public int deleteSchoolTeacherExperimentApplyById(Long id);
/**
* 批量删除教师个人实验申请
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteSchoolTeacherExperimentApplyByIds(Long[] ids);
}
package yangtz.cs.liu.campus.mapper.schoolLab;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolTeacherLabApply;
import java.util.List;
/**
* 教师实验室申请Mapper接口
*
* @author ruoyi
* @date 2023-08-29
*/
public interface SchoolTeacherLabApplyMapper extends BaseMapper<SchoolTeacherLabApply>
{
/**
* 查询教师实验室申请
*
* @param id 教师实验室申请主键
* @return 教师实验室申请
*/
public SchoolTeacherLabApply selectSchoolTeacherLabApplyById(Long id);
/**
* 查询教师实验室申请列表
*
* @param schoolTeacherLabApply 教师实验室申请
* @return 教师实验室申请集合
*/
public List<SchoolTeacherLabApply> selectSchoolTeacherLabApplyList(SchoolTeacherLabApply schoolTeacherLabApply);
/**
* 新增教师实验室申请
*
* @param schoolTeacherLabApply 教师实验室申请
* @return 结果
*/
public int insertSchoolTeacherLabApply(SchoolTeacherLabApply schoolTeacherLabApply);
/**
* 修改教师实验室申请
*
* @param schoolTeacherLabApply 教师实验室申请
* @return 结果
*/
public int updateSchoolTeacherLabApply(SchoolTeacherLabApply schoolTeacherLabApply);
/**
* 删除教师实验室申请
*
* @param id 教师实验室申请主键
* @return 结果
*/
public int deleteSchoolTeacherLabApplyById(Long id);
/**
* 批量删除教师实验室申请
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteSchoolTeacherLabApplyByIds(Long[] ids);
}
...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -40,6 +41,9 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe ...@@ -40,6 +41,9 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe
public int insertDivisionClasses(List<SchoolDivisionClassesVo> list) { public int insertDivisionClasses(List<SchoolDivisionClassesVo> list) {
int row = 0; int row = 0;
for (SchoolDivisionClassesVo classesVo : list) { for (SchoolDivisionClassesVo classesVo : list) {
if (StringUtils.isEmpty(classesVo.getDivisionClassesRule())){
throw new ServiceException("请选择分班规则");
}
if (null == classesVo.getClassesNumber() || null == classesVo.getPeopleNumber()){ if (null == classesVo.getClassesNumber() || null == classesVo.getPeopleNumber()){
throw new ServiceException("班级数量或每班人数不能为空"); throw new ServiceException("班级数量或每班人数不能为空");
} }
...@@ -49,7 +53,7 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe ...@@ -49,7 +53,7 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe
if (classesVo.getCoursePeopleNumber() < classesVo.getClassesNumber()){ if (classesVo.getCoursePeopleNumber() < classesVo.getClassesNumber()){
throw new ServiceException("输入的班级数量大于该课程总人数"); throw new ServiceException("输入的班级数量大于该课程总人数");
} }
if (classesVo.getClassesNumber() * classesVo.getPeopleNumber() < classesVo.getCoursePeopleNumber() ){ if (classesVo.getClassesNumber() * classesVo.getPeopleNumber() > classesVo.getCoursePeopleNumber() || classesVo.getClassesNumber() * classesVo.getPeopleNumber() < classesVo.getCoursePeopleNumber()){
throw new ServiceException("输入的班级数量和每班人数不符"); throw new ServiceException("输入的班级数量和每班人数不符");
} }
if (classesVo.getPeopleNumber() > classesVo.getCoursePeopleNumber()){ if (classesVo.getPeopleNumber() > classesVo.getCoursePeopleNumber()){
...@@ -285,6 +289,9 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe ...@@ -285,6 +289,9 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe
public int insertDivisionClassesEc(List<SchoolDivisionClassesVo> list) { public int insertDivisionClassesEc(List<SchoolDivisionClassesVo> list) {
int row = 0; int row = 0;
for (SchoolDivisionClassesVo classesVo : list) { for (SchoolDivisionClassesVo classesVo : list) {
if (StringUtils.isEmpty(classesVo.getDivisionClassesRule())){
throw new ServiceException("请选择分班规则");
}
if (null == classesVo.getClassesNumber() || null == classesVo.getPeopleNumber()){ if (null == classesVo.getClassesNumber() || null == classesVo.getPeopleNumber()){
throw new ServiceException("班级数量或每班人数不能为空"); throw new ServiceException("班级数量或每班人数不能为空");
} }
...@@ -294,7 +301,7 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe ...@@ -294,7 +301,7 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe
if (classesVo.getCoursePeopleNumber() < classesVo.getClassesNumber()){ if (classesVo.getCoursePeopleNumber() < classesVo.getClassesNumber()){
throw new ServiceException("输入的班级数量大于该课程总人数"); throw new ServiceException("输入的班级数量大于该课程总人数");
} }
if (classesVo.getClassesNumber() * classesVo.getPeopleNumber() < classesVo.getCoursePeopleNumber() ){ if (classesVo.getClassesNumber() * classesVo.getPeopleNumber() > classesVo.getCoursePeopleNumber() || classesVo.getClassesNumber() * classesVo.getPeopleNumber() < classesVo.getCoursePeopleNumber()){
throw new ServiceException("输入的班级数量和每班人数不符"); throw new ServiceException("输入的班级数量和每班人数不符");
} }
if (classesVo.getPeopleNumber() > classesVo.getCoursePeopleNumber()){ if (classesVo.getPeopleNumber() > classesVo.getCoursePeopleNumber()){
......
package yangtz.cs.liu.campus.service.impl.schoolAtt; package yangtz.cs.liu.campus.service.impl.schoolAtt;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
...@@ -10,6 +11,7 @@ import com.ruoyi.common.exception.ServiceException; ...@@ -10,6 +11,7 @@ import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.system.mapper.SysDeptMapper; import com.ruoyi.system.mapper.SysDeptMapper;
import java.text.SimpleDateFormat;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -19,10 +21,13 @@ import yangtz.cs.liu.campus.domain.schoolAtt.SchoolAtt; ...@@ -19,10 +21,13 @@ import yangtz.cs.liu.campus.domain.schoolAtt.SchoolAtt;
import yangtz.cs.liu.campus.domain.schoolClass.SchoolClass; import yangtz.cs.liu.campus.domain.schoolClass.SchoolClass;
import yangtz.cs.liu.campus.domain.schoolgrade.SchoolGrade; import yangtz.cs.liu.campus.domain.schoolgrade.SchoolGrade;
import yangtz.cs.liu.campus.domain.student.SchoolStudent; import yangtz.cs.liu.campus.domain.student.SchoolStudent;
import yangtz.cs.liu.campus.domain.workTimes.WorkTime;
import yangtz.cs.liu.campus.mapper.WorkTimes.WorkTimeMapper;
import yangtz.cs.liu.campus.mapper.schoolAtt.SchoolAttMapper; import yangtz.cs.liu.campus.mapper.schoolAtt.SchoolAttMapper;
import yangtz.cs.liu.campus.mapper.schoolgrade.SchoolGradeMapper; import yangtz.cs.liu.campus.mapper.schoolgrade.SchoolGradeMapper;
import yangtz.cs.liu.campus.mapper.teacher.SchoolTeacherMapper; import yangtz.cs.liu.campus.mapper.teacher.SchoolTeacherMapper;
import yangtz.cs.liu.campus.service.schoolAtt.ISchoolAttService; import yangtz.cs.liu.campus.service.schoolAtt.ISchoolAttService;
import yangtz.cs.liu.campus.service.workDay.ISchoolWorkDayService;
import yangtz.cs.liu.campus.vo.schoolAtt.SchoolAttVO; import yangtz.cs.liu.campus.vo.schoolAtt.SchoolAttVO;
import yangtz.cs.liu.campus.vo.student.SchoolStudentVO; import yangtz.cs.liu.campus.vo.student.SchoolStudentVO;
import yangtz.cs.liu.campus.vo.teacher.SchoolTeacherDutyVO; import yangtz.cs.liu.campus.vo.teacher.SchoolTeacherDutyVO;
...@@ -53,6 +58,10 @@ public class SchoolAttServiceImpl extends ServiceImpl<SchoolAttMapper, SchoolAtt ...@@ -53,6 +58,10 @@ public class SchoolAttServiceImpl extends ServiceImpl<SchoolAttMapper, SchoolAtt
@Autowired @Autowired
private SysDeptMapper deptMapper; private SysDeptMapper deptMapper;
@Autowired
private WorkTimeMapper workTimeMapper;
@Autowired
private ISchoolWorkDayService dayService;
DateFormat df = DateFormat.getTimeInstance();//只显示出时分秒 DateFormat df = DateFormat.getTimeInstance();//只显示出时分秒
...@@ -378,6 +387,120 @@ public class SchoolAttServiceImpl extends ServiceImpl<SchoolAttMapper, SchoolAtt ...@@ -378,6 +387,120 @@ public class SchoolAttServiceImpl extends ServiceImpl<SchoolAttMapper, SchoolAtt
} }
/** /**
* 验证是否迟到、早退
* @param list
* @return
*/
@Override
public List<SchoolAtt> verifyLateness(List<SchoolAtt> list) throws Exception {
List<SchoolAtt> handUserAttList = new ArrayList<>();
String codeUser = null;
//当前年月份内获取周末、节假日日期
for (SchoolAtt data :list) {
List<SchoolAtt> attUserList = new ArrayList<>();
//将对每个人信息信息处理
if (codeUser!=null && data.getTeacherCode().equals(codeUser)){
continue;
}
for (SchoolAtt times :list) {
if (data.getTeacherCode().equals(times.getTeacherCode()) && (0 == data.getClockDate().compareTo(times.getClockDate()))){
codeUser =times.getTeacherCode();
attUserList.add(times);
}
}
//处理个人时间信息
this.handleAttList(attUserList);
//存储到新得List中
handUserAttList.addAll(attUserList);
}
return handUserAttList;
}
private void handleAttList(List<SchoolAtt> list) throws Exception {
//迟到
Boolean beLateFlag = false;
//早上是否有过第一次打卡
Boolean amFlag = false;
//下午第一次打卡
Boolean pmFlag = false;
//获取时间段
List<WorkTime> workTimes = workTimeMapper.selectList(new LambdaQueryWrapper<WorkTime>());
WorkTime workTime = workTimes.get(0);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
Date parse = sdf.parse("5:00");
//上午打卡起始世界
Calendar parseCal = Calendar.getInstance();
parseCal.setTime(parse);
//上午开始时间
Calendar amStartIime = Calendar.getInstance();
amStartIime.setTime(workTime.getAmStartTime());
//上午结束时间
Calendar amEndTime = Calendar.getInstance();
amEndTime.setTime(workTime.getAmEndTime());
//上午工作迟到时间点
Calendar amLateTime = Calendar.getInstance();
amLateTime.setTime(workTime.getAmLateTime());
//下午开始时间
Calendar pmStartTime = Calendar.getInstance();
pmStartTime.setTime(workTime.getPmStartTime());
//下午结束时间
Calendar pmEndtTime = Calendar.getInstance();
pmEndtTime.setTime(workTime.getPmEndTime());
//下午打卡时间开始点
Calendar pmMiddleTime = Calendar.getInstance();
pmMiddleTime.setTime(workTime.getPmMiddleTime());
//下午工作迟到时间点
Calendar pmLateTime = Calendar.getInstance();
pmLateTime.setTime(workTime.getPmLateTime());
//当前打卡世界
Calendar clockTime = Calendar.getInstance();
List<String> restList = dayService.getHolidayList("1");
//判断每个人的打卡时间
for (SchoolAtt data: list){
clockTime.setTime(sdf.parse(data.getClockTime()));
//0判断当前是否是工作日
if ("0".equals(HolidayDateUtil.isLawHoliday(data.getClockDate().toString(),restList))){
//判断时间端在早上5到 早上第一个打卡时间内
if (clockTime.after(parseCal) && clockTime.before(amStartIime)){
amFlag = true;
}else if (clockTime.after(amStartIime) && clockTime.before(amLateTime)){
//打卡时间在7.30到9.0之前判断是否有过第一次打卡,没有则迟到,有无效
if (!amFlag){
data.setWorkStatus("迟到");
continue;
}
} else if (clockTime.after(amLateTime) && clockTime.before(amEndTime) ) {
//打卡时间在迟到时间到到下班时间点打卡 就是早退
data.setWorkStatus("早退");
continue;
} else if (clockTime.after(pmMiddleTime) && clockTime.before(pmStartTime)) {
//1点到 下午打卡开始时间
pmFlag = true;
} else if (clockTime.after(pmStartTime) && clockTime.before(pmLateTime)) {
//下午开始时间到迟到时间
if (!pmFlag){
data.setWorkStatus("迟到");
continue;
}
} else if (clockTime.after(pmLateTime) && clockTime.before(pmEndtTime)) {
//下午卡点时间 到下班时间
data.setWorkStatus("早退");
continue;
}
}
}
}
/**
* 导入数据 * 导入数据
* */ * */
@Override @Override
......
...@@ -127,6 +127,9 @@ public class EquipmentLedgerServiceImpl extends ServiceImpl<EquipmentLedgerMappe ...@@ -127,6 +127,9 @@ public class EquipmentLedgerServiceImpl extends ServiceImpl<EquipmentLedgerMappe
String userName = sysUserMapper.selectUserById(schoolEquipmentLedger.getUseId()).getUserName(); String userName = sysUserMapper.selectUserById(schoolEquipmentLedger.getUseId()).getUserName();
schoolEquipmentLedger.setUseName(userName); schoolEquipmentLedger.setUseName(userName);
} }
if (schoolEquipmentLedger.getClassificationCode().length() < 4){
throw new ServiceException("分类编码至少选择至二级分类!");
}
//生成自编码 //生成自编码
String code = getCode(schoolEquipmentLedger.getClassificationCode()); String code = getCode(schoolEquipmentLedger.getClassificationCode());
schoolEquipmentLedger.setEncode(code); schoolEquipmentLedger.setEncode(code);
......
package yangtz.cs.liu.campus.service.impl.schoolLab;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Map;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolExperimentPlanClass;
import yangtz.cs.liu.campus.mapper.schoolLab.SchoolExperimentPlanMapper;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolExperimentPlan;
import yangtz.cs.liu.campus.mapper.schoolgrade.SchoolGradeMapper;
import yangtz.cs.liu.campus.service.schoolLab.ISchoolExperimentPlanService;
import yangtz.cs.liu.campus.vo.schoolLab.SchoolExperimentPlanVo;
/**
* 实验计划Service业务层处理
*
* @author ruoyi
* @date 2023-08-29
*/
@Service
public class SchoolExperimentPlanServiceImpl extends ServiceImpl<SchoolExperimentPlanMapper, SchoolExperimentPlan> implements ISchoolExperimentPlanService
{
@Autowired
private SchoolExperimentPlanMapper schoolExperimentPlanMapper;
@Autowired
private SchoolGradeMapper gradeMapper;
/**
* 查询实验计划
*
* @param id 实验计划主键
* @return 实验计划
*/
@Override
public SchoolExperimentPlanVo selectSchoolExperimentPlanById(Long id)
{
SchoolExperimentPlanVo schoolExperimentPlanVo = schoolExperimentPlanMapper.selectSchoolExperimentPlanById(id);
String semester = "";
if (schoolExperimentPlanVo.getSemester().equals("1")){
semester = "上学期";
}else {
semester = "下学期";
}
schoolExperimentPlanVo.setSchoolYearSemester(schoolExperimentPlanVo.getSchoolYear() + semester);
schoolExperimentPlanVo.setPlannedTime(schoolExperimentPlanVo.getPlannedStartTime() + "至" + schoolExperimentPlanVo.getPlannedEndTime());
return schoolExperimentPlanVo;
}
/**
* 查询实验计划列表
*
* @param schoolExperimentPlanVo 实验计划
* @return 实验计划
*/
@Override
public List<SchoolExperimentPlanVo> selectSchoolExperimentPlanList(SchoolExperimentPlanVo schoolExperimentPlanVo)
{
SysUser user = SecurityUtils.getLoginUser().getUser();
if (user.isAdmin()){
List<SchoolExperimentPlanVo> list = schoolExperimentPlanMapper.selectSchoolExperimentPlanList(schoolExperimentPlanVo);
list.forEach(list1 -> {
String semester = "";
if (list1.getSemester().equals("1")){
semester = "上学期";
}else {
semester = "下学期";
}
list1.setSchoolYearSemester(list1.getSchoolYear() + semester);
list1.setPlannedTime(list1.getPlannedStartTime() + "至" + list1.getPlannedEndTime());
});
return list;
}
//获取最新学年
int schoolYear = gradeMapper.isNewSchoolYear();
//教师级部
List<Map<String, String>> gradeList = schoolExperimentPlanMapper.getGrade(schoolYear,user.getUserId());
if (StringUtils.isNull(gradeList) || gradeList.size() == 0) {
throw new ServiceException("没有您所在的级部信息");
}
//级部id集合
List<Long> gradeIds = new ArrayList<>();
gradeList.forEach(gradeList1 -> {
long gradeId = Long.parseLong(gradeList1.get("id"));
gradeIds.add(gradeId);
});
schoolExperimentPlanVo.setGradeIds(gradeIds);
List<SchoolExperimentPlanVo> list = schoolExperimentPlanMapper.selectSchoolExperimentPlanList(schoolExperimentPlanVo);
list.forEach(list1 -> {
String semester = "";
if (list1.getSemester().equals("1")){
semester = "上学期";
}else {
semester = "下学期";
}
list1.setSchoolYearSemester(list1.getSchoolYear() + semester);
list1.setPlannedTime(list1.getPlannedStartTime() + "至" + list1.getPlannedEndTime());
});
return list;
}
/**
* 新增实验计划
*
* @param schoolExperimentPlanVo 实验计划
* @return 结果
*/
@Transactional
@Override
public int insertSchoolExperimentPlan(SchoolExperimentPlanVo schoolExperimentPlanVo)
{
if (StringUtils.isNull(schoolExperimentPlanVo.getGradeId())){
throw new ServiceException("级部不能为空");
}
schoolExperimentPlanVo.setCreateBy(SecurityUtils.getLoginUser().getUser().getUserName());
schoolExperimentPlanVo.setCreateTime(DateUtils.getNowDate());
SchoolExperimentPlan schoolExperimentPlan = new SchoolExperimentPlan();
BeanUtils.copyProperties(schoolExperimentPlanVo,schoolExperimentPlan);
// int rows = schoolExperimentPlanMapper.insert(schoolExperimentPlan);
int rows = schoolExperimentPlanMapper.insertSchoolExperimentPlan(schoolExperimentPlan);
insertSchoolExperimentPlanClass(schoolExperimentPlanVo);
return rows;
}
/**
* 修改实验计划
*
* @param schoolExperimentPlanVo 实验计划
* @return 结果
*/
@Transactional
@Override
public int updateSchoolExperimentPlan(SchoolExperimentPlanVo schoolExperimentPlanVo)
{
schoolExperimentPlanVo.setUpdateBy(SecurityUtils.getLoginUser().getUser().getUserName());
schoolExperimentPlanVo.setUpdateTime(DateUtils.getNowDate());
SchoolExperimentPlan schoolExperimentPlan = new SchoolExperimentPlan();
BeanUtils.copyProperties(schoolExperimentPlanVo,schoolExperimentPlan);
schoolExperimentPlanMapper.deleteSchoolExperimentPlanClassByExperimentPlanId(schoolExperimentPlanVo.getId());
insertSchoolExperimentPlanClass(schoolExperimentPlanVo);
return schoolExperimentPlanMapper.updateById(schoolExperimentPlan);
}
/**
* 批量删除实验计划
*
* @param ids 需要删除的实验计划主键
* @return 结果
*/
@Transactional
@Override
public int deleteSchoolExperimentPlanByIds(Long[] ids)
{
//判断实验计划是否已预约,已预约的不可删除
LambdaQueryWrapper<SchoolExperimentPlan> wrapper = new LambdaQueryWrapper<>();
wrapper.in(SchoolExperimentPlan::getId,ids);
List<SchoolExperimentPlan> schoolExperimentPlans = schoolExperimentPlanMapper.selectList(wrapper);
schoolExperimentPlans.forEach(schoolExperimentPlan -> {
if (schoolExperimentPlan.getIsAppointment().equals("1")){
throw new ServiceException("实验计划已预约,不可删除");
}
});
schoolExperimentPlanMapper.deleteSchoolExperimentPlanClassByExperimentPlanIds(ids);
return schoolExperimentPlanMapper.deleteSchoolExperimentPlanByIds(ids);
}
/**
* 删除实验计划信息
*
* @param id 实验计划主键
* @return 结果
*/
@Transactional
@Override
public int deleteSchoolExperimentPlanById(Long id)
{
schoolExperimentPlanMapper.deleteSchoolExperimentPlanClassByExperimentPlanId(id);
return schoolExperimentPlanMapper.deleteSchoolExperimentPlanById(id);
}
/**
* 新增实验计划与班级关系信息
*
* @param schoolExperimentPlanVo 实验计划对象
*/
public void insertSchoolExperimentPlanClass(SchoolExperimentPlanVo schoolExperimentPlanVo)
{
List<SchoolExperimentPlanClass> schoolExperimentPlanClassList = schoolExperimentPlanVo.getSchoolExperimentPlanClassList();
if (StringUtils.isNull(schoolExperimentPlanClassList) || schoolExperimentPlanClassList.size() == 0){
throw new ServiceException("实验班级不能为空");
}
Long id = schoolExperimentPlanVo.getId();
List<SchoolExperimentPlanClass> list = new ArrayList<SchoolExperimentPlanClass>();
for (SchoolExperimentPlanClass schoolExperimentPlanClass : schoolExperimentPlanClassList)
{
schoolExperimentPlanClass.setExperimentPlanId(id);
list.add(schoolExperimentPlanClass);
}
if (list.size() > 0)
{
schoolExperimentPlanMapper.batchSchoolExperimentPlanClass(list);
}
}
/**
* 查询级部
* @param schoolYear
* @return
*/
@Override
public List<Map<String, String>> getGrade(int schoolYear) {
//获取当前登录用户
SysUser user = SecurityUtils.getLoginUser().getUser();
//管理员级部
if(1L == user.getUserId()){
List<Map<String, String>> gradeList = schoolExperimentPlanMapper.getGrade(schoolYear,null);
if(StringUtils.isNull(gradeList) || gradeList.size() == 0){
throw new ServiceException("当前学年为" + schoolYear + "学年,该学年没有级部信息");
}
return gradeList;
}
//教师级部
List<Map<String, String>> gradeList = schoolExperimentPlanMapper.getGrade(schoolYear,user.getUserId());
if (StringUtils.isNull(gradeList) || gradeList.size() == 0) {
throw new ServiceException("当前学年为" + schoolYear + "学年,该学年没有您所在的级部信息");
}
return gradeList;
}
/**
* 根据级部查询对应班级
* @param gradeId
* @return
*/
@Override
public List<Map<String, String>> getSchoolClass(Long gradeId) {
List<Map<String, String>> schoolClass = schoolExperimentPlanMapper.getSchoolClass(gradeId);
if (StringUtils.isNull(schoolClass) || schoolClass.size() == 0) {
throw new ServiceException("该级部还未有班级");
}
return schoolClass;
}
}
package yangtz.cs.liu.campus.service.impl.schoolLab;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolLabClassYearRelation;
import yangtz.cs.liu.campus.mapper.schoolLab.SchoolLabClassYearMapper;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolLabClassYear;
import yangtz.cs.liu.campus.service.schoolLab.ISchoolLabClassYearService;
/**
* 年级实验室预约Service业务层处理
*
* @author ruoyi
* @date 2023-08-29
*/
@Service
public class SchoolLabClassYearServiceImpl extends ServiceImpl<SchoolLabClassYearMapper,SchoolLabClassYear> implements ISchoolLabClassYearService
{
@Autowired
private SchoolLabClassYearMapper schoolLabClassYearMapper;
/**
* 查询年级实验室预约
*
* @param id 年级实验室预约主键
* @return 年级实验室预约
*/
@Override
public SchoolLabClassYear selectSchoolLabClassYearById(Long id)
{
return schoolLabClassYearMapper.selectSchoolLabClassYearById(id);
}
/**
* 查询年级实验室预约列表
*
* @param schoolLabClassYear 年级实验室预约
* @return 年级实验室预约
*/
@Override
public List<SchoolLabClassYear> selectSchoolLabClassYearList(SchoolLabClassYear schoolLabClassYear)
{
return schoolLabClassYearMapper.selectSchoolLabClassYearList(schoolLabClassYear);
}
/**
* 新增年级实验室预约
*
* @param schoolLabClassYear 年级实验室预约
* @return 结果
*/
@Transactional
@Override
public int insertSchoolLabClassYear(SchoolLabClassYear schoolLabClassYear)
{
schoolLabClassYear.setCreateTime(DateUtils.getNowDate());
int rows = schoolLabClassYearMapper.insertSchoolLabClassYear(schoolLabClassYear);
insertSchoolLabClassYearRelation(schoolLabClassYear);
return rows;
}
/**
* 修改年级实验室预约
*
* @param schoolLabClassYear 年级实验室预约
* @return 结果
*/
@Transactional
@Override
public int updateSchoolLabClassYear(SchoolLabClassYear schoolLabClassYear)
{
schoolLabClassYear.setUpdateTime(DateUtils.getNowDate());
schoolLabClassYearMapper.deleteSchoolLabClassYearRelationByLabClassYearId(schoolLabClassYear.getId());
insertSchoolLabClassYearRelation(schoolLabClassYear);
return schoolLabClassYearMapper.updateSchoolLabClassYear(schoolLabClassYear);
}
/**
* 批量删除年级实验室预约
*
* @param ids 需要删除的年级实验室预约主键
* @return 结果
*/
@Transactional
@Override
public int deleteSchoolLabClassYearByIds(Long[] ids)
{
schoolLabClassYearMapper.deleteSchoolLabClassYearRelationByLabClassYearIds(ids);
return schoolLabClassYearMapper.deleteSchoolLabClassYearByIds(ids);
}
/**
* 删除年级实验室预约信息
*
* @param id 年级实验室预约主键
* @return 结果
*/
@Transactional
@Override
public int deleteSchoolLabClassYearById(Long id)
{
schoolLabClassYearMapper.deleteSchoolLabClassYearRelationByLabClassYearId(id);
return schoolLabClassYearMapper.deleteSchoolLabClassYearById(id);
}
/**
* 新增年级实验室预约和实验室关系信息
*
* @param schoolLabClassYear 年级实验室预约对象
*/
public void insertSchoolLabClassYearRelation(SchoolLabClassYear schoolLabClassYear)
{
List<SchoolLabClassYearRelation> schoolLabClassYearRelationList = schoolLabClassYear.getSchoolLabClassYearRelationList();
Long id = schoolLabClassYear.getId();
if (StringUtils.isNotNull(schoolLabClassYearRelationList))
{
List<SchoolLabClassYearRelation> list = new ArrayList<SchoolLabClassYearRelation>();
for (SchoolLabClassYearRelation schoolLabClassYearRelation : schoolLabClassYearRelationList)
{
schoolLabClassYearRelation.setLabClassYearId(id);
list.add(schoolLabClassYearRelation);
}
if (list.size() > 0)
{
schoolLabClassYearMapper.batchSchoolLabClassYearRelation(list);
}
}
}
}
package yangtz.cs.liu.campus.service.impl.schoolLab;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import yangtz.cs.liu.campus.mapper.schoolLab.SchoolLabCompetitionMapper;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolLabCompetition;
import yangtz.cs.liu.campus.service.schoolLab.ISchoolLabCompetitionService;
/**
* 实验室竞赛Service业务层处理
*
* @author ruoyi
* @date 2023-08-29
*/
@Service
public class SchoolLabCompetitionServiceImpl extends ServiceImpl<SchoolLabCompetitionMapper,SchoolLabCompetition> implements ISchoolLabCompetitionService
{
@Autowired
private SchoolLabCompetitionMapper schoolLabCompetitionMapper;
/**
* 查询实验室竞赛
*
* @param id 实验室竞赛主键
* @return 实验室竞赛
*/
@Override
public SchoolLabCompetition selectSchoolLabCompetitionById(Long id)
{
return schoolLabCompetitionMapper.selectSchoolLabCompetitionById(id);
}
/**
* 查询实验室竞赛列表
*
* @param schoolLabCompetition 实验室竞赛
* @return 实验室竞赛
*/
@Override
public List<SchoolLabCompetition> selectSchoolLabCompetitionList(SchoolLabCompetition schoolLabCompetition)
{
return schoolLabCompetitionMapper.selectSchoolLabCompetitionList(schoolLabCompetition);
}
/**
* 新增实验室竞赛
*
* @param schoolLabCompetition 实验室竞赛
* @return 结果
*/
@Override
public int insertSchoolLabCompetition(SchoolLabCompetition schoolLabCompetition)
{
schoolLabCompetition.setCreateTime(DateUtils.getNowDate());
return schoolLabCompetitionMapper.insertSchoolLabCompetition(schoolLabCompetition);
}
/**
* 修改实验室竞赛
*
* @param schoolLabCompetition 实验室竞赛
* @return 结果
*/
@Override
public int updateSchoolLabCompetition(SchoolLabCompetition schoolLabCompetition)
{
schoolLabCompetition.setUpdateTime(DateUtils.getNowDate());
return schoolLabCompetitionMapper.updateSchoolLabCompetition(schoolLabCompetition);
}
/**
* 批量删除实验室竞赛
*
* @param ids 需要删除的实验室竞赛主键
* @return 结果
*/
@Override
public int deleteSchoolLabCompetitionByIds(Long[] ids)
{
return schoolLabCompetitionMapper.deleteSchoolLabCompetitionByIds(ids);
}
/**
* 删除实验室竞赛信息
*
* @param id 实验室竞赛主键
* @return 结果
*/
@Override
public int deleteSchoolLabCompetitionById(Long id)
{
return schoolLabCompetitionMapper.deleteSchoolLabCompetitionById(id);
}
}
package yangtz.cs.liu.campus.service.impl.schoolLab;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolLab;
import yangtz.cs.liu.campus.mapper.schoolLab.SchoolLabMapper;
import yangtz.cs.liu.campus.service.schoolLab.ISchoolLabService;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 实验室Service业务层处理
*
* @author ruoyi
* @date 2023-08-29
*/
@Service
public class SchoolLabServiceImpl extends ServiceImpl<SchoolLabMapper,SchoolLab> implements ISchoolLabService
{
@Autowired
private SchoolLabMapper schoolLabMapper;
/**
* 查询实验室
*
* @param id 实验室主键
* @return 实验室
*/
@Override
public SchoolLab selectSchoolLabById(Long id)
{
return schoolLabMapper.selectSchoolLabById(id);
}
/**
* 查询实验室列表
*
* @param schoolLab 实验室
* @return 实验室
*/
@Override
public List<SchoolLab> selectSchoolLabList(SchoolLab schoolLab)
{
List<SchoolLab> list = new ArrayList<>();
//获取当前登录用户
SysUser user = SecurityUtils.getLoginUser().getUser();
//获取用户角色集合
List<SysRole> roles = user.getRoles();
for (SysRole role : roles) {
if (role.getRoleKey().equals("admin")){
return schoolLabMapper.selectSchoolLabList(schoolLab);
}else if (role.getRoleKey().equals("phy_lab_admin") || role.getRoleKey().equals("che_lab_admin") || role.getRoleKey().equals("bio_lab_admin")){
schoolLab.setInChargeId(user.getUserId());
return schoolLabMapper.selectSchoolLabList(schoolLab);
}
}
if (user.isAdmin()){
return schoolLabMapper.selectSchoolLabList(schoolLab);
}
return list;
}
/**
* 新增实验室
*
* @param schoolLab 实验室
* @return 结果
*/
@Override
public int insertSchoolLab(SchoolLab schoolLab)
{
schoolLab.setCreateBy(SecurityUtils.getLoginUser().getUser().getUserName());
schoolLab.setCreateTime(DateUtils.getNowDate());
return schoolLabMapper.insertSchoolLab(schoolLab);
}
/**
* 修改实验室
*
* @param schoolLab 实验室
* @return 结果
*/
@Override
public int updateSchoolLab(SchoolLab schoolLab)
{
schoolLab.setUpdateBy(SecurityUtils.getLoginUser().getUser().getUserName());
schoolLab.setUpdateTime(DateUtils.getNowDate());
return schoolLabMapper.updateSchoolLab(schoolLab);
}
/**
* 批量删除实验室
*
* @param ids 需要删除的实验室主键
* @return 结果
*/
@Override
public int deleteSchoolLabByIds(Long[] ids)
{
return schoolLabMapper.deleteSchoolLabByIds(ids);
}
/**
* 删除实验室信息
*
* @param id 实验室主键
* @return 结果
*/
@Override
public int deleteSchoolLabById(Long id)
{
return schoolLabMapper.deleteSchoolLabById(id);
}
/**
* 获取实验室管理员
*/
@Override
public List<Map<String, String>> getLabAdmin() {
List<Map<String, String>> list = new ArrayList<>();
//获取当前登录用户
SysUser user = SecurityUtils.getLoginUser().getUser();
//获取用户角色集合
List<SysRole> roles = user.getRoles();
for (SysRole role : roles) {
if (role.getRoleKey().equals("admin")){
return schoolLabMapper.getLabAdminAll();
}else if (role.getRoleKey().equals("phy_lab_admin")){
list.add(schoolLabMapper.getLabAdmin(role.getRoleKey()));
}else if (role.getRoleKey().equals("che_lab_admin")){
list.add(schoolLabMapper.getLabAdmin(role.getRoleKey()));
}else if (role.getRoleKey().equals("bio_lab_admin")){
list.add(schoolLabMapper.getLabAdmin(role.getRoleKey()));
}
}
if (user.isAdmin()){
return schoolLabMapper.getLabAdminAll();
}
if (list.size() <= 0){
throw new ServiceException("为查询到您实验室管理员信息");
}
return list;
}
@Override
public List<Map<String, String>> getSub() {
List<Map<String, String>> list = new ArrayList<>();
//获取当前登录用户
SysUser user = SecurityUtils.getLoginUser().getUser();
//获取用户角色集合
List<SysRole> roles = user.getRoles();
for (SysRole role : roles) {
if (role.getRoleKey().equals("admin")){
return schoolLabMapper.getSubAll();
}else if (role.getRoleKey().equals("phy_lab_admin")){
list.add(schoolLabMapper.getSub("1"));
}else if (role.getRoleKey().equals("che_lab_admin")){
list.add(schoolLabMapper.getSub("2"));
}else if (role.getRoleKey().equals("bio_lab_admin")){
list.add(schoolLabMapper.getSub("3"));
}
}
if (user.isAdmin()){
return schoolLabMapper.getSubAll();
}
if (list.size() <= 0){
throw new ServiceException("为查询到您管理的学科信息");
}
return list;
}
}
package yangtz.cs.liu.campus.service.impl.schoolLab;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import yangtz.cs.liu.campus.mapper.schoolLab.SchoolTeacherExperimentApplyMapper;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolTeacherExperimentApply;
import yangtz.cs.liu.campus.service.schoolLab.ISchoolTeacherExperimentApplyService;
/**
* 教师个人实验申请Service业务层处理
*
* @author ruoyi
* @date 2023-08-29
*/
@Service
public class SchoolTeacherExperimentApplyServiceImpl extends ServiceImpl<SchoolTeacherExperimentApplyMapper,SchoolTeacherExperimentApply> implements ISchoolTeacherExperimentApplyService
{
@Autowired
private SchoolTeacherExperimentApplyMapper schoolTeacherExperimentApplyMapper;
/**
* 查询教师个人实验申请
*
* @param id 教师个人实验申请主键
* @return 教师个人实验申请
*/
@Override
public SchoolTeacherExperimentApply selectSchoolTeacherExperimentApplyById(Long id)
{
return schoolTeacherExperimentApplyMapper.selectSchoolTeacherExperimentApplyById(id);
}
/**
* 查询教师个人实验申请列表
*
* @param schoolTeacherExperimentApply 教师个人实验申请
* @return 教师个人实验申请
*/
@Override
public List<SchoolTeacherExperimentApply> selectSchoolTeacherExperimentApplyList(SchoolTeacherExperimentApply schoolTeacherExperimentApply)
{
return schoolTeacherExperimentApplyMapper.selectSchoolTeacherExperimentApplyList(schoolTeacherExperimentApply);
}
/**
* 新增教师个人实验申请
*
* @param schoolTeacherExperimentApply 教师个人实验申请
* @return 结果
*/
@Override
public int insertSchoolTeacherExperimentApply(SchoolTeacherExperimentApply schoolTeacherExperimentApply)
{
schoolTeacherExperimentApply.setCreateTime(DateUtils.getNowDate());
return schoolTeacherExperimentApplyMapper.insertSchoolTeacherExperimentApply(schoolTeacherExperimentApply);
}
/**
* 修改教师个人实验申请
*
* @param schoolTeacherExperimentApply 教师个人实验申请
* @return 结果
*/
@Override
public int updateSchoolTeacherExperimentApply(SchoolTeacherExperimentApply schoolTeacherExperimentApply)
{
schoolTeacherExperimentApply.setUpdateTime(DateUtils.getNowDate());
return schoolTeacherExperimentApplyMapper.updateSchoolTeacherExperimentApply(schoolTeacherExperimentApply);
}
/**
* 批量删除教师个人实验申请
*
* @param ids 需要删除的教师个人实验申请主键
* @return 结果
*/
@Override
public int deleteSchoolTeacherExperimentApplyByIds(Long[] ids)
{
return schoolTeacherExperimentApplyMapper.deleteSchoolTeacherExperimentApplyByIds(ids);
}
/**
* 删除教师个人实验申请信息
*
* @param id 教师个人实验申请主键
* @return 结果
*/
@Override
public int deleteSchoolTeacherExperimentApplyById(Long id)
{
return schoolTeacherExperimentApplyMapper.deleteSchoolTeacherExperimentApplyById(id);
}
}
package yangtz.cs.liu.campus.service.impl.schoolLab;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import yangtz.cs.liu.campus.mapper.schoolLab.SchoolTeacherLabApplyMapper;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolTeacherLabApply;
import yangtz.cs.liu.campus.service.schoolLab.ISchoolTeacherLabApplyService;
/**
* 教师实验室申请Service业务层处理
*
* @author ruoyi
* @date 2023-08-29
*/
@Service
public class SchoolTeacherLabApplyServiceImpl extends ServiceImpl<SchoolTeacherLabApplyMapper,SchoolTeacherLabApply> implements ISchoolTeacherLabApplyService
{
@Autowired
private SchoolTeacherLabApplyMapper schoolTeacherLabApplyMapper;
/**
* 查询教师实验室申请
*
* @param id 教师实验室申请主键
* @return 教师实验室申请
*/
@Override
public SchoolTeacherLabApply selectSchoolTeacherLabApplyById(Long id)
{
return schoolTeacherLabApplyMapper.selectSchoolTeacherLabApplyById(id);
}
/**
* 查询教师实验室申请列表
*
* @param schoolTeacherLabApply 教师实验室申请
* @return 教师实验室申请
*/
@Override
public List<SchoolTeacherLabApply> selectSchoolTeacherLabApplyList(SchoolTeacherLabApply schoolTeacherLabApply)
{
return schoolTeacherLabApplyMapper.selectSchoolTeacherLabApplyList(schoolTeacherLabApply);
}
/**
* 新增教师实验室申请
*
* @param schoolTeacherLabApply 教师实验室申请
* @return 结果
*/
@Override
public int insertSchoolTeacherLabApply(SchoolTeacherLabApply schoolTeacherLabApply)
{
schoolTeacherLabApply.setCreateTime(DateUtils.getNowDate());
return schoolTeacherLabApplyMapper.insertSchoolTeacherLabApply(schoolTeacherLabApply);
}
/**
* 修改教师实验室申请
*
* @param schoolTeacherLabApply 教师实验室申请
* @return 结果
*/
@Override
public int updateSchoolTeacherLabApply(SchoolTeacherLabApply schoolTeacherLabApply)
{
schoolTeacherLabApply.setUpdateTime(DateUtils.getNowDate());
return schoolTeacherLabApplyMapper.updateSchoolTeacherLabApply(schoolTeacherLabApply);
}
/**
* 批量删除教师实验室申请
*
* @param ids 需要删除的教师实验室申请主键
* @return 结果
*/
@Override
public int deleteSchoolTeacherLabApplyByIds(Long[] ids)
{
return schoolTeacherLabApplyMapper.deleteSchoolTeacherLabApplyByIds(ids);
}
/**
* 删除教师实验室申请信息
*
* @param id 教师实验室申请主键
* @return 结果
*/
@Override
public int deleteSchoolTeacherLabApplyById(Long id)
{
return schoolTeacherLabApplyMapper.deleteSchoolTeacherLabApplyById(id);
}
}
...@@ -26,6 +26,7 @@ import yangtz.cs.liu.wechat.vo.schoolXxfb.SchoolXxfbVo; ...@@ -26,6 +26,7 @@ import yangtz.cs.liu.wechat.vo.schoolXxfb.SchoolXxfbVo;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotNull; import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotNull;
import static yangtz.cs.liu.campus.constant.XxfbConstant.SAVE; import static yangtz.cs.liu.campus.constant.XxfbConstant.SAVE;
...@@ -74,6 +75,12 @@ public class SchoolXxfbServiceImpl extends ServiceImpl<SchoolXxfbMapper, SchoolX ...@@ -74,6 +75,12 @@ public class SchoolXxfbServiceImpl extends ServiceImpl<SchoolXxfbMapper, SchoolX
if (!("姓名".equals(titles.get(1)))) { if (!("姓名".equals(titles.get(1)))) {
throw new ServiceException("第2列表头应为姓名"); throw new ServiceException("第2列表头应为姓名");
} }
//判断表头是否有重复
//去重表头集合 去重之后如果新的表头集合和原表头集合长度一致,则表头没有重复值
List<String> titlesX = titles.stream().distinct().collect(Collectors.toList());
if (titlesX.size() != titles.size()){
throw new ServiceException("列名不能重复,请检查!");
}
//获取表内容 //获取表内容
//拿第一个sheet表 //拿第一个sheet表
......
...@@ -246,11 +246,11 @@ public class SchoolStudentServiceImpl extends ServiceImpl<SchoolStudentMapper, S ...@@ -246,11 +246,11 @@ public class SchoolStudentServiceImpl extends ServiceImpl<SchoolStudentMapper, S
* */ * */
@Override @Override
public int deleteByIds(List<Long> ids) { public int deleteByIds(List<Long> ids) {
/** 学生综合素质评价 */ // /** 学生综合素质评价 */
LambdaQueryWrapper<SchoolStudentEvaluate> evaluateLqw = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<SchoolStudentEvaluate> evaluateLqw = new LambdaQueryWrapper<>();
evaluateLqw // evaluateLqw
.in(SchoolStudentEvaluate::getStudentId, ids) // .in(SchoolStudentEvaluate::getStudentId, ids)
; // ;
/** 学生班级管理 */ /** 学生班级管理 */
LambdaQueryWrapper<SchoolStudentClasses> classesLqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SchoolStudentClasses> classesLqw = new LambdaQueryWrapper<>();
...@@ -276,26 +276,26 @@ public class SchoolStudentServiceImpl extends ServiceImpl<SchoolStudentMapper, S ...@@ -276,26 +276,26 @@ public class SchoolStudentServiceImpl extends ServiceImpl<SchoolStudentMapper, S
.in(SchoolStudentParent::getStudentId, ids) .in(SchoolStudentParent::getStudentId, ids)
; ;
/** 学校德育检查 */ // /** 学校德育检查 */
LambdaQueryWrapper<SchoolEducation> educationLqw = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<SchoolEducation> educationLqw = new LambdaQueryWrapper<>();
educationLqw // educationLqw
.in(SchoolEducation::getStudentId, ids) // .in(SchoolEducation::getStudentId, ids)
; // ;
//由于学校德育检查明细表中无studentID,只有educationid 所以先查找educationid,再删 //由于学校德育检查明细表中无studentID,只有educationid 所以先查找educationid,再删
List<Long> educationIdList = schoolEducationMapper.getIds(ids); // List<Long> educationIdList = schoolEducationMapper.getIds(ids);
if (educationIdList.size() > 0) { // if (educationIdList.size() > 0) {
LambdaQueryWrapper<SchoolEducationDetails> educationDetailsLqw = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<SchoolEducationDetails> educationDetailsLqw = new LambdaQueryWrapper<>();
educationDetailsLqw // educationDetailsLqw
.in(SchoolEducationDetails::getEducationId, educationIdList) // .in(SchoolEducationDetails::getEducationId, educationIdList)
; // ;
schoolEducationDetailsMapper.delete(educationDetailsLqw); // schoolEducationDetailsMapper.delete(educationDetailsLqw);
} // }
schoolEducationMapper.delete(educationLqw); // schoolEducationMapper.delete(educationLqw);
schoolStudentParentMapper.delete(parentLqw); schoolStudentParentMapper.delete(parentLqw);
schoolStudentLeaveMapper.delete(studentLeaveLqw); schoolStudentLeaveMapper.delete(studentLeaveLqw);
schoolStudentClassesMapper.delete(classesLqw); schoolStudentClassesMapper.delete(classesLqw);
schoolStudentEvaluateMapper.delete(evaluateLqw); // schoolStudentEvaluateMapper.delete(evaluateLqw);
return schoolStudentMapper.delete(lqw); return schoolStudentMapper.delete(lqw);
} }
......
...@@ -42,5 +42,20 @@ public class SchoolWorkDayServiceImpl extends ServiceImpl<SchoolWorkDayMapper, S ...@@ -42,5 +42,20 @@ public class SchoolWorkDayServiceImpl extends ServiceImpl<SchoolWorkDayMapper, S
} }
return list; return list;
} }
public List<String> getHolidayList(String type) {
LambdaQueryWrapper<SchoolWorkDay> lqw = new LambdaQueryWrapper<>();
lqw
.eq(isNotBlank(type),SchoolWorkDay::getDateType,type)
;
List<SchoolWorkDay> days = dayMapper.selectList(lqw);
if (StringUtils.isNull(days)){
return new ArrayList<>();
}
List<String> list = new ArrayList<>();
for(SchoolWorkDay day : days){
String time = HolidayDateUtil.format1.format( day.getRepDate());
list.add(time);
}
return list;
}
} }
...@@ -33,6 +33,9 @@ public interface ISchoolAttService extends IService<SchoolAtt> { ...@@ -33,6 +33,9 @@ public interface ISchoolAttService extends IService<SchoolAtt> {
* */ * */
List<SchoolAtt> dealData(List<SchoolAttVO> list); List<SchoolAtt> dealData(List<SchoolAttVO> list);
List<SchoolAtt> verifyLateness( List<SchoolAtt> list) throws Exception;
/** /**
* 导入数据 * 导入数据
* @param list * @param list
......
package yangtz.cs.liu.campus.service.schoolLab;
import com.baomidou.mybatisplus.extension.service.IService;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolExperimentPlan;
import yangtz.cs.liu.campus.vo.schoolLab.SchoolExperimentPlanVo;
import java.util.List;
import java.util.Map;
/**
* 实验计划Service接口
*
* @author ruoyi
* @date 2023-08-29
*/
public interface ISchoolExperimentPlanService extends IService<SchoolExperimentPlan>
{
/**
* 查询实验计划
*
* @param id 实验计划主键
* @return 实验计划
*/
public SchoolExperimentPlanVo selectSchoolExperimentPlanById(Long id);
/**
* 查询实验计划列表
*
* @param schoolExperimentPlanVo 实验计划
* @return 实验计划集合
*/
public List<SchoolExperimentPlanVo> selectSchoolExperimentPlanList(SchoolExperimentPlanVo schoolExperimentPlanVo);
/**
* 新增实验计划
*
* @param schoolExperimentPlanVo 实验计划
* @return 结果
*/
public int insertSchoolExperimentPlan(SchoolExperimentPlanVo schoolExperimentPlanVo);
/**
* 修改实验计划
*
* @param schoolExperimentPlanVo 实验计划
* @return 结果
*/
public int updateSchoolExperimentPlan(SchoolExperimentPlanVo schoolExperimentPlanVo);
/**
* 批量删除实验计划
*
* @param ids 需要删除的实验计划主键集合
* @return 结果
*/
public int deleteSchoolExperimentPlanByIds(Long[] ids);
/**
* 删除实验计划信息
*
* @param id 实验计划主键
* @return 结果
*/
public int deleteSchoolExperimentPlanById(Long id);
/**
* 根据学年查询级部下拉框
* @param schoolYear
* @return
*/
List<Map<String,String>> getGrade(int schoolYear);
/**
* 根据级部查询对应班级
* @param gradeId
* @return
*/
List<Map<String,String>> getSchoolClass(Long gradeId);
}
package yangtz.cs.liu.campus.service.schoolLab;
import com.baomidou.mybatisplus.extension.service.IService;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolLabClassYear;
import java.util.List;
/**
* 年级实验室预约Service接口
*
* @author ruoyi
* @date 2023-08-29
*/
public interface ISchoolLabClassYearService extends IService<SchoolLabClassYear>
{
/**
* 查询年级实验室预约
*
* @param id 年级实验室预约主键
* @return 年级实验室预约
*/
public SchoolLabClassYear selectSchoolLabClassYearById(Long id);
/**
* 查询年级实验室预约列表
*
* @param schoolLabClassYear 年级实验室预约
* @return 年级实验室预约集合
*/
public List<SchoolLabClassYear> selectSchoolLabClassYearList(SchoolLabClassYear schoolLabClassYear);
/**
* 新增年级实验室预约
*
* @param schoolLabClassYear 年级实验室预约
* @return 结果
*/
public int insertSchoolLabClassYear(SchoolLabClassYear schoolLabClassYear);
/**
* 修改年级实验室预约
*
* @param schoolLabClassYear 年级实验室预约
* @return 结果
*/
public int updateSchoolLabClassYear(SchoolLabClassYear schoolLabClassYear);
/**
* 批量删除年级实验室预约
*
* @param ids 需要删除的年级实验室预约主键集合
* @return 结果
*/
public int deleteSchoolLabClassYearByIds(Long[] ids);
/**
* 删除年级实验室预约信息
*
* @param id 年级实验室预约主键
* @return 结果
*/
public int deleteSchoolLabClassYearById(Long id);
}
package yangtz.cs.liu.campus.service.schoolLab;
import com.baomidou.mybatisplus.extension.service.IService;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolLabCompetition;
import java.util.List;
/**
* 实验室竞赛Service接口
*
* @author ruoyi
* @date 2023-08-29
*/
public interface ISchoolLabCompetitionService extends IService<SchoolLabCompetition>
{
/**
* 查询实验室竞赛
*
* @param id 实验室竞赛主键
* @return 实验室竞赛
*/
public SchoolLabCompetition selectSchoolLabCompetitionById(Long id);
/**
* 查询实验室竞赛列表
*
* @param schoolLabCompetition 实验室竞赛
* @return 实验室竞赛集合
*/
public List<SchoolLabCompetition> selectSchoolLabCompetitionList(SchoolLabCompetition schoolLabCompetition);
/**
* 新增实验室竞赛
*
* @param schoolLabCompetition 实验室竞赛
* @return 结果
*/
public int insertSchoolLabCompetition(SchoolLabCompetition schoolLabCompetition);
/**
* 修改实验室竞赛
*
* @param schoolLabCompetition 实验室竞赛
* @return 结果
*/
public int updateSchoolLabCompetition(SchoolLabCompetition schoolLabCompetition);
/**
* 批量删除实验室竞赛
*
* @param ids 需要删除的实验室竞赛主键集合
* @return 结果
*/
public int deleteSchoolLabCompetitionByIds(Long[] ids);
/**
* 删除实验室竞赛信息
*
* @param id 实验室竞赛主键
* @return 结果
*/
public int deleteSchoolLabCompetitionById(Long id);
}
package yangtz.cs.liu.campus.service.schoolLab;
import com.baomidou.mybatisplus.extension.service.IService;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolLab;
import java.util.List;
import java.util.Map;
/**
* 实验室Service接口
*
* @author ruoyi
* @date 2023-08-29
*/
public interface ISchoolLabService extends IService<SchoolLab>
{
/**
* 查询实验室
*
* @param id 实验室主键
* @return 实验室
*/
public SchoolLab selectSchoolLabById(Long id);
/**
* 查询实验室列表
*
* @param schoolLab 实验室
* @return 实验室集合
*/
public List<SchoolLab> selectSchoolLabList(SchoolLab schoolLab);
/**
* 新增实验室
*
* @param schoolLab 实验室
* @return 结果
*/
public int insertSchoolLab(SchoolLab schoolLab);
/**
* 修改实验室
*
* @param schoolLab 实验室
* @return 结果
*/
public int updateSchoolLab(SchoolLab schoolLab);
/**
* 批量删除实验室
*
* @param ids 需要删除的实验室主键集合
* @return 结果
*/
public int deleteSchoolLabByIds(Long[] ids);
/**
* 删除实验室信息
*
* @param id 实验室主键
* @return 结果
*/
public int deleteSchoolLabById(Long id);
/**
* 获获取实验室负责人下拉框
*/
List<Map<String, String>> getLabAdmin();
/**
* 获取学科下拉框
* @return
*/
List<Map<String, String>> getSub();
}
package yangtz.cs.liu.campus.service.schoolLab;
import com.baomidou.mybatisplus.extension.service.IService;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolTeacherExperimentApply;
import java.util.List;
/**
* 教师个人实验申请Service接口
*
* @author ruoyi
* @date 2023-08-29
*/
public interface ISchoolTeacherExperimentApplyService extends IService<SchoolTeacherExperimentApply>
{
/**
* 查询教师个人实验申请
*
* @param id 教师个人实验申请主键
* @return 教师个人实验申请
*/
public SchoolTeacherExperimentApply selectSchoolTeacherExperimentApplyById(Long id);
/**
* 查询教师个人实验申请列表
*
* @param schoolTeacherExperimentApply 教师个人实验申请
* @return 教师个人实验申请集合
*/
public List<SchoolTeacherExperimentApply> selectSchoolTeacherExperimentApplyList(SchoolTeacherExperimentApply schoolTeacherExperimentApply);
/**
* 新增教师个人实验申请
*
* @param schoolTeacherExperimentApply 教师个人实验申请
* @return 结果
*/
public int insertSchoolTeacherExperimentApply(SchoolTeacherExperimentApply schoolTeacherExperimentApply);
/**
* 修改教师个人实验申请
*
* @param schoolTeacherExperimentApply 教师个人实验申请
* @return 结果
*/
public int updateSchoolTeacherExperimentApply(SchoolTeacherExperimentApply schoolTeacherExperimentApply);
/**
* 批量删除教师个人实验申请
*
* @param ids 需要删除的教师个人实验申请主键集合
* @return 结果
*/
public int deleteSchoolTeacherExperimentApplyByIds(Long[] ids);
/**
* 删除教师个人实验申请信息
*
* @param id 教师个人实验申请主键
* @return 结果
*/
public int deleteSchoolTeacherExperimentApplyById(Long id);
}
package yangtz.cs.liu.campus.service.schoolLab;
import com.baomidou.mybatisplus.extension.service.IService;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolTeacherLabApply;
import java.util.List;
/**
* 教师实验室申请Service接口
*
* @author ruoyi
* @date 2023-08-29
*/
public interface ISchoolTeacherLabApplyService extends IService<SchoolTeacherLabApply>
{
/**
* 查询教师实验室申请
*
* @param id 教师实验室申请主键
* @return 教师实验室申请
*/
public SchoolTeacherLabApply selectSchoolTeacherLabApplyById(Long id);
/**
* 查询教师实验室申请列表
*
* @param schoolTeacherLabApply 教师实验室申请
* @return 教师实验室申请集合
*/
public List<SchoolTeacherLabApply> selectSchoolTeacherLabApplyList(SchoolTeacherLabApply schoolTeacherLabApply);
/**
* 新增教师实验室申请
*
* @param schoolTeacherLabApply 教师实验室申请
* @return 结果
*/
public int insertSchoolTeacherLabApply(SchoolTeacherLabApply schoolTeacherLabApply);
/**
* 修改教师实验室申请
*
* @param schoolTeacherLabApply 教师实验室申请
* @return 结果
*/
public int updateSchoolTeacherLabApply(SchoolTeacherLabApply schoolTeacherLabApply);
/**
* 批量删除教师实验室申请
*
* @param ids 需要删除的教师实验室申请主键集合
* @return 结果
*/
public int deleteSchoolTeacherLabApplyByIds(Long[] ids);
/**
* 删除教师实验室申请信息
*
* @param id 教师实验室申请主键
* @return 结果
*/
public int deleteSchoolTeacherLabApplyById(Long id);
}
...@@ -10,4 +10,5 @@ public interface ISchoolWorkDayService extends IService<SchoolWorkDay> { ...@@ -10,4 +10,5 @@ public interface ISchoolWorkDayService extends IService<SchoolWorkDay> {
//获取区间内休息日 //获取区间内休息日
List<String> getHolidayList(Date startTime, Date endTime, String type); List<String> getHolidayList(Date startTime, Date endTime, String type);
List<String> getHolidayList(String type);
} }
package yangtz.cs.liu.campus.vo.schoolLab;
import java.util.List;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolExperimentPlanClass;
/**
* 实验计划对象Vo
*
* @author ruoyi
* @date 2023-08-29
*/
@Data
public class SchoolExperimentPlanVo extends BaseEntity
{
/** 实验计划主键id */
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/** 学科(1物理,2化学,3生物) */
@Excel(name = "学科", readConverterExp = "1=物理,2=化学,3=生物")
private String sub;
/** 级部id */
@Excel(name = "级部id")
private Long gradeId;
private List<Long> gradeIds;
/** 级部 */
@Excel(name = "级部")
private String grade;
/** 学年 */
private String schoolYear;
/** 学年+学期 */
private String schoolYearSemester;
/** 学期(1上学期,2下学期) */
private String semester;
/** 实验分类(1分组实验,2演示实验,3探究实验) */
@Excel(name = "实验分类", readConverterExp = "1=分组实验,2=演示实验,3=探究实验")
private String experimentClassify;
/** 实验名称 */
@Excel(name = "实验名称")
private String experimentName;
/** 章节内容 */
@Excel(name = "章节内容")
private String chapterContent;
/** 是否已预约 */
@Excel(name = "是否已预约", readConverterExp = "0=否,1=是")
private String isAppointment;
/** 计划开始时间 */
private String plannedStartTime;
/** 计划结束时间 */
private String plannedEndTime;
/** 计划时间 */
private String plannedTime;
/** 实验用品 */
@Excel(name = "实验用品")
private String experimentUseGoods;
/** 实验计划与班级关系信息 */
private List<SchoolExperimentPlanClass> schoolExperimentPlanClassList;
}
package yangtz.cs.liu.campus.vo.schoolLab;
import java.util.List;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import yangtz.cs.liu.campus.domain.schoolLab.SchoolLabClassYearRelation;
/**
* 年级实验室预约对象Vo
*
* @author ruoyi
* @date 2023-08-29
*/
@Data
public class SchoolLabClassYearVo extends BaseEntity
{
/** 主键id */
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/** 实验计划id */
private String experimentPlanId;
/** 级部 */
@Excel(name = "级部")
private String grade;
/** 学年 */
@Excel(name = "学年")
private String schoolYear;
/** 学期(1上学期,2下学期) */
@Excel(name = "学期", readConverterExp = "1=上学期,2=下学期")
private String semester;
/** 学科(1物理,2化学,3生物) */
@Excel(name = "学科", readConverterExp = "1=物理,2=化学,3=生物")
private String sub;
/** 实验分类(1分组实验,2演示实验,3探究实验) */
@Excel(name = "实验分类", readConverterExp = "1=分组实验,2=演示实验,3=探究实验")
private String experimentClassify;
/** 计划开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "计划开始时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date plannedStartTime;
/** 计划结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "计划结束时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date plannedEndTime;
/** 章节内容 */
@Excel(name = "章节内容")
private String chapterContent;
/** 实验用品 */
@Excel(name = "实验用品")
private String experimentUseGoods;
/** 申报状态(0未申报,1已申报,2已阅读,3已分配) */
@Excel(name = "申报状态", readConverterExp = "0=未申报,1=已申报,2=已阅读,3=已分配")
private String declareState;
/** 申报人id */
private Long applyId;
/** 申报人 */
@Excel(name = "申报人")
private String applyName;
/** 申报时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "申报时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date applyTime;
/** 删除状态 */
private String delFlag;
/** 年级实验室预约和实验室关系信息 */
private List<SchoolLabClassYearRelation> schoolLabClassYearRelationList;
}
package yangtz.cs.liu.campus.vo.schoolLab;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 实验室竞赛对象Vo
*
* @author ruoyi
* @date 2023-08-29
*/
@Data
public class SchoolLabCompetitionVo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 实验室竞赛主键id */
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/** 学年 */
@Excel(name = "学年")
private String schoolYear;
/** 参赛教师id */
@Excel(name = "参赛教师id")
private String teacherId;
/** 参赛教师 */
@Excel(name = "参赛教师")
private String teacherName;
/** 参赛课题 */
@Excel(name = "参赛课题")
private String entrySubject;
/** 比赛项目名称 */
@Excel(name = "比赛项目名称")
private String competitionName;
/** 比赛类型(1说课比赛,2自制教具比赛,3实验教学能力大赛) */
@Excel(name = "比赛类型", readConverterExp = "1=说课比赛,2=自制教具比赛,3=实验教学能力大赛")
private String competitionType;
/** 比赛级别(1省级,2市级) */
@Excel(name = "比赛级别", readConverterExp = "1=省级,2=市级")
private String competitionLevel;
/** 备注1 */
@Excel(name = "备注1")
private String remark1;
/** 备注2 */
@Excel(name = "备注2")
private String remark2;
/** 备注3 */
@Excel(name = "备注3")
private String remark3;
}
package yangtz.cs.liu.campus.vo.schoolLab;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
/**
* 实验室对象Vo
*
* @author ruoyi
* @date 2023-08-29
*/
@Data
public class SchoolLabVo extends BaseEntity
{
/** 实验室主键id */
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/** 实验室名称 */
@Excel(name = "实验室名称")
private String labName;
/** 实验室学科(1物理,2化学,3生物) */
@Excel(name = "实验室学科", readConverterExp = "1=物理,2=化学,3=生物")
private String labSub;
/** 负责人id */
private Long inChargeId;
/** 负责人 */
@Excel(name = "负责人")
private String inChargeName;
/** 实验室状态(1良好,2正常,3待检查) */
@Excel(name = "实验室状态", readConverterExp = "1=良好,2=正常,3=待检查")
private String labState;
/** 实验室用品 */
@Excel(name = "实验室用品")
private String labUseGoods;
}
package yangtz.cs.liu.campus.vo.schoolLab;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 教师个人实验申请对象Vo
*
* @author ruoyi
* @date 2023-08-29
*/
@Data
public class SchoolTeacherExperimentApplyVo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 教师个人实验申请主键id */
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/** 学科(1物理,2化学,3生物) */
@Excel(name = "学科", readConverterExp = "1=物理,2=化学,3=生物")
private String sub;
/** 级部id */
private Long gradeId;
/** 级部 */
@Excel(name = "级部")
private String grade;
/** 学年 */
@Excel(name = "学年")
private String schoolYear;
/** 学期 */
@Excel(name = "学期")
private String semester;
/** 规划时间 */
@Excel(name = "规划时间")
private String plannedTime;
/** 实验名称 */
@Excel(name = "实验名称")
private String experimentName;
/** 实验分类(1分组实验,2演示实验,3探究实验) */
@Excel(name = "实验分类", readConverterExp = "1=分组实验,2=演示实验,3=探究实验")
private String experimentClassify;
/** 实验用品 */
@Excel(name = "实验用品")
private String experimentUseGoods;
/** 实验室id */
private String labId;
/** 实验室名称 */
@Excel(name = "实验室名称")
private String labName;
/** 申报状态(0未申报,1已申报,2已阅读,3已分配) */
@Excel(name = "申报状态", readConverterExp = "0=未申报,1=已申报,2=已阅读,3=已分配")
private String declareState;
/** 申报人id */
private Long applyId;
/** 申报人名称 */
@Excel(name = "申报人名称")
private String applyName;
/** 申报时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "申报时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date applyTime;
}
package yangtz.cs.liu.campus.vo.schoolLab;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 教师实验室申请对象Vo
*
* @author ruoyi
* @date 2023-08-29
*/
@Data
public class SchoolTeacherLabApplyVo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 教师实验室申请主键id */
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/** 年级实验室预约主键id */
private String labClassYearId;
/** 实验分类(1分组实验,2演示实验,3探究实验) */
@Excel(name = "实验分类", readConverterExp = "1=分组实验,2=演示实验,3=探究实验")
private String experimentClassify;
/** 学科(1物理,2化学,3生物) */
@Excel(name = "学科", readConverterExp = "1=物理,2=化学,3=生物")
private String sub;
/** 级部 */
@Excel(name = "级部")
private String grade;
/** 学年 */
@Excel(name = "学年")
private String schoolYear;
/** 学期(1上学期,2下学期) */
@Excel(name = "学期", readConverterExp = "1=上学期,2=下学期")
private String semester;
/** 班级id */
private String classId;
/** 班级名称 */
@Excel(name = "班级名称")
private String className;
/** 章节内容 */
@Excel(name = "章节内容")
private String chapterContent;
/** 实验时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "实验时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date experimentTime;
/** 节次 */
@Excel(name = "节次")
private String section;
/** 实验室id */
private Long labId;
/** 实验室名称 */
@Excel(name = "实验室名称")
private String labName;
/** 申请状态(1已确认,0未确认) */
@Excel(name = "申请状态", readConverterExp = "1=已确认,0=未确认")
private String applyState;
/** 申请人id */
private Long applyId;
/** 申请人 */
@Excel(name = "申请人")
private String applyName;
/** 申请时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date applyTime;
}
package yangtz.cs.liu.wechat.controller.api; package yangtz.cs.liu.wechat.controller.api;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.util.ArrayList; import java.util.*;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Sha1Util { public class Sha1Util {
private static final int[] abcde = { private static final int[] abcde = {
...@@ -229,6 +227,34 @@ public class Sha1Util { ...@@ -229,6 +227,34 @@ public class Sha1Util {
return ""; return "";
} }
/*sha1加密*/
public static String sha12(String decript) {
String signature = "";
try {
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(decript.getBytes("UTF-8"));
signature = byteToHex(crypt.digest());
return signature;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return "";
}
private static String byteToHex(final byte[] hash) {
Formatter formatter = new Formatter();
for (byte b : hash)
{
formatter.format("%02x", b);
}
String result = formatter.toString();
formatter.close();
return result;
}
/** /**
* @Comment SHA1实现 * @Comment SHA1实现
* @Author Ron * @Author Ron
......
...@@ -4,23 +4,23 @@ package yangtz.cs.liu.wechat.controller.api; ...@@ -4,23 +4,23 @@ package yangtz.cs.liu.wechat.controller.api;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.html.EscapeUtil;
import com.ruoyi.common.utils.http.HttpUtils; import com.ruoyi.common.utils.http.HttpUtils;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import yangtz.cs.liu.campus.util.VxTemlateSendApi;
import yangtz.cs.liu.wechat.conf.AesException; import yangtz.cs.liu.wechat.conf.AesException;
import yangtz.cs.liu.wechat.conf.SHA1; import yangtz.cs.liu.wechat.conf.SHA1;
import yangtz.cs.liu.wechat.domain.*; import yangtz.cs.liu.wechat.domain.*;
...@@ -318,8 +318,9 @@ public class WxApiController extends BaseController { ...@@ -318,8 +318,9 @@ public class WxApiController extends BaseController {
@GetMapping("/getsignature") @GetMapping("/getsignature")
@ResponseBody @ResponseBody
public AjaxResult getsignature(String url) throws Exception { public AjaxResult getsignature(String url) throws Exception {
Map<String,String> map = new HashMap<String,String>(); log.info(url);
//获取accesToken //获取accesToken
url = EscapeUtil.decode(url);
String token = accessTokenUtil.getToken(); String token = accessTokenUtil.getToken();
//获取jsapi_ticket //获取jsapi_ticket
String ticket = null; String ticket = null;
...@@ -330,30 +331,43 @@ public class WxApiController extends BaseController { ...@@ -330,30 +331,43 @@ public class WxApiController extends BaseController {
+ "&type=jsapi"); + "&type=jsapi");
JSONObject jsonObject = JSONUtil.parseObj(ticketss); JSONObject jsonObject = JSONUtil.parseObj(ticketss);
ticket = jsonObject.get("ticket").toString(); ticket = jsonObject.get("ticket").toString();
redisCache.setCacheObject("ticket", ticket, 5, TimeUnit.MINUTES); redisCache.setCacheObject("ticket", ticket, 90, TimeUnit.MINUTES);
} }
//生成JS-SDK权限验证的签名 //生成JS-SDK权限验证的签名
//1.生成随机字符串 String noncester = create_nonce_str();
String uuid = UUID.randomUUID().toString(); String timestamp = create_timestamp();
//去掉“-”符号 String string1;
String noncester = uuid.replaceAll("-", ""); String signature = "";
//2获取时间戳
long timestamp = System.currentTimeMillis();
//3. //3.
Map<String, String> maps = new TreeMap<String,String>(); //注意这里参数名必须全部小写,且必须有序
maps.put("noncestr", noncester); string1 = "jsapi_ticket=" + ticket +
maps.put("jsapi_ticket", ticket); "&noncestr=" + noncester +
maps.put("timestamp",String.valueOf(timestamp)); "&timestamp=" + timestamp +
maps.put("url", url); "&url=" + url;
String createLinkString = createLinkString(maps); System.out.println(string1);
log.info(createLinkString); log.info(string1);
//sha1签名,得到signature try
String signature = Sha1Util.sha1(createLinkString); {
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(string1.getBytes("UTF-8"));
signature = byteToHex(crypt.digest());
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
Map<String,String> map = new HashMap<String,String>();
map.put("noncestr",noncester); map.put("noncestr",noncester);
map.put("jsapi_ticket",ticket); map.put("jsapi_ticket",ticket);
map.put("timestamp",String.valueOf(timestamp)); map.put("timestamp",timestamp);
map.put("url",url); map.put("url",url);
map.put("signature",signature); map.put("signature",signature);
map.put("cstoken",token);
return AjaxResult.success(map); return AjaxResult.success(map);
...@@ -378,8 +392,22 @@ public class WxApiController extends BaseController { ...@@ -378,8 +392,22 @@ public class WxApiController extends BaseController {
} }
return prestr; return prestr;
} }
private static String create_nonce_str() {
return UUID.randomUUID().toString();
}
private static String create_timestamp() {
return Long.toString(System.currentTimeMillis() / 1000);
}
private static String byteToHex(final byte[] hash) {
Formatter formatter = new Formatter();
for (byte b : hash)
{
formatter.format("%02x", b);
}
String result = formatter.toString();
formatter.close();
return result;
}
/** /**
...@@ -562,12 +590,12 @@ public class WxApiController extends BaseController { ...@@ -562,12 +590,12 @@ public class WxApiController extends BaseController {
// 微信公众平台 // 微信公众平台
String url = "https://open.weixin.qq.com/connect/oauth2/authorize?" String url = "https://open.weixin.qq.com/connect/oauth2/authorize?"
+ "appid=" + "appid="
+ appid + "wx765a55464b308d13"
+ "&redirect_uri=" + "&redirect_uri="
+ redirectUri + redirectUri
+ "&response_type=code" + "&response_type=code"
+ "&scope=" + "&scope="
+ scope + "aa6741b17f05203975b17f0a64458741"
+ "&state=" + state + "#wechat_redirect"; + "&state=" + state + "#wechat_redirect";
// response.sendRedirect(url); // response.sendRedirect(url);
return "redirect:" + url; return "redirect:" + url;
......
...@@ -64,8 +64,12 @@ public class EquipmentLeaseController { ...@@ -64,8 +64,12 @@ public class EquipmentLeaseController {
LambdaQueryWrapper<SchoolEquipmentLedger> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SchoolEquipmentLedger> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SchoolEquipmentLedger::getEncode,encode); wrapper.eq(SchoolEquipmentLedger::getEncode,encode);
SchoolEquipmentLedger one = iEquipmentService.getOne(wrapper); SchoolEquipmentLedger one = iEquipmentService.getOne(wrapper);
if (one==null){
return new AjaxResult(3000,"设备信息未找到");
}else {
return AjaxResult.success(one); return AjaxResult.success(one);
} }
}
/** /**
* 我的借用记录 * 我的借用记录
......
...@@ -37,7 +37,7 @@ public class WxSchoolStudentIntegralController extends BaseController { ...@@ -37,7 +37,7 @@ public class WxSchoolStudentIntegralController extends BaseController {
@GetMapping("/list/{studentId}") @GetMapping("/list/{studentId}")
public AjaxResult list(@PathVariable Long studentId, SchoolStudentIntegral schoolStudentIntegral) public AjaxResult list(@PathVariable Long studentId, SchoolStudentIntegral schoolStudentIntegral)
{ {
// TODO 获取当前学年,所在学期(未改)
//获取当前学年,所在学期 //获取当前学年,所在学期
int term = isNewTerm(); int term = isNewTerm();
int schoolYear = getNewYear(); int schoolYear = getNewYear();
...@@ -46,7 +46,11 @@ public class WxSchoolStudentIntegralController extends BaseController { ...@@ -46,7 +46,11 @@ public class WxSchoolStudentIntegralController extends BaseController {
schoolStudentIntegral.setSchoolYear(schoolYear); schoolStudentIntegral.setSchoolYear(schoolYear);
//该学生本学年当前学期积分列表 //该学生本学年当前学期积分列表
List<SchoolStudentIntegral> list = integralService.selectSchoolStudentIntegralList(schoolStudentIntegral); List<SchoolStudentIntegral> list = integralService.selectSchoolStudentIntegralList(schoolStudentIntegral);
AjaxResult ajax = AjaxResult.success(list); // TODO 修改公众号查询学生积分明细 获取该学生所有学期积分列表
SchoolStudentIntegral studentIntegral = new SchoolStudentIntegral();
studentIntegral.setStudentId(studentId);
List<SchoolStudentIntegral> studentIntegralList = integralService.selectSchoolStudentIntegralList(studentIntegral);
AjaxResult ajax = AjaxResult.success(studentIntegralList);
//班级得分 classScore //班级得分 classScore
// ,级部得分,gradeScore // ,级部得分,gradeScore
......
...@@ -54,7 +54,7 @@ public class AccessTokenUtil { ...@@ -54,7 +54,7 @@ public class AccessTokenUtil {
token = accessToken; token = accessToken;
log.info(accessToken); log.info(accessToken);
// 将access_token存入redis // 将access_token存入redis
redisCache.setCacheObject("access_token", accessToken, 5, TimeUnit.MINUTES); redisCache.setCacheObject("access_token", accessToken, 90, TimeUnit.MINUTES);
} }
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
......
...@@ -26,6 +26,9 @@ public class CheckUtil { ...@@ -26,6 +26,9 @@ public class CheckUtil {
public void setMap(Map<String,Object> maps) { public void setMap(Map<String,Object> maps) {
map.putAll(maps); map.putAll(maps);
} }
public static void setMap(HashMap<String, Object> map) {
map.putAll(map);
}
/** /**
* 检验签名是否正确 * 检验签名是否正确
......
...@@ -70,8 +70,14 @@ ...@@ -70,8 +70,14 @@
<if test="applyDeptId != null and applyDeptId != ''"> and apply_dept_id = #{applyDeptId}</if> <if test="applyDeptId != null and applyDeptId != ''"> and apply_dept_id = #{applyDeptId}</if>
<if test="applyDept != null and applyDept != ''"> and apply_dept = #{applyDept}</if> <if test="applyDept != null and applyDept != ''"> and apply_dept = #{applyDept}</if>
<if test="startTime != null and endTime != null and startTime != '' and endTime != ''">and DATE_FORMAT(activity_time,'%Y-%m-%d') between #{startTime} and #{endTime}</if> <if test="startTime != null and endTime != null and startTime != '' and endTime != ''">and DATE_FORMAT(activity_time,'%Y-%m-%d') between #{startTime} and #{endTime}</if>
<if test="createById != null">and create_by_id = #{createById}</if>
<if test="createBy != null and createBy != ''">and create_by = #{createBy}</if>
<if test="createTime != null">and create_time = #{createTime}</if>
<if test="updateById != null">and update_by_id = #{updateById}</if>
<if test="updateBy != null and updateBy != ''">and update_by = #{updateBy}</if>
<if test="updateTime != null">and update_time = #{update_time}</if>
</where> </where>
ORDER BY activity_time DESC ORDER BY apply_time DESC
</select> </select>
<select id="selectSchoolAuditoriumListGr" parameterType="SchoolAuditoriumVo" resultMap="SchoolAuditoriumResult"> <select id="selectSchoolAuditoriumListGr" parameterType="SchoolAuditoriumVo" resultMap="SchoolAuditoriumResult">
...@@ -100,8 +106,14 @@ ...@@ -100,8 +106,14 @@
<if test="applyDeptId != null and applyDeptId != ''"> and apply_dept_id = #{applyDeptId}</if> <if test="applyDeptId != null and applyDeptId != ''"> and apply_dept_id = #{applyDeptId}</if>
<if test="applyDept != null and applyDept != ''"> and apply_dept = #{applyDept}</if> <if test="applyDept != null and applyDept != ''"> and apply_dept = #{applyDept}</if>
<if test="startTime != null and endTime != null and startTime != '' and endTime != ''">and DATE_FORMAT(activity_time,'%Y-%m-%d') between #{startTime} and #{endTime}</if> <if test="startTime != null and endTime != null and startTime != '' and endTime != ''">and DATE_FORMAT(activity_time,'%Y-%m-%d') between #{startTime} and #{endTime}</if>
<if test="createById != null">and create_by_id = #{createById}</if>
<if test="createBy != null and createBy != ''">and create_by = #{createBy}</if>
<if test="createTime != null">and create_time = #{createTime}</if>
<if test="updateById != null">and update_by_id = #{updateById}</if>
<if test="updateBy != null and updateBy != ''">and update_by = #{updateBy}</if>
<if test="updateTime != null">and update_time = #{update_time}</if>
</where> </where>
ORDER BY activity_time DESC ORDER BY apply_time DESC
</select> </select>
<select id="selectSchoolAuditoriumById" parameterType="Long" resultMap="SchoolAuditoriumResult"> <select id="selectSchoolAuditoriumById" parameterType="Long" resultMap="SchoolAuditoriumResult">
......
...@@ -12,13 +12,14 @@ ...@@ -12,13 +12,14 @@
<result property="orgname" column="orgname" /> <result property="orgname" column="orgname" />
<result property="clockDate" column="clock_date" /> <result property="clockDate" column="clock_date" />
<result property="clockTime" column="clock_time" /> <result property="clockTime" column="clock_time" />
<result property="workStatus" column="work_status" />
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
<result property="remark" column="remark" /> <result property="remark" column="remark" />
</resultMap> </resultMap>
<sql id="selectSchoolAttVo"> <sql id="selectSchoolAttVo">
select id, device_num, teacher_code, user_id, user_name, user_type, orgid, orgname, clock_date, clock_time, create_by, create_time, remark from school_att select id, device_num, teacher_code, user_id, user_name, work_status,user_type, orgid, orgname, clock_date, clock_time, create_by, create_time, remark from school_att
</sql> </sql>
<select id="selectSchoolAttList" parameterType="SchoolAtt" resultMap="SchoolAttResult"> <select id="selectSchoolAttList" parameterType="SchoolAtt" resultMap="SchoolAttResult">
...@@ -42,8 +43,7 @@ ...@@ -42,8 +43,7 @@
</select> </select>
<select id="queryList" parameterType="yangtz.cs.liu.campus.domain.schoolAtt.SchoolAtt" resultMap="SchoolAttResult"> <select id="queryList" parameterType="yangtz.cs.liu.campus.domain.schoolAtt.SchoolAtt" resultMap="SchoolAttResult">
select id, device_num, teacher_code, user_id, user_name, user_type, orgid, orgname, clock_date, GROUP_CONCAT(clock_time) as clock_time, create_by, create_time, remark from school_att select id, device_num, teacher_code, user_id, user_name, user_type, orgid, orgname, clock_date, GROUP_CONCAT(clock_time,IF(ISNULL(work_status),"","("),IF(ISNULL(work_status),"",work_status),IF(ISNULL(work_status),"",")") )as clock_time, create_by, create_time, remark from school_att <where>
<where>
del_flag = '0' del_flag = '0'
<if test="deviceNum != null and deviceNum != ''"> and device_num = #{deviceNum}</if> <if test="deviceNum != null and deviceNum != ''"> and device_num = #{deviceNum}</if>
<if test="teacherCode != null and teacherCode != ''"> and teacher_code = #{teacherCode}</if> <if test="teacherCode != null and teacherCode != ''"> and teacher_code = #{teacherCode}</if>
...@@ -64,8 +64,7 @@ ...@@ -64,8 +64,7 @@
</select> </select>
<select id="queryGradeList" parameterType="yangtz.cs.liu.campus.domain.schoolAtt.SchoolAtt" resultMap="SchoolAttResult"> <select id="queryGradeList" parameterType="yangtz.cs.liu.campus.domain.schoolAtt.SchoolAtt" resultMap="SchoolAttResult">
select id, device_num, teacher_code, user_id, user_name, user_type, orgid, orgname, clock_date, GROUP_CONCAT(clock_time) as clock_time, create_by, create_time, remark from school_att select id, device_num, teacher_code, user_id, user_name, user_type, orgid, orgname, clock_date, GROUP_CONCAT(clock_time,IF(ISNULL(work_status),"","("),IF(ISNULL(work_status),"",work_status),IF(ISNULL(work_status),"",")") )as clock_time, create_by, create_time, remark from school_att <where>
<where>
del_flag = '0' del_flag = '0'
<if test="entity.userName != null and entity.userName != ''"> and user_name like concat('%', #{entity.userName}, '%')</if> <if test="entity.userName != null and entity.userName != ''"> and user_name like concat('%', #{entity.userName}, '%')</if>
<if test="gradeIds != null and gradeIds.size() > 0"> <if test="gradeIds != null and gradeIds.size() > 0">
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="yangtz.cs.liu.campus.mapper.schoolLab.SchoolExperimentPlanMapper">
<resultMap type="SchoolExperimentPlanVo" id="SchoolExperimentPlanVoResult">
<result property="id" column="id" />
<result property="sub" column="sub" />
<result property="gradeId" column="grade_id" />
<result property="grade" column="grade" />
<result property="schoolYear" column="school_year" />
<result property="semester" column="semester" />
<result property="experimentClassify" column="experiment_classify" />
<result property="experimentName" column="experiment_name" />
<result property="chapterContent" column="chapter_content" />
<result property="plannedStartTime" column="planned_start_time" />
<result property="plannedEndTime" column="planned_end_time" />
<result property="experimentUseGoods" column="experiment_use_goods" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
</resultMap>
<resultMap id="ExperimentPlanClassResult" type="SchoolExperimentPlanVo" extends="SchoolExperimentPlanVoResult">
<collection property="schoolExperimentPlanClassList" notNullColumn="sub_id" javaType="java.util.List" resultMap="SchoolExperimentPlanClassResult" />
</resultMap>
<resultMap type="SchoolExperimentPlanClass" id="SchoolExperimentPlanClassResult">
<result property="id" column="sub_id" />
<result property="experimentPlanId" column="sub_experiment_plan_id" />
<result property="classId" column="sub_class_id" />
<result property="delFlag" column="sub_del_flag" />
</resultMap>
<sql id="selectSchoolExperimentPlanVo">
select id, sub, grade_id, grade, school_year, semester, experiment_classify, experiment_name, chapter_content, planned_start_time, planned_end_time, experiment_use_goods, create_by, create_time, update_by, update_time, del_flag from school_experiment_plan
</sql>
<select id="selectSchoolExperimentPlanList" parameterType="SchoolExperimentPlanVo" resultMap="SchoolExperimentPlanVoResult">
<include refid="selectSchoolExperimentPlanVo"/>
<where>
del_flag = '0'
<if test="sub != null and sub != ''"> and sub = #{sub}</if>
<if test="gradeId != null "> and grade_id = #{gradeId}</if>
<if test="grade != null and grade != ''"> and grade = #{grade}</if>
<if test="schoolYear != null and schoolYear != ''"> and school_year = #{schoolYear}</if>
<if test="semester != null and semester != ''"> and semester = #{semester}</if>
<if test="experimentClassify != null and experimentClassify != ''"> and experiment_classify = #{experimentClassify}</if>
<if test="experimentName != null and experimentName != ''"> and experiment_name like concat('%', #{experimentName}, '%')</if>
<if test="chapterContent != null and chapterContent != ''"> and chapter_content = #{chapterContent}</if>
<if test="plannedStartTime != null and plannedStartTime != ''"> and planned_start_time = #{plannedStartTime}</if>
<if test="plannedEndTime != null and plannedEndTime != ''"> and planned_end_time = #{plannedEndTime}</if>
<if test="experimentUseGoods != null and experimentUseGoods != ''"> and experiment_use_goods = #{experimentUseGoods}</if>
<if test="experimentUseGoods != null and experimentUseGoods != ''"> and experiment_use_goods = #{experimentUseGoods}</if>
<if test="gradeIds != null"> and grade in (#{gradeIds})</if>
</where>
</select>
<select id="selectSchoolExperimentPlanById" parameterType="Long" resultMap="ExperimentPlanClassResult">
select a.id, a.sub, a.grade_id, a.grade, a.school_year, a.semester, a.experiment_classify, a.experiment_name, a.chapter_content, a.planned_start_time, a.planned_end_time, a.experiment_use_goods, a.create_by, a.create_time, a.update_by, a.update_time, a.del_flag,
b.id as sub_id, b.experiment_plan_id as sub_experiment_plan_id, b.class_id as sub_class_id, b.del_flag as sub_del_flag
from school_experiment_plan a
left join school_experiment_plan_class b on b.experiment_plan_id = a.id
where a.id = #{id}
</select>
<insert id="insertSchoolExperimentPlan" parameterType="SchoolExperimentPlan" useGeneratedKeys="true" keyProperty="id">
insert into school_experiment_plan
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="sub != null">sub,</if>
<if test="gradeId != null">grade_id,</if>
<if test="grade != null">grade,</if>
<if test="schoolYear != null">school_year,</if>
<if test="semester != null">semester,</if>
<if test="experimentClassify != null">experiment_classify,</if>
<if test="experimentName != null">experiment_name,</if>
<if test="chapterContent != null">chapter_content,</if>
<if test="plannedStartTime != null">planned_start_time,</if>
<if test="plannedEndTime != null">planned_end_time,</if>
<if test="experimentUseGoods != null">experiment_use_goods,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="delFlag != null and delFlag != ''">del_flag,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="sub != null">#{sub},</if>
<if test="gradeId != null">#{gradeId},</if>
<if test="grade != null">#{grade},</if>
<if test="schoolYear != null">#{schoolYear},</if>
<if test="semester != null">#{semester},</if>
<if test="experimentClassify != null">#{experimentClassify},</if>
<if test="experimentName != null">#{experimentName},</if>
<if test="chapterContent != null">#{chapterContent},</if>
<if test="plannedStartTime != null">#{plannedStartTime},</if>
<if test="plannedEndTime != null">#{plannedEndTime},</if>
<if test="experimentUseGoods != null">#{experimentUseGoods},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="delFlag != null and delFlag != ''">#{delFlag},</if>
</trim>
</insert>
<update id="updateSchoolExperimentPlan" parameterType="SchoolExperimentPlan">
update school_experiment_plan
<trim prefix="SET" suffixOverrides=",">
<if test="sub != null">sub = #{sub},</if>
<if test="gradeId != null">grade_id = #{gradeId},</if>
<if test="grade != null">grade = #{grade},</if>
<if test="schoolYear != null">school_year = #{schoolYear},</if>
<if test="semester != null">semester = #{semester},</if>
<if test="experimentClassify != null">experiment_classify = #{experimentClassify},</if>
<if test="experimentName != null">experiment_name = #{experimentName},</if>
<if test="chapterContent != null">chapter_content = #{chapterContent},</if>
<if test="plannedStartTime != null">planned_start_time = #{plannedStartTime},</if>
<if test="plannedEndTime != null">planned_end_time = #{plannedEndTime},</if>
<if test="experimentUseGoods != null">experiment_use_goods = #{experimentUseGoods},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
</trim>
where id = #{id}
</update>
<update id="deleteSchoolExperimentPlanById" parameterType="Long">
update school_experiment_plan set del_flag = '1' where id = #{id}
</update>
<update id="deleteSchoolExperimentPlanByIds" parameterType="String">
update school_experiment_plan set del_flag = '1' where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<update id="deleteSchoolExperimentPlanClassByExperimentPlanIds" parameterType="String">
update school_experiment_plan_class set del_flag = '1' where experiment_plan_id in
<foreach item="experimentPlanId" collection="array" open="(" separator="," close=")">
#{experimentPlanId}
</foreach>
</update>
<delete id="deleteSchoolExperimentPlanClassByExperimentPlanId" parameterType="Long">
delete from school_experiment_plan_class where experiment_plan_id = #{experimentPlanId}
</delete>
<insert id="batchSchoolExperimentPlanClass">
insert into school_experiment_plan_class( id, experiment_plan_id, class_id) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.id}, #{item.experimentPlanId}, #{item.classId})
</foreach>
</insert>
<select id="getGrade" parameterType="Integer" resultType="Map">
SELECT
sg.id AS id,
sg.school_year AS schoolYear,
sg.grade_value AS gradeValue,
sg.grade_year AS gradeYear,
sg.grade_name AS gradeName
FROM
school_grade sg
left join school_class sc on sc.grade_id = sg.id
left join school_class_mentor scm on scm.class_id = sc.id
left join school_class_headmaster sch on sch.class_id = sc.id
left join school_grade_mentor sgm on sgm.grade_id = sg.id
WHERE
<if test="schoolYear != -1">and sg.school_year = #{schoolYear}</if>
<if test="userId != null">and scm.teacher_id = #{userId} or sch.teacher_id = #{userId} or sgm.teacher_id = #{userId}</if>
AND sg.del_flag = '0'
GROUP BY sg.id,sg.school_year,sg.grade_value,sg.grade_year,sg.grade_name
ORDER BY sg.grade_year DESC
</select>
<select id="getSchoolClass" parameterType="Long" resultType="Map">
select id as classId,class_name as className from school_class WHERE grade_id = #{gradeId} and del_flag = '0'
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="yangtz.cs.liu.campus.mapper.schoolLab.SchoolLabClassYearMapper">
<resultMap type="SchoolLabClassYear" id="SchoolLabClassYearResult">
<result property="id" column="id" />
<result property="experimentPlanId" column="experiment_plan_id" />
<result property="grade" column="grade" />
<result property="schoolYear" column="school_year" />
<result property="semester" column="semester" />
<result property="sub" column="sub" />
<result property="experimentClassify" column="experiment_classify" />
<result property="plannedStartTime" column="planned_start_time" />
<result property="plannedEndTime" column="planned_end_time" />
<result property="chapterContent" column="chapter_content" />
<result property="experimentUseGoods" column="experiment_use_goods" />
<result property="declareState" column="declare_state" />
<result property="applyId" column="apply_id" />
<result property="applyName" column="apply_name" />
<result property="applyTime" column="apply_time" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
</resultMap>
<resultMap id="SchoolLabClassYearSchoolLabClassYearRelationResult" type="SchoolLabClassYear" extends="SchoolLabClassYearResult">
<collection property="schoolLabClassYearRelationList" notNullColumn="sub_id" javaType="java.util.List" resultMap="SchoolLabClassYearRelationResult" />
</resultMap>
<resultMap type="SchoolLabClassYearRelation" id="SchoolLabClassYearRelationResult">
<result property="id" column="sub_id" />
<result property="labClassYearId" column="sub_lab_class_year_id" />
<result property="labId" column="sub_lab_id" />
<result property="delFlag" column="sub_del_flag" />
</resultMap>
<sql id="selectSchoolLabClassYearVo">
select id, experiment_plan_id, grade, school_year, semester, sub, experiment_classify, planned_start_time, planned_end_time, chapter_content, experiment_use_goods, declare_state, apply_id, apply_name, apply_time, create_by, create_time, update_by, update_time, del_flag from school_lab_class_year
</sql>
<select id="selectSchoolLabClassYearList" parameterType="SchoolLabClassYear" resultMap="SchoolLabClassYearResult">
<include refid="selectSchoolLabClassYearVo"/>
<where>
del_flag = '0'
<if test="experimentPlanId != null and experimentPlanId != ''"> and experiment_plan_id = #{experimentPlanId}</if>
<if test="grade != null and grade != ''"> and grade = #{grade}</if>
<if test="schoolYear != null and schoolYear != ''"> and school_year = #{schoolYear}</if>
<if test="semester != null and semester != ''"> and semester = #{semester}</if>
<if test="sub != null and sub != ''"> and sub = #{sub}</if>
<if test="experimentClassify != null and experimentClassify != ''"> and experiment_classify = #{experimentClassify}</if>
<if test="plannedStartTime != null "> and planned_start_time = #{plannedStartTime}</if>
<if test="plannedEndTime != null "> and planned_end_time = #{plannedEndTime}</if>
<if test="chapterContent != null and chapterContent != ''"> and chapter_content = #{chapterContent}</if>
<if test="experimentUseGoods != null and experimentUseGoods != ''"> and experiment_use_goods = #{experimentUseGoods}</if>
<if test="declareState != null and declareState != ''"> and declare_state = #{declareState}</if>
<if test="applyId != null "> and apply_id = #{applyId}</if>
<if test="applyName != null and applyName != ''"> and apply_name like concat('%', #{applyName}, '%')</if>
<if test="applyTime != null "> and apply_time = #{applyTime}</if>
</where>
</select>
<select id="selectSchoolLabClassYearById" parameterType="Long" resultMap="SchoolLabClassYearSchoolLabClassYearRelationResult">
select a.id, a.experiment_plan_id, a.grade, a.school_year, a.semester, a.sub, a.experiment_classify, a.planned_start_time, a.planned_end_time, a.chapter_content, a.experiment_use_goods, a.declare_state, a.apply_id, a.apply_name, a.apply_time, a.create_by, a.create_time, a.update_by, a.update_time, a.del_flag,
b.id as sub_id, b.lab_class_year_id as sub_lab_class_year_id, b.lab_id as sub_lab_id, b.del_flag as sub_del_flag
from school_lab_class_year a
left join school_lab_class_year_relation b on b.lab_class_year_id = a.id
where a.id = #{id}
</select>
<insert id="insertSchoolLabClassYear" parameterType="SchoolLabClassYear" useGeneratedKeys="true" keyProperty="id">
insert into school_lab_class_year
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="experimentPlanId != null">experiment_plan_id,</if>
<if test="grade != null">grade,</if>
<if test="schoolYear != null">school_year,</if>
<if test="semester != null">semester,</if>
<if test="sub != null">sub,</if>
<if test="experimentClassify != null">experiment_classify,</if>
<if test="plannedStartTime != null">planned_start_time,</if>
<if test="plannedEndTime != null">planned_end_time,</if>
<if test="chapterContent != null">chapter_content,</if>
<if test="experimentUseGoods != null">experiment_use_goods,</if>
<if test="declareState != null">declare_state,</if>
<if test="applyId != null">apply_id,</if>
<if test="applyName != null">apply_name,</if>
<if test="applyTime != null">apply_time,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="delFlag != null and delFlag != ''">del_flag,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="experimentPlanId != null">#{experimentPlanId},</if>
<if test="grade != null">#{grade},</if>
<if test="schoolYear != null">#{schoolYear},</if>
<if test="semester != null">#{semester},</if>
<if test="sub != null">#{sub},</if>
<if test="experimentClassify != null">#{experimentClassify},</if>
<if test="plannedStartTime != null">#{plannedStartTime},</if>
<if test="plannedEndTime != null">#{plannedEndTime},</if>
<if test="chapterContent != null">#{chapterContent},</if>
<if test="experimentUseGoods != null">#{experimentUseGoods},</if>
<if test="declareState != null">#{declareState},</if>
<if test="applyId != null">#{applyId},</if>
<if test="applyName != null">#{applyName},</if>
<if test="applyTime != null">#{applyTime},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="delFlag != null and delFlag != ''">#{delFlag},</if>
</trim>
</insert>
<update id="updateSchoolLabClassYear" parameterType="SchoolLabClassYear">
update school_lab_class_year
<trim prefix="SET" suffixOverrides=",">
<if test="experimentPlanId != null">experiment_plan_id = #{experimentPlanId},</if>
<if test="grade != null">grade = #{grade},</if>
<if test="schoolYear != null">school_year = #{schoolYear},</if>
<if test="semester != null">semester = #{semester},</if>
<if test="sub != null">sub = #{sub},</if>
<if test="experimentClassify != null">experiment_classify = #{experimentClassify},</if>
<if test="plannedStartTime != null">planned_start_time = #{plannedStartTime},</if>
<if test="plannedEndTime != null">planned_end_time = #{plannedEndTime},</if>
<if test="chapterContent != null">chapter_content = #{chapterContent},</if>
<if test="experimentUseGoods != null">experiment_use_goods = #{experimentUseGoods},</if>
<if test="declareState != null">declare_state = #{declareState},</if>
<if test="applyId != null">apply_id = #{applyId},</if>
<if test="applyName != null">apply_name = #{applyName},</if>
<if test="applyTime != null">apply_time = #{applyTime},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
</trim>
where id = #{id}
</update>
<update id="deleteSchoolLabClassYearById" parameterType="Long">
update school_lab_class_year set del_flag = '1' where id = #{id}
</update>
<update id="deleteSchoolLabClassYearByIds" parameterType="String">
update school_lab_class_year set del_flag = '1' where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<update id="deleteSchoolLabClassYearRelationByLabClassYearIds" parameterType="String">
update school_lab_class_year_relation set del_flag = '1' where lab_class_year_id in
<foreach item="labClassYearId" collection="array" open="(" separator="," close=")">
#{labClassYearId}
</foreach>
</update>
<update id="deleteSchoolLabClassYearRelationByLabClassYearId" parameterType="Long">
update school_lab_class_year_relation set del_flag = '1' where lab_class_year_id = #{labClassYearId}
</update>
<insert id="batchSchoolLabClassYearRelation">
insert into school_lab_class_year_relation( id, lab_class_year_id, lab_id, del_flag) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.id}, #{item.labClassYearId}, #{item.labId}, #{item.delFlag})
</foreach>
</insert>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="yangtz.cs.liu.campus.mapper.schoolLab.SchoolLabCompetitionMapper">
<resultMap type="SchoolLabCompetition" id="SchoolLabCompetitionResult">
<result property="id" column="id" />
<result property="schoolYear" column="school_year" />
<result property="teacherId" column="teacher_id" />
<result property="teacherName" column="teacher_name" />
<result property="entrySubject" column="entry_subject" />
<result property="competitionName" column="competition_name" />
<result property="competitionType" column="competition_type" />
<result property="competitionLevel" column="competition_level" />
<result property="remark1" column="remark1" />
<result property="remark2" column="remark2" />
<result property="remark3" column="remark3" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
</resultMap>
<sql id="selectSchoolLabCompetitionVo">
select id, school_year, teacher_id, teacher_name, entry_subject, competition_name, competition_type, competition_level, remark1, remark2, remark3, create_by, create_time, update_by, update_time, del_flag from school_lab_competition
</sql>
<select id="selectSchoolLabCompetitionList" parameterType="SchoolLabCompetition" resultMap="SchoolLabCompetitionResult">
<include refid="selectSchoolLabCompetitionVo"/>
<where>
del_flag = '0'
<if test="schoolYear != null and schoolYear != ''"> and school_year = #{schoolYear}</if>
<if test="teacherId != null and teacherId != ''"> and teacher_id = #{teacherId}</if>
<if test="teacherName != null and teacherName != ''"> and teacher_name like concat('%', #{teacherName}, '%')</if>
<if test="entrySubject != null and entrySubject != ''"> and entry_subject = #{entrySubject}</if>
<if test="competitionName != null and competitionName != ''"> and competition_name like concat('%', #{competitionName}, '%')</if>
<if test="competitionType != null and competitionType != ''"> and competition_type = #{competitionType}</if>
<if test="competitionLevel != null and competitionLevel != ''"> and competition_level = #{competitionLevel}</if>
<if test="remark1 != null and remark1 != ''"> and remark1 = #{remark1}</if>
<if test="remark2 != null and remark2 != ''"> and remark2 = #{remark2}</if>
<if test="remark3 != null and remark3 != ''"> and remark3 = #{remark3}</if>
</where>
</select>
<select id="selectSchoolLabCompetitionById" parameterType="Long" resultMap="SchoolLabCompetitionResult">
<include refid="selectSchoolLabCompetitionVo"/>
where id = #{id}
</select>
<insert id="insertSchoolLabCompetition" parameterType="SchoolLabCompetition" useGeneratedKeys="true" keyProperty="id">
insert into school_lab_competition
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="schoolYear != null">school_year,</if>
<if test="teacherId != null">teacher_id,</if>
<if test="teacherName != null">teacher_name,</if>
<if test="entrySubject != null">entry_subject,</if>
<if test="competitionName != null">competition_name,</if>
<if test="competitionType != null">competition_type,</if>
<if test="competitionLevel != null">competition_level,</if>
<if test="remark1 != null">remark1,</if>
<if test="remark2 != null">remark2,</if>
<if test="remark3 != null">remark3,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="delFlag != null and delFlag != ''">del_flag,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="schoolYear != null">#{schoolYear},</if>
<if test="teacherId != null">#{teacherId},</if>
<if test="teacherName != null">#{teacherName},</if>
<if test="entrySubject != null">#{entrySubject},</if>
<if test="competitionName != null">#{competitionName},</if>
<if test="competitionType != null">#{competitionType},</if>
<if test="competitionLevel != null">#{competitionLevel},</if>
<if test="remark1 != null">#{remark1},</if>
<if test="remark2 != null">#{remark2},</if>
<if test="remark3 != null">#{remark3},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="delFlag != null and delFlag != ''">#{delFlag},</if>
</trim>
</insert>
<update id="updateSchoolLabCompetition" parameterType="SchoolLabCompetition">
update school_lab_competition
<trim prefix="SET" suffixOverrides=",">
<if test="schoolYear != null">school_year = #{schoolYear},</if>
<if test="teacherId != null">teacher_id = #{teacherId},</if>
<if test="teacherName != null">teacher_name = #{teacherName},</if>
<if test="entrySubject != null">entry_subject = #{entrySubject},</if>
<if test="competitionName != null">competition_name = #{competitionName},</if>
<if test="competitionType != null">competition_type = #{competitionType},</if>
<if test="competitionLevel != null">competition_level = #{competitionLevel},</if>
<if test="remark1 != null">remark1 = #{remark1},</if>
<if test="remark2 != null">remark2 = #{remark2},</if>
<if test="remark3 != null">remark3 = #{remark3},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
</trim>
where id = #{id}
</update>
<update id="deleteSchoolLabCompetitionById" parameterType="Long">
update school_lab_competition set del_flag = '1' where id = #{id}
</update>
<update id="deleteSchoolLabCompetitionByIds" parameterType="String">
update school_lab_competition set del_flag = '1' where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</update>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="yangtz.cs.liu.campus.mapper.schoolLab.SchoolLabMapper">
<resultMap type="SchoolLab" id="SchoolLabResult">
<result property="id" column="id" />
<result property="labName" column="lab_name" />
<result property="labSub" column="lab_sub" />
<result property="inChargeId" column="in_charge_id" />
<result property="inChargeName" column="in_charge_name" />
<result property="labState" column="lab_state" />
<result property="labUseGoods" column="lab_use_goods" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
</resultMap>
<sql id="selectSchoolLabVo">
select id, lab_name, lab_sub, in_charge_id, in_charge_name, lab_state, lab_use_goods, create_by, create_time, update_by, update_time, del_flag from school_lab
</sql>
<select id="selectSchoolLabList" parameterType="SchoolLab" resultMap="SchoolLabResult">
<include refid="selectSchoolLabVo"/>
<where>
del_flag = '0'
<if test="labName != null and labName != ''"> and lab_name like concat('%', #{labName}, '%')</if>
<if test="labSub != null and labSub != ''"> and lab_sub = #{labSub}</if>
<if test="inChargeId != null "> and in_charge_id = #{inChargeId}</if>
<if test="inChargeName != null and inChargeName != ''"> and in_charge_name like concat('%', #{inChargeName}, '%')</if>
<if test="labState != null and labState != ''"> and lab_state = #{labState}</if>
<if test="labUseGoods != null and labUseGoods != ''"> and lab_use_goods = #{labUseGoods}</if>
</where>
</select>
<select id="selectSchoolLabById" parameterType="Long" resultMap="SchoolLabResult">
<include refid="selectSchoolLabVo"/>
where id = #{id}
</select>
<insert id="insertSchoolLab" parameterType="SchoolLab" useGeneratedKeys="true" keyProperty="id">
insert into school_lab
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="labName != null">lab_name,</if>
<if test="labSub != null">lab_sub,</if>
<if test="inChargeId != null">in_charge_id,</if>
<if test="inChargeName != null">in_charge_name,</if>
<if test="labState != null">lab_state,</if>
<if test="labUseGoods != null">lab_use_goods,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="delFlag != null and delFlag != ''">del_flag,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="labName != null">#{labName},</if>
<if test="labSub != null">#{labSub},</if>
<if test="inChargeId != null">#{inChargeId},</if>
<if test="inChargeName != null">#{inChargeName},</if>
<if test="labState != null">#{labState},</if>
<if test="labUseGoods != null">#{labUseGoods},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="delFlag != null and delFlag != ''">#{delFlag},</if>
</trim>
</insert>
<update id="updateSchoolLab" parameterType="SchoolLab">
update school_lab
<trim prefix="SET" suffixOverrides=",">
<if test="labName != null">lab_name = #{labName},</if>
<if test="labSub != null">lab_sub = #{labSub},</if>
<if test="inChargeId != null">in_charge_id = #{inChargeId},</if>
<if test="inChargeName != null">in_charge_name = #{inChargeName},</if>
<if test="labState != null">lab_state = #{labState},</if>
<if test="labUseGoods != null">lab_use_goods = #{labUseGoods},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
</trim>
where id = #{id}
</update>
<update id="deleteSchoolLabById" parameterType="Long">
update school_lab set del_flag = '1' where id = #{id}
</update>
<update id="deleteSchoolLabByIds" parameterType="String">
update school_lab set del_flag = '1' where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<select id="getLabAdminAll" resultType="Map">
select
u.user_id as userId,
u.user_name as userName
from
sys_user u
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on ur.role_id = r.role_id
where
r.role_key = "phy_lab_admin"
or r.role_key = "che_lab_admin"
or r.role_key = "bio_lab_admin"
</select>
<select id="getLabAdmin" parameterType="String" resultType="Map">
select
u.user_id as userId,
u.user_name as userName
from
sys_user u
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on ur.role_id = r.role_id
where
r.role_key = #{roleKey}
</select>
<select id="getSubAll" resultType="Map">
select
dict_label as dictLabel,
dict_value as dictValue
from
sys_dict_data
where
dict_type = "lab_sub"
</select>
<select id="getSub" parameterType="String" resultType="Map">
select
dict_label as dictLabel,
dict_value as dictValue
from
sys_dict_data
where
dict_type = "lab_sub"
and dict_value = #{dictValue}
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="yangtz.cs.liu.campus.mapper.schoolLab.SchoolTeacherExperimentApplyMapper">
<resultMap type="SchoolTeacherExperimentApply" id="SchoolTeacherExperimentApplyResult">
<result property="id" column="id" />
<result property="sub" column="sub" />
<result property="gradeId" column="grade_id" />
<result property="grade" column="grade" />
<result property="schoolYear" column="school_year" />
<result property="semester" column="semester" />
<result property="plannedTime" column="planned_time" />
<result property="experimentName" column="experiment_name" />
<result property="experimentClassify" column="experiment_classify" />
<result property="experimentUseGoods" column="experiment_use_goods" />
<result property="labId" column="lab_id" />
<result property="labName" column="lab_name" />
<result property="declareState" column="declare_state" />
<result property="applyId" column="apply_id" />
<result property="applyName" column="apply_name" />
<result property="applyTime" column="apply_time" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
</resultMap>
<sql id="selectSchoolTeacherExperimentApplyVo">
select id, sub, grade_id, grade, school_year, semester, planned_time, experiment_name, experiment_classify, experiment_use_goods, lab_id, lab_name, declare_state, apply_id, apply_name, apply_time, create_by, create_time, update_by, update_time, del_flag from school_teacher_experiment_apply
</sql>
<select id="selectSchoolTeacherExperimentApplyList" parameterType="SchoolTeacherExperimentApply" resultMap="SchoolTeacherExperimentApplyResult">
<include refid="selectSchoolTeacherExperimentApplyVo"/>
<where>
del_flag = '0'
<if test="sub != null and sub != ''"> and sub = #{sub}</if>
<if test="gradeId != null "> and grade_id = #{gradeId}</if>
<if test="grade != null and grade != ''"> and grade = #{grade}</if>
<if test="schoolYear != null and schoolYear != ''"> and school_year = #{schoolYear}</if>
<if test="semester != null and semester != ''"> and semester = #{semester}</if>
<if test="plannedTime != null and plannedTime != ''"> and planned_time = #{plannedTime}</if>
<if test="experimentName != null and experimentName != ''"> and experiment_name like concat('%', #{experimentName}, '%')</if>
<if test="experimentClassify != null and experimentClassify != ''"> and experiment_classify = #{experimentClassify}</if>
<if test="experimentUseGoods != null and experimentUseGoods != ''"> and experiment_use_goods = #{experimentUseGoods}</if>
<if test="labId != null and labId != ''"> and lab_id = #{labId}</if>
<if test="labName != null and labName != ''"> and lab_name like concat('%', #{labName}, '%')</if>
<if test="declareState != null and declareState != ''"> and declare_state = #{declareState}</if>
<if test="applyId != null "> and apply_id = #{applyId}</if>
<if test="applyName != null and applyName != ''"> and apply_name like concat('%', #{applyName}, '%')</if>
<if test="applyTime != null "> and apply_time = #{applyTime}</if>
</where>
</select>
<select id="selectSchoolTeacherExperimentApplyById" parameterType="Long" resultMap="SchoolTeacherExperimentApplyResult">
<include refid="selectSchoolTeacherExperimentApplyVo"/>
where id = #{id}
</select>
<insert id="insertSchoolTeacherExperimentApply" parameterType="SchoolTeacherExperimentApply" useGeneratedKeys="true" keyProperty="id">
insert into school_teacher_experiment_apply
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="sub != null">sub,</if>
<if test="gradeId != null">grade_id,</if>
<if test="grade != null">grade,</if>
<if test="schoolYear != null">school_year,</if>
<if test="semester != null">semester,</if>
<if test="plannedTime != null">planned_time,</if>
<if test="experimentName != null">experiment_name,</if>
<if test="experimentClassify != null">experiment_classify,</if>
<if test="experimentUseGoods != null">experiment_use_goods,</if>
<if test="labId != null">lab_id,</if>
<if test="labName != null">lab_name,</if>
<if test="declareState != null">declare_state,</if>
<if test="applyId != null">apply_id,</if>
<if test="applyName != null">apply_name,</if>
<if test="applyTime != null">apply_time,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="delFlag != null and delFlag != ''">del_flag,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="sub != null">#{sub},</if>
<if test="gradeId != null">#{gradeId},</if>
<if test="grade != null">#{grade},</if>
<if test="schoolYear != null">#{schoolYear},</if>
<if test="semester != null">#{semester},</if>
<if test="plannedTime != null">#{plannedTime},</if>
<if test="experimentName != null">#{experimentName},</if>
<if test="experimentClassify != null">#{experimentClassify},</if>
<if test="experimentUseGoods != null">#{experimentUseGoods},</if>
<if test="labId != null">#{labId},</if>
<if test="labName != null">#{labName},</if>
<if test="declareState != null">#{declareState},</if>
<if test="applyId != null">#{applyId},</if>
<if test="applyName != null">#{applyName},</if>
<if test="applyTime != null">#{applyTime},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="delFlag != null and delFlag != ''">#{delFlag},</if>
</trim>
</insert>
<update id="updateSchoolTeacherExperimentApply" parameterType="SchoolTeacherExperimentApply">
update school_teacher_experiment_apply
<trim prefix="SET" suffixOverrides=",">
<if test="sub != null">sub = #{sub},</if>
<if test="gradeId != null">grade_id = #{gradeId},</if>
<if test="grade != null">grade = #{grade},</if>
<if test="schoolYear != null">school_year = #{schoolYear},</if>
<if test="semester != null">semester = #{semester},</if>
<if test="plannedTime != null">planned_time = #{plannedTime},</if>
<if test="experimentName != null">experiment_name = #{experimentName},</if>
<if test="experimentClassify != null">experiment_classify = #{experimentClassify},</if>
<if test="experimentUseGoods != null">experiment_use_goods = #{experimentUseGoods},</if>
<if test="labId != null">lab_id = #{labId},</if>
<if test="labName != null">lab_name = #{labName},</if>
<if test="declareState != null">declare_state = #{declareState},</if>
<if test="applyId != null">apply_id = #{applyId},</if>
<if test="applyName != null">apply_name = #{applyName},</if>
<if test="applyTime != null">apply_time = #{applyTime},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
</trim>
where id = #{id}
</update>
<update id="deleteSchoolTeacherExperimentApplyById" parameterType="Long">
update school_teacher_experiment_apply set del_flag = '1' where id = #{id}
</update>
<update id="deleteSchoolTeacherExperimentApplyByIds" parameterType="String">
update school_teacher_experiment_apply set del_flag = '1' where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</update>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="yangtz.cs.liu.campus.mapper.schoolLab.SchoolTeacherLabApplyMapper">
<resultMap type="SchoolTeacherLabApply" id="SchoolTeacherLabApplyResult">
<result property="id" column="id" />
<result property="labClassYearId" column="lab_class_year_id" />
<result property="experimentClassify" column="experiment_classify" />
<result property="sub" column="sub" />
<result property="grade" column="grade" />
<result property="schoolYear" column="school_year" />
<result property="semester" column="semester" />
<result property="classId" column="class_id" />
<result property="className" column="class_name" />
<result property="chapterContent" column="chapter_content" />
<result property="experimentTime" column="experiment_time" />
<result property="section" column="section" />
<result property="labId" column="lab_id" />
<result property="labName" column="lab_name" />
<result property="applyState" column="apply_state" />
<result property="applyId" column="apply_id" />
<result property="applyName" column="apply_name" />
<result property="applyTime" column="apply_time" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
</resultMap>
<sql id="selectSchoolTeacherLabApplyVo">
select id, lab_class_year_id, experiment_classify, sub, grade, school_year, semester, class_id, class_name, chapter_content, experiment_time, section, lab_id, lab_name, apply_state, apply_id, apply_name, apply_time, remark, create_by, create_time, update_by, update_time, del_flag from school_teacher_lab_apply
</sql>
<select id="selectSchoolTeacherLabApplyList" parameterType="SchoolTeacherLabApply" resultMap="SchoolTeacherLabApplyResult">
<include refid="selectSchoolTeacherLabApplyVo"/>
<where>
del_flag = '0'
<if test="labClassYearId != null and labClassYearId != ''"> and lab_class_year_id = #{labClassYearId}</if>
<if test="experimentClassify != null and experimentClassify != ''"> and experiment_classify = #{experimentClassify}</if>
<if test="sub != null and sub != ''"> and sub = #{sub}</if>
<if test="grade != null and grade != ''"> and grade = #{grade}</if>
<if test="schoolYear != null and schoolYear != ''"> and school_year = #{schoolYear}</if>
<if test="semester != null and semester != ''"> and semester = #{semester}</if>
<if test="classId != null and classId != ''"> and class_id = #{classId}</if>
<if test="className != null and className != ''"> and class_name like concat('%', #{className}, '%')</if>
<if test="chapterContent != null and chapterContent != ''"> and chapter_content = #{chapterContent}</if>
<if test="experimentTime != null "> and experiment_time = #{experimentTime}</if>
<if test="section != null and section != ''"> and section = #{section}</if>
<if test="labId != null "> and lab_id = #{labId}</if>
<if test="labName != null and labName != ''"> and lab_name like concat('%', #{labName}, '%')</if>
<if test="applyState != null and applyState != ''"> and apply_state = #{applyState}</if>
<if test="applyId != null "> and apply_id = #{applyId}</if>
<if test="applyName != null and applyName != ''"> and apply_name like concat('%', #{applyName}, '%')</if>
<if test="applyTime != null "> and apply_time = #{applyTime}</if>
</where>
</select>
<select id="selectSchoolTeacherLabApplyById" parameterType="Long" resultMap="SchoolTeacherLabApplyResult">
<include refid="selectSchoolTeacherLabApplyVo"/>
where id = #{id}
</select>
<insert id="insertSchoolTeacherLabApply" parameterType="SchoolTeacherLabApply" useGeneratedKeys="true" keyProperty="id">
insert into school_teacher_lab_apply
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="labClassYearId != null">lab_class_year_id,</if>
<if test="experimentClassify != null">experiment_classify,</if>
<if test="sub != null">sub,</if>
<if test="grade != null">grade,</if>
<if test="schoolYear != null">school_year,</if>
<if test="semester != null">semester,</if>
<if test="classId != null">class_id,</if>
<if test="className != null">class_name,</if>
<if test="chapterContent != null">chapter_content,</if>
<if test="experimentTime != null">experiment_time,</if>
<if test="section != null">section,</if>
<if test="labId != null">lab_id,</if>
<if test="labName != null">lab_name,</if>
<if test="applyState != null">apply_state,</if>
<if test="applyId != null">apply_id,</if>
<if test="applyName != null">apply_name,</if>
<if test="applyTime != null">apply_time,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="delFlag != null and delFlag != ''">del_flag,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="labClassYearId != null">#{labClassYearId},</if>
<if test="experimentClassify != null">#{experimentClassify},</if>
<if test="sub != null">#{sub},</if>
<if test="grade != null">#{grade},</if>
<if test="schoolYear != null">#{schoolYear},</if>
<if test="semester != null">#{semester},</if>
<if test="classId != null">#{classId},</if>
<if test="className != null">#{className},</if>
<if test="chapterContent != null">#{chapterContent},</if>
<if test="experimentTime != null">#{experimentTime},</if>
<if test="section != null">#{section},</if>
<if test="labId != null">#{labId},</if>
<if test="labName != null">#{labName},</if>
<if test="applyState != null">#{applyState},</if>
<if test="applyId != null">#{applyId},</if>
<if test="applyName != null">#{applyName},</if>
<if test="applyTime != null">#{applyTime},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="delFlag != null and delFlag != ''">#{delFlag},</if>
</trim>
</insert>
<update id="updateSchoolTeacherLabApply" parameterType="SchoolTeacherLabApply">
update school_teacher_lab_apply
<trim prefix="SET" suffixOverrides=",">
<if test="labClassYearId != null">lab_class_year_id = #{labClassYearId},</if>
<if test="experimentClassify != null">experiment_classify = #{experimentClassify},</if>
<if test="sub != null">sub = #{sub},</if>
<if test="grade != null">grade = #{grade},</if>
<if test="schoolYear != null">school_year = #{schoolYear},</if>
<if test="semester != null">semester = #{semester},</if>
<if test="classId != null">class_id = #{classId},</if>
<if test="className != null">class_name = #{className},</if>
<if test="chapterContent != null">chapter_content = #{chapterContent},</if>
<if test="experimentTime != null">experiment_time = #{experimentTime},</if>
<if test="section != null">section = #{section},</if>
<if test="labId != null">lab_id = #{labId},</if>
<if test="labName != null">lab_name = #{labName},</if>
<if test="applyState != null">apply_state = #{applyState},</if>
<if test="applyId != null">apply_id = #{applyId},</if>
<if test="applyName != null">apply_name = #{applyName},</if>
<if test="applyTime != null">apply_time = #{applyTime},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
</trim>
where id = #{id}
</update>
<update id="deleteSchoolTeacherLabApplyById" parameterType="Long">
update school_teacher_lab_apply set del_flag = '1' where id = #{id}
</update>
<update id="deleteSchoolTeacherLabApplyByIds" parameterType="String">
update school_teacher_lab_apply set del_flag = '1' where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</update>
</mapper>
\ No newline at end of file
...@@ -12,8 +12,9 @@ ...@@ -12,8 +12,9 @@
select distinct sg.id from school_grade sg select distinct sg.id from school_grade sg
left join school_class sc on sc.grade_id = sg.id left join school_class sc on sc.grade_id = sg.id
left join school_class_mentor scm on scm.class_id = sc.id left join school_class_mentor scm on scm.class_id = sc.id
left join school_class_headmaster sch on sch.class_id = sc.id
where sg.del_flag = '0' and sc.del_flag = '0' and scm.del_flag = '0' where sg.del_flag = '0' and sc.del_flag = '0' and scm.del_flag = '0'
and scm.teacher_id = #{userId} and sg.school_year = #{schoolYear} and scm.teacher_id = #{userId} or sch.teacher_id = #{userId} and sg.school_year = #{schoolYear}
order by sg.id order by sg.id
</select> </select>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment