WINDOWS-7IFQK7E\EDY 2 年之前
父節點
當前提交
36dcd5a453

+ 401 - 4
package-lock.json

@@ -7,6 +7,7 @@
       "hasInstallScript": true,
       "dependencies": {
         "@vueuse/core": "^9.13.0",
+        "element-plus": "^2.3.1",
         "vue": "^3.2.47",
         "vue-router": "^4.1.6"
       },
@@ -32,6 +33,7 @@
         "vite-plugin-pages": "^0.28.0",
         "vite-plugin-windicss": "^1.8.10",
         "vitest": "^0.29.2",
+        "volar-plugin-vue-router": "^0.1.0",
         "vue-tsc": "^1.2.0",
         "windicss": "^3.5.6"
       }
@@ -281,6 +283,22 @@
         "node": ">=6.9.0"
       }
     },
+    "node_modules/@ctrl/tinycolor": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz",
+      "integrity": "sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@element-plus/icons-vue": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz",
+      "integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==",
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
     "node_modules/@esbuild/android-arm": {
       "version": "0.17.14",
       "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.14.tgz",
@@ -689,6 +707,19 @@
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
       }
     },
+    "node_modules/@floating-ui/core": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.2.5.tgz",
+      "integrity": "sha512-qrcbyfnRVziRlB6IYwjCopYhO7Vud750JlJyuljruIXcPxr22y8zdckcJGsuOdnQ639uVD1tTXddrcH3t3QYIQ=="
+    },
+    "node_modules/@floating-ui/dom": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.2.5.tgz",
+      "integrity": "sha512-+sAUfpQ3Frz+VCbPCqj+cZzvEESy3fjSeT/pDWkYCWOBXYNNKZfuVsHuv8/JO2zze8+Eb/Q7a6hZVgzS81fLbQ==",
+      "dependencies": {
+        "@floating-ui/core": "^1.2.4"
+      }
+    },
     "node_modules/@gar/promisify": {
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
@@ -1047,6 +1078,16 @@
       "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
       "dev": true
     },
+    "node_modules/@popperjs/core": {
+      "name": "@sxzz/popperjs-es",
+      "version": "2.11.7",
+      "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+      "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/popperjs"
+      }
+    },
     "node_modules/@rollup/pluginutils": {
       "version": "5.0.2",
       "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
@@ -1120,6 +1161,19 @@
       "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
       "dev": true
     },
+    "node_modules/@types/lodash": {
+      "version": "4.14.192",
+      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.192.tgz",
+      "integrity": "sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A=="
+    },
+    "node_modules/@types/lodash-es": {
+      "version": "4.17.7",
+      "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.7.tgz",
+      "integrity": "sha512-z0ptr6UI10VlU6l5MYhGwS4mC8DZyYer2mCoyysZtSF7p26zOX8UpbrV0YpNYLGS8K4PUFIyEr62IMFFjveSiQ==",
+      "dependencies": {
+        "@types/lodash": "*"
+      }
+    },
     "node_modules/@types/mdast": {
       "version": "3.0.11",
       "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.11.tgz",
@@ -1571,6 +1625,12 @@
         "@volar/vue-language-core": "1.2.0"
       }
     },
+    "node_modules/@vscode/l10n": {
+      "version": "0.0.11",
+      "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.11.tgz",
+      "integrity": "sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==",
+      "dev": true
+    },
     "node_modules/@vue-macros/api": {
       "version": "0.5.0",
       "resolved": "https://registry.npmjs.org/@vue-macros/api/-/api-0.5.0.tgz",
@@ -2485,6 +2545,11 @@
         "node": ">=8"
       }
     },
+    "node_modules/async-validator": {
+      "version": "4.2.5",
+      "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
+      "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+    },
     "node_modules/asynckit": {
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@@ -3003,6 +3068,11 @@
         "node": ">=14"
       }
     },
+    "node_modules/dayjs": {
+      "version": "1.11.7",
+      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz",
+      "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
+    },
     "node_modules/de-indent": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
@@ -3263,6 +3333,31 @@
         "semver": "bin/semver"
       }
     },
+    "node_modules/element-plus": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.3.1.tgz",
+      "integrity": "sha512-IBS7ic1mRyDXpOreRkredV4ByZSuax5HPb0zNOHm4qwKC4wm927yQv+Is0JbzxPzCW5zWaV4PLy9/Gl3E3v59w==",
+      "dependencies": {
+        "@ctrl/tinycolor": "^3.4.1",
+        "@element-plus/icons-vue": "^2.0.6",
+        "@floating-ui/dom": "^1.0.1",
+        "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
+        "@types/lodash": "^4.14.182",
+        "@types/lodash-es": "^4.17.6",
+        "@vueuse/core": "^9.1.0",
+        "async-validator": "^4.2.5",
+        "dayjs": "^1.11.3",
+        "escape-html": "^1.0.3",
+        "lodash": "^4.17.21",
+        "lodash-es": "^4.17.21",
+        "lodash-unified": "^1.0.2",
+        "memoize-one": "^6.0.0",
+        "normalize-wheel-es": "^1.2.0"
+      },
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
     "node_modules/emoji-regex": {
       "version": "9.2.2",
       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
@@ -3469,6 +3564,11 @@
         "node": ">=6"
       }
     },
+    "node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+    },
     "node_modules/escape-string-regexp": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -5801,8 +5901,22 @@
     "node_modules/lodash": {
       "version": "4.17.21",
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "dev": true
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+    },
+    "node_modules/lodash-es": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+    },
+    "node_modules/lodash-unified": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz",
+      "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
+      "peerDependencies": {
+        "@types/lodash-es": "*",
+        "lodash": "*",
+        "lodash-es": "*"
+      }
     },
     "node_modules/lodash.merge": {
       "version": "4.6.2",
@@ -5994,6 +6108,11 @@
         "url": "https://opencollective.com/unified"
       }
     },
+    "node_modules/memoize-one": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
+      "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
+    },
     "node_modules/merge-stream": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -6389,6 +6508,11 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/normalize-wheel-es": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+      "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
+    },
     "node_modules/npm-bundled": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz",
@@ -7741,6 +7865,15 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/safe-stable-stringify": {
+      "version": "2.4.3",
+      "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz",
+      "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/safer-buffer": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -8405,6 +8538,48 @@
         "node": ">=14"
       }
     },
+    "node_modules/ts-json-schema-generator": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-1.2.0.tgz",
+      "integrity": "sha512-tUMeO3ZvA12d3HHh7T/AK8W5hmUhDRNtqWRHSMN3ZRbUFt+UmV0oX8k1RK4SA+a+BKNHpmW2v06MS49e8Fi3Yg==",
+      "dev": true,
+      "dependencies": {
+        "@types/json-schema": "^7.0.11",
+        "commander": "^9.4.1",
+        "glob": "^8.0.3",
+        "json5": "^2.2.1",
+        "normalize-path": "^3.0.0",
+        "safe-stable-stringify": "^2.4.1",
+        "typescript": "~4.9.3"
+      },
+      "bin": {
+        "ts-json-schema-generator": "bin/ts-json-schema-generator"
+      },
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
+    "node_modules/ts-json-schema-generator/node_modules/commander": {
+      "version": "9.5.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+      "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+      "dev": true,
+      "engines": {
+        "node": "^12.20.0 || >=14"
+      }
+    },
+    "node_modules/ts-json-schema-generator/node_modules/json5": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+      "dev": true,
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/tsconfig-paths": {
       "version": "3.14.2",
       "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
@@ -9137,6 +9312,47 @@
         }
       }
     },
+    "node_modules/volar-plugin-vue-router": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/volar-plugin-vue-router/-/volar-plugin-vue-router-0.1.0.tgz",
+      "integrity": "sha512-ctSn7LXqZQditZaPcz3q3OaJbr+FC59+lPy0Nbg4ItfcVDGfRlCz6fttg2IsYISsHOTc5W8sEqeIFx9YyA2MkA==",
+      "dev": true,
+      "dependencies": {
+        "ts-json-schema-generator": "^1.2.0",
+        "vscode-json-languageservice": "^5.3.0"
+      }
+    },
+    "node_modules/vscode-json-languageservice": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-5.3.2.tgz",
+      "integrity": "sha512-5td6olfoNdtyxnNA4uocq7V9jdTJt63o9mGEntQb6cbD2HiObZW2XgbSj6nRaebWwBCiYdWpFklNjm6Wz6Xy1Q==",
+      "dev": true,
+      "dependencies": {
+        "@vscode/l10n": "^0.0.11",
+        "jsonc-parser": "^3.2.0",
+        "vscode-languageserver-textdocument": "^1.0.8",
+        "vscode-languageserver-types": "^3.17.3",
+        "vscode-uri": "^3.0.7"
+      }
+    },
+    "node_modules/vscode-languageserver-textdocument": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz",
+      "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==",
+      "dev": true
+    },
+    "node_modules/vscode-languageserver-types": {
+      "version": "3.17.3",
+      "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz",
+      "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==",
+      "dev": true
+    },
+    "node_modules/vscode-uri": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz",
+      "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==",
+      "dev": true
+    },
     "node_modules/vue": {
       "version": "3.2.47",
       "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz",
@@ -9837,6 +10053,17 @@
         "to-fast-properties": "^2.0.0"
       }
     },
+    "@ctrl/tinycolor": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz",
+      "integrity": "sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ=="
+    },
+    "@element-plus/icons-vue": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz",
+      "integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==",
+      "requires": {}
+    },
     "@esbuild/android-arm": {
       "version": "0.17.14",
       "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.14.tgz",
@@ -10029,6 +10256,19 @@
       "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==",
       "dev": true
     },
+    "@floating-ui/core": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.2.5.tgz",
+      "integrity": "sha512-qrcbyfnRVziRlB6IYwjCopYhO7Vud750JlJyuljruIXcPxr22y8zdckcJGsuOdnQ639uVD1tTXddrcH3t3QYIQ=="
+    },
+    "@floating-ui/dom": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.2.5.tgz",
+      "integrity": "sha512-+sAUfpQ3Frz+VCbPCqj+cZzvEESy3fjSeT/pDWkYCWOBXYNNKZfuVsHuv8/JO2zze8+Eb/Q7a6hZVgzS81fLbQ==",
+      "requires": {
+        "@floating-ui/core": "^1.2.4"
+      }
+    },
     "@gar/promisify": {
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
@@ -10306,6 +10546,11 @@
       "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
       "dev": true
     },
