From a32354d7fdfa493184b918e576dba5a71a829a02 Mon Sep 17 00:00:00 2001
From: Leo_Ding <2405260743@qq.com>
Date: Tue, 17 Jun 2025 11:33:03 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=8F=9C=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.env.dev | 4 +-
.env.prod | 2 +-
.prettierrc | 2 +-
config/useServer.js | 2 +-
package-lock.json | 26 +-
package.json | 1 +
src/locales/lang/zh-CN/menu.js | 2 +
src/locales/lang/zh-CN/pages.js | 2 +-
src/router/routes/imgMgt.js | 62 ++++
src/router/routes/index.js | 2 +
src/router/util.js | 2 +
src/store/modules/router.js | 13 +-
.../homeBanner/components/Department.vue | 169 ++++++++++
.../components/EditDepartmentDialog.vue | 131 ++++++++
.../homeBanner/components/EditDialog.vue | 293 ++++++++++++++++++
src/views/imgMgt/homeBanner/index.vue | 234 ++++++++++++++
src/views/login/index.vue | 74 ++---
vite.config.js | 4 +-
yarn.lock | 9 +-
19 files changed, 968 insertions(+), 66 deletions(-)
create mode 100644 src/router/routes/imgMgt.js
create mode 100644 src/views/imgMgt/homeBanner/components/Department.vue
create mode 100644 src/views/imgMgt/homeBanner/components/EditDepartmentDialog.vue
create mode 100644 src/views/imgMgt/homeBanner/components/EditDialog.vue
create mode 100644 src/views/imgMgt/homeBanner/index.vue
diff --git a/.env.dev b/.env.dev
index 1c9a1a1..c249191 100644
--- a/.env.dev
+++ b/.env.dev
@@ -2,7 +2,7 @@
NODE_ENV=development
# app
-VITE_TITLE=GuXuan-Admin
+VITE_TITLE=海邻后台管理系统
VITE_PUBLIC_PATH=/
VITE_OUT_DIR=dist
VITE_PERMISSION=false
@@ -12,7 +12,7 @@ VITE_ROUTER_BASE=/
VITE_ROUTER_HISTORY=hash
# api
-VITE_API_BASIC=/
+VITE_API_BASIC=http://10.10.1.6:8060
VITE_API_HTTP=/api/v1/
# storage
VITE_STORAGE_NAMESPACE = gin-admin_local_
\ No newline at end of file
diff --git a/.env.prod b/.env.prod
index ed098e8..d68d87a 100644
--- a/.env.prod
+++ b/.env.prod
@@ -2,7 +2,7 @@
NODE_ENV=production
# app
-VITE_TITLE=GuXuan-Admin
+VITE_TITLE=海邻后台管理系统
VITE_PUBLIC_PATH=/
VITE_OUT_DIR=dist
VITE_PERMISSION=true
diff --git a/.prettierrc b/.prettierrc
index d43185c..cdf5127 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -6,5 +6,5 @@
"singleQuote": true,
"printWidth": 120,
"endOfLine": "auto",
- "singleAttributePerLine": true
+ "singleAttributePerLine": false
}
diff --git a/config/useServer.js b/config/useServer.js
index acb6a73..c39286e 100644
--- a/config/useServer.js
+++ b/config/useServer.js
@@ -3,7 +3,7 @@ export default () => ({
port: 8080,
proxy: {
'/api': {
- target: 'http://101.42.232.163:8080/api',
+ target: 'https://mock.apifox.cn/m1/3156808-0-default',
// target: 'http://127.0.0.1:8045/api',
changeOrigin: true,
rewrite: (path) => path.replace('/api', ''),
diff --git a/package-lock.json b/package-lock.json
index a3c1264..bd4e09d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,11 +1,11 @@
{
- "name": "gin-admin",
+ "name": "guxuan-admin",
"version": "1.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
- "name": "gin-admin",
+ "name": "guxuan-admin",
"version": "1.0.0",
"dependencies": {
"@ant-design/colors": "^7.0.0",
@@ -49,6 +49,7 @@
"husky": "^8.0.3",
"less": "^4.2.0",
"lint-staged": "^14.0.0",
+ "mockjs": "^1.1.0",
"rollup-plugin-visualizer": "^5.9.2",
"vite": "^4.4.9",
"vite-plugin-compression": "^0.5.1",
@@ -3385,6 +3386,18 @@
"integrity": "sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg==",
"dev": true
},
+ "node_modules/mockjs": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/mockjs/-/mockjs-1.1.0.tgz",
+ "integrity": "sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==",
+ "dev": true,
+ "dependencies": {
+ "commander": "*"
+ },
+ "bin": {
+ "random": "bin/random"
+ }
+ },
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -7431,6 +7444,15 @@
"integrity": "sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg==",
"dev": true
},
+ "mockjs": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/mockjs/-/mockjs-1.1.0.tgz",
+ "integrity": "sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==",
+ "dev": true,
+ "requires": {
+ "commander": "*"
+ }
+ },
"ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
diff --git a/package.json b/package.json
index 3daff3e..bd767dd 100644
--- a/package.json
+++ b/package.json
@@ -58,6 +58,7 @@
"husky": "^8.0.3",
"less": "^4.2.0",
"lint-staged": "^14.0.0",
+ "mockjs": "^1.1.0",
"rollup-plugin-visualizer": "^5.9.2",
"vite": "^4.4.9",
"vite-plugin-compression": "^0.5.1",
diff --git a/src/locales/lang/zh-CN/menu.js b/src/locales/lang/zh-CN/menu.js
index 42d2e5b..e9e9315 100644
--- a/src/locales/lang/zh-CN/menu.js
+++ b/src/locales/lang/zh-CN/menu.js
@@ -32,4 +32,6 @@ export default {
account: '个人页',
'account.trigger': '触发报错',
'account.logout': '退出登录',
+ imgMgt:'图片管理',
+ homeBanner:'首页轮播图'
}
diff --git a/src/locales/lang/zh-CN/pages.js b/src/locales/lang/zh-CN/pages.js
index 43d9a74..0d2b938 100644
--- a/src/locales/lang/zh-CN/pages.js
+++ b/src/locales/lang/zh-CN/pages.js
@@ -1,6 +1,6 @@
export default {
'pages.layouts.userLayout.title':
- '基于 GIN + GORM 2.0 + Casbin 2.0 + Wire DI 的轻量级、灵活、优雅且功能齐全的 RBAC 脚手架。',
+ '轻量级、灵活、优雅且功能齐全的脚手架。',
'pages.login.accountLogin.tab': '账户密码登录',
'pages.login.failure': '登录失败,请重试!',
'pages.login.success': '登录成功!',
diff --git a/src/router/routes/imgMgt.js b/src/router/routes/imgMgt.js
new file mode 100644
index 0000000..81f2bfb
--- /dev/null
+++ b/src/router/routes/imgMgt.js
@@ -0,0 +1,62 @@
+import { SettingOutlined } from '@ant-design/icons-vue'
+
+export default [
+ {
+ path: 'imgMgt',
+ name: 'imgMgt',
+ component: 'RouteViewLayout',
+ meta: {
+ icon: SettingOutlined,
+ title: '图片管理',
+ isMenu: true,
+ keepAlive: true,
+ permission: '*',
+ },
+ children: [
+ {
+ path: 'homeBanner',
+ name: 'homeBanner',
+ component: 'imgMgt/homeBanner/index.vue',
+ meta: {
+ title: '首页轮播图',
+ isMenu: true,
+ keepAlive: true,
+ permission: '*',
+ },
+ },
+ {
+ path: 'role',
+ name: 'role',
+ component: 'system/role/index.vue',
+ meta: {
+ title: '角色管理',
+ isMenu: true,
+ keepAlive: true,
+ permission: '*',
+ },
+ },
+ {
+ path: 'menu',
+ name: 'menu',
+ component: 'system/menu/index.vue',
+ meta: {
+ title: '菜单管理',
+ isMenu: true,
+ keepAlive: true,
+ permission: '*',
+ },
+ },
+ {
+ path: 'logger',
+ name: 'logger',
+ component: 'system/logger/index.vue',
+ meta: {
+ title: '日志管理',
+ isMenu: true,
+ keepAlive: true,
+ permission: '*',
+ },
+ },
+ ],
+ },
+]
diff --git a/src/router/routes/index.js b/src/router/routes/index.js
index 5877eb6..7186110 100644
--- a/src/router/routes/index.js
+++ b/src/router/routes/index.js
@@ -9,6 +9,7 @@ import system from './system'
import link from './link'
import iframe from './iframe'
import other from './other'
+import imgMgt from './imgMgt'
export default [
...home,
@@ -22,4 +23,5 @@ export default [
...link,
...iframe,
...other,
+ ...imgMgt
]
diff --git a/src/router/util.js b/src/router/util.js
index 46f97a4..d219068 100644
--- a/src/router/util.js
+++ b/src/router/util.js
@@ -73,7 +73,9 @@ export function formatRoutes(routes = [], parent = {}) {
const modules = import.meta.glob('../views/**/*.vue')
return routes
.map((item) => {
+ console.log(item.name,localRoutes)
const localRoute = find(toList(localRoutes), { name: item.name })
+ console.log(localRoute)
if (!localRoute) return
const component = localRoute?.component || 'exception/404'
const isLink = localRoute?.meta?.type === 'link'
diff --git a/src/store/modules/router.js b/src/store/modules/router.js
index b118604..d4ceaa1 100644
--- a/src/store/modules/router.js
+++ b/src/store/modules/router.js
@@ -24,17 +24,15 @@ const useRouterStore = defineStore('router', {
return new Promise((resolve, reject) => {
;(async () => {
try {
- const { success, data } = await apis.user.getUserMenu().catch(() => {
- throw new Error()
- })
+ const { success, data } = await apis.user.getUserMenu().catch(() => {throw new Error()})
if (config('http.code.success') === success) {
const list = formatApiData(data)
-
+ console.log(list)
list.push(...addWebPage())
-
const validRoutes = formatRoutes(list)
-
+ console.log('validRoutes',validRoutes)
const menuList = generateMenuList(validRoutes)
+ console.log('menuList',menuList)
const routes = [...generateRoutes(validRoutes), notFoundRoute]
const indexRoute = getFirstValidRoute(menuList)
routes.forEach((route) => {
@@ -43,6 +41,9 @@ const useRouterStore = defineStore('router', {
this.routes = routes
this.menuList = menuList
this.indexRoute = indexRoute
+ console.log('routes',routes)
+ console.log('menuList',routes)
+ console.log('indexRoute',routes)
resolve()
}
} catch (error) {
diff --git a/src/views/imgMgt/homeBanner/components/Department.vue b/src/views/imgMgt/homeBanner/components/Department.vue
new file mode 100644
index 0000000..efaefad
--- /dev/null
+++ b/src/views/imgMgt/homeBanner/components/Department.vue
@@ -0,0 +1,169 @@
+
+