mirror of
https://github.com/continew-org/continew-admin-ui.git
synced 2025-09-10 08:57:10 +08:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@@ -1,13 +1,10 @@
|
||||
# 环境变量 (命名必须以 VITE_ 开头)
|
||||
|
||||
# 是否在打包时启用 Mock
|
||||
VITE_BUILD_MOCK = true
|
||||
|
||||
# 接口前缀
|
||||
VITE_API_PREFIX = '/api'
|
||||
VITE_BUILD_MOCK = false
|
||||
|
||||
# 接口地址
|
||||
VITE_API_BASE_URL = 'http://localhost:18000'
|
||||
VITE_API_BASE_URL = 'https://api.continew.top'
|
||||
|
||||
# 地址前缀
|
||||
VITE_BASE = '/'
|
@@ -4,7 +4,7 @@
|
||||
VITE_BUILD_MOCK = true
|
||||
|
||||
# 接口前缀
|
||||
VITE_API_PREFIX = '/mock'
|
||||
VITE_API_PREFIX = '/api'
|
||||
|
||||
# 接口地址
|
||||
VITE_API_BASE_URL = 'http://localhost:8000'
|
||||
|
@@ -42,5 +42,5 @@
|
||||
|
||||
<!-- 在提交 issue 之前,请确保执行过以下操作。 -->
|
||||
|
||||
- [ ] 阅读[文档](https://doc.charles7c.top/admin/other/faq.html)
|
||||
- [ ] 阅读[文档](https://continew.top/admin/other/faq.html)
|
||||
- [ ] 搜索是否有其他人提交过类似的 issue,如果对应 issue 尚未解决,您可以先订阅关注该 issue(为了方便后来者查找问题解决方法,请尽量避免创建重复的 issue)
|
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -49,7 +49,7 @@ body:
|
||||
label: 确认
|
||||
description: 在提交 issue 之前,请确保执行过以下操作。
|
||||
options:
|
||||
- label: 阅读[文档](https://doc.charles7c.top/admin/other/faq.html)
|
||||
- label: 阅读[文档](https://continew.top/admin/other/faq.html)
|
||||
required: true
|
||||
- label: 根据报错信息百度或 Google 一下
|
||||
required: true
|
||||
|
2
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
2
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@@ -36,7 +36,7 @@ body:
|
||||
label: 确认
|
||||
description: 在提交 issue 之前,请确保执行过以下操作。
|
||||
options:
|
||||
- label: 阅读[文档](https://doc.charles7c.top/admin/intro/require.html)
|
||||
- label: 阅读[文档](https://continew.top/admin/intro/require.html)
|
||||
required: true
|
||||
- label: 搜索是否有其他人提交过类似的 issue,如果对应 issue 尚未解决,您可以先订阅关注该 issue(为了方便后来者查找问题解决方法,请尽量避免创建重复的 issue)
|
||||
required: true
|
56
.github/workflows/deploy.yml
vendored
Normal file
56
.github/workflows/deploy.yml
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
name: Deploy
|
||||
|
||||
on:
|
||||
# 推送时执行
|
||||
push:
|
||||
branches: [dev]
|
||||
# 可手动执行
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
deploy-web:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# 1、检出源码
|
||||
- name: Checkout
|
||||
uses: actions/checkout@master
|
||||
# 2、安装 PNPM
|
||||
- name: Setup PNPM
|
||||
uses: pnpm/action-setup@v2
|
||||
with:
|
||||
version: latest
|
||||
# 3、安装 Node 环境
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18
|
||||
cache: pnpm
|
||||
cache-dependency-path: ./pnpm-lock.yaml
|
||||
# 4、安装依赖
|
||||
- name: Install Dependencies
|
||||
run: pnpm i --frozen-lockfile
|
||||
# 5、打包
|
||||
- name: Build
|
||||
run: pnpm build
|
||||
# 6、拷贝到服务器
|
||||
- name: Copy
|
||||
uses: garygrossgarten/github-action-scp@release
|
||||
with:
|
||||
host: ${{ secrets.SERVER_HOST }}
|
||||
port: ${{ secrets.SERVER_PORT }}
|
||||
username: ${{ secrets.SERVER_USERNAME }}
|
||||
password: ${{ secrets.SERVER_PASSWORD }}
|
||||
local: ./dist
|
||||
remote: /docker/continew-admin/tmp
|
||||
# 7、重启 Nginx
|
||||
- name: Restart
|
||||
uses: appleboy/ssh-action@master
|
||||
with:
|
||||
host: ${{ secrets.SERVER_HOST }}
|
||||
port: ${{ secrets.SERVER_PORT }}
|
||||
username: ${{ secrets.SERVER_USERNAME }}
|
||||
password: ${{ secrets.SERVER_PASSWORD }}
|
||||
script: |
|
||||
rm -rf /docker/continew-admin/html/*
|
||||
mv /docker/continew-admin/tmp/* /docker/continew-admin/html
|
||||
docker restart nginx
|
23
README.md
23
README.md
@@ -1,4 +1,4 @@
|
||||
# ContiNew Admin UI - Gi
|
||||
# ContiNew Admin UI
|
||||
|
||||
<a href="https://github.com/Charles7c/continew-admin-ui/blob/dev/LICENSE" target="_blank">
|
||||
<img src="https://img.shields.io/badge/License-Apache--2.0-blue.svg" alt="License" />
|
||||
@@ -31,11 +31,11 @@
|
||||
<img src="https://img.shields.io/badge/Vite-5.1.5-%236CB52D.svg" alt="Release" />
|
||||
</a>
|
||||
|
||||
📚 [在线文档](https://doc.charles7c.top) | 🚀 [演示地址](https://cnadmin.charles7c.top)(账号/密码:admin/admin123)
|
||||
📚 [在线文档](https://continew.top) | 🚀 [演示地址](https://admin.continew.top)(账号/密码:admin/admin123)
|
||||
|
||||
## 简介
|
||||
|
||||
基于 Gi Demo 前端模板开发的 ContiNew Admin 前端适配项目。
|
||||
全新 3.0 版本,基于 Gi Demo 前端模板开发的 ContiNew Admin 前端适配项目。
|
||||
|
||||
ContiNew Admin(Continue New Admin)持续迭代优化的前后端分离中后台管理系统框架。开箱即用,持续提供舒适的开发体验,依托开源协作模式,提升技术透明度、放大集体智慧、共创优秀实践,源源不断地为企业级项目开发提供助力。
|
||||
|
||||
@@ -61,15 +61,16 @@ ContiNew Admin(Continue New Admin)持续迭代优化的前后端分离中后
|
||||
|
||||
## 项目源码
|
||||
|
||||
| | 前端源码 | 后端源码 |
|
||||
| ----- |------------------------------------------------------------------------------------------------| ----------------------------------------- |
|
||||
| GitHub | [github.com/Charles7c/continew-admin-ui-gi](https://github.com/Charles7c/continew-admin-ui-gi) | [github.com/Charles7c/continew-admin](https://github.com/Charles7c/continew-admin) |
|
||||
| Gitee | [gitee.com/continew/continew-admin-ui-gi](https://gitee.com/continew/continew-admin-ui-gi) | [gitee.com/continew/continew-admin](https://gitee.com/continew/continew-admin) |
|
||||
| | Gitee | GitHub |
|
||||
|--------|-------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------|
|
||||
| 前端 | [gitee.com/continew/continew-admin-ui](https://gitee.com/continew/continew-admin-ui) | [github.com/Charles7c/continew-admin-ui](https://github.com/Charles7c/continew-admin-ui) |
|
||||
| 后端 | [gitee.com/continew/continew-admin](https://gitee.com/continew/continew-admin) | [github.com/Charles7c/continew-admin](https://github.com/Charles7c/continew-admin) |
|
||||
| 2.5 前端 | [gitee.com/continew/continew-admin-ui-arco](https://gitee.com/continew/continew-admin-ui-arco) | [github.com/Charles7c/continew-admin-ui-arco](https://github.com/Charles7c/continew-admin-ui-arco) |
|
||||
|
||||
## 系统功能
|
||||
|
||||
> **Note**
|
||||
> 更多功能和优化正在赶来💦,最新项目计划、进展请进群或关注 [任务清单](https://doc.charles7c.top/admin/intro/require.html#任务清单) 和 [更新日志](https://doc.charles7c.top/admin/other/changelog.html)。
|
||||
> 更多功能和优化正在赶来💦,最新项目计划、进展请进群或关注 [任务清单](https://continew.top/admin/intro/require.html#任务清单) 和 [更新日志](https://continew.top/admin/other/changelog.html)。
|
||||
|
||||
- 账号管理:支持基础信息修改、安全设置(密码修改、邮箱绑定、手机号绑定(并提供行为验证码、短信限流等安全处理)、第三方账号绑定/解绑)、头像裁剪上传、个人操作日志查看
|
||||
- 用户管理:提供用户的相关配置,新增用户后,默认密码为 123456
|
||||
@@ -88,7 +89,7 @@ ContiNew Admin(Continue New Admin)持续迭代优化的前后端分离中后
|
||||
## 快速开始
|
||||
|
||||
> **Note**
|
||||
> 更详细的流程,请查看在线文档[《快速开始》](https://doc.charles7c.top/admin/intro/quick-start.html#%E5%89%8D%E7%AB%AF)。
|
||||
> 更详细的流程,请查看在线文档[《快速开始》](https://continew.top/admin/intro/quick-start.html#%E5%89%8D%E7%AB%AF)。
|
||||
|
||||
```
|
||||
# 1.克隆本项目
|
||||
@@ -112,11 +113,11 @@ pnpm dev
|
||||
|
||||
ContiNew Admin 致力于提供开箱即用,持续舒适的开发体验。作为一个开源项目,Creator 的初心是希望 ContiNew Admin 依托开源协作模式,提升技术透明度、放大集体智慧、共创优秀实践,源源不断地为企业级项目开发提供助力。
|
||||
|
||||
我们非常欢迎广大社区用户为 ContiNew Admin **贡献(开发,测试、文档、答疑等)** 或优化代码,欢迎各位感兴趣的小伙伴儿,[添加微信](https://doc.charles7c.top/support.html) 讨论或认领任务。
|
||||
我们非常欢迎广大社区用户为 ContiNew Admin **贡献(开发,测试、文档、答疑等)** 或优化代码,欢迎各位感兴趣的小伙伴儿,[添加微信](https://continew.top/support.html) 讨论或认领任务。
|
||||
|
||||
### 分支说明
|
||||
|
||||
ContiNew Admin 的分支目前分为下个大版本的开发分支和上个大版本的维护分支,PR 前请注意对应分支是否处于维护状态,版本支持情况请查看 [更新日志/版本支持](https://doc.charles7c.top/admin/other/changelog.html#%E7%89%88%E6%9C%AC%E6%94%AF%E6%8C%81)。
|
||||
ContiNew Admin 的分支目前分为下个大版本的开发分支和上个大版本的维护分支,PR 前请注意对应分支是否处于维护状态,版本支持情况请查看 [更新日志/版本支持](https://continew.top/admin/other/changelog.html#%E7%89%88%E6%9C%AC%E6%94%AF%E6%8C%81)。
|
||||
|
||||
| 分支 | 说明 |
|
||||
| ----- | ------------------------------------------------------------ |
|
||||
|
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "continew-admin-ui-gi",
|
||||
"name": "continew-admin-ui",
|
||||
"version": "3.0.0-SNAPSHOT",
|
||||
"private": "true",
|
||||
"scripts": {
|
||||
|
@@ -40,7 +40,7 @@ const storeSetup = () => {
|
||||
document.title = resMap.get('site_title')
|
||||
document
|
||||
.querySelector('link[rel="shortcut icon"]')
|
||||
?.setAttribute('href', resMap.get('site_favicon') || 'https://cnadmin.charles7c.top/favicon.ico')
|
||||
?.setAttribute('href', resMap.get('site_favicon') || 'https://admin.continew.top/favicon.ico')
|
||||
})
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ const storeSetup = () => {
|
||||
document.title = config.site_title || ''
|
||||
document
|
||||
.querySelector('link[rel="shortcut icon"]')
|
||||
?.setAttribute('href', config.site_favicon || 'https://cnadmin.charles7c.top/favicon.ico')
|
||||
?.setAttribute('href', config.site_favicon || 'https://admin.continew.top/favicon.ico')
|
||||
}
|
||||
|
||||
// 页面切换动画类名
|
||||
|
@@ -34,7 +34,7 @@ const StatusCodeMessage: ICodeMessage = {
|
||||
}
|
||||
|
||||
const http: AxiosInstance = axios.create({
|
||||
baseURL: import.meta.env.VITE_API_PREFIX,
|
||||
baseURL: import.meta.env.VITE_API_PREFIX ?? import.meta.env.VITE_API_BASE_URL,
|
||||
timeout: 30 * 1000
|
||||
})
|
||||
|
||||
|
@@ -27,31 +27,31 @@ const list = [
|
||||
{
|
||||
name: 'ContiNew Admin',
|
||||
desc: '持续优化的前后端分离中后台管理框架,开箱即用,持续提供舒适的开发体验。',
|
||||
logo: 'https://doc.charles7c.top/logo.svg',
|
||||
logo: 'https://continew.top/logo.svg',
|
||||
url: 'https://gitee.com/continew/continew-admin'
|
||||
},
|
||||
{
|
||||
name: 'ContiNew Starter',
|
||||
desc: '包含了一系列经过企业实践优化的依赖包(如 MyBatis-Plus、SaToken)。',
|
||||
logo: 'https://doc.charles7c.top/logo.svg',
|
||||
logo: 'https://continew.top/logo.svg',
|
||||
url: 'https://gitee.com/continew/continew-starter'
|
||||
},
|
||||
{
|
||||
name: 'ContiNew Admin UI - GI',
|
||||
desc: '基于 Gi Demo 前端模板开发的 ContiNew Admin 前端适配项目。',
|
||||
logo: 'https://doc.charles7c.top/logo.svg',
|
||||
logo: 'https://continew.top/logo.svg',
|
||||
url: 'https://gitee.com/continew/continew-admin-ui-gi'
|
||||
},
|
||||
{
|
||||
name: 'ContiNew Admin UI',
|
||||
desc: '基于 Arco Design Pro 前端模板开发的 ContiNew Admin 前端适配项目。',
|
||||
logo: 'https://doc.charles7c.top/logo.svg',
|
||||
logo: 'https://continew.top/logo.svg',
|
||||
url: 'https://gitee.com/continew/continew-admin-ui'
|
||||
},
|
||||
{
|
||||
name: 'ContiNew Cloud(孵化中)',
|
||||
desc: 'ContiNew Admin 微服务版本',
|
||||
logo: 'https://doc.charles7c.top/logo.svg',
|
||||
logo: 'https://continew.top/logo.svg',
|
||||
url: '#'
|
||||
},
|
||||
{
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<a-card title="特别赞助" :bordered="false" size="medium" class="card gi_card_title">
|
||||
<template #extra>
|
||||
<a-link href="https://doc.charles7c.top/other/sponsor.html" target="_blank" rel="noopener">>></a-link>
|
||||
<a-link href="https://continew.top/other/sponsor.html" target="_blank" rel="noopener">>></a-link>
|
||||
</template>
|
||||
<a-row :gutter="8">
|
||||
<a-carousel
|
||||
@@ -29,7 +29,7 @@ interface ImageType {
|
||||
|
||||
const imageList: ImageType[] = [
|
||||
{
|
||||
src: `https://doc.charles7c.top/img/sponsor/ad/roovps.jpg?${new Date().getTime()}`,
|
||||
src: `https://continew.top/img/sponsor/ad/roovps.jpg?${new Date().getTime()}`,
|
||||
title: 'ROOVPS',
|
||||
link: 'https://roovps.com/cart'
|
||||
}
|
||||
|
@@ -15,5 +15,5 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
const imageSrc = [`https://doc.charles7c.top/qrcode.jpg?${new Date().getTime()}`]
|
||||
const imageSrc = [`https://continew.top/qrcode.jpg?${new Date().getTime()}`]
|
||||
</script>
|
||||
|
@@ -13,8 +13,8 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import LoginLog from './LoginLog.vue'
|
||||
import OperationLog from './OperationLog.vue'
|
||||
import LoginLog from './login/index.vue'
|
||||
import OperationLog from './operation/index.vue'
|
||||
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
|
@@ -51,7 +51,7 @@ import { useUserStore } from '@/stores'
|
||||
import { useTable } from '@/hooks'
|
||||
import { isMobile } from '@/utils'
|
||||
|
||||
defineOptions({ name: 'OnlineUser' })
|
||||
defineOptions({ name: 'MonitorOnline' })
|
||||
|
||||
const columns: TableInstanceColumns[] = [
|
||||
{
|
||||
|
@@ -14,7 +14,7 @@
|
||||
<script setup lang="ts">
|
||||
import BasicSetting from './components/BasicSetting.vue'
|
||||
|
||||
defineOptions({ name: 'Config' })
|
||||
defineOptions({ name: 'SystemConfig' })
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
|
@@ -89,7 +89,7 @@ import { useDownload } from '@/hooks'
|
||||
import { isMobile } from '@/utils'
|
||||
import has from '@/utils/has'
|
||||
|
||||
defineOptions({ name: 'Dept' })
|
||||
defineOptions({ name: 'SystemDept' })
|
||||
|
||||
const columns: TableInstanceColumns[] = [
|
||||
{ title: '名称', dataIndex: 'name', width: 170, ellipsis: true, tooltip: true },
|
||||
|
@@ -60,7 +60,7 @@ import { useTable } from '@/hooks'
|
||||
import { isMobile } from '@/utils'
|
||||
import has from '@/utils/has'
|
||||
|
||||
defineOptions({ name: 'Dict' })
|
||||
defineOptions({ name: 'SystemDict' })
|
||||
|
||||
const columns: TableInstanceColumns[] = [
|
||||
{
|
||||
|
@@ -13,7 +13,7 @@
|
||||
import FileAside from './main/FileAside.vue'
|
||||
import FileMain from './main/FileMain/index.vue'
|
||||
|
||||
defineOptions({ name: 'File' })
|
||||
defineOptions({ name: 'SystemFile' })
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
@@ -101,7 +101,7 @@ import { DisEnableStatusList } from '@/constant/common'
|
||||
import { isMobile } from '@/utils'
|
||||
import has from '@/utils/has'
|
||||
|
||||
defineOptions({ name: 'Menu' })
|
||||
defineOptions({ name: 'SystemMenu' })
|
||||
|
||||
const columns: TableInstanceColumns[] = [
|
||||
{ title: '菜单标题', dataIndex: 'title', slotName: 'title', width: 170, fixed: !isMobile() ? 'left' : undefined },
|
||||
|
@@ -77,7 +77,7 @@ import { isMobile } from '@/utils'
|
||||
import { DisEnableStatusList } from '@/constant/common'
|
||||
import has from '@/utils/has'
|
||||
|
||||
defineOptions({ name: 'Role' })
|
||||
defineOptions({ name: 'SystemRole' })
|
||||
|
||||
const { data_scope_enum } = useDict('data_scope_enum')
|
||||
|
||||
|
@@ -76,7 +76,7 @@ import { isMobile } from '@/utils'
|
||||
import has from '@/utils/has'
|
||||
import { DisEnableStatusList } from '@/constant/common'
|
||||
|
||||
defineOptions({ name: 'Storage' })
|
||||
defineOptions({ name: 'SystemStorage' })
|
||||
|
||||
const { storage_type_enum } = useDict('storage_type_enum')
|
||||
|
||||
@@ -104,7 +104,7 @@ const columns: TableInstanceColumns[] = [
|
||||
title: '操作',
|
||||
slotName: 'action',
|
||||
width: 130,
|
||||
3
|
||||
show: has.hasPermOr(['system:storage:update', 'system:storage:delete']),
|
||||
align: 'center',
|
||||
fixed: !isMobile() ? 'right' : undefined
|
||||
}
|
||||
|
@@ -112,7 +112,7 @@ import getAvatar from '@/utils/avatar'
|
||||
import has from '@/utils/has'
|
||||
import { DisEnableStatusList } from '@/constant/common'
|
||||
|
||||
defineOptions({ name: 'User' })
|
||||
defineOptions({ name: 'SystemUser' })
|
||||
|
||||
const columns: TableInstanceColumns[] = [
|
||||
{
|
||||
|
Reference in New Issue
Block a user