mirror of
				https://github.com/yangjian102621/geekai.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	feat(ui): 管理后台基础配置
This commit is contained in:
		
							
								
								
									
										321
									
								
								gpt-vue/pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										321
									
								
								gpt-vue/pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							@@ -12,8 +12,13 @@ importers:
 | 
			
		||||
        specifier: ^5.0.5
 | 
			
		||||
        version: 5.0.5
 | 
			
		||||
 | 
			
		||||
  packages: {}
 | 
			
		||||
 | 
			
		||||
  projects/vue-admin:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@arco-design/web-vue':
 | 
			
		||||
        specifier: ^2.54.6
 | 
			
		||||
        version: 2.54.6(vue@3.4.21)
 | 
			
		||||
      pinia:
 | 
			
		||||
        specifier: ^2.1.7
 | 
			
		||||
        version: 2.1.7(typescript@5.3.3)(vue@3.4.21)
 | 
			
		||||
@@ -51,6 +56,9 @@ importers:
 | 
			
		||||
      eslint-plugin-vue:
 | 
			
		||||
        specifier: ^9.17.0
 | 
			
		||||
        version: 9.22.0(eslint@8.57.0)
 | 
			
		||||
      less:
 | 
			
		||||
        specifier: ^4.2.0
 | 
			
		||||
        version: 4.2.0
 | 
			
		||||
      npm-run-all2:
 | 
			
		||||
        specifier: ^6.1.1
 | 
			
		||||
        version: 6.1.2
 | 
			
		||||
@@ -59,7 +67,7 @@ importers:
 | 
			
		||||
        version: 5.3.3
 | 
			
		||||
      vite:
 | 
			
		||||
        specifier: ^5.0.11
 | 
			
		||||
        version: 5.1.5(@types/node@20.11.24)
 | 
			
		||||
        version: 5.1.5(@types/node@20.11.24)(less@4.2.0)
 | 
			
		||||
      vue-tsc:
 | 
			
		||||
        specifier: ^1.8.27
 | 
			
		||||
        version: 1.8.27(typescript@5.3.3)
 | 
			
		||||
@@ -116,6 +124,58 @@ importers:
 | 
			
		||||
        specifier: ^1.8.27
 | 
			
		||||
        version: 1.8.27(typescript@5.3.3)
 | 
			
		||||
 | 
			
		||||
  projects/vue-mobile:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      pinia:
 | 
			
		||||
        specifier: ^2.1.7
 | 
			
		||||
        version: 2.1.7(typescript@5.3.3)(vue@3.4.21)
 | 
			
		||||
      vue:
 | 
			
		||||
        specifier: ^3.4.15
 | 
			
		||||
        version: 3.4.21(typescript@5.3.3)
 | 
			
		||||
      vue-router:
 | 
			
		||||
        specifier: ^4.2.5
 | 
			
		||||
        version: 4.3.0(vue@3.4.21)
 | 
			
		||||
    devDependencies:
 | 
			
		||||
      '@rushstack/eslint-patch':
 | 
			
		||||
        specifier: ^1.3.3
 | 
			
		||||
        version: 1.7.2
 | 
			
		||||
      '@tsconfig/node20':
 | 
			
		||||
        specifier: ^20.1.2
 | 
			
		||||
        version: 20.1.2
 | 
			
		||||
      '@types/node':
 | 
			
		||||
        specifier: ^20.11.10
 | 
			
		||||
        version: 20.11.24
 | 
			
		||||
      '@vitejs/plugin-vue':
 | 
			
		||||
        specifier: ^5.0.3
 | 
			
		||||
        version: 5.0.4(vite@5.1.5)(vue@3.4.21)
 | 
			
		||||
      '@vitejs/plugin-vue-jsx':
 | 
			
		||||
        specifier: ^3.1.0
 | 
			
		||||
        version: 3.1.0(vite@5.1.5)(vue@3.4.21)
 | 
			
		||||
      '@vue/eslint-config-typescript':
 | 
			
		||||
        specifier: ^12.0.0
 | 
			
		||||
        version: 12.0.0(eslint-plugin-vue@9.22.0)(eslint@8.57.0)(typescript@5.3.3)
 | 
			
		||||
      '@vue/tsconfig':
 | 
			
		||||
        specifier: ^0.5.1
 | 
			
		||||
        version: 0.5.1
 | 
			
		||||
      eslint:
 | 
			
		||||
        specifier: ^8.49.0
 | 
			
		||||
        version: 8.57.0
 | 
			
		||||
      eslint-plugin-vue:
 | 
			
		||||
        specifier: ^9.17.0
 | 
			
		||||
        version: 9.22.0(eslint@8.57.0)
 | 
			
		||||
      npm-run-all2:
 | 
			
		||||
        specifier: ^6.1.1
 | 
			
		||||
        version: 6.1.2
 | 
			
		||||
      typescript:
 | 
			
		||||
        specifier: ~5.3.0
 | 
			
		||||
        version: 5.3.3
 | 
			
		||||
      vite:
 | 
			
		||||
        specifier: ^5.0.11
 | 
			
		||||
        version: 5.1.5(@types/node@20.11.24)(less@4.2.0)
 | 
			
		||||
      vue-tsc:
 | 
			
		||||
        specifier: ^1.8.27
 | 
			
		||||
        version: 1.8.27(typescript@5.3.3)
 | 
			
		||||
 | 
			
		||||
  projects/vue-web:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      pinia:
 | 
			
		||||
@@ -163,7 +223,7 @@ importers:
 | 
			
		||||
        version: 5.3.3
 | 
			
		||||
      vite:
 | 
			
		||||
        specifier: ^5.0.11
 | 
			
		||||
        version: 5.1.5(@types/node@20.11.24)
 | 
			
		||||
        version: 5.1.5(@types/node@20.11.24)(less@4.2.0)
 | 
			
		||||
      vue-tsc:
 | 
			
		||||
        specifier: ^1.8.27
 | 
			
		||||
        version: 1.8.27(typescript@5.3.3)
 | 
			
		||||
@@ -183,6 +243,28 @@ packages:
 | 
			
		||||
      '@jridgewell/trace-mapping': 0.3.25
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@arco-design/color@0.4.0:
 | 
			
		||||
    resolution: {integrity: sha512-s7p9MSwJgHeL8DwcATaXvWT3m2SigKpxx4JA1BGPHL4gfvaQsmQfrLBDpjOJFJuJ2jG2dMt3R3P8Pm9E65q18g==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      color: 3.2.1
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /@arco-design/web-vue@2.54.6(vue@3.4.21):
 | 
			
		||||
    resolution: {integrity: sha512-Qx+HHL5G5gIvrbxGC6ZF/L8ACD1L/RkPJd9e4SR+vI6lEg+nGlUBplkR4pY7e7mqYXY2H6uzh+radT+QxXKVRg==}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      vue: ^3.1.0
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@arco-design/color': 0.4.0
 | 
			
		||||
      b-tween: 0.3.3
 | 
			
		||||
      b-validate: 1.5.3
 | 
			
		||||
      compute-scroll-into-view: 1.0.20
 | 
			
		||||
      dayjs: 1.11.10
 | 
			
		||||
      number-precision: 1.6.0
 | 
			
		||||
      resize-observer-polyfill: 1.5.1
 | 
			
		||||
      scroll-into-view-if-needed: 2.2.31
 | 
			
		||||
      vue: 3.4.21(typescript@5.3.3)
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /@babel/code-frame@7.23.5:
 | 
			
		||||
    resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
 | 
			
		||||
    engines: {node: '>=6.9.0'}
 | 
			
		||||
@@ -1080,7 +1162,7 @@ packages:
 | 
			
		||||
      '@babel/core': 7.24.0
 | 
			
		||||
      '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.24.0)
 | 
			
		||||
      '@vue/babel-plugin-jsx': 1.2.1(@babel/core@7.24.0)
 | 
			
		||||
      vite: 5.1.5(@types/node@20.11.24)
 | 
			
		||||
      vite: 5.1.5(@types/node@20.11.24)(less@4.2.0)
 | 
			
		||||
      vue: 3.4.21(typescript@5.3.3)
 | 
			
		||||
    transitivePeerDependencies:
 | 
			
		||||
      - supports-color
 | 
			
		||||
@@ -1093,7 +1175,7 @@ packages:
 | 
			
		||||
      vite: ^5.0.0
 | 
			
		||||
      vue: ^3.2.25
 | 
			
		||||
    dependencies:
 | 
			
		||||
      vite: 5.1.5(@types/node@20.11.24)
 | 
			
		||||
      vite: 5.1.5(@types/node@20.11.24)(less@4.2.0)
 | 
			
		||||
      vue: 3.4.21(typescript@5.3.3)
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
@@ -1331,6 +1413,14 @@ packages:
 | 
			
		||||
    engines: {node: '>=8'}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /b-tween@0.3.3:
 | 
			
		||||
    resolution: {integrity: sha512-oEHegcRpA7fAuc9KC4nktucuZn2aS8htymCPcP3qkEGPqiBH+GfqtqoG2l7LxHngg6O0HFM7hOeOYExl1Oz4ZA==}
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /b-validate@1.5.3:
 | 
			
		||||
    resolution: {integrity: sha512-iCvCkGFskbaYtfQ0a3GmcQCHl/Sv1GufXFGuUQ+FE+WJa7A/espLOuFIn09B944V8/ImPj71T4+rTASxO2PAuA==}
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /balanced-match@1.0.2:
 | 
			
		||||
    resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
 | 
			
		||||
    dev: true
 | 
			
		||||
@@ -1405,7 +1495,6 @@ packages:
 | 
			
		||||
    resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      color-name: 1.1.3
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /color-convert@2.0.1:
 | 
			
		||||
    resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
 | 
			
		||||
@@ -1416,11 +1505,27 @@ packages:
 | 
			
		||||
 | 
			
		||||
  /color-name@1.1.3:
 | 
			
		||||
    resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /color-name@1.1.4:
 | 
			
		||||
    resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /color-string@1.9.1:
 | 
			
		||||
    resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      color-name: 1.1.4
 | 
			
		||||
      simple-swizzle: 0.2.2
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /color@3.2.1:
 | 
			
		||||
    resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      color-convert: 1.9.3
 | 
			
		||||
      color-string: 1.9.1
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /compute-scroll-into-view@1.0.20:
 | 
			
		||||
    resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==}
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /computeds@0.0.1:
 | 
			
		||||
    resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==}
 | 
			
		||||
@@ -1434,6 +1539,12 @@ packages:
 | 
			
		||||
    resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /copy-anything@2.0.6:
 | 
			
		||||
    resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      is-what: 3.14.1
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /cross-spawn@7.0.3:
 | 
			
		||||
    resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
 | 
			
		||||
    engines: {node: '>= 8'}
 | 
			
		||||
@@ -1452,6 +1563,10 @@ packages:
 | 
			
		||||
  /csstype@3.1.3:
 | 
			
		||||
    resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
 | 
			
		||||
 | 
			
		||||
  /dayjs@1.11.10:
 | 
			
		||||
    resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==}
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /de-indent@1.0.2:
 | 
			
		||||
    resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
 | 
			
		||||
    dev: true
 | 
			
		||||
@@ -1506,6 +1621,15 @@ packages:
 | 
			
		||||
    resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
 | 
			
		||||
    engines: {node: '>=0.12'}
 | 
			
		||||
 | 
			
		||||
  /errno@0.1.8:
 | 
			
		||||
    resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    requiresBuild: true
 | 
			
		||||
    dependencies:
 | 
			
		||||
      prr: 1.0.1
 | 
			
		||||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild@0.19.12:
 | 
			
		||||
    resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
@@ -1816,6 +1940,12 @@ packages:
 | 
			
		||||
      slash: 3.0.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /graceful-fs@4.2.11:
 | 
			
		||||
    resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
 | 
			
		||||
    requiresBuild: true
 | 
			
		||||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /graphemer@1.4.0:
 | 
			
		||||
    resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
 | 
			
		||||
    dev: true
 | 
			
		||||
@@ -1840,11 +1970,28 @@ packages:
 | 
			
		||||
    engines: {node: '>=8'}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /iconv-lite@0.6.3:
 | 
			
		||||
    resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
 | 
			
		||||
    engines: {node: '>=0.10.0'}
 | 
			
		||||
    requiresBuild: true
 | 
			
		||||
    dependencies:
 | 
			
		||||
      safer-buffer: 2.1.2
 | 
			
		||||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /ignore@5.3.1:
 | 
			
		||||
    resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
 | 
			
		||||
    engines: {node: '>= 4'}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /image-size@0.5.5:
 | 
			
		||||
    resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
 | 
			
		||||
    engines: {node: '>=0.10.0'}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    requiresBuild: true
 | 
			
		||||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /import-fresh@3.3.0:
 | 
			
		||||
    resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
 | 
			
		||||
    engines: {node: '>=6'}
 | 
			
		||||
@@ -1869,6 +2016,10 @@ packages:
 | 
			
		||||
    resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /is-arrayish@0.3.2:
 | 
			
		||||
    resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /is-extglob@2.1.1:
 | 
			
		||||
    resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
 | 
			
		||||
    engines: {node: '>=0.10.0'}
 | 
			
		||||
@@ -1896,6 +2047,10 @@ packages:
 | 
			
		||||
    engines: {node: '>=8'}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /is-what@3.14.1:
 | 
			
		||||
    resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /isexe@2.0.0:
 | 
			
		||||
    resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
 | 
			
		||||
    dev: true
 | 
			
		||||
@@ -1955,6 +2110,24 @@ packages:
 | 
			
		||||
      json-buffer: 3.0.1
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /less@4.2.0:
 | 
			
		||||
    resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==}
 | 
			
		||||
    engines: {node: '>=6'}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    dependencies:
 | 
			
		||||
      copy-anything: 2.0.6
 | 
			
		||||
      parse-node-version: 1.0.1
 | 
			
		||||
      tslib: 2.6.2
 | 
			
		||||
    optionalDependencies:
 | 
			
		||||
      errno: 0.1.8
 | 
			
		||||
      graceful-fs: 4.2.11
 | 
			
		||||
      image-size: 0.5.5
 | 
			
		||||
      make-dir: 2.1.0
 | 
			
		||||
      mime: 1.6.0
 | 
			
		||||
      needle: 3.3.1
 | 
			
		||||
      source-map: 0.6.1
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /levn@0.4.1:
 | 
			
		||||
    resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
 | 
			
		||||
    engines: {node: '>= 0.8.0'}
 | 
			
		||||
@@ -2002,6 +2175,16 @@ packages:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@jridgewell/sourcemap-codec': 1.4.15
 | 
			
		||||
 | 
			
		||||
  /make-dir@2.1.0:
 | 
			
		||||
    resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
 | 
			
		||||
    engines: {node: '>=6'}
 | 
			
		||||
    requiresBuild: true
 | 
			
		||||
    dependencies:
 | 
			
		||||
      pify: 4.0.1
 | 
			
		||||
      semver: 5.7.2
 | 
			
		||||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /memorystream@0.3.1:
 | 
			
		||||
    resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
 | 
			
		||||
    engines: {node: '>= 0.10.0'}
 | 
			
		||||
@@ -2020,6 +2203,14 @@ packages:
 | 
			
		||||
      picomatch: 2.3.1
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /mime@1.6.0:
 | 
			
		||||
    resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
 | 
			
		||||
    engines: {node: '>=4'}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    requiresBuild: true
 | 
			
		||||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /minimatch@3.1.2:
 | 
			
		||||
    resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
@@ -2055,6 +2246,17 @@ packages:
 | 
			
		||||
    resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /needle@3.3.1:
 | 
			
		||||
    resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==}
 | 
			
		||||
    engines: {node: '>= 4.4.x'}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    requiresBuild: true
 | 
			
		||||
    dependencies:
 | 
			
		||||
      iconv-lite: 0.6.3
 | 
			
		||||
      sax: 1.3.0
 | 
			
		||||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /node-releases@2.0.14:
 | 
			
		||||
    resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
 | 
			
		||||
    dev: true
 | 
			
		||||