+    "@popperjs/core": {
+      "version": "npm:@sxzz/popperjs-es@2.11.7",
+      "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+      "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
+    },
     "@rollup/pluginutils": {
       "version": "5.0.2",
       "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
@@ -10365,6 +10610,19 @@
       "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
       "dev": true
     },
+    "@types/lodash": {
+      "version": "4.14.192",
+      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.192.tgz",
+      "integrity": "sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A=="
+    },
+    "@types/lodash-es": {
+      "version": "4.17.7",
+      "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.7.tgz",
+      "integrity": "sha512-z0ptr6UI10VlU6l5MYhGwS4mC8DZyYer2mCoyysZtSF7p26zOX8UpbrV0YpNYLGS8K4PUFIyEr62IMFFjveSiQ==",
+      "requires": {
+        "@types/lodash": "*"
+      }
+    },
     "@types/mdast": {
       "version": "3.0.11",
       "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.11.tgz",
@@ -10710,6 +10968,12 @@
         "@volar/vue-language-core": "1.2.0"
       }
     },
+    "@vscode/l10n": {
+      "version": "0.0.11",
+      "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.11.tgz",
+      "integrity": "sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==",
+      "dev": true
+    },
     "@vue-macros/api": {
       "version": "0.5.0",
       "resolved": "https://registry.npmjs.org/@vue-macros/api/-/api-0.5.0.tgz",
@@ -11369,6 +11633,11 @@
       "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
       "dev": true
     },
+    "async-validator": {
+      "version": "4.2.5",
+      "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
+      "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+    },
     "asynckit": {
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@@ -11761,6 +12030,11 @@
         "whatwg-url": "^12.0.0"
       }
     },
+    "dayjs": {
+      "version": "1.11.7",
+      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz",
+      "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
+    },
     "de-indent": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
@@ -11958,6 +12232,28 @@
         }
       }
     },
+    "element-plus": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.3.1.tgz",
+      "integrity": "sha512-IBS7ic1mRyDXpOreRkredV4ByZSuax5HPb0zNOHm4qwKC4wm927yQv+Is0JbzxPzCW5zWaV4PLy9/Gl3E3v59w==",
+      "requires": {
+        "@ctrl/tinycolor": "^3.4.1",
+        "@element-plus/icons-vue": "^2.0.6",
+        "@floating-ui/dom": "^1.0.1",
+        "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
+        "@types/lodash": "^4.14.182",
+        "@types/lodash-es": "^4.17.6",
+        "@vueuse/core": "^9.1.0",
+        "async-validator": "^4.2.5",
+        "dayjs": "^1.11.3",
+        "escape-html": "^1.0.3",
+        "lodash": "^4.17.21",
+        "lodash-es": "^4.17.21",
+        "lodash-unified": "^1.0.2",
+        "memoize-one": "^6.0.0",
+        "normalize-wheel-es": "^1.2.0"
+      }
+    },
     "emoji-regex": {
       "version": "9.2.2",
       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
@@ -12127,6 +12423,11 @@
       "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
       "dev": true
     },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+    },
     "escape-string-regexp": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -13813,8 +14114,18 @@
     "lodash": {
       "version": "4.17.21",
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "dev": true
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+    },
+    "lodash-es": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+    },
+    "lodash-unified": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz",
+      "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
+      "requires": {}
     },
     "lodash.merge": {
       "version": "4.6.2",
@@ -13969,6 +14280,11 @@
       "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==",
       "dev": true
     },
+    "memoize-one": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
+      "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
+    },
     "merge-stream": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -14264,6 +14580,11 @@
       "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
       "dev": true
     },
+    "normalize-wheel-es": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+      "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
+    },
     "npm-bundled": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz",
@@ -15236,6 +15557,12 @@
         "is-regex": "^1.1.4"
       }
     },
+    "safe-stable-stringify": {
+      "version": "2.4.3",
+      "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz",
+      "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==",
+      "dev": true
+    },
     "safer-buffer": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -15742,6 +16069,35 @@
         "punycode": "^2.3.0"
       }
     },
+    "ts-json-schema-generator": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-1.2.0.tgz",
+      "integrity": "sha512-tUMeO3ZvA12d3HHh7T/AK8W5hmUhDRNtqWRHSMN3ZRbUFt+UmV0oX8k1RK4SA+a+BKNHpmW2v06MS49e8Fi3Yg==",
+      "dev": true,
+      "requires": {
+        "@types/json-schema": "^7.0.11",
+        "commander": "^9.4.1",
+        "glob": "^8.0.3",
+        "json5": "^2.2.1",
+        "normalize-path": "^3.0.0",
+        "safe-stable-stringify": "^2.4.1",
+        "typescript": "~4.9.3"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "9.5.0",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+          "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+          "dev": true
+        },
+        "json5": {
+          "version": "2.2.3",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+          "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+          "dev": true
+        }
+      }
+    },
     "tsconfig-paths": {
       "version": "3.14.2",
       "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
@@ -16224,6 +16580,47 @@
         "why-is-node-running": "^2.2.2"
       }
     },
