From 25d326e4a73b9ccb51ba77b3765061a795cabdce Mon Sep 17 00:00:00 2001 From: Jimgo Date: Fri, 29 Nov 2024 16:04:56 +0800 Subject: [PATCH] =?UTF-8?q?:ok:=20=E6=B7=BB=E5=8A=A02025=E5=B9=B4=E8=B0=83?= =?UTF-8?q?=E4=BC=91=E4=B8=8E=E8=8A=82=E5=81=87=E6=97=A5=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=20:ok:=20=E8=B0=83=E6=95=B4=E6=A0=B7=E5=BC=8F=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E6=89=8B=E6=9C=BA=E7=AB=AF=E8=AE=BF=E9=97=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pomelotea/hoperun/sign/DakaApplication.kt | 19 +++--- .../pomelotea/hoperun/sign/common/Common.kt | 2 +- .../hoperun/sign/config/WebConfig.kt | 22 +++++++ src/main/resources/static/error.html | 56 ++++++++++++++++++ src/main/resources/static/favicon.ico | Bin 0 -> 16136 bytes src/main/resources/static/img/ico_checkon.svg | 2 +- src/main/resources/static/index.html | 2 +- src/main/resources/static/style.css | 42 ++++++++++--- src/test/kotlin/Test.kt | 38 ++++++++++++ 9 files changed, 163 insertions(+), 20 deletions(-) create mode 100644 src/main/kotlin/com/pomelotea/hoperun/sign/config/WebConfig.kt create mode 100644 src/main/resources/static/error.html create mode 100644 src/main/resources/static/favicon.ico create mode 100644 src/test/kotlin/Test.kt diff --git a/src/main/kotlin/com/pomelotea/hoperun/sign/DakaApplication.kt b/src/main/kotlin/com/pomelotea/hoperun/sign/DakaApplication.kt index e87527d..c5e5b87 100644 --- a/src/main/kotlin/com/pomelotea/hoperun/sign/DakaApplication.kt +++ b/src/main/kotlin/com/pomelotea/hoperun/sign/DakaApplication.kt @@ -15,29 +15,28 @@ import java.util.* * 启动入口 **/ @SpringBootApplication -open class DakaApplication { -} +open class DakaApplication val T.logger: Logger get() = LoggerFactory.getLogger(this::class.java) val holidays: List = listOf( // 元旦 - "2024-01-01", + "2025-01-01", // 春节 - "2024-02-10", "2024-02-11", "2024-02-12", "2024-02-13", "2024-02-14", "2024-02-15", "2024-02-16", "2024-02-17", + "2025-01-28", "2025-01-29", "2025-01-30", "2025-01-31", "2025-02-01", "2025-02-02", "2025-02-03", "2025-02-04", // 清明 - "2024-04-04", "2024-04-05", "2024-04-06", + "2025-04-04", "2025-04-05", "2025-04-06", // 劳动节 - "2024-05-01", "2024-05-02", "2024-05-03", "2024-05-04", "2024-05-05", + "2025-05-01", "2025-05-02", "2025-05-05", "2025-05-04", "2025-05-05", // 端午节 - "2024-06-08", "2024-06-09", "2024-06-10", + "2025-05-31", "2025-06-01", "2025-06-02", // 中秋 - "2024-09-15", "2024-09-16", "2024-09-17", // 国庆 - "2024-10-01", "2024-10-02", "2024-10-03", "2024-10-04", "2024-10-05", "2024-10-06", "2024-10-07") + "2025-10-01", "2025-10-02", "2025-10-03", "2025-10-04", "2025-10-05", "2025-10-06", "2025-10-07", "2025-10-08") -val workdays: List = listOf("2024-04-07", "2024-04-28", "2024-05-11", "2024-09-14", "2024-09-29", "2024-10-12") +// 周末要上班的日期 +val workdays: List = listOf("2025-01-26", "2025-02-08", "2025-04-27", "2025-10-11", "2025-09-28", "2025-10-12") private val logger = LoggerFactory.getLogger("APPLICATION-STARTER") fun main(args: Array) { diff --git a/src/main/kotlin/com/pomelotea/hoperun/sign/common/Common.kt b/src/main/kotlin/com/pomelotea/hoperun/sign/common/Common.kt index e17d289..42296ed 100644 --- a/src/main/kotlin/com/pomelotea/hoperun/sign/common/Common.kt +++ b/src/main/kotlin/com/pomelotea/hoperun/sign/common/Common.kt @@ -32,7 +32,7 @@ import java.util.* const val DAKA_URL = "http://pom.hoperun.com:8187/attm/attence/recordAttendance" const val MONTH_ATT_URL = "http://pom.hoperun.com:8187/attm/calendar/monthAtt" -val DEFAULT_ZONE = ZoneOffset.of("+8") +val DEFAULT_ZONE: ZoneOffset = ZoneOffset.of("+8") val client = OkHttpClient() .newBuilder() diff --git a/src/main/kotlin/com/pomelotea/hoperun/sign/config/WebConfig.kt b/src/main/kotlin/com/pomelotea/hoperun/sign/config/WebConfig.kt new file mode 100644 index 0000000..397eeb2 --- /dev/null +++ b/src/main/kotlin/com/pomelotea/hoperun/sign/config/WebConfig.kt @@ -0,0 +1,22 @@ +package com.pomelotea.hoperun.sign.config + +import org.springframework.context.annotation.Configuration +import org.springframework.web.servlet.config.annotation.CorsRegistry +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer + +/** + * + * @author jimlee + * @create 2024/11/1 13:15 + */ +@Configuration +open class CorsConfig : WebMvcConfigurer { + override fun addCorsMappings(registry: CorsRegistry) { + registry.addMapping("/**") + .allowedMethods("*") + .allowedHeaders("*") + .allowedOriginPatterns("*") + .allowCredentials(true) + .maxAge(3600) + } +} \ No newline at end of file diff --git a/src/main/resources/static/error.html b/src/main/resources/static/error.html new file mode 100644 index 0000000..c146e2f --- /dev/null +++ b/src/main/resources/static/error.html @@ -0,0 +1,56 @@ + + + + 404 Not Found + + + + + + +
+
+
+

+ 非常抱歉,您访 +
+ 问的页面不存在 +

+ 返回首页 +
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/static/favicon.ico b/src/main/resources/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4f2b071951881749ff37666b9d8e27e0f36c2c54 GIT binary patch literal 16136 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/img/ico_checkon.svg b/src/main/resources/static/img/ico_checkon.svg index 7bcf6a7..7c1f7e0 100644 --- a/src/main/resources/static/img/ico_checkon.svg +++ b/src/main/resources/static/img/ico_checkon.svg @@ -1,4 +1,4 @@ -x + diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html index 0a4afd6..ccf1d63 100644 --- a/src/main/resources/static/index.html +++ b/src/main/resources/static/index.html @@ -1 +1 @@ -打卡
打卡记录
\ No newline at end of file +打卡
打卡记录
\ No newline at end of file diff --git a/src/main/resources/static/style.css b/src/main/resources/static/style.css index 16b7a54..18678a5 100644 --- a/src/main/resources/static/style.css +++ b/src/main/resources/static/style.css @@ -208,6 +208,7 @@ body { scroll-behavior: smooth; padding: 30px 40px; overflow: auto; + scrollbar-width: none; } .search-menu { @@ -368,11 +369,11 @@ body { opacity: 1; visibility: visible; z-index: 101; - left: 33%; + left: 50%; top: 40%; - margin-left: -100px; - margin-top: -100px; position: absolute; + margin: auto 0; + transform: translate(-50%, -50%); } .userinfo_dialog > div > .alert-inline { @@ -595,7 +596,7 @@ body > div > div.userinfo_dialog > div > div > div input { .job-cards { padding-top: 20px; - padding-right: 80px; + /*padding-right: 80px;*/ display: grid; grid-template-columns: repeat(3, 1fr); grid-column-gap: 25px; @@ -603,14 +604,36 @@ body > div > div.userinfo_dialog > div > div > div input { -webkit-animation: slideY .6s both; animation: slideY .6s both; } -@media screen and (max-width: 1212px) { + +@media screen and (max-width: 480px) { .job-cards { grid-template-columns: repeat(1, 1fr); } + + #autodaka { + display: none; + } + + #user-head { + display: none; + } + + .userinfo_dialog { + width: 88% !important; + } + + .wrapper { + padding: 0 20px; + } } -@media screen and (max-width: 930px) { + +@media screen and (max-width: 1080px) { .job-cards { - grid-template-columns: repeat(1, 1fr); + grid-template-columns: repeat(2, 1fr); + } + + .userinfo_dialog { + width: 60%; } } @@ -703,6 +726,7 @@ body > div > div.userinfo_dialog > div > div > div input { justify-content: space-between; width: 100%; margin-top: 4px; + flex-flow: column; } #logout-div .random-buttons { border-radius: 8px; @@ -1286,4 +1310,8 @@ h1 + .headingOuter { } .toggle--switch .toggle--checkbox:checked + .toggle--btn .toggle--feature:after { right: -60%; +} + +.coco-msg-stage { + top: 80px !important; } \ No newline at end of file diff --git a/src/test/kotlin/Test.kt b/src/test/kotlin/Test.kt new file mode 100644 index 0000000..26d0f32 --- /dev/null +++ b/src/test/kotlin/Test.kt @@ -0,0 +1,38 @@ +import java.util.* + + +fun main() { + + var ti = TreeNode(2) + var v = ti.`val` + + ti.right = TreeNode(4) + ti.left = TreeNode(3) + + ti.left!!.left = TreeNode(1) + + println(inorderTraversal(ti)) +} + +fun inorderTraversal(root: TreeNode?): List { + var copyroot = root + val list: MutableList = ArrayList() + val stack = Stack() + while (copyroot != null || !stack.isEmpty()) { + while (copyroot != null) { + stack.push(copyroot) + copyroot = copyroot.left + } + copyroot = stack.pop() + list.add(copyroot.`val`) + copyroot = copyroot.right + } + return list +} + + + +class TreeNode(var `val`: Int) { + var left: TreeNode? = null + var right: TreeNode? = null +} \ No newline at end of file