@@ -2084,6 +2286,10 @@ packages:
 | 
			
		||||
      boolbase: 1.0.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /number-precision@1.6.0:
 | 
			
		||||
    resolution: {integrity: sha512-05OLPgbgmnixJw+VvEh18yNPUo3iyp4BEWJcrLu4X9W05KmMifN7Mu5exYvQXqxxeNWhvIF+j3Rij+HmddM/hQ==}
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /once@1.4.0:
 | 
			
		||||
    resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
@@ -2123,6 +2329,11 @@ packages:
 | 
			
		||||
      callsites: 3.1.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /parse-node-version@1.0.1:
 | 
			
		||||
    resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
 | 
			
		||||
    engines: {node: '>= 0.10'}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /path-browserify@1.0.1:
 | 
			
		||||
    resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
 | 
			
		||||
    dev: true
 | 
			
		||||
@@ -2169,6 +2380,13 @@ packages:
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /pify@4.0.1:
 | 
			
		||||
    resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
 | 
			
		||||
    engines: {node: '>=6'}
 | 
			
		||||
    requiresBuild: true
 | 
			
		||||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /pinia@2.1.7(typescript@5.3.3)(vue@3.4.21):
 | 
			
		||||
    resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
@@ -2208,6 +2426,12 @@ packages:
 | 
			
		||||
    engines: {node: '>= 0.8.0'}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /prr@1.0.1:
 | 
			
		||||
    resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
 | 
			
		||||
    requiresBuild: true
 | 
			
		||||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /punycode@2.3.1:
 | 
			
		||||
    resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
 | 
			
		||||
    engines: {node: '>=6'}
 | 
			
		||||
@@ -2225,6 +2449,10 @@ packages:
 | 
			
		||||
      npm-normalize-package-bin: 3.0.1
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /resize-observer-polyfill@1.5.1:
 | 
			
		||||
    resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==}
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /resolve-from@4.0.0:
 | 
			
		||||
    resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
 | 
			
		||||
    engines: {node: '>=4'}
 | 
			
		||||
@@ -2279,6 +2507,31 @@ packages:
 | 
			
		||||
      queue-microtask: 1.2.3
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /safer-buffer@2.1.2:
 | 
			
		||||
    resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
 | 
			
		||||
    requiresBuild: true
 | 
			
		||||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /sax@1.3.0:
 | 
			
		||||
    resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}
 | 
			
		||||
    requiresBuild: true
 | 
			
		||||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /scroll-into-view-if-needed@2.2.31:
 | 
			
		||||
    resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      compute-scroll-into-view: 1.0.20
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /semver@5.7.2:
 | 
			
		||||
    resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    requiresBuild: true
 | 
			
		||||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /semver@6.3.1:
 | 
			
		||||
    resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
@@ -2313,6 +2566,12 @@ packages:
 | 
			
		||||
    engines: {node: '>=14'}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /simple-swizzle@0.2.2:
 | 
			
		||||
    resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      is-arrayish: 0.3.2
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /slash@3.0.0:
 | 
			
		||||
    resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
 | 
			
		||||
    engines: {node: '>=8'}
 | 
			
		||||
@@ -2322,6 +2581,13 @@ packages:
 | 
			
		||||
    resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
 | 
			
		||||
    engines: {node: '>=0.10.0'}
 | 
			
		||||
 | 
			
		||||
  /source-map@0.6.1:
 | 
			
		||||
    resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
 | 
			
		||||
    engines: {node: '>=0.10.0'}
 | 
			
		||||
    requiresBuild: true
 | 
			
		||||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /string-width@4.2.3:
 | 
			
		||||
    resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
 | 
			
		||||
    engines: {node: '>=8'}
 | 
			
		||||
@@ -2401,6 +2667,10 @@ packages:
 | 
			
		||||
      typescript: 5.3.3
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /tslib@2.6.2:
 | 
			
		||||
    resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /type-check@0.4.0:
 | 
			
		||||
    resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
 | 
			
		||||
    engines: {node: '>= 0.8.0'}
 | 
			
		||||
@@ -2479,6 +2749,43 @@ packages:
 | 
			
		||||
      fsevents: 2.3.3
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /vite@5.1.5(@types/node@20.11.24)(less@4.2.0):
 | 
			
		||||
    resolution: {integrity: sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==}
 | 
			
		||||
    engines: {node: ^18.0.0 || >=20.0.0}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      '@types/node': ^18.0.0 || >=20.0.0
 | 
			
		||||
      less: '*'
 | 
			
		||||
      lightningcss: ^1.21.0
 | 
			
		||||
      sass: '*'
 | 
			
		||||
      stylus: '*'
 | 
			
		||||
      sugarss: '*'
 | 
			
		||||
      terser: ^5.4.0
 | 
			
		||||
    peerDependenciesMeta:
 | 
			
		||||
      '@types/node':
 | 
			
		||||
        optional: true
 | 
			
		||||
      less:
 | 
			
		||||
        optional: true
 | 
			
		||||
      lightningcss:
 | 
			
		||||
        optional: true
 | 
			
		||||
      sass:
 | 
			
		||||
        optional: true
 | 
			
		||||
      stylus:
 | 
			
		||||
        optional: true
 | 
			
		||||
      sugarss:
 | 
			
		||||
        optional: true
 | 
			
		||||
      terser:
 | 
			
		||||
        optional: true
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@types/node': 20.11.24
 | 
			
		||||
      esbuild: 0.19.12
 | 
			
		||||
      less: 4.2.0
 | 
			
		||||
      postcss: 8.4.35
 | 
			
		||||
      rollup: 4.12.0
 | 
			
		||||
    optionalDependencies:
 | 
			
		||||
      fsevents: 2.3.3
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /vue-demi@0.14.7(vue@3.4.21):
 | 
			
		||||
    resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
 
 | 
			
		||||
@@ -12,6 +12,7 @@
 | 
			
		||||
    "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@arco-design/web-vue": "^2.54.6",
 | 
			
		||||
    "pinia": "^2.1.7",
 | 
			
		||||
    "vue": "^3.4.15",
 | 
			
		||||
    "vue-router": "^4.2.5"
 | 
			
		||||
@@ -26,6 +27,7 @@
 | 
			
		||||
    "@vue/tsconfig": "^0.5.1",
 | 
			
		||||
    "eslint": "^8.49.0",
 | 
			
		||||
    "eslint-plugin-vue": "^9.17.0",
 | 
			
		||||
    "less": "^4.2.0",
 | 
			
		||||
    "npm-run-all2": "^6.1.1",
 | 
			
		||||
    "typescript": "~5.3.0",
 | 
			
		||||
    "vite": "^5.0.11",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								gpt-vue/projects/vue-admin/src/.env.development
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								gpt-vue/projects/vue-admin/src/.env.development
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
VITE_PROXY_BASE_URL="/api"
 | 
			
		||||
VITE_TARGET_URL="http://172.22.11.2:5678"
 | 
			
		||||
VITE_SOCKET_IO_URL="http://172.28.1.3:8899"
 | 
			
		||||
							
								
								
									
										3
									
								
								gpt-vue/projects/vue-admin/src/.env.production
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								gpt-vue/projects/vue-admin/src/.env.production
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
VITE_PROXY_BASE_URL=""
 | 
			
		||||
VITE_TARGET_URL="/"
 | 
			
		||||
VITE_SOCKET_IO_URL="/"
 | 
			
		||||
@@ -1,85 +1,3 @@
 | 
			
		||||
<script setup lang="ts">
 | 
			
		||||
import { RouterLink, RouterView } from 'vue-router'
 | 
			
		||||
