Browse Source

日历

master
no99 1 week ago
parent
commit
c8c868f370
  1. 1
      README.md
  2. 468
      package-lock.json
  3. 2
      package.json
  4. BIN
      src/assets/fonts/方正新综艺简体.ttf
  5. BIN
      src/assets/img/标题.png
  6. BIN
      src/assets/img/角标.png
  7. BIN
      src/assets/img/锁定.png
  8. 5
      src/router/index.js
  9. 331
      src/views/calendar/calendar.vue
  10. 1
      src/views/homepage.vue
  11. 85
      src/views/homework/homework.vue

1
README.md

@ -7,3 +7,4 @@ npm install vue-router 下载路由
npm install @lucky-canvas/vue@latest 下载转盘插件
npm install element-plus --save 下载element-plus
npm install @element-plus/icons-vue 下载element-plus图标
npm install moment 安装 moment 组件,解决时间处理问题

468
package-lock.json

@ -10,8 +10,10 @@
"dependencies": {
"@element-plus/icons-vue": "^2.3.1",
"@lucky-canvas/vue": "^0.1.11",
"axios": "^1.10.0",
"element-plus": "^2.9.8",
"lucky-canvas": "^1.7.27",
"moment": "^2.30.1",
"vue": "^3.5.13",
"vue-router": "^4.5.0"
},
@ -1124,6 +1126,48 @@
"integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==",
"license": "MIT"
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
"license": "MIT"
},
"node_modules/axios": {
"version": "1.10.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/axios/-/axios-1.10.0.tgz",
"integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"node_modules/call-bind-apply-helpers": {
"version": "1.0.2",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/csstype/-/csstype-3.1.3.tgz",
@ -1136,6 +1180,29 @@
"integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
"license": "MIT"
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
"es-errors": "^1.3.0",
"gopd": "^1.2.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/element-plus": {
"version": "2.9.8",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/element-plus/-/element-plus-2.9.8.tgz",
@ -1174,6 +1241,51 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/es-define-property": {
"version": "1.0.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-errors": {
"version": "1.3.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-object-atoms": {
"version": "1.1.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-set-tostringtag": {
"version": "2.1.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.6",
"has-tostringtag": "^1.0.2",
"hasown": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/esbuild": {
"version": "0.25.2",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/esbuild/-/esbuild-0.25.2.tgz",
@ -1227,6 +1339,42 @@
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"license": "MIT"
},
"node_modules/follow-redirects": {
"version": "1.15.9",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/follow-redirects/-/follow-redirects-1.15.9.tgz",
"integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
"license": "MIT",
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
},
"node_modules/form-data": {
"version": "4.0.3",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/form-data/-/form-data-4.0.3.tgz",
"integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==",
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"es-set-tostringtag": "^2.1.0",
"hasown": "^2.0.2",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/fsevents/-/fsevents-2.3.3.tgz",
@ -1242,6 +1390,103 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-intrinsic": {
"version": "1.3.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
"get-proto": "^1.0.1",
"gopd": "^1.2.0",
"has-symbols": "^1.1.0",
"hasown": "^2.0.2",
"math-intrinsics": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-proto": {
"version": "1.0.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
"license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.1",
"es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/gopd": {
"version": "1.2.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-symbols": {
"version": "1.1.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-tostringtag": {
"version": "1.0.2",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/hasown": {
"version": "2.0.2",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/lodash/-/lodash-4.17.21.tgz",
@ -1280,12 +1525,51 @@
"@jridgewell/sourcemap-codec": "^1.5.0"
}
},
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/memoize-one": {
"version": "6.0.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/memoize-one/-/memoize-one-6.0.0.tgz",
"integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==",
"license": "MIT"
},
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/moment": {
"version": "2.30.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/moment/-/moment-2.30.1.tgz",
"integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
"license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/nanoid": {
"version": "3.3.11",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/nanoid/-/nanoid-3.3.11.tgz",
@ -1344,6 +1628,12 @@
"node": "^10 || ^12 || >=14"
}
},
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"license": "MIT"
},
"node_modules/rollup": {
"version": "4.40.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/rollup/-/rollup-4.40.0.tgz",
@ -2080,6 +2370,38 @@
"resolved": "https://mirrors.huaweicloud.com/repository/npm/async-validator/-/async-validator-4.2.5.tgz",
"integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"axios": {
"version": "1.10.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/axios/-/axios-1.10.0.tgz",
"integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==",
"requires": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"call-bind-apply-helpers": {
"version": "1.0.2",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"requires": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2"
}
},
"combined-stream": {
"version": "1.0.8",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"requires": {
"delayed-stream": "~1.0.0"
}
},
"csstype": {
"version": "3.1.3",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/csstype/-/csstype-3.1.3.tgz",
@ -2090,6 +2412,21 @@
"resolved": "https://mirrors.huaweicloud.com/repository/npm/dayjs/-/dayjs-1.11.13.tgz",
"integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
},
"dunder-proto": {
"version": "1.0.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"requires": {
"call-bind-apply-helpers": "^1.0.1",
"es-errors": "^1.3.0",
"gopd": "^1.2.0"
}
},
"element-plus": {
"version": "2.9.8",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/element-plus/-/element-plus-2.9.8.tgz",
@ -2117,6 +2454,35 @@
"resolved": "https://mirrors.huaweicloud.com/repository/npm/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
},
"es-define-property": {
"version": "1.0.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="
},
"es-errors": {
"version": "1.3.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="
},
"es-object-atoms": {
"version": "1.1.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
"requires": {
"es-errors": "^1.3.0"
}
},
"es-set-tostringtag": {
"version": "2.1.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
"requires": {
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.6",
"has-tostringtag": "^1.0.2",
"hasown": "^2.0.2"
}
},
"esbuild": {
"version": "0.25.2",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/esbuild/-/esbuild-0.25.2.tgz",
@ -2160,6 +2526,23 @@
"resolved": "https://mirrors.huaweicloud.com/repository/npm/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
"follow-redirects": {
"version": "1.15.9",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/follow-redirects/-/follow-redirects-1.15.9.tgz",
"integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ=="
},
"form-data": {
"version": "4.0.3",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/form-data/-/form-data-4.0.3.tgz",
"integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==",
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"es-set-tostringtag": "^2.1.0",
"hasown": "^2.0.2",
"mime-types": "^2.1.12"
}
},
"fsevents": {
"version": "2.3.3",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/fsevents/-/fsevents-2.3.3.tgz",
@ -2167,6 +2550,63 @@
"dev": true,
"optional": true
},
"function-bind": {
"version": "1.1.2",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
},
"get-intrinsic": {
"version": "1.3.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"requires": {
"call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
"get-proto": "^1.0.1",
"gopd": "^1.2.0",
"has-symbols": "^1.1.0",
"hasown": "^2.0.2",
"math-intrinsics": "^1.1.0"
}
},
"get-proto": {
"version": "1.0.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
"requires": {
"dunder-proto": "^1.0.1",
"es-object-atoms": "^1.0.0"
}
},
"gopd": {
"version": "1.2.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="
},
"has-symbols": {
"version": "1.1.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="
},
"has-tostringtag": {
"version": "1.0.2",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"requires": {
"has-symbols": "^1.0.3"
}
},
"hasown": {
"version": "2.0.2",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"requires": {
"function-bind": "^1.1.2"
}
},
"lodash": {
"version": "4.17.21",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/lodash/-/lodash-4.17.21.tgz",
@ -2196,11 +2636,34 @@
"@jridgewell/sourcemap-codec": "^1.5.0"
}
},
"math-intrinsics": {
"version": "1.1.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="
},
"memoize-one": {
"version": "6.0.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/memoize-one/-/memoize-one-6.0.0.tgz",
"integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
},
"mime-db": {
"version": "1.52.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
},
"mime-types": {
"version": "2.1.35",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"requires": {
"mime-db": "1.52.0"
}
},
"moment": {
"version": "2.30.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/moment/-/moment-2.30.1.tgz",
"integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how=="
},
"nanoid": {
"version": "3.3.11",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/nanoid/-/nanoid-3.3.11.tgz",
@ -2226,6 +2689,11 @@
"source-map-js": "^1.2.1"
}
},
"proxy-from-env": {
"version": "1.1.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
"rollup": {
"version": "4.40.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/rollup/-/rollup-4.40.0.tgz",

2
package.json

@ -11,8 +11,10 @@
"dependencies": {
"@element-plus/icons-vue": "^2.3.1",
"@lucky-canvas/vue": "^0.1.11",
"axios": "^1.10.0",
"element-plus": "^2.9.8",
"lucky-canvas": "^1.7.27",
"moment": "^2.30.1",
"vue": "^3.5.13",
"vue-router": "^4.5.0"
},

BIN
src/assets/fonts/方正新综艺简体.ttf

BIN
src/assets/img/标题.png

After

Width: 330  |  Height: 39  |  Size: 7.4 KiB

BIN
src/assets/img/角标.png

After

Width: 109  |  Height: 91  |  Size: 7.6 KiB

BIN
src/assets/img/锁定.png

After

Width: 33  |  Height: 32  |  Size: 644 B

5
src/router/index.js

@ -23,6 +23,11 @@ const routes = [
path: '/homework',
name: 'homework',
component: () => import('../views/homework/homework.vue')
},
{
path: '/calendar',
name: 'calendar',
component: () => import('../views/calendar/calendar.vue')
}
]
// 创建路由实例

331
src/views/calendar/calendar.vue

@ -0,0 +1,331 @@
<template>
<div class="bk">
<div class="bk1">
<div class="border1">
<div class="title">
<img :src="biaoti" alt="标题" class="titleImg" />
<div class="titleContent">
{{ calendarDate }}
</div>
</div>
<div class="secondTitle">
<div v-for="item in week" :key="item" class="secondTitleItems">
<div class="secondTitleItem">{{ item }}</div>
</div>
</div>
<div class="calendar">
<div v-for="row in 5" :key="row" class="calendarCol">
<div
v-for="item in currentData.slice((row - 1) * 7, row * 7)"
:key="item"
class="calendarRow"
>
<div
class="calendarItem"
:style="{ backgroundColor: item.color }"
>
<div v-if="item.month" class="month">
<div class="monthContent">
{{ months[item.month - 1] }}
</div>
</div>
<div class="calendarItemTitle">{{ item.day }}</div>
<div
class="calendarItemContent"
v-if="item.stock_temperature == ''"
>
<img :src="suoding" alt="锁定" class="ciImg" />
</div>
<div
class="calendarItemContent"
v-else-if="item.stock_temperature == '休市'"
>
休市
</div>
<div class="calendarItemContent" v-else>
{{ item.market_temperature }} | {{ item.stock_temperature }}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { onMounted, ref } from "vue";
import axios from "axios";
import biaoti from "../../assets/img/标题.png";
import jiaobiao from "../../assets/img/角标.png";
import suoding from "../../assets/img/锁定.png";
import moment from "moment";
const color = ref([
"#32A3FF",
"#2BD977",
"#A239FF",
"#FF7945",
"#FF5289",
"#5791CB",
]);
const months = ref([
"一月",
"二月",
"三月",
"四月",
"五月",
"六月",
"七月",
"八月",
"九月",
"十月",
"十一月",
"十二月",
]);
const calendarDate = ref(moment().format("YYYY年M月"));
const week = ref(["周一", "周二", "周三", "周四", "周五", "周六", "周日"]);
const currentData = ref([]);
const fetchData = async () => {
try {
const response = await axios.post(
// 'https://api.homilychart.com/link/api/aiEmotion/client/getAiEmotionData',
// `${apiUrl}/api/aiEmotion/client/getAiEmotionData`,
"http://39.101.133.168:8828/link/api/aiEmotion/client/getAiEmotionData",
{
token:
"pCtw6AYK0EHAaIexoFHsbZjtsfEAIhcmwkCFm6uKko8VPfMvyDiODL9v9c0veic9fIpQbvT8zN4sH/Si6Q",
market: "usa",
code: "AAPL",
language: "cn",
version: "1",
// token:
// 'oikn6FZW1BTIb4C3rRXnbZi0+fEeMx8pywnIlrmTwN4SbPUkxGnUWug7+5p9KiY7e9lWYvSoydZ+Ra/wuMA',
// code: '1295',
// market: 'my',
// language: 'cn',
// version: '2'
}
// {
// headers: { 'Content-Type': 'application/json' }
// }
);
console.log(response.data);
if (response.data.code === 200) {
const WDRL = response.data.data.WDRL ? response.data.data.WDRL : [];
currentData.value = JSON.parse(JSON.stringify(WDRL));
for (let i = 0; i < currentData.value.length; i++) {
const day = moment(currentData.value[i].date).date();
currentData.value[i].day = day;
if (i == 0 || day == 1) {
currentData.value[i].month =
moment(currentData.value[i].date).month() + 1;
}
const tp = currentData.value[i].stock_temperature;
if (tp == "" || tp == null || tp == "休市") {
currentData.value[i].color = color.value[5];
} else {
if (tp <= "20") {
currentData.value[i].color = color.value[0];
} else if (parseInt(tp) <= "50") {
currentData.value[i].color = color.value[1];
} else if (parseInt(tp) <= "70") {
currentData.value[i].color = color.value[2];
} else if (parseInt(tp) <= "90") {
currentData.value[i].color = color.value[3];
} else {
currentData.value[i].color = color.value[4];
}
}
}
console.log(currentData.value);
} else {
console.log("请求失败1");
}
} catch (error) {
console.log(error);
console.log("请求失败2");
}
};
onMounted(() => {
fetchData();
});
</script>
<style scoped>
@font-face {
font-family: "方正新综艺简体";
src: url("../../assets/fonts/方正新综艺简体.ttf") format("truetype");
font-weight: normal;
font-style: normal;
font-display: swap;
}
.title {
width: 100%;
}
.titleImg {
width: 100%;
margin-top: 10px;
position: relative;
}
.titleContent {
font-family: "方正新综艺简体";
font-size: 2vw;
color: #00ffff;
position: absolute;
top: 15px;
left: 30px;
}
.secondTitle {
width: 100%;
height: 35px;
display: flex;
justify-content: center;
}
.secondTitleItems {
/* width: 100%; */
height: 100%;
display: flex;
}
.secondTitleItem {
border: 1px solid #03a7ce;
background-color: #0b3c73;
width: 6vw;
color: #ffffff;
display: flex;
justify-content: center;
align-items: center;
}
.calendar {
margin-top: 30px;
width: 100%;
height: 70%;
display: flex;
justify-content: center;
flex-direction: column;
}
.calendarCol {
/* width: 100%; */
height: 100%;
display: flex;
justify-content: center;
}
.calendarRow {
/* width: 100%; */
height: 100%;
}
.calendarItem {
border: 1px solid #0060af;
width: 6vw;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
border-radius: 10px;
color: #ffffff;
position: relative;
}
.month {
position: absolute;
background-image: url("../../assets/img/角标.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 4.5vw;
height: 4vw;
display: flex;
justify-content: center;
/* align-items: center; */
top: -2vw;
right: -1vw;
}
.monthContent {
margin-top: 0.8vw;
}
.calendarItemTitle {
width: 100%;
text-align: center;
font-weight: bold;
}
.calendarItemContent {
width: 100%;
/* text-align: center; */
display: flex;
justify-content: center;
align-items: center;
font-weight: bold;
}
.ciImg {
width: 35%;
}
.bk {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
}
.bk1 {
background-color: #192ca0;
width: 50%;
height: 100%;
display: flex;
justify-content: center;
padding: 20px 0px;
}
.border1 {
border: 2px solid #14bddb;
background-color: #1f669e;
width: 45vw;
height: 44vw;
border-radius: 1%;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
/* margin: 0px; */
}
.border1::before {
content: "";
position: absolute;
top: -2.5px;
left: -2.5px;
width: 20px;
height: 20px;
border-top: 3px solid #00ffff; /* 左上角颜色 */
border-left: 3px solid #00ffff;
border-top-left-radius: 8px;
}
.border1::after {
content: "";
position: absolute;
bottom: -2px;
right: -2px;
width: 20px;
height: 20px;
border-bottom: 3px solid #00ffff; /* 右下角颜色 */
border-right: 3px solid #00ffff;
border-bottom-right-radius: 8px;
}
</style>

1
src/views/homepage.vue

@ -19,6 +19,7 @@ const buttons = [
{ type: 'primary', text: '转盘',path:'/hxl_dzp1' },
{ type: 'success', text: '动画',path:'/animation' },
{ type: 'success', text: '作业',path:'/homework' },
{ type: 'success', text: '日历',path:'/calendar' },
]

85
src/views/homework/homework.vue

@ -1,5 +1,6 @@
<template>
<div class="total">
<el-card class="card">
<div class="title">作业</div>
<div class="btnGroup">
<el-button type="primary" plain size="large" @click="danxun">单选题</el-button>
@ -9,43 +10,63 @@
<div class="qLists">
<div class="qList" v-for="(item, index) in qLists" :key="index">
<div v-if="item.type === '1'">
<div>{{ index + 1 }}.作业题目单选</div>
<div>{{ index + 1 }}.作业题目单选
<el-button type="danger" text @click="delQ(item,index)">删除</el-button>
</div>
<div>
<el-input v-model="item.qTitle" show-word-limit maxlength="200"></el-input>
</div>
<div>
设置选项<el-button type="primary" text @click="addOption(item)">添加</el-button>
</div>
<div class="options" v-for="(option,index) in item.options" :key="index" >
<div class="options" v-for="(option, index) in item.options" :key="index">
<el-input v-model="option.optionContent"></el-input>
<el-button type="danger" text @click="delOption(item,option)">删除</el-button>
<el-button type="danger" text @click="delOption(item, option)">删除</el-button>
</div>
</div>
<div v-else-if="item.type === '2'">
<div>{{ index + 1 }}.作业题目多选</div>
<div>
<el-input v-model="item.qTitle" show-word-limit maxlength="200"></el-input>
</div>
<div>
设置选项<el-button type="primary" text @click="addOption(item)">添加</el-button>
</div>
<div class="options" v-for="(option, index) in item.options" :key="index">
<el-input v-model="option.optionContent"></el-input>
<el-button type="danger" text @click="delOption(item, option)">删除</el-button>
</div>
</div>
<div v-else>
<div>{{ index + 1 }}.作业题目简答</div>
<el-input v-model="item.qTitle" show-word-limit maxlength="200"></el-input>
</div>
</div>
</div>
<div class="footer">
<el-button type="success" size="large" @click="submit">提交</el-button>
</div>
</el-card>
<el-card class="card">
<div class="title">展示</div>
</el-card>
</div>
</template>
<script setup>
import { ref } from 'vue'
const qLists = ref([]);
const qIndex = ref(0)
const danxun = () => {
const qTitle = '';
const type = '1';
const options = [];
const optionIndex = 0;
const question = {
qTitle,
type,
options
options,
optionIndex
}
qLists.value.push(question);
}
@ -54,10 +75,12 @@ const duoxuan = () => {
const qTitle = '';
const type = '2';
const options = [];
const optionIndex = 0;
const question = {
qTitle,
type,
options
options,
optionIndex
}
qLists.value.push(question);
}
@ -66,18 +89,26 @@ const jianda = () => {
const qTitle = '';
const type = '3';
const options = [];
const optionIndex = 0;
const question = {
qTitle,
type,
options
options,
optionIndex
}
qLists.value.push(question);
}
const delQ = (item, index) => {
// console.log(index);
qLists.value.splice(index, 1);
}
const addOption = (item) => {
console.log(item);
const optionContent = '';
const index=item.options.length;
item.optionIndex++;
const index = item.optionIndex;
const option = {
optionContent,
index
@ -86,13 +117,18 @@ const addOption = (item) => {
item.options.push(option);
}
const delOption = (item,option) => {
console.log(item,option);
item.options.forEach((item,index)=>{
if(item.index===option.index){
item.options.splice(index,1)
const delOption = (item, option) => {
console.log(item, option);
for (let i = 0; i < item.options.length; i++) {
if (item.options[i].index === option.index) {
item.options.splice(i, 1)
}
}
})
}
const submit = () => {
console.log(qLists.value);
}
@ -101,10 +137,19 @@ const delOption = (item,option) => {
<style scoped>
.total {
width: 100%;
height: auto;
height: 100%;
display: flex;
/* flex-direction: column; */
align-items: center;
}
.card {
width: 48%;
height: 90%;
display: flex;
flex-direction: column;
align-items: center;
margin: 10px;
}
.title {
@ -137,9 +182,17 @@ const delOption = (item,option) => {
margin: 10px;
}
.options{
.options {
display: flex;
margin: 10px;
}
.footer{
width: 100%;
display: flex;
align-items: center;
justify-content: center;
margin-top: 10px;
}
</style>
Loading…
Cancel
Save