+    "volar-plugin-vue-router": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/volar-plugin-vue-router/-/volar-plugin-vue-router-0.1.0.tgz",
+      "integrity": "sha512-ctSn7LXqZQditZaPcz3q3OaJbr+FC59+lPy0Nbg4ItfcVDGfRlCz6fttg2IsYISsHOTc5W8sEqeIFx9YyA2MkA==",
+      "dev": true,
+      "requires": {
+        "ts-json-schema-generator": "^1.2.0",
+        "vscode-json-languageservice": "^5.3.0"
+      }
+    },
+    "vscode-json-languageservice": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-5.3.2.tgz",
+      "integrity": "sha512-5td6olfoNdtyxnNA4uocq7V9jdTJt63o9mGEntQb6cbD2HiObZW2XgbSj6nRaebWwBCiYdWpFklNjm6Wz6Xy1Q==",
+      "dev": true,
+      "requires": {
+        "@vscode/l10n": "^0.0.11",
+        "jsonc-parser": "^3.2.0",
+        "vscode-languageserver-textdocument": "^1.0.8",
+        "vscode-languageserver-types": "^3.17.3",
+        "vscode-uri": "^3.0.7"
+      }
+    },
+    "vscode-languageserver-textdocument": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz",
+      "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==",
+      "dev": true
+    },
+    "vscode-languageserver-types": {
+      "version": "3.17.3",
+      "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz",
+      "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==",
+      "dev": true
+    },
+    "vscode-uri": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz",
+      "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==",
+      "dev": true
+    },
     "vue": {
       "version": "3.2.47",
       "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz",

+ 12 - 0
src/pages/back/cqlqgl.vue

@@ -0,0 +1,12 @@
+<template>
+  <router-view />
+</template>
+
+<route lang="json">
+{
+  "meta": {
+    "title": "城区录取管理",
+    "sort": 3
+  }
+}
+</route>

+ 148 - 0
src/pages/back/cqlqgl/xsclqgl.vue

@@ -0,0 +1,148 @@
+<script setup lang='ts'>
+import { Plus, Search } from '@element-plus/icons-vue'
+const dialogVisible = $ref(false)
+const dialogData = $ref({})
+
+const tableData = $ref([
+  { a1: '邹磊', a2: '12365478965', a3: '枝江市', a4: '姜霞', a5: '汉族', a6: '155cm', a7: '叶洋', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+  { a1: '易静', a2: '12365478965', a3: '枝江市', a4: '许伟', a5: '汉族', a6: '155cm', a7: '黎秀兰', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+  { a1: '夏明', a2: '12365478965', a3: '枝江市', a4: '沈明', a5: '汉族', a6: '155cm', a7: '石涛', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+  { a1: '张秀兰', a2: '12365478965', a3: '枝江市', a4: '方超', a5: '汉族', a6: '155cm', a7: '宋霞', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+  { a1: '姜军', a2: '12365478965', a3: '枝江市', a4: '丁涛', a5: '汉族', a6: '155cm', a7: '汪敏', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+])
+</script>
+
+<template>
+  <div class="flex justify-between">
+    <div>
+      <el-button type="success" :icon="Plus" @click="() => { dialogData = {}; dialogVisible = true }">
+        新增
+      </el-button>
+
+      <el-button type="danger">
+        删除
+      </el-button>
+    </div>
+    <el-icon size="22px" color="blue">
+      <Search />
+    </el-icon>
+  </div>
+
+  <div class="divider" />
+  <div class="flex-auto">
+    <el-table :data="tableData" element-loading-background="#ffffff70">
+      <el-table-column type="selection" />
+      <el-table-column type="index" label="序号" width="60" show-overflow-tooltip />
+      <el-table-column prop="a1" label="姓名" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a2" label="手机号" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a3" label="籍贯" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a4" label="曾用名" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a5" label="民族" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a6" label="身高" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a7" label="家长姓名" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a8" label="家长手机" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a9" label="准考证号" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a10" label="身份证号" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a11" label="政治面貌" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a12" label="出生日期" width="auto" show-overflow-tooltip />
+
+      <el-table-column label="操作" fixed="right" width="160">
+        <template #default="{ row }">
+          <el-button
+            link :auto-insert-space="false" type="primary"
+            @click="() => { dialogData = { ...row }; dialogVisible = true }"
+          >
+            编辑
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+
+  <div class="flex justify-end mt-10 py-4">
+    <el-pagination :page-size="10" background layout="total, prev, pager, next" :total="100" />
+  </div>
+
+  <el-dialog v-model="dialogVisible" width="750px" append-to-body destroy-on-close>
+    <el-form v-model="dialogData" label-width="120px" :inline="true">
+      <el-form-item label="姓名">
+        <el-input v-model="dialogData.a1" clearable />
+      </el-form-item>
+      <el-form-item label="准考证号">
+        <el-input v-model="dialogData.a9" clearable />
+      </el-form-item>
+      <el-form-item label="手机号">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="身份证号">
+        <el-input v-model="dialogData.a10" clearable />
+      </el-form-item>
+      <el-form-item label="籍贯">
+        <el-input v-model="dialogData.a3" clearable />
+      </el-form-item>
+      <el-form-item label="出生日期">
+        <el-input v-model="dialogData.a12" clearable />
+      </el-form-item>
+      <el-form-item label="曾用名">
+        <el-input v-model="dialogData.a4" clearable />
+      </el-form-item>
+      <el-form-item label="性别">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="民族">
+        <el-input v-model="dialogData.a5" clearable />
+      </el-form-item>
+      <el-form-item label="政治面貌">
+        <el-input v-model="dialogData.a11" clearable />
+      </el-form-item>
+      <el-form-item label="身高">
+        <el-input v-model="dialogData.a6" clearable />
+      </el-form-item>
+      <el-form-item label="体重">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="家长姓名">
+        <el-input v-model="dialogData.a7" clearable />
+      </el-form-item>
+      <el-form-item label="称谓">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="家长手机">
+        <el-input v-model="dialogData.a8" clearable />
+      </el-form-item>
+      <el-form-item label="家庭住址">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+
+      <el-form-item label="编制类别">
+        <el-input v-model="dialogData.a1" clearable />
+      </el-form-item>
+      <el-form-item label="教职工类别">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="是否住宿">
+        <el-input v-model="dialogData.a1" clearable />
+      </el-form-item>
+      <el-form-item label="志愿选择">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <div class="flex justify-center">
+        <el-button type="primary" @click="dialogVisible = false">
+          确定
+        </el-button>
+        <el-button type="default" @click="dialogVisible = false">
+          取消
+        </el-button>
+      </div>
+    </el-form>
+  </el-dialog>
+</template>
+
+<route lang="json">
+{
+  "meta": {
+    "title": "小升初录取管理",
+    "sort": 2
+  }
+}
+</route>

+ 148 - 0
src/pages/back/cqlqgl/ysxlqgl.vue

@@ -0,0 +1,148 @@
+<script setup lang='ts'>
+import { Plus, Search } from '@element-plus/icons-vue'
+const dialogVisible = $ref(false)
+const dialogData = $ref({})
+
+const tableData = $ref([
+  { a1: '邹磊', a2: '12365478965', a3: '枝江市', a4: '姜霞', a5: '汉族', a6: '155cm', a7: '叶洋', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+  { a1: '易静', a2: '12365478965', a3: '枝江市', a4: '许伟', a5: '汉族', a6: '155cm', a7: '黎秀兰', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+  { a1: '夏明', a2: '12365478965', a3: '枝江市', a4: '沈明', a5: '汉族', a6: '155cm', a7: '石涛', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+  { a1: '张秀兰', a2: '12365478965', a3: '枝江市', a4: '方超', a5: '汉族', a6: '155cm', a7: '宋霞', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+  { a1: '姜军', a2: '12365478965', a3: '枝江市', a4: '丁涛', a5: '汉族', a6: '155cm', a7: '汪敏', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+])
+</script>
+
+<template>
+  <div class="flex justify-between">
+    <div>
+      <el-button type="success" :icon="Plus" @click="() => { dialogData = {}; dialogVisible = true }">
+        新增
+      </el-button>
+
+      <el-button type="danger">
+        删除
+      </el-button>
+    </div>
+    <el-icon size="22px" color="blue">
+      <Search />
+    </el-icon>
+  </div>
+
+  <div class="divider" />
+  <div class="flex-auto">
+    <el-table :data="tableData" element-loading-background="#ffffff70">
+      <el-table-column type="selection" />
+      <el-table-column type="index" label="序号" width="60" show-overflow-tooltip />
+      <el-table-column prop="a1" label="姓名" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a2" label="手机号" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a3" label="籍贯" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a4" label="曾用名" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a5" label="民族" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a6" label="身高" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a7" label="家长姓名" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a8" label="家长手机" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a9" label="准考证号" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a10" label="身份证号" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a11" label="政治面貌" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a12" label="出生日期" width="auto" show-overflow-tooltip />
+
+      <el-table-column label="操作" fixed="right" width="160">
+        <template #default="{ row }">
+          <el-button
+            link :auto-insert-space="false" type="primary"
+            @click="() => { dialogData = { ...row }; dialogVisible = true }"
+          >
+            编辑
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+
+  <div class="flex justify-end mt-10 py-4">
+    <el-pagination :page-size="10" background layout="total, prev, pager, next" :total="100" />
+  </div>
+
+  <el-dialog v-model="dialogVisible" width="750px" append-to-body destroy-on-close>
+    <el-form v-model="dialogData" label-width="120px" :inline="true">
+      <el-form-item label="姓名">
+        <el-input v-model="dialogData.a1" clearable />
+      </el-form-item>
+      <el-form-item label="准考证号">
+        <el-input v-model="dialogData.a9" clearable />
+      </el-form-item>
+      <el-form-item label="手机号">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="身份证号">
+        <el-input v-model="dialogData.a10" clearable />
+      </el-form-item>
+      <el-form-item label="籍贯">
+        <el-input v-model="dialogData.a3" clearable />
+      </el-form-item>
+      <el-form-item label="出生日期">
+        <el-input v-model="dialogData.a12" clearable />
+      </el-form-item>
+      <el-form-item label="曾用名">
+        <el-input v-model="dialogData.a4" clearable />
+      </el-form-item>
+      <el-form-item label="性别">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="民族">
+        <el-input v-model="dialogData.a5" clearable />
+      </el-form-item>
+      <el-form-item label="政治面貌">
+        <el-input v-model="dialogData.a11" clearable />
+      </el-form-item>
+      <el-form-item label="身高">
+        <el-input v-model="dialogData.a6" clearable />
+      </el-form-item>
+      <el-form-item label="体重">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="家长姓名">
+        <el-input v-model="dialogData.a7" clearable />
+      </el-form-item>
+      <el-form-item label="称谓">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="家长手机">
+        <el-input v-model="dialogData.a8" clearable />
+      </el-form-item>
+      <el-form-item label="家庭住址">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+
+      <el-form-item label="编制类别">
+        <el-input v-model="dialogData.a1" clearable />
+      </el-form-item>
+      <el-form-item label="教职工类别">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="是否住宿">
+        <el-input v-model="dialogData.a1" clearable />
+      </el-form-item>
+      <el-form-item label="志愿选择">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <div class="flex justify-center">
+        <el-button type="primary" @click="dialogVisible = false">
+          确定
+        </el-button>
+        <el-button type="default" @click="dialogVisible = false">
+          取消
+        </el-button>
+      </div>
+    </el-form>
+  </el-dialog>
+</template>
+
+<route lang="json">
+{
+  "meta": {
+    "title": "幼升小录取管理",
+    "sort": 1
+  }
+}
+</route>

+ 12 - 0
src/pages/back/cqzsgl.vue

@@ -0,0 +1,12 @@
+<template>
+  <router-view />
+</template>
+
+<route lang="json">
+{
+  "meta": {
+    "title": "城区招生管理",
+    "sort": 2
+  }
+}
+</route>

+ 145 - 1
src/pages/back/cqzsgl/xsczsgl.vue

@@ -1,7 +1,151 @@
 <script setup lang='ts'>
+import { Plus, Search } from '@element-plus/icons-vue'
+const dialogVisible = $ref(false)
+const dialogData = $ref({})
 
+const tableData = $ref([
+  { a1: '邹磊', a2: '12365478965', a3: '枝江市', a4: '姜霞', a5: '汉族', a6: '155cm', a7: '叶洋', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+  { a1: '易静', a2: '12365478965', a3: '枝江市', a4: '许伟', a5: '汉族', a6: '155cm', a7: '黎秀兰', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+  { a1: '夏明', a2: '12365478965', a3: '枝江市', a4: '沈明', a5: '汉族', a6: '155cm', a7: '石涛', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+  { a1: '张秀兰', a2: '12365478965', a3: '枝江市', a4: '方超', a5: '汉族', a6: '155cm', a7: '宋霞', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+  { a1: '姜军', a2: '12365478965', a3: '枝江市', a4: '丁涛', a5: '汉族', a6: '155cm', a7: '汪敏', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+])
 </script>
 
 <template>
-  <div>zxgl</div>
+  <div class="flex justify-between">
+    <div>
+      <el-button :icon="Plus" type="success" @click="() => { dialogData = {}; dialogVisible = true }">
+        新增
+      </el-button>
+      <el-button type="primary">
+        批量录取
+      </el-button>
+
+      <el-button type="danger">
+        删除
+      </el-button>
+    </div>
+    <el-icon size="22px" color="blue">
+      <Search />
+    </el-icon>
+  </div>
+
+  <div class="divider" />
+  <div class="flex-auto">
+    <el-table :data="tableData" element-loading-background="#ffffff70">
+      <el-table-column type="selection" />
+      <el-table-column type="index" label="序号" width="60" show-overflow-tooltip />
+      <el-table-column prop="a1" label="姓名" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a2" label="手机号" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a3" label="籍贯" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a4" label="曾用名" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a5" label="民族" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a6" label="身高" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a7" label="家长姓名" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a8" label="家长手机" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a9" label="准考证号" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a10" label="身份证号" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a11" label="政治面貌" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a12" label="出生日期" width="auto" show-overflow-tooltip />
+
+      <el-table-column label="操作" fixed="right" width="160">
+        <template #default="{ row }">
+          <el-button
+            link :auto-insert-space="false" type="primary"
+            @click="() => { dialogData = { ...row }; dialogVisible = true }"
+          >
+            编辑
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+
+  <div class="flex justify-end mt-10 py-4">
+    <el-pagination :page-size="10" background layout="total, prev, pager, next" :total="100" />
+  </div>
+
+  <el-dialog v-model="dialogVisible" width="750px" append-to-body destroy-on-close>
+    <el-form v-model="dialogData" label-width="120px" :inline="true">
+      <el-form-item label="姓名">
+        <el-input v-model="dialogData.a1" clearable />
+      </el-form-item>
+      <el-form-item label="准考证号">
+        <el-input v-model="dialogData.a9" clearable />
+      </el-form-item>
+      <el-form-item label="手机号">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="身份证号">
+        <el-input v-model="dialogData.a10" clearable />
+      </el-form-item>
+      <el-form-item label="籍贯">
+        <el-input v-model="dialogData.a3" clearable />
+      </el-form-item>
+      <el-form-item label="出生日期">
+        <el-input v-model="dialogData.a12" clearable />
+      </el-form-item>
+      <el-form-item label="曾用名">
+        <el-input v-model="dialogData.a4" clearable />
+      </el-form-item>
+      <el-form-item label="性别">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="民族">
+        <el-input v-model="dialogData.a5" clearable />
+      </el-form-item>
+      <el-form-item label="政治面貌">
+        <el-input v-model="dialogData.a11" clearable />
+      </el-form-item>
+      <el-form-item label="身高">
+        <el-input v-model="dialogData.a6" clearable />
+      </el-form-item>
+      <el-form-item label="体重">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="家长姓名">
+        <el-input v-model="dialogData.a7" clearable />
+      </el-form-item>
+      <el-form-item label="称谓">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="家长手机">
+        <el-input v-model="dialogData.a8" clearable />
+      </el-form-item>
+      <el-form-item label="家庭住址">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+
+      <el-form-item label="编制类别">
+        <el-input v-model="dialogData.a1" clearable />
+      </el-form-item>
+      <el-form-item label="教职工类别">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="是否住宿">
+        <el-input v-model="dialogData.a1" clearable />
+      </el-form-item>
+      <el-form-item label="志愿选择">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <div class="flex justify-center">
+        <el-button type="primary" @click="dialogVisible = false">
+          确定
+        </el-button>
+        <el-button type="default" @click="dialogVisible = false">
+          取消
+        </el-button>
+      </div>
+    </el-form>
+  </el-dialog>
 </template>
+
+<route lang="json">
+{
+  "meta": {
+    "title": "小升初招生管理",
+    "sort": 2
+  }
+}
+</route>

+ 145 - 1
src/pages/back/cqzsgl/ysxzsgl.vue

@@ -1,7 +1,151 @@
 <script setup lang='ts'>
+import { Plus, Search } from '@element-plus/icons-vue'
+const dialogVisible = $ref(false)
+const dialogData = $ref({})
 
+const tableData = $ref([
+  { a1: '邹磊', a2: '12365478965', a3: '枝江市', a4: '姜霞', a5: '汉族', a6: '155cm', a7: '叶洋', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+  { a1: '易静', a2: '12365478965', a3: '枝江市', a4: '许伟', a5: '汉族', a6: '155cm', a7: '黎秀兰', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+  { a1: '夏明', a2: '12365478965', a3: '枝江市', a4: '沈明', a5: '汉族', a6: '155cm', a7: '石涛', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+  { a1: '张秀兰', a2: '12365478965', a3: '枝江市', a4: '方超', a5: '汉族', a6: '155cm', a7: '宋霞', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+  { a1: '姜军', a2: '12365478965', a3: '枝江市', a4: '丁涛', a5: '汉族', a6: '155cm', a7: '汪敏', a8: '12365478965', a9: '12365478965', a10: '12365478965', a11: '团员', a12: '2016/12/22' },
+])
 </script>
 
 <template>
-  <div>zxgl</div>
+  <div class="flex justify-between">
+    <div>
+      <el-button :icon="Plus" type="success" @click="() => { dialogData = {}; dialogVisible = true }">
+        新增
+      </el-button>
+      <el-button type="primary">
+        批量录取
+      </el-button>
+
+      <el-button type="danger">
+        删除
+      </el-button>
+    </div>
+    <el-icon size="22px" color="blue">
+      <Search />
+    </el-icon>
+  </div>
+
+  <div class="divider" />
+  <div class="flex-auto">
+    <el-table :data="tableData" element-loading-background="#ffffff70">
+      <el-table-column type="selection" />
+      <el-table-column type="index" label="序号" width="60" show-overflow-tooltip />
+      <el-table-column prop="a1" label="姓名" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a2" label="手机号" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a3" label="籍贯" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a4" label="曾用名" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a5" label="民族" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a6" label="身高" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a7" label="家长姓名" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a8" label="家长手机" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a9" label="准考证号" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a10" label="身份证号" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a11" label="政治面貌" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a12" label="出生日期" width="auto" show-overflow-tooltip />
+
+      <el-table-column label="操作" fixed="right" width="160">
+        <template #default="{ row }">
+          <el-button
+            link :auto-insert-space="false" type="primary"
+            @click="() => { dialogData = { ...row }; dialogVisible = true }"
+          >
+            编辑
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+
+  <div class="flex justify-end mt-10 py-4">
+    <el-pagination :page-size="10" background layout="total, prev, pager, next" :total="100" />
+  </div>
+
+  <el-dialog v-model="dialogVisible" width="750px" append-to-body destroy-on-close>
+    <el-form v-model="dialogData" label-width="120px" :inline="true">
+      <el-form-item label="姓名">
+        <el-input v-model="dialogData.a1" clearable />
+      </el-form-item>
+      <el-form-item label="准考证号">
+        <el-input v-model="dialogData.a9" clearable />
+      </el-form-item>
+      <el-form-item label="手机号">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="身份证号">
+        <el-input v-model="dialogData.a10" clearable />
+      </el-form-item>
+      <el-form-item label="籍贯">
+        <el-input v-model="dialogData.a3" clearable />
+      </el-form-item>
+      <el-form-item label="出生日期">
+        <el-input v-model="dialogData.a12" clearable />
+      </el-form-item>
+      <el-form-item label="曾用名">
+        <el-input v-model="dialogData.a4" clearable />
+      </el-form-item>
+      <el-form-item label="性别">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="民族">
+        <el-input v-model="dialogData.a5" clearable />
+      </el-form-item>
+      <el-form-item label="政治面貌">
+        <el-input v-model="dialogData.a11" clearable />
+      </el-form-item>
+      <el-form-item label="身高">
+        <el-input v-model="dialogData.a6" clearable />
+      </el-form-item>
+      <el-form-item label="体重">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="家长姓名">
+        <el-input v-model="dialogData.a7" clearable />
+      </el-form-item>
+      <el-form-item label="称谓">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="家长手机">
+        <el-input v-model="dialogData.a8" clearable />
+      </el-form-item>
+      <el-form-item label="家庭住址">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+
+      <el-form-item label="编制类别">
+        <el-input v-model="dialogData.a1" clearable />
+      </el-form-item>
+      <el-form-item label="教职工类别">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="是否住宿">
+        <el-input v-model="dialogData.a1" clearable />
+      </el-form-item>
+      <el-form-item label="志愿选择">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <div class="flex justify-center">
+        <el-button type="primary" @click="dialogVisible = false">
+          确定
+        </el-button>
+        <el-button type="default" @click="dialogVisible = false">
+          取消
+        </el-button>
+      </div>
+    </el-form>
+  </el-dialog>
 </template>
+
+<route lang="json">
+{
+  "meta": {
+    "title": "幼升小招生管理",
+    "sort": 1
+  }
+}
+</route>

+ 102 - 0
src/pages/back/xtgl/yhgl.vue

@@ -0,0 +1,102 @@
+<script setup lang='ts'>
+import { Search } from '@element-plus/icons-vue'
+const dialogVisible = $ref(false)
+const dialogData = $ref({})
+const title = $ref('')
+
+const tableData = $ref([
+  { a1: '毛秀英', a2: '15517328037', a3: 'nciw@pt.fgqtu', a4: '教师', a5: '离线', a6: '', a7: '2022/10/14' },
+  { a1: '万涛', a2: '16472239896', a3: 'upnipsoq@fpay.rugeu', a4: '教师', a5: '离线', a6: '', a7: '2022/10/14' },
+  { a1: '黄敏', a2: '13113643526', a3: 'znxt@cyqmg.afdl', a4: '教师', a5: '离线', a6: '', a7: '2022/10/14' },
+  { a1: '杜洋', a2: '16336656585', a3: 'fpfypv@kft.lyt', a4: '教师', a5: '离线', a6: '', a7: '2022/10/14' },
+  { a1: '朱军', a2: '17186858058', a3: 'fpef@ymm.jfn', a4: '教师', a5: '离线', a6: '', a7: '2022/10/14' },
+
+])
+</script>
+
+<template>
+  <div class="flex justify-between">
+    <div>
+      <el-button type="success" @click="() => { dialogData = {}; dialogVisible = true }">
+        新增
+      </el-button>
+      <el-button type="danger">
+        删除
+      </el-button>
+    </div>
+    <el-icon size="22px" color="blue">
+      <Search />
+    </el-icon>
+  </div>
+
+  <div class="divider" />
+  <div class="flex-auto">
+    <el-table :data="tableData" element-loading-background="#ffffff70">
+      <el-table-column type="selection" />
+      <el-table-column type="index" label="序号" width="60" show-overflow-tooltip />
+      <el-table-column prop="a1" label="姓名" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a2" label="联系电话" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a3" label="邮箱" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a4" label="角色" width="auto" show-overflow-tooltip />
+      <el-table-column prop="a5" label="状态" width="auto" show-overflow-tooltip />
+      <el-table-column label="启用状态" show-overflow-tooltip width="auto" prop="a6">
+        <template #default="{ row }">
+          <el-switch v-model="row.newStatus" @change="isOpen(row)" />
+        </template>
+      </el-table-column>
+      <el-table-column prop="a7" label="注册时间" width="auto" show-overflow-tooltip />
+
+      <el-table-column label="操作" fixed="right" width="160">
+        <template #default="{ row }">
+          <el-button
+            link :auto-insert-space="false" type="primary"
+            @click="() => { dialogData = { ...row }; dialogVisible = true }"
+          >
+            编辑
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+
+  <div class="flex justify-end mt-10 py-4">
+    <el-pagination :page-size="10" background layout="total, prev, pager, next" :total="100" />
+  </div>
+
+  <el-dialog v-model="dialogVisible" :title="title" append-to-body destroy-on-close>
+    <el-form v-model="dialogData" label-width="120px">
+      <el-form-item label="姓名">
+        <el-input v-model="dialogData.a1" clearable />
+      </el-form-item>
+      <el-form-item label="邮箱">
+        <el-input v-model="dialogData.a3" clearable />
+      </el-form-item>
+      <el-form-item label="联系电话">
+        <el-input v-model="dialogData.a2" clearable />
+      </el-form-item>
+      <el-form-item label="角色">
+        <el-input v-model="dialogData.a4" clearable />
+      </el-form-item>
+      <el-form-item label="启用状态">
+        <el-switch v-model="dialogData.a6" @change="isOpen(row)" />
+      </el-form-item>
+      <div class="flex justify-center">
+        <el-button type="primary" @click="dialogVisible = false">
+          确定
+        </el-button>
+        <el-button type="default" @click="dialogVisible = false">
+          取消
+        </el-button>
+      </div>
+    </el-form>
+  </el-dialog>
+</template>
+
+<route lang="json">
+{
+  "meta": {
+    "title": "用户管理",
+    "sort": 1
+  }
+}
+</route>

File diff suppressed because it is too large
+ 4790 - 4642
yarn.lock