import HelloWorld from './components/HelloWorld.vue'
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<template>
 | 
			
		||||
  <header>
 | 
			
		||||
    <img alt="Vue logo" class="logo" src="@/assets/logo.svg" width="125" height="125" />
 | 
			
		||||
 | 
			
		||||
    <div class="wrapper">
 | 
			
		||||
      <HelloWorld msg="You did it!" />
 | 
			
		||||
 | 
			
		||||
      <nav>
 | 
			
		||||
        <RouterLink to="/">Home</RouterLink>
 | 
			
		||||
        <RouterLink to="/about">About</RouterLink>
 | 
			
		||||
      </nav>
 | 
			
		||||
    </div>
 | 
			
		||||
  </header>
 | 
			
		||||
 | 
			
		||||
  <RouterView />
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<style scoped>
 | 
			
		||||
header {
 | 
			
		||||
  line-height: 1.5;
 | 
			
		||||
  max-height: 100vh;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.logo {
 | 
			
		||||
  display: block;
 | 
			
		||||
  margin: 0 auto 2rem;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nav {
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  font-size: 12px;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  margin-top: 2rem;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nav a.router-link-exact-active {
 | 
			
		||||
  color: var(--color-text);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nav a.router-link-exact-active:hover {
 | 
			
		||||
  background-color: transparent;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nav a {
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  padding: 0 1rem;
 | 
			
		||||
  border-left: 1px solid var(--color-border);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nav a:first-of-type {
 | 
			
		||||
  border: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media (min-width: 1024px) {
 | 
			
		||||
  header {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    place-items: center;
 | 
			
		||||
    padding-right: calc(var(--section-gap) / 2);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .logo {
 | 
			
		||||
    margin: 0 2rem 0 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  header .wrapper {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    place-items: flex-start;
 | 
			
		||||
    flex-wrap: wrap;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  nav {
 | 
			
		||||
    text-align: left;
 | 
			
		||||
    margin-left: -1rem;
 | 
			
		||||
    font-size: 1rem;
 | 
			
		||||
 | 
			
		||||
    padding: 1rem 0;
 | 
			
		||||
    margin-top: 1rem;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,86 +0,0 @@
 | 
			
		||||
/* color palette from <https://github.com/vuejs/theme> */
 | 
			
		||||
:root {
 | 
			
		||||
  --vt-c-white: #ffffff;
 | 
			
		||||
  --vt-c-white-soft: #f8f8f8;
 | 
			
		||||
  --vt-c-white-mute: #f2f2f2;
 | 
			
		||||
 | 
			
		||||
  --vt-c-black: #181818;
 | 
			
		||||
  --vt-c-black-soft: #222222;
 | 
			
		||||
  --vt-c-black-mute: #282828;
 | 
			
		||||
 | 
			
		||||
  --vt-c-indigo: #2c3e50;
 | 
			
		||||
 | 
			
		||||
  --vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
 | 
			
		||||
  --vt-c-divider-light-2: rgba(60, 60, 60, 0.12);
 | 
			
		||||
  --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);
 | 
			
		||||
  --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);
 | 
			
		||||
 | 
			
		||||
  --vt-c-text-light-1: var(--vt-c-indigo);
 | 
			
		||||
  --vt-c-text-light-2: rgba(60, 60, 60, 0.66);
 | 
			
		||||
  --vt-c-text-dark-1: var(--vt-c-white);
 | 
			
		||||
  --vt-c-text-dark-2: rgba(235, 235, 235, 0.64);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* semantic color variables for this project */
 | 
			
		||||
:root {
 | 
			
		||||
  --color-background: var(--vt-c-white);
 | 
			
		||||
  --color-background-soft: var(--vt-c-white-soft);
 | 
			
		||||
  --color-background-mute: var(--vt-c-white-mute);
 | 
			
		||||
 | 
			
		||||
  --color-border: var(--vt-c-divider-light-2);
 | 
			
		||||
  --color-border-hover: var(--vt-c-divider-light-1);
 | 
			
		||||
 | 
			
		||||
  --color-heading: var(--vt-c-text-light-1);
 | 
			
		||||
  --color-text: var(--vt-c-text-light-1);
 | 
			
		||||
 | 
			
		||||
  --section-gap: 160px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media (prefers-color-scheme: dark) {
 | 
			
		||||
  :root {
 | 
			
		||||
    --color-background: var(--vt-c-black);
 | 
			
		||||
    --color-background-soft: var(--vt-c-black-soft);
 | 
			
		||||
    --color-background-mute: var(--vt-c-black-mute);
 | 
			
		||||
 | 
			
		||||
    --color-border: var(--vt-c-divider-dark-2);
 | 
			
		||||
    --color-border-hover: var(--vt-c-divider-dark-1);
 | 
			
		||||
 | 
			
		||||
    --color-heading: var(--vt-c-text-dark-1);
 | 
			
		||||
    --color-text: var(--vt-c-text-dark-2);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
*,
 | 
			
		||||
*::before,
 | 
			
		||||
*::after {
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
body {
 | 
			
		||||
  min-height: 100vh;
 | 
			
		||||
  color: var(--color-text);
 | 
			
		||||
  background: var(--color-background);
 | 
			
		||||
  transition:
 | 
			
		||||
    color 0.5s,
 | 
			
		||||
    background-color 0.5s;
 | 
			
		||||
  line-height: 1.6;
 | 
			
		||||
  font-family:
 | 
			
		||||
    Inter,
 | 
			
		||||
    -apple-system,
 | 
			
		||||
    BlinkMacSystemFont,
 | 
			
		||||
    'Segoe UI',
 | 
			
		||||
    Roboto,
 | 
			
		||||
    Oxygen,
 | 
			
		||||
    Ubuntu,
 | 
			
		||||
    Cantarell,
 | 
			
		||||
    'Fira Sans',
 | 
			
		||||
    'Droid Sans',
 | 
			
		||||
    'Helvetica Neue',
 | 
			
		||||
    sans-serif;
 | 
			
		||||
  font-size: 15px;
 | 
			
		||||
  text-rendering: optimizeLegibility;
 | 
			
		||||
  -webkit-font-smoothing: antialiased;
 | 
			
		||||
  -moz-osx-font-smoothing: grayscale;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,35 +0,0 @@
 | 
			
		||||
@import './base.css';
 | 
			
		||||
 | 
			
		||||
#app {
 | 
			
		||||
  max-width: 1280px;
 | 
			
		||||
  margin: 0 auto;
 | 
			
		||||
  padding: 2rem;
 | 
			
		||||
  font-weight: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a,
 | 
			
		||||
.green {
 | 
			
		||||
  text-decoration: none;
 | 
			
		||||
  color: hsla(160, 100%, 37%, 1);
 | 
			
		||||
  transition: 0.4s;
 | 
			
		||||
  padding: 3px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media (hover: hover) {
 | 
			
		||||
  a:hover {
 | 
			
		||||
    background-color: hsla(160, 100%, 37%, 0.2);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media (min-width: 1024px) {
 | 
			
		||||
  body {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    place-items: center;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  #app {
 | 
			
		||||
    display: grid;
 | 
			
		||||
    grid-template-columns: 1fr 1fr;
 | 
			
		||||
    padding: 0 2rem;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										76
									
								
								gpt-vue/projects/vue-admin/src/components/CustomLayout.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								gpt-vue/projects/vue-admin/src/components/CustomLayout.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
			
		||||
<script lang="ts" setup>
 | 
			
		||||
import { IconDown, IconExport } from "@arco-design/web-vue/es/icon";
 | 
			
		||||
 | 
			
		||||
import SystemMenu from "./SystemMenu.vue";
 | 
			
		||||
import PageWrapper from "./PageWrapper.vue";
 | 
			
		||||
 | 
			
		||||
const logoWidth = "200px";
 | 
			
		||||
</script>
 | 
			
		||||
<template>
 | 
			
		||||
  <ALayout class="custom-layout">
 | 
			
		||||
    <ALayoutHeader class="custom-layout-header">
 | 
			
		||||
      <div class="logo"></div>
 | 
			
		||||
      <div class="action">
 | 
			
		||||
        <ADropdown>
 | 
			
		||||
          <ASpace align="center" :size="4">
 | 
			
		||||
            <span></span>
 | 
			
		||||
            <IconDown />
 | 
			
		||||
          </ASpace>
 | 
			
		||||
          <template #content>
 | 
			
		||||
            <ADoption value="changeOwnPwd">更改密码</ADoption>
 | 
			
		||||
          </template>
 | 
			
		||||
          <template #footer>
 | 
			
		||||
            <APopconfirm content="确认退出?" position="br">
 | 
			
		||||
              <ASpace align="center" class="logout-area">
 | 
			
		||||
                <IconExport size="16" />
 | 
			
		||||
                <span>退出</span>
 | 
			
		||||
              </ASpace>
 | 
			
		||||
            </APopconfirm>
 | 
			
		||||
          </template>
 | 
			
		||||
        </ADropdown>
 | 
			
		||||
      </div>
 | 
			
		||||
    </ALayoutHeader>
 | 
			
		||||
    <ALayout>
 | 
			
		||||
      <SystemMenu :width="logoWidth" />
 | 
			
		||||
      <ALayoutContent>
 | 
			
		||||
        <PageWrapper>
 | 
			
		||||
          <slot />
 | 
			
		||||
        </PageWrapper>
 | 
			
		||||
      </ALayoutContent>
 | 
			
		||||
    </ALayout>
 | 
			
		||||
  </ALayout>
 | 
			
		||||
</template>
 | 
			
		||||
<style lang="less" scoped>
 | 
			
		||||
.custom-layout {
 | 
			
		||||
  width: 100vw;
 | 
			
		||||
  height: 100vh;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  &-header {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    height: 60px;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    border-bottom: 1px solid var(--color-neutral-2);
 | 
			
		||||
    .logo {
 | 
			
		||||
      display: block;
 | 
			
		||||
      width: v-bind("logoWidth");
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      cursor: pointer;
 | 
			
		||||
    }
 | 
			
		||||
    .action {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      padding: 0 12px;
 | 
			
		||||
      flex: 1;
 | 
			
		||||
      justify-content: right;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
.logout-area {
 | 
			
		||||
  padding: 8px 0;
 | 
			
		||||
  display: flex;
 | 
			
		||||
  width: 80px;
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  justify-content: center;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -1,41 +0,0 @@
 | 
			
		||||
<script setup lang="ts">
 | 
			
		||||
defineProps<{
 | 
			
		||||
  msg: string
 | 
			
		||||
}>()
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="greetings">
 | 
			
		||||
    <h1 class="green">{{ msg }}</h1>
 | 
			
		||||
    <h3>
 | 
			
		||||
      You’ve successfully created a project with
 | 
			
		||||
      <a href="https://vitejs.dev/" target="_blank" rel="noopener">Vite</a> +
 | 
			
		||||
      <a href="https://vuejs.org/" target="_blank" rel="noopener">Vue 3</a>. What's next?
 | 
			
		||||
    </h3>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<style scoped>
 | 
			
		||||
h1 {
 | 
			
		||||
  font-weight: 500;
 | 
			
		||||
  font-size: 2.6rem;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  top: -10px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h3 {
 | 
			
		||||
  font-size: 1.2rem;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.greetings h1,
 | 
			
		||||
.greetings h3 {
 | 
			
		||||
  text-align: center;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media (min-width: 1024px) {
 | 
			
		||||
  .greetings h1,
 | 
			
		||||
  .greetings h3 {
 | 
			
		||||
    text-align: left;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										23
									
								
								gpt-vue/projects/vue-admin/src/components/PageWrapper.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								gpt-vue/projects/vue-admin/src/components/PageWrapper.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="page-wrapper">
 | 
			
		||||
    <div class="page-content">
 | 
			
		||||
      <RouterView />
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
<style scoped>
 | 
			
		||||
.page-wrapper {
 | 
			
		||||
  height: calc(100vh - 60px);
 | 
			
		||||
  display: flex;
 | 
			
		||||
  flex-direction: column;
 | 
			
		||||
  background: #f7f8fa;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
}
 | 
			
		||||
.page-content {
 | 
			
		||||
  margin: 12px;
 | 
			
		||||
  padding: 12px;
 | 
			
		||||
  flex: 1;
 | 
			
		||||
  background: #fff;
 | 
			
		||||
  overflow-y: auto;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										29
									
								
								gpt-vue/projects/vue-admin/src/components/SystemMenu.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								gpt-vue/projects/vue-admin/src/components/SystemMenu.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
<script lang="ts" setup>
 | 
			
		||||
import { computed } from "vue";
 | 
			
		||||
import { useRoute } from "vue-router";
 | 
			
		||||
import router from "@/router";
 | 
			
		||||
import showMenu from "@/router/menu";
 | 
			
		||||
 | 
			
		||||
defineProps({
 | 
			
		||||
  width: {
 | 
			
		||||
    type: [Number, String],
 | 
			
		||||
    default: 200,
 | 
			
		||||
  },
 | 
			
		||||
});
 | 
			
		||||
const route = useRoute();
 | 
			
		||||
const goto = (name: string) => router.push({ name });
 | 
			
		||||
const selectedKeys = computed(() => [route.name]);
 | 
			
		||||
 | 
			
		||||
</script>
 | 
			
		||||
<template>
 | 
			
		||||
  <ALayoutSider :style="{ width, height: '100%' }">
 | 
			
		||||
    <AMenu :selected-keys="selectedKeys" @menu-item-click="goto">
 | 
			
		||||
      <AMenuItem v-for="item in showMenu" :key="item.name">
 | 
			
		||||
        <template #icon>
 | 
			
		||||
          <component :is="item.meta?.icon" />
 | 
			
		||||
        </template>
 | 
			
		||||
        {{ item.meta.title }}
 | 
			
		||||
      </AMenuItem>
 | 
			
		||||
    </AMenu>
 | 
			
		||||
  </ALayoutSider>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -1,88 +0,0 @@
 | 
			
		||||
<script setup lang="ts">
 | 
			
		||||
import WelcomeItem from './WelcomeItem.vue'
 | 
			
		||||
import DocumentationIcon from './icons/IconDocumentation.vue'
 | 
			
		||||
import ToolingIcon from './icons/IconTooling.vue'
 | 
			
		||||
import EcosystemIcon from './icons/IconEcosystem.vue'
 | 
			
		||||
import CommunityIcon from './icons/IconCommunity.vue'
 | 
			
		||||
import SupportIcon from './icons/IconSupport.vue'
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<template>
 | 
			
		||||
  <WelcomeItem>
 | 
			
		||||
    <template #icon>
 | 
			
		||||
      <DocumentationIcon />
 | 
			
		||||
    </template>
 | 
			
		||||
    <template #heading>Documentation</template>
 | 
			
		||||
 | 
			
		||||
    Vue’s
 | 
			
		||||
    <a href="https://vuejs.org/" target="_blank" rel="noopener">official documentation</a>
 | 
			
		||||
    provides you with all information you need to get started.
 | 
			
		||||
  </WelcomeItem>
 | 
			
		||||
 | 
			
		||||
  <WelcomeItem>
 | 
			
		||||
    <template #icon>
 | 
			
		||||
      <ToolingIcon />
 | 
			
		||||
    </template>
 | 
			
		||||
    <template #heading>Tooling</template>
 | 
			
		||||
 | 
			
		||||
    This project is served and bundled with
 | 
			
		||||
    <a href="https://vitejs.dev/guide/features.html" target="_blank" rel="noopener">Vite</a>. The
 | 
			
		||||
    recommended IDE setup is
 | 
			
		||||
    <a href="https://code.visualstudio.com/" target="_blank" rel="noopener">VSCode</a> +
 | 
			
		||||
    <a href="https://github.com/johnsoncodehk/volar" target="_blank" rel="noopener">Volar</a>. If
 | 
			
		||||
    you need to test your components and web pages, check out
 | 
			
		||||
    <a href="https://www.cypress.io/" target="_blank" rel="noopener">Cypress</a> and
 | 
			
		||||
    <a href="https://on.cypress.io/component" target="_blank" rel="noopener"
 | 
			
		||||
      >Cypress Component Testing</a
 | 
			
		||||
    >.
 | 
			
		||||
 | 
			
		||||
    <br />
 | 
			
		||||
 | 
			
		||||
    More instructions are available in <code>README.md</code>.
 | 
			
		||||
  </WelcomeItem>
 | 
			
		||||
 | 
			
		||||
  <WelcomeItem>
 | 
			
		||||
    <template #icon>
 | 
			
		||||
      <EcosystemIcon />
 | 
			
		||||
    </template>
 | 
			
		||||
    <template #heading>Ecosystem</template>
 | 
			
		||||
 | 
			
		||||
    Get official tools and libraries for your project:
 | 
			
		||||
    <a href="https://pinia.vuejs.org/" target="_blank" rel="noopener">Pinia</a>,
 | 
			
		||||
    <a href="https://router.vuejs.org/" target="_blank" rel="noopener">Vue Router</a>,
 | 
			
		||||
    <a href="https://test-utils.vuejs.org/" target="_blank" rel="noopener">Vue Test Utils</a>, and
 | 
			
		||||
    <a href="https://github.com/vuejs/devtools" target="_blank" rel="noopener">Vue Dev Tools</a>. If
 | 
			
		||||
    you need more resources, we suggest paying
 | 
			
		||||
    <a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">Awesome Vue</a>
 | 
			
		||||
    a visit.
 | 
			
		||||
  </WelcomeItem>
 | 
			
		||||
 | 
			
		||||
  <WelcomeItem>
 | 
			
		||||
    <template #icon>
 | 
			
		||||
      <CommunityIcon />
 | 
			
		||||
    </template>
 | 
			
		||||
    <template #heading>Community</template>
 | 
			
		||||
 | 
			
		||||
    Got stuck? Ask your question on
 | 
			
		||||
    <a href="https://chat.vuejs.org" target="_blank" rel="noopener">Vue Land</a>, our official
 | 
			
		||||
    Discord server, or
 | 
			
		||||
    <a href="https://stackoverflow.com/questions/tagged/vue.js" target="_blank" rel="noopener"
 | 
			
		||||
      >StackOverflow</a
 | 
			
		||||
    >. You should also subscribe to
 | 
			
		||||
    <a href="https://news.vuejs.org" target="_blank" rel="noopener">our mailing list</a> and follow
 | 
			
		||||
    the official
 | 
			
		||||
    <a href="https://twitter.com/vuejs" target="_blank" rel="noopener">@vuejs</a>
 | 
			
		||||
    twitter account for latest news in the Vue world.
 | 
			
		||||
  </WelcomeItem>
 | 
			
		||||
 | 
			
		||||
  <WelcomeItem>
 | 
			
		||||
    <template #icon>
 | 
			
		||||
      <SupportIcon />
 | 
			
		||||
    </template>
 | 
			
		||||
    <template #heading>Support Vue</template>
 | 
			
		||||
 | 
			
		||||
    As an independent project, Vue relies on community backing for its sustainability. You can help
 | 
			
		||||
    us by
 | 
			
		||||
    <a href="https://vuejs.org/sponsor/" target="_blank" rel="noopener">becoming a sponsor</a>.
 | 
			
		||||
  </WelcomeItem>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -1,87 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="item">
 | 
			
		||||
    <i>
 | 
			
		||||
      <slot name="icon"></slot>
 | 
			
		||||
    </i>
 | 
			
		||||
    <div class="details">
 | 
			
		||||
      <h3>
 | 
			
		||||
        <slot name="heading"></slot>
 | 
			
		||||
      </h3>
 | 
			
		||||
      <slot></slot>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<style scoped>
 | 
			
		||||
.item {
 | 
			
		||||
  margin-top: 2rem;
 | 
			
		||||
  display: flex;
 | 
			
		||||
  position: relative;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.details {
 | 
			
		||||
  flex: 1;
 | 
			
		||||
  margin-left: 1rem;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
i {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  place-items: center;
 | 
			
		||||
  place-content: center;
 | 
			
		||||
  width: 32px;
 | 
			
		||||
  height: 32px;
 | 
			
		||||
 | 
			
		||||
  color: var(--color-text);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h3 {
 | 
			
		||||
  font-size: 1.2rem;
 | 
			
		||||
  font-weight: 500;
 | 
			
		||||
  margin-bottom: 0.4rem;
 | 
			
		||||
  color: var(--color-heading);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media (min-width: 1024px) {
 | 
			
		||||
  .item {
 | 
			
		||||
    margin-top: 0;
 | 
			
		||||
    padding: 0.4rem 0 1rem calc(var(--section-gap) / 2);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  i {
 | 
			
		||||
    top: calc(50% - 25px);
 | 
			
		||||
    left: -26px;
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    border: 1px solid var(--color-border);
 | 
			
		||||
    background: var(--color-background);
 | 
			
		||||
    border-radius: 8px;
 | 
			
		||||
    width: 50px;
 | 
			
		||||
    height: 50px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .item:before {
 | 
			
		||||
    content: ' ';
 | 
			
		||||
    border-left: 1px solid var(--color-border);
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    left: 0;
 | 
			
		||||
    bottom: calc(50% + 25px);
 | 
			
		||||
    height: calc(50% - 25px);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .item:after {
 | 
			
		||||
    content: ' ';
 | 
			
		||||
    border-left: 1px solid var(--color-border);
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    left: 0;
 | 
			
		||||
    top: calc(50% + 25px);
 | 
			
		||||
    height: calc(50% - 25px);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .item:first-of-type:before {
 | 
			
		||||
    display: none;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .item:last-of-type:after {
 | 
			
		||||
    display: none;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -1,7 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor">
 | 
			
		||||
    <path
 | 
			
		||||
      d="M15 4a1 1 0 1 0 0 2V4zm0 11v-1a1 1 0 0 0-1 1h1zm0 4l-.707.707A1 1 0 0 0 16 19h-1zm-4-4l.707-.707A1 1 0 0 0 11 14v1zm-4.707-1.293a1 1 0 0 0-1.414 1.414l1.414-1.414zm-.707.707l-.707-.707.707.707zM9 11v-1a1 1 0 0 0-.707.293L9 11zm-4 0h1a1 1 0 0 0-1-1v1zm0 4H4a1 1 0 0 0 1.707.707L5 15zm10-9h2V4h-2v2zm2 0a1 1 0 0 1 1 1h2a3 3 0 0 0-3-3v2zm1 1v6h2V7h-2zm0 6a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3h-2zm-1 1h-2v2h2v-2zm-3 1v4h2v-4h-2zm1.707 3.293l-4-4-1.414 1.414 4 4 1.414-1.414zM11 14H7v2h4v-2zm-4 0c-.276 0-.525-.111-.707-.293l-1.414 1.414C5.42 15.663 6.172 16 7 16v-2zm-.707 1.121l3.414-3.414-1.414-1.414-3.414 3.414 1.414 1.414zM9 12h4v-2H9v2zm4 0a3 3 0 0 0 3-3h-2a1 1 0 0 1-1 1v2zm3-3V3h-2v6h2zm0-6a3 3 0 0 0-3-3v2a1 1 0 0 1 1 1h2zm-3-3H3v2h10V0zM3 0a3 3 0 0 0-3 3h2a1 1 0 0 1 1-1V0zM0 3v6h2V3H0zm0 6a3 3 0 0 0 3 3v-2a1 1 0 0 1-1-1H0zm3 3h2v-2H3v2zm1-1v4h2v-4H4zm1.707 4.707l.586-.586-1.414-1.414-.586.586 1.414 1.414z"
 | 
			
		||||
    />
 | 
			
		||||
  </svg>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -1,7 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="17" fill="currentColor">
 | 
			
		||||
    <path
 | 
			
		||||
      d="M11 2.253a1 1 0 1 0-2 0h2zm-2 13a1 1 0 1 0 2 0H9zm.447-12.167a1 1 0 1 0 1.107-1.666L9.447 3.086zM1 2.253L.447 1.42A1 1 0 0 0 0 2.253h1zm0 13H0a1 1 0 0 0 1.553.833L1 15.253zm8.447.833a1 1 0 1 0 1.107-1.666l-1.107 1.666zm0-14.666a1 1 0 1 0 1.107 1.666L9.447 1.42zM19 2.253h1a1 1 0 0 0-.447-.833L19 2.253zm0 13l-.553.833A1 1 0 0 0 20 15.253h-1zm-9.553-.833a1 1 0 1 0 1.107 1.666L9.447 14.42zM9 2.253v13h2v-13H9zm1.553-.833C9.203.523 7.42 0 5.5 0v2c1.572 0 2.961.431 3.947 1.086l1.107-1.666zM5.5 0C3.58 0 1.797.523.447 1.42l1.107 1.666C2.539 2.431 3.928 2 5.5 2V0zM0 2.253v13h2v-13H0zm1.553 13.833C2.539 15.431 3.928 15 5.5 15v-2c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM5.5 15c1.572 0 2.961.431 3.947 1.086l1.107-1.666C9.203 13.523 7.42 13 5.5 13v2zm5.053-11.914C11.539 2.431 12.928 2 14.5 2V0c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM14.5 2c1.573 0 2.961.431 3.947 1.086l1.107-1.666C18.203.523 16.421 0 14.5 0v2zm3.5.253v13h2v-13h-2zm1.553 12.167C18.203 13.523 16.421 13 14.5 13v2c1.573 0 2.961.431 3.947 1.086l1.107-1.666zM14.5 13c-1.92 0-3.703.523-5.053 1.42l1.107 1.666C11.539 15.431 12.928 15 14.5 15v-2z"
 | 
			
		||||
    />
 | 
			
		||||
  </svg>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -1,7 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <svg xmlns="http://www.w3.org/2000/svg" width="18" height="20" fill="currentColor">
 | 
			
		||||
    <path
 | 
			
		||||
      d="M11.447 8.894a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm0 1.789a1 1 0 1 0 .894-1.789l-.894 1.789zM7.447 7.106a1 1 0 1 0-.894 1.789l.894-1.789zM10 9a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0H8zm9.447-5.606a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm2 .789a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zM18 5a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0h-2zm-5.447-4.606a1 1 0 1 0 .894-1.789l-.894 1.789zM9 1l.447-.894a1 1 0 0 0-.894 0L9 1zm-2.447.106a1 1 0 1 0 .894 1.789l-.894-1.789zm-6 3a1 1 0 1 0 .894 1.789L.553 4.106zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zm-2-.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 2.789a1 1 0 1 0 .894-1.789l-.894 1.789zM2 5a1 1 0 1 0-2 0h2zM0 7.5a1 1 0 1 0 2 0H0zm8.553 12.394a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 1a1 1 0 1 0 .894 1.789l-.894-1.789zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zM8 19a1 1 0 1 0 2 0H8zm2-2.5a1 1 0 1 0-2 0h2zm-7.447.394a1 1 0 1 0 .894-1.789l-.894 1.789zM1 15H0a1 1 0 0 0 .553.894L1 15zm1-2.5a1 1 0 1 0-2 0h2zm12.553 2.606a1 1 0 1 0 .894 1.789l-.894-1.789zM17 15l.447.894A1 1 0 0 0 18 15h-1zm1-2.5a1 1 0 1 0-2 0h2zm-7.447-5.394l-2 1 .894 1.789 2-1-.894-1.789zm-1.106 1l-2-1-.894 1.789 2 1 .894-1.789zM8 9v2.5h2V9H8zm8.553-4.894l-2 1 .894 1.789 2-1-.894-1.789zm.894 0l-2-1-.894 1.789 2 1 .894-1.789zM16 5v2.5h2V5h-2zm-4.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zm-2.894-1l-2 1 .894 1.789 2-1L8.553.106zM1.447 5.894l2-1-.894-1.789-2 1 .894 1.789zm-.894 0l2 1 .894-1.789-2-1-.894 1.789zM0 5v2.5h2V5H0zm9.447 13.106l-2-1-.894 1.789 2 1 .894-1.789zm0 1.789l2-1-.894-1.789-2 1 .894 1.789zM10 19v-2.5H8V19h2zm-6.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zM2 15v-2.5H0V15h2zm13.447 1.894l2-1-.894-1.789-2 1 .894 1.789zM18 15v-2.5h-2V15h2z"
 | 
			
		||||
    />
 | 
			
		||||
  </svg>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -1,7 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor">
 | 
			
		||||
    <path
 | 
			
		||||
      d="M10 3.22l-.61-.6a5.5 5.5 0 0 0-7.666.105 5.5 5.5 0 0 0-.114 7.665L10 18.78l8.39-8.4a5.5 5.5 0 0 0-.114-7.665 5.5 5.5 0 0 0-7.666-.105l-.61.61z"
 | 
			
		||||
    />
 | 
			
		||||
  </svg>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -1,19 +0,0 @@
 | 
			
		||||
<!-- This icon is from <https://github.com/Templarian/MaterialDesign>, distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license-->
 | 
			
		||||
<template>
 | 
			
		||||
  <svg
 | 
			
		||||
    xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
    xmlns:xlink="http://www.w3.org/1999/xlink"
 | 
			
		||||
    aria-hidden="true"
 | 
			
		||||
    role="img"
 | 
			
		||||
    class="iconify iconify--mdi"
 | 
			
		||||
    width="24"
 | 
			
		||||
    height="24"
 | 
			
		||||
    preserveAspectRatio="xMidYMid meet"
 | 
			
		||||
    viewBox="0 0 24 24"
 | 
			
		||||
  >
 | 
			
		||||
    <path
 | 
			
		||||
      d="M20 18v-4h-3v1h-2v-1H9v1H7v-1H4v4h16M6.33 8l-1.74 4H7v-1h2v1h6v-1h2v1h2.41l-1.74-4H6.33M9 5v1h6V5H9m12.84 7.61c.1.22.16.48.16.8V18c0 .53-.21 1-.6 1.41c-.4.4-.85.59-1.4.59H4c-.55 0-1-.19-1.4-.59C2.21 19 2 18.53 2 18v-4.59c0-.32.06-.58.16-.8L4.5 7.22C4.84 6.41 5.45 6 6.33 6H7V5c0-.55.18-1 .57-1.41C7.96 3.2 8.44 3 9 3h6c.56 0 1.04.2 1.43.59c.39.41.57.86.57 1.41v1h.67c.88 0 1.49.41 1.83 1.22l2.34 5.39z"
 | 
			
		||||
      fill="currentColor"
 | 
			
		||||
    ></path>
 | 
			
		||||
  </svg>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -1,14 +1,26 @@
 | 
			
		||||
import './assets/main.css'
 | 
			
		||||
import { createApp } from "vue";
 | 
			
		||||
import { createPinia } from "pinia";
 | 
			
		||||
import ArcoVue from "@arco-design/web-vue";
 | 
			
		||||
import ArcoVueIcon from "@arco-design/web-vue/es/icon";
 | 
			
		||||
import "@arco-design/web-vue/dist/arco.css";
 | 
			
		||||
 | 
			
		||||
import { createApp } from 'vue'
 | 
			
		||||
import { createPinia } from 'pinia'
 | 
			
		||||
import App from "./App.vue";
 | 
			
		||||
import router from "./router";
 | 
			
		||||
 | 
			
		||||
import App from './App.vue'
 | 
			
		||||
import router from './router'
 | 
			
		||||
const app = createApp(App);
 | 
			
		||||
 | 
			
		||||
const app = createApp(App)
 | 
			
		||||
app.use(createPinia());
 | 
			
		||||
app.use(router);
 | 
			
		||||
app.use(ArcoVue);
 | 
			
		||||
app.use(ArcoVueIcon);
 | 
			
		||||
 | 
			
		||||
app.use(createPinia())
 | 
			
		||||
app.use(router)
 | 
			
		||||
app.mount("#app");
 | 
			
		||||
app.config.warnHandler = (msg, vm, trace) => {
 | 
			
		||||
  if (msg.includes('Invalid prop name: "key" is a reserved property.')) {
 | 
			
		||||
    // 如果警告信息包含我们要屏蔽的内容,则不执行任何操作
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
  console.warn(`[Vue warn]: ${msg}${trace}`);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
app.mount('#app')
 | 
			
		||||
export default app;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
import { createRouter, createWebHistory } from 'vue-router'
 | 
			
		||||
import HomeView from '../views/HomeView.vue'
 | 
			
		||||
import CustomLayout from '@/components/CustomLayout.vue'
 | 
			
		||||
import menu from './menu'
 | 
			
		||||
 | 
			
		||||
const router = createRouter({
 | 
			
		||||
  history: createWebHistory(import.meta.env.BASE_URL),
 | 
			
		||||
@@ -7,16 +8,15 @@ const router = createRouter({
 | 
			
		||||
    {
 | 
			
		||||
      path: '/',
 | 
			
		||||
      name: 'home',
 | 
			
		||||
      component: HomeView
 | 
			
		||||
      component: CustomLayout,
 | 
			
		||||
      redirect: () => menu[0].path,
 | 
			
		||||
      children: menu
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      path: '/about',
 | 
			
		||||
      name: 'about',
 | 
			
		||||
      // route level code-splitting
 | 
			
		||||
      // this generates a separate chunk (About.[hash].js) for this route
 | 
			
		||||
      // which is lazy-loaded when the route is visited.
 | 
			
		||||
      component: () => import('../views/AboutView.vue')
 | 
			
		||||
    }
 | 
			
		||||
      path: "/:pathMatch(.*)*",
 | 
			
		||||
      name: "404",
 | 
			
		||||
      component: () => import("@/views/NotFound.vue"),
 | 
			
		||||
    },
 | 
			
		||||
  ]
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										27
									
								
								gpt-vue/projects/vue-admin/src/router/menu.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								gpt-vue/projects/vue-admin/src/router/menu.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
import {
 | 
			
		||||
  IconUser,
 | 
			
		||||
  IconDashboard
 | 
			
		||||
} from "@arco-design/web-vue/es/icon";
 | 
			
		||||
 | 
			
		||||
const menu = [
 | 
			
		||||
  {
 | 
			
		||||
    path: '/dashboard',
 | 
			
		||||
    name: 'Dashboard',
 | 
			
		||||
    meta: {
 | 
			
		||||
      title: "仪表盘",
 | 
			
		||||
      icon: IconDashboard
 | 
			
		||||
    },
 | 
			
		||||
    component: () => import('@/views/DashboardView.vue')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    path: '/user',
 | 
			
		||||
    name: 'User',
 | 
			
		||||
    meta: {
 | 
			
		||||
      title: "用户管理",
 | 
			
		||||
      icon: IconUser,
 | 
			
		||||
    },
 | 
			
		||||
    component: () => import('@/views/User/UserContainer.vue')
 | 
			
		||||
  },
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default menu;
 | 
			
		||||
@@ -1,15 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="about">
 | 
			
		||||
    <h1>This is an about page</h1>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<style>
 | 
			
		||||
@media (min-width: 1024px) {
 | 
			
		||||
  .about {
 | 
			
		||||
    min-height: 100vh;
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -0,0 +1,4 @@
 | 
			
		||||
<script lang="ts" setup></script>
 | 
			
		||||
<template>
 | 
			
		||||
  <div></div>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -0,0 +1,4 @@
 | 
			
		||||
<script lang="ts" setup></script>
 | 
			
		||||
<template>
 | 
			
		||||
  <div></div>
 | 
			
		||||
</template>
 | 
			
		||||
							
								
								
									
										4
									
								
								gpt-vue/projects/vue-admin/src/views/DashboardView.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								gpt-vue/projects/vue-admin/src/views/DashboardView.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
<script lang="ts" setup></script>
 | 
			
		||||
<template>
 | 
			
		||||
  <div></div>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
<script setup lang="ts">
 | 
			
		||||
import TheWelcome from '../components/TheWelcome.vue'
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<template>
 | 
			
		||||
  <main>
 | 
			
		||||
    <TheWelcome />
 | 
			
		||||
  </main>
 | 
			
		||||
</template>
 | 
			
		||||
							
								
								
									
										19
									
								
								gpt-vue/projects/vue-admin/src/views/NotFound.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								gpt-vue/projects/vue-admin/src/views/NotFound.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
<script setup lang="ts">
 | 
			
		||||
import { useRouter } from "vue-router";
 | 
			
		||||
const router = useRouter();
 | 
			
		||||
const goBack = () => {
 | 
			
		||||
  if (window.history.length) {
 | 
			
		||||
    router.back();
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
  router.replace("/");
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<template>
 | 
			
		||||
  <AResult status="404" subtitle="找不到页面">
 | 
			
		||||
    <template #extra>
 | 
			
		||||
      <AButton type="primary" @click="goBack">返回</AButton>
 | 
			
		||||
    </template>
 | 
			
		||||
  </AResult>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -0,0 +1,4 @@
 | 
			
		||||
<script lang="ts" setup></script>
 | 
			
		||||
<template>
 | 
			
		||||
  <div></div>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -0,0 +1,4 @@
 | 
			
		||||
<script lang="ts" setup></script>
 | 
			
		||||
<template>
 | 
			
		||||
  <div></div>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -0,0 +1,4 @@
 | 
			
		||||
<script lang="ts" setup></script>
 | 
			
		||||
<template>
 | 
			
		||||
  <div></div>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -7,5 +7,12 @@
 | 
			
		||||
    {
 | 
			
		||||
      "path": "./tsconfig.app.json"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
  ],
 | 
			
		||||
  "compilerOptions": {
 | 
			
		||||
    "strict": false,
 | 
			
		||||
    "noImplicitAny": false,
 | 
			
		||||
    "allowSyntheticDefaultImports": true,
 | 
			
		||||
    "esModuleInterop": true,
 | 
			
		||||
    "allowJs": true,
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@
 | 
			
		||||
    "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
 | 
			
		||||
 | 
			
		||||
    "module": "ESNext",
 | 
			
		||||
    "moduleResolution": "Bundler",
 | 
			
		||||
    "moduleResolution": "Node",
 | 
			
		||||
    "types": ["node"]
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,32 @@
 | 
			
		||||
import { fileURLToPath, URL } from 'node:url'
 | 
			
		||||
 | 
			
		||||
import { defineConfig } from 'vite'
 | 
			
		||||
import { defineConfig, loadEnv } from 'vite'
 | 
			
		||||
import vue from '@vitejs/plugin-vue'
 | 
			
		||||
import vueJsx from '@vitejs/plugin-vue-jsx'
 | 
			
		||||
 | 
			
		||||
// https://vitejs.dev/config/
 | 
			
		||||
export default defineConfig({
 | 
			
		||||
  plugins: [
 | 
			
		||||
    vue(),
 | 
			
		||||
    vueJsx(),
 | 
			
		||||
  ],
 | 
			
		||||
  resolve: {
 | 
			
		||||
    alias: {
 | 
			
		||||
      '@': fileURLToPath(new URL('./src', import.meta.url))
 | 
			
		||||
    }
 | 
			
		||||
export default defineConfig(({ mode }) => {
 | 
			
		||||
  const { VITE_PROXY_BASE_URL, VITE_TARGET_URL } = loadEnv(mode, process.cwd());
 | 
			
		||||
  return {
 | 
			
		||||
    plugins: [
 | 
			
		||||
      vue(),
 | 
			
		||||
      vueJsx(),
 | 
			
		||||
    ],
 | 
			
		||||
    resolve: {
 | 
			
		||||
      alias: {
 | 
			
		||||
        '@': fileURLToPath(new URL('./src', import.meta.url))
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    server: {
 | 
			
		||||
      host: "0.0.0.0",
 | 
			
		||||
      port: 7410,
 | 
			
		||||
      proxy: {
 | 
			
		||||
        [VITE_PROXY_BASE_URL]: {
 | 
			
		||||
          target: VITE_TARGET_URL,
 | 
			
		||||
          changeOrigin: true,
 | 
			
		||||
          rewrite: (path) => path.replace(VITE_PROXY_BASE_URL, ""),
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  }
 | 
			
		||||
})
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user