奇淼(piexlmax
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
30 changed files with 747 additions and 368 deletions
-
148deployment/server/gva-server-configmap.yaml
-
68deployment/server/gva-server-deployment.yaml
-
21deployment/server/gva-server-service.yaml
-
32deployment/web/gva-web-configmap.yaml
-
51deployment/web/gva-web-deploymemt.yaml
-
21deployment/web/gva-web-service.yaml
-
2server/Dockerfile
-
6server/initialize/router.go
-
12server/resource/template/web/table.vue.tpl
-
3server/service/system/sys_authority.go
-
14web/src/components/warningBar/warningBar.vue
-
4web/src/core/gin-vue-admin.js
-
5web/src/directive/auth.js
-
15web/src/main.js
-
191web/src/style/element_visiable.scss
-
180web/src/style/main.scss
-
12web/src/view/example/customer/customer.vue
-
14web/src/view/example/excel/excel.vue
-
12web/src/view/example/upload/upload.vue
-
53web/src/view/login/index.vue
-
15web/src/view/superAdmin/api/api.vue
-
6web/src/view/superAdmin/authority/authority.vue
-
20web/src/view/superAdmin/dictionary/sysDictionary.vue
-
12web/src/view/superAdmin/dictionary/sysDictionaryDetail.vue
-
28web/src/view/superAdmin/menu/menu.vue
-
22web/src/view/superAdmin/operation/sysOperationRecord.vue
-
14web/src/view/superAdmin/user/user.vue
-
24web/src/view/systemTools/autoCode/index.vue
-
14web/src/view/systemTools/autoCodeAdmin/index.vue
-
6web/yarn.lock
@ -0,0 +1,148 @@ |
|||||
|
apiVersion: v1 |
||||
|
kind: ConfigMap |
||||
|
metadata: |
||||
|
name: config.yaml |
||||
|
annotations: |
||||
|
flipped-aurora/gin-vue-admin: backend |
||||
|
github: "https://github.com/flipped-aurora/gin-vue-admin.git" |
||||
|
app.kubernetes.io/version: 0.0.1 |
||||
|
labels: |
||||
|
app: gva-server |
||||
|
version: gva-vue3 |
||||
|
data: |
||||
|
config.yaml: | |
||||
|
# github.com/flipped-aurora/gin-vue-admin/server Global Configuration |
||||
|
|
||||
|
# jwt configuration |
||||
|
jwt: |
||||
|
signing-key: 'qmPlus' |
||||
|
expires-time: 604800 |
||||
|
buffer-time: 86400 |
||||
|
|
||||
|
# zap logger configuration |
||||
|
zap: |
||||
|
level: 'info' |
||||
|
format: 'console' |
||||
|
prefix: '[github.com/flipped-aurora/gin-vue-admin/server]' |
||||
|
director: 'log' |
||||
|
link-name: 'latest_log' |
||||
|
show-line: true |
||||
|
encode-level: 'LowercaseColorLevelEncoder' |
||||
|
stacktrace-key: 'stacktrace' |
||||
|
log-in-console: true |
||||
|
|
||||
|
# redis configuration |
||||
|
redis: |
||||
|
db: 0 |
||||
|
addr: '127.0.0.1:6379' |
||||
|
password: '' |
||||
|
|
||||
|
# email configuration |
||||
|
email: |
||||
|
to: 'xxx@qq.com' |
||||
|
port: 465 |
||||
|
from: 'xxx@163.com' |
||||
|
host: 'smtp.163.com' |
||||
|
is-ssl: true |
||||
|
secret: 'xxx' |
||||
|
nickname: 'test' |
||||
|
|
||||
|
# casbin configuration |
||||
|
casbin: |
||||
|
model-path: './resource/rbac_model.conf' |
||||
|
|
||||
|
# system configuration |
||||
|
system: |
||||
|
env: 'develop' # Change to "develop" to skip authentication for development mode |
||||
|
addr: 8888 |
||||
|
db-type: 'mysql' |
||||
|
oss-type: 'local' # 控制oss选择走本期还是 七牛等其他仓 自行增加其他oss仓可以在 server/utils/upload/upload.go 中 NewOss函数配置 |
||||
|
use-multipoint: false |
||||
|
|
||||
|
# captcha configuration |
||||
|
captcha: |
||||
|
key-long: 6 |
||||
|
img-width: 240 |
||||
|
img-height: 80 |
||||
|
|
||||
|
# mysql connect configuration |
||||
|
# 未初始化之前请勿手动修改数据库信息!!!如果一定要手动初始化请看(https://www.github.com/flipped-aurora/gin-vue-admin/server.com/docs/first) |
||||
|
mysql: |
||||
|
path: '' |
||||
|
config: '' |
||||
|
db-name: '' |
||||
|
username: '' |
||||
|
password: '' |
||||
|
max-idle-conns: 10 |
||||
|
max-open-conns: 100 |
||||
|
log-mode: false |
||||
|
log-zap: "" |
||||
|
|
||||
|
# local configuration |
||||
|
local: |
||||
|
path: 'uploads/file' |
||||
|
|
||||
|
# autocode configuration |
||||
|
autocode: |
||||
|
transfer-restart: true |
||||
|
root: "" |
||||
|
server: /server |
||||
|
server-api: /api/v1/autocode |
||||
|
server-initialize: /initialize |
||||
|
server-model: /model/autocode |
||||
|
server-request: /model/autocode/request/ |
||||
|
server-router: /router/autocode |
||||
|
server-service: /service/autocode |
||||
|
web: /web/src |
||||
|
web-api: /api |
||||
|
web-flow: /view |
||||
|
web-form: /view |
||||
|
web-table: /view |
||||
|
|
||||
|
# qiniu configuration (请自行七牛申请对应的 公钥 私钥 bucket 和 域名地址) |
||||
|
qiniu: |
||||
|
zone: 'ZoneHuaDong' |
||||
|
bucket: '' |
||||
|
img-path: '' |
||||
|
use-https: false |
||||
|
access-key: '' |
||||
|
secret-key: '' |
||||
|
use-cdn-domains: false |
||||
|
|
||||
|
|
||||
|
# aliyun oss configuration |
||||
|
aliyun-oss: |
||||
|
endpoint: 'yourEndpoint' |
||||
|
access-key-id: 'yourAccessKeyId' |
||||
|
access-key-secret: 'yourAccessKeySecret' |
||||
|
bucket-name: 'yourBucketName' |
||||
|
bucket-url: 'yourBucketUrl' |
||||
|
base-path: 'yourBasePath' |
||||
|
|
||||
|
# tencent cos configuration |
||||
|
tencent-cos: |
||||
|
bucket: 'xxxxx-10005608' |
||||
|
region: 'ap-shanghai' |
||||
|
secret-id: 'xxxxxxxx' |
||||
|
secret-key: 'xxxxxxxx' |
||||
|
base-url: 'https://gin.vue.admin' |
||||
|
path-prefix: 'github.com/flipped-aurora/gin-vue-admin/server' |
||||
|
|
||||
|
# excel configuration |
||||
|
excel: |
||||
|
dir: './resource/excel/' |
||||
|
|
||||
|
|
||||
|
# timer task db clear table |
||||
|
Timer: |
||||
|
start: true |
||||
|
spec: "@daily" # 定时任务详细配置参考 https://pkg.go.dev/github.com/robfig/cron/v3 |
||||
|
detail: [ |
||||
|
# tableName: 需要清理的表名 |
||||
|
# compareField: 需要比较时间的字段 |
||||
|
# interval: 时间间隔, 具体配置详看 time.ParseDuration() 中字符串表示 且不能为负数 |
||||
|
# 2160h = 24 * 30 * 3 -> 三个月 |
||||
|
{ tableName: "sys_operation_records" , compareField: "created_at", interval: "2160h" }, |
||||
|
{ tableName: "jwt_blacklists" , compareField: "created_at", interval: "168h" } |
||||
|
#{ tableName: "log2" , compareField: "created_at", interval: "2160h" } |
||||
|
] |
@ -0,0 +1,68 @@ |
|||||
|
apiVersion: apps/v1 |
||||
|
kind: Deployment |
||||
|
metadata: |
||||
|
name: gva-server |
||||
|
annotations: |
||||
|
flipped-aurora/gin-vue-admin: backend |
||||
|
github: "https://github.com/flipped-aurora/gin-vue-admin.git" |
||||
|
app.kubernetes.io/version: 0.0.1 |
||||
|
labels: |
||||
|
app: gva-server |
||||
|
version: gva-vue3 |
||||
|
spec: |
||||
|
replicas: 1 |
||||
|
selector: |
||||
|
matchLabels: |
||||
|
app: gva-server |
||||
|
version: gva-vue3 |
||||
|
template: |
||||
|
metadata: |
||||
|
labels: |
||||
|
app: gva-server |
||||
|
version: gva-vue3 |
||||
|
spec: |
||||
|
containers: |
||||
|
- name: gin-vue-admin-container |
||||
|
image: registry.cn-hangzhou.aliyuncs.com/gin-vue-admin/server:40fc3aa6 |
||||
|
imagePullPolicy: IfNotPresent |
||||
|
ports: |
||||
|
- containerPort: 8888 |
||||
|
name: http |
||||
|
volumeMounts: |
||||
|
- mountPath: /go/src/github.com/flipped-aurora/gin-vue-admin/server/config.yaml |
||||
|
name: config |
||||
|
subPath: config.yaml |
||||
|
- mountPath: /etc/localtime |
||||
|
name: localtime |
||||
|
resources: |
||||
|
limits: |
||||
|
cpu: 1000m |
||||
|
memory: 2000Mi |
||||
|
requests: |
||||
|
cpu: 100m |
||||
|
memory: 200Mi |
||||
|
# readinessProbe: |
||||
|
# httpGet: |
||||
|
# path: /ready |
||||
|
# port: http |
||||
|
# initialDelaySeconds: 20 |
||||
|
# periodSeconds: 10 |
||||
|
# successThreshold: 1 |
||||
|
# failureThreshold: 3 |
||||
|
# livenessProbe: |
||||
|
# httpGet: |
||||
|
# path: /health |
||||
|
# port: http |
||||
|
# initialDelaySeconds: 20 |
||||
|
# periodSeconds: 10 |
||||
|
# successThreshold: 1 |
||||
|
# failureThreshold: 3 |
||||
|
#imagePullSecrets: |
||||
|
# - name: docker-registry |
||||
|
volumes: |
||||
|
- name: localtime |
||||
|
hostPath: |
||||
|
path: /etc/localtime |
||||
|
- name: config |
||||
|
configMap: |
||||
|
name: config.yaml |
@ -0,0 +1,21 @@ |
|||||
|
apiVersion: v1 |
||||
|
kind: Service |
||||
|
metadata: |
||||
|
name: gva-server |
||||
|
annotations: |
||||
|
flipped-aurora/gin-vue-admin: backend |
||||
|
github: "https://github.com/flipped-aurora/gin-vue-admin.git" |
||||
|
app.kubernetes.io/version: 0.0.1 |
||||
|
labels: |
||||
|
app: gva-server |
||||
|
version: gva-vue3 |
||||
|
spec: |
||||
|
selector: |
||||
|
app: gva-server |
||||
|
version: gva-vue3 |
||||
|
ports: |
||||
|
- port: 8888 |
||||
|
name: http |
||||
|
targetPort: 8888 |
||||
|
type: ClusterIP |
||||
|
# type: NodePort |
@ -0,0 +1,32 @@ |
|||||
|
apiVersion: v1 |
||||
|
kind: ConfigMap |
||||
|
metadata: |
||||
|
name: my.conf |
||||
|
data: |
||||
|
my.conf: | |
||||
|
server { |
||||
|
listen 8080; |
||||
|
server_name localhost; |
||||
|
|
||||
|
#charset koi8-r; |
||||
|
#access_log logs/host.access.log main; |
||||
|
|
||||
|
location / { |
||||
|
root /usr/share/nginx/html; |
||||
|
add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0'; |
||||
|
try_files $uri $uri/ /index.html; |
||||
|
} |
||||
|
|
||||
|
location /api { |
||||
|
proxy_set_header Host $http_host; |
||||
|
proxy_set_header X-Real-IP $remote_addr; |
||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
||||
|
proxy_set_header X-Forwarded-Proto $scheme; |
||||
|
rewrite ^/api/(.*)$ /$1 break; #重写 |
||||
|
proxy_pass http://gva-server:8888; # 设置代理服务器的协议和地址 |
||||
|
} |
||||
|
|
||||
|
location /api/swagger/index.html { |
||||
|
proxy_pass http://gva-server:8888/swagger/index.html; |
||||
|
} |
||||
|
} |
@ -0,0 +1,51 @@ |
|||||
|
apiVersion: apps/v1 |
||||
|
kind: Deployment |
||||
|
metadata: |
||||
|
name: gva-web |
||||
|
annotations: |
||||
|
flipped-aurora/gin-vue-admin: ui |
||||
|
github: "https://github.com/flipped-aurora/gin-vue-admin.git" |
||||
|
app.kubernetes.io/version: 0.0.1 |
||||
|
labels: |
||||
|
app: gva-web |
||||
|
version: gva-vue3 |
||||
|
spec: |
||||
|
replicas: 1 |
||||
|
selector: |
||||
|
matchLabels: |
||||
|
app: gva-web |
||||
|
version: gva-vue3 |
||||
|
template: |
||||
|
metadata: |
||||
|
labels: |
||||
|
app: gva-web |
||||
|
version: gva-vue3 |
||||
|
spec: |
||||
|
containers: |
||||
|
- name: gin-vue-admin-nginx-container |
||||
|
image: registry.cn-hangzhou.aliyuncs.com/gin-vue-admin/web:40fc3aa6 |
||||
|
imagePullPolicy: IfNotPresent |
||||
|
ports: |
||||
|
- containerPort: 8080 |
||||
|
name: http |
||||
|
readinessProbe: |
||||
|
tcpSocket: |
||||
|
port: 8080 |
||||
|
initialDelaySeconds: 10 |
||||
|
periodSeconds: 10 |
||||
|
successThreshold: 1 |
||||
|
failureThreshold: 3 |
||||
|
resources: |
||||
|
limits: |
||||
|
cpu: 500m |
||||
|
memory: 1000Mi |
||||
|
requests: |
||||
|
cpu: 100m |
||||
|
memory: 100Mi |
||||
|
volumeMounts: |
||||
|
- mountPath: /etc/nginx/conf.d/ |
||||
|
name: nginx-config |
||||
|
volumes: |
||||
|
- name: nginx-config |
||||
|
configMap: |
||||
|
name: my.conf |
@ -0,0 +1,21 @@ |
|||||
|
apiVersion: v1 |
||||
|
kind: Service |
||||
|
metadata: |
||||
|
name: gva-web |
||||
|
annotations: |
||||
|
flipped-aurora/gin-vue-admin: ui |
||||
|
github: "https://github.com/flipped-aurora/gin-vue-admin.git" |
||||
|
app.kubernetes.io/version: 0.0.1 |
||||
|
labels: |
||||
|
app: gva-web |
||||
|
version: gva-vue3 |
||||
|
spec: |
||||
|
type: NodePort |
||||
|
# type: ClusterIP |
||||
|
ports: |
||||
|
- name: http |
||||
|
port: 8080 |
||||
|
targetPort: 8080 |
||||
|
selector: |
||||
|
app: gva-web |
||||
|
version: gva-vue3 |
@ -1,22 +1,25 @@ |
|||||
import { createApp } from 'vue' |
import { createApp } from 'vue' |
||||
import 'element-plus/dist/index.css' |
import 'element-plus/dist/index.css' |
||||
|
import './style/element_visiable.scss' |
||||
import ElementPlus from 'element-plus' |
import ElementPlus from 'element-plus' |
||||
import zhCn from 'element-plus/es/locale/lang/zh-cn' |
import zhCn from 'element-plus/es/locale/lang/zh-cn' |
||||
// 引入gin-vue-admin前端初始化相关内容
|
// 引入gin-vue-admin前端初始化相关内容
|
||||
import './core/gin-vue-admin' |
import './core/gin-vue-admin' |
||||
// 引入封装的router
|
// 引入封装的router
|
||||
import router from '@/router/index' |
import router from '@/router/index' |
||||
import { run } from '@/core/gin-vue-admin.js' |
|
||||
|
import run from '@/core/gin-vue-admin.js' |
||||
|
import auth from '@/directive/auth' |
||||
|
|
||||
import '@/permission' |
import '@/permission' |
||||
import { store } from '@/store/index' |
import { store } from '@/store/index' |
||||
|
|
||||
import { auth } from '@/directive/auth' |
|
||||
|
|
||||
import App from './App.vue' |
import App from './App.vue' |
||||
const app = createApp(App) |
const app = createApp(App) |
||||
run(app) |
|
||||
auth(app) |
|
||||
app.config.productionTip = false |
app.config.productionTip = false |
||||
app.use(store).use(router).use(ElementPlus, { locale: zhCn }).mount('#app') |
|
||||
|
app.use(run) |
||||
|
.use(auth) |
||||
|
.use(store) |
||||
|
.use(router) |
||||
|
.use(ElementPlus, { locale: zhCn }).mount('#app') |
||||
|
|
||||
export default app |
export default app |
@ -1,21 +1,192 @@ |
|||||
/* 改变主题色变量 */ |
/* 改变主题色变量 */ |
||||
$--color-primary: #1890ff; |
|
||||
|
|
||||
#app{ |
#app{ |
||||
.el-button{ |
.el-button{ |
||||
font-weight: 400; |
font-weight: 400; |
||||
|
border-radius: 2px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.el-dialog{ |
||||
|
border-radius: 2px; |
||||
|
} |
||||
|
|
||||
|
::-webkit-scrollbar-track-piece { |
||||
|
background-color: #f8f8f8; |
||||
|
} |
||||
|
|
||||
|
::-webkit-scrollbar { |
||||
|
width: 9px; |
||||
|
height: 9px; |
||||
|
} |
||||
|
|
||||
|
::-webkit-scrollbar-thumb { |
||||
|
background-color: #dddddd; |
||||
|
background-clip: padding-box; |
||||
|
min-height: 28px; |
||||
border-radius: 4px; |
border-radius: 4px; |
||||
} |
} |
||||
|
|
||||
|
::-webkit-scrollbar-thumb:hover { |
||||
|
background-color: #bbb; |
||||
|
} |
||||
|
|
||||
|
.el-button--primary { |
||||
|
--el-button-font-color: #ffffff; |
||||
|
--el-button-background-color: #4D70FF; |
||||
|
--el-button-border-color: #4D70FF; |
||||
|
--el-button-hover-color: #0d84ff; |
||||
|
--el-button-active-font-color: #e6e6e6; |
||||
|
--el-button-active-background-color: #0d84ff; |
||||
|
--el-button-active-border-color: #0d84ff; |
||||
|
} |
||||
|
|
||||
|
.el-button--primary { |
||||
|
--el-button-font-color: #ffffff; |
||||
|
--el-button-background-color: #4D70FF; |
||||
|
--el-button-border-color: #4D70FF; |
||||
|
--el-button-hover-color: #0d84ff; |
||||
|
--el-button-active-font-color: #e6e6e6; |
||||
|
--el-button-active-background-color: #0d84ff; |
||||
|
--el-button-active-border-color: #0d84ff; |
||||
|
} |
||||
|
|
||||
|
:root { |
||||
|
--el-color-primary: #4D70FF; |
||||
|
} |
||||
|
|
||||
|
.gva-search-box { |
||||
|
.el-collapse { |
||||
|
border: none; |
||||
|
.el-collapse-item__header, |
||||
|
.el-collapse-item__wrap { |
||||
|
border-bottom: none; |
||||
|
} |
||||
|
} |
||||
|
padding: 24px; |
||||
|
padding-bottom: 2px; |
||||
|
background-color: #fff; |
||||
|
border-radius: 2px; |
||||
|
margin-bottom: 12px; |
||||
|
.el-form { |
||||
|
.el-form-item { |
||||
|
padding-right: 28px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.gva-form-box { |
||||
|
padding: 24px; |
||||
|
background-color: #fff; |
||||
|
border-radius: 2px; |
||||
} |
} |
||||
///* 改变 icon 字体路径变量,必需 */ |
|
||||
//$--font-path: '~element-ui/lib/theme-chalk/fonts'; |
|
||||
// |
|
||||
// |
|
||||
// |
|
||||
//@import "~element-ui/packages/theme-chalk/src/index"; |
|
||||
// |
|
||||
|
|
||||
|
.gva-table-box { |
||||
|
padding: 24px; |
||||
|
background-color: #fff; |
||||
|
border-radius: 2px; |
||||
|
} |
||||
|
|
||||
:export { |
|
||||
colorPrimary: $--color-primary |
|
||||
|
.gva-pagination { |
||||
|
display: flex; |
||||
|
justify-content: flex-end; |
||||
|
.el-pagination__editor { |
||||
|
.el-input__inner { |
||||
|
height: 32px; |
||||
|
} |
||||
|
} |
||||
|
.el-pagination__total { |
||||
|
line-height: 32px !important; |
||||
|
} |
||||
|
.btn-prev { |
||||
|
padding-right: 6px; |
||||
|
display: inline-flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
width: 32px; |
||||
|
height: 32px; |
||||
|
} |
||||
|
.number { |
||||
|
display: inline-flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
width: 32px; |
||||
|
height: 32px; |
||||
|
} |
||||
|
.btn-quicknext { |
||||
|
display: inline-flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
width: 32px; |
||||
|
height: 32px; |
||||
|
} |
||||
|
.btn-next { |
||||
|
padding-left: 6px; |
||||
|
width: 32px; |
||||
|
height: 32px; |
||||
|
display: inline-flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
.active { |
||||
|
background: #4D70FF; |
||||
|
border-radius: 2px; |
||||
|
color: #ffffff !important; |
||||
|
} |
||||
|
.el-pager li.active+li { |
||||
|
border-left: 1px solid #ddd !important; |
||||
|
} |
||||
|
.el-pagination__sizes { |
||||
|
.el-input { |
||||
|
.el-input__suffix { |
||||
|
margin-top: 2px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.el-pagination__jump { |
||||
|
.el-pagination__editor {} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.el-button--mini { |
||||
|
min-height: 32px; |
||||
|
} |
||||
|
|
||||
|
.el-button { |
||||
|
padding: 8px 16px; |
||||
|
border-radius: 2px; |
||||
|
&.el-button--text { |
||||
|
padding: 8px 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.el-dialog { |
||||
|
padding: 12px; |
||||
|
.el-dialog__body { |
||||
|
padding: 12px 6px; |
||||
|
} |
||||
|
.el-dialog__header { |
||||
|
.el-dialog__title { |
||||
|
font-size: 14px; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
padding: 2px 20px 12px 20px; |
||||
|
border-bottom: 1px solid #E4E4E4; |
||||
|
} |
||||
|
.el-dialog__headerbtn { |
||||
|
top: 16px; |
||||
|
} |
||||
|
.el-dialog__footer { |
||||
|
margin-top: -12px; |
||||
|
padding: 0 0 16px 0; |
||||
|
.dialog-footer { |
||||
|
.el-button { |
||||
|
padding-left: 24px; |
||||
|
padding-right: 24px; |
||||
|
} |
||||
|
.el-button+.el-button { |
||||
|
margin-left: 30px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
} |
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue