😎1、增加docker的编译环境,取消对windows编译结果的依赖 2、修复按钮、菜单图标线条模糊问题
This commit is contained in:
parent
4f029aba0c
commit
7a332e4c21
@ -23,6 +23,7 @@ import setIntroduction from '/@/utils/setIconfont';
|
||||
// import Watermark from '/@/utils/watermark';
|
||||
import { initIdleTimeout } from '/@/utils/idleTimeout';
|
||||
import { updateFavicon } from '/@/utils/sysInfo';
|
||||
|
||||
// 引入组件
|
||||
const LockScreen = defineAsyncComponent(() => import('/@/layout/lockScreen/index.vue'));
|
||||
const Settings = defineAsyncComponent(() => import('/@/layout/navBars/topBar/settings.vue'));
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<template v-for="val in chils">
|
||||
<el-sub-menu :index="val.path" :key="val.path" v-if="val.children && val.children.length > 0">
|
||||
<template #title>
|
||||
<SvgIcon :name="val.meta.icon" />
|
||||
<SvgIcon :name="val.meta.icon" style="font-size: 16px" />
|
||||
<span>{{ $t(`message.menu.${val.meta.title}`) }}</span>
|
||||
</template>
|
||||
<sub-item :chil="val.children" />
|
||||
@ -10,12 +10,12 @@
|
||||
<template v-else>
|
||||
<el-menu-item :index="val.path" :key="val.path">
|
||||
<template v-if="!val.meta.isLink || (val.meta.isLink && val.meta.isIframe)">
|
||||
<SvgIcon :name="val.meta.icon" />
|
||||
<SvgIcon :name="val.meta.icon" style="font-size: 16px" />
|
||||
<span>{{ $t(`message.menu.${val.meta.title}`) }}</span>
|
||||
</template>
|
||||
<template v-else>
|
||||
<a class="w100" @click.prevent="onALinkClick(val)">
|
||||
<SvgIcon :name="val.meta.icon" />
|
||||
<SvgIcon :name="val.meta.icon" style="font-size: 16px" />
|
||||
{{ $t(`message.menu.${val.meta.title}`) }}
|
||||
</a>
|
||||
</template>
|
||||
|
||||
@ -5,21 +5,21 @@
|
||||
.el-button {
|
||||
font-family: var(--el-font-family);
|
||||
}
|
||||
// 第三方字体图标大小
|
||||
.el-button:not(.is-circle) i.el-icon,
|
||||
.el-button i.iconfont,
|
||||
.el-button i.fa,
|
||||
.el-button--default i.iconfont,
|
||||
.el-button--default i.fa {
|
||||
font-size: 14px !important;
|
||||
// margin-right: 5px; // vue-next-admin 原有样式
|
||||
}
|
||||
// // 第三方字体图标大小
|
||||
// .el-button:not(.is-circle) i.el-icon,
|
||||
// .el-button i.iconfont,
|
||||
// .el-button i.fa,
|
||||
// .el-button--default i.iconfont,
|
||||
// .el-button--default i.fa {
|
||||
// font-size: 14px !important;
|
||||
// // margin-right: 5px; // vue-next-admin 原有样式
|
||||
// }
|
||||
|
||||
.el-button--small i.iconfont,
|
||||
.el-button--small i.fa {
|
||||
font-size: 12px !important;
|
||||
// margin-right: 5px; // vue-next-admin 原有样式
|
||||
}
|
||||
// .el-button--small i.iconfont,
|
||||
// .el-button--small i.fa {
|
||||
// font-size: 12px !important;
|
||||
// // margin-right: 5px; // vue-next-admin 原有样式
|
||||
// }
|
||||
|
||||
/* Input 输入框、InputNumber 计数器
|
||||
------------------------------- */
|
||||
@ -390,7 +390,7 @@
|
||||
height: 28px;
|
||||
}
|
||||
.el-button [class*=el-icon]+span{
|
||||
margin-left: 0;
|
||||
margin-left: 4px;
|
||||
}
|
||||
}
|
||||
.el-table [class*=el-table__row--level] .el-table__expand-icon {
|
||||
@ -483,10 +483,10 @@
|
||||
max-height: 274px !important;
|
||||
}
|
||||
|
||||
/*修复Cascader 级联选择器高度问题*/
|
||||
.el-cascader-menu__wrap.el-scrollbar__wrap {
|
||||
height: 204px !important;
|
||||
}
|
||||
// /*修复Cascader 级联选择器高度问题*/
|
||||
// .el-cascader-menu__wrap.el-scrollbar__wrap {
|
||||
// height: 204px !important;
|
||||
// }
|
||||
|
||||
/*用于界面高度自适应(main.vue),区分 scrollbar__view,防止其它使用 scrollbar 的地方出现滚动条消失*/
|
||||
.layout-container-view .el-scrollbar__view {
|
||||
@ -521,24 +521,24 @@
|
||||
color: var(--el-color-danger) !important;
|
||||
}
|
||||
|
||||
// 级联选择-点击文本也生效
|
||||
.el-cascader-panel .el-radio {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 10;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: -8px;
|
||||
}
|
||||
// // 级联选择-点击文本也生效
|
||||
// .el-cascader-panel .el-radio {
|
||||
// width: 100%;
|
||||
// height: 100%;
|
||||
// z-index: 10;
|
||||
// position: absolute;
|
||||
// top: 0px;
|
||||
// right: -8px;
|
||||
// }
|
||||
|
||||
.el-cascader-panel .el-checkbox {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 10;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 0px;
|
||||
}
|
||||
// .el-cascader-panel .el-checkbox {
|
||||
// width: 100%;
|
||||
// height: 100%;
|
||||
// z-index: 10;
|
||||
// position: absolute;
|
||||
// top: 0px;
|
||||
// right: 0px;
|
||||
// }
|
||||
|
||||
$--el-table-text-color: #fb6d49;
|
||||
|
||||
|
||||
@ -283,7 +283,7 @@
|
||||
<script setup lang="ts" name="mqttx">
|
||||
import { reactive, ref, onMounted, nextTick } from 'vue';
|
||||
import { Search, ChatDotSquare, TopRight, Star, Operation, Setting, Connection, Discount, Open, Delete, Position } from '@element-plus/icons-vue';
|
||||
import * as MQTT from 'mqtt/dist/mqtt.min'; // 针对4.3.7版本的引用方法。5.7.x会提示错误 (import * as MQTT from "mqtt")
|
||||
import * as MQTT from "mqtt"
|
||||
import mittBus from '/@/utils/mitt'; // 事件总线mitt 解决打包后错误Uncaught (in promise) ReferenceError: Cannot access 'oe' before initialization
|
||||
|
||||
// vue 3 + vite use MQTT.js refer to https://github.com/mqttjs/MQTT.js/issues/1269
|
||||
|
||||
@ -125,12 +125,12 @@ import { JobCreateTypeEnum, UpdateJobDetailInput } from '/@/api-services/system/
|
||||
|
||||
// HttpMethod 定义,来源后端 HttpMethod 对象的序列化
|
||||
// 下面定义内容【不要】加空格,否则 getHttpJobMessage 中 JSON.stringify(httpJobMessageNet.HttpMethod) 后无法匹配
|
||||
const httpMethodDef = {
|
||||
const httpMethodDef: Record<string, string> = {
|
||||
get: '{"Method":"GET"}',
|
||||
post: '{"Method":"POST"}',
|
||||
put: '{"Method":"PUT"}',
|
||||
delete: '{"Method":"DELETE"}',
|
||||
} as EmptyObjectType;
|
||||
};
|
||||
|
||||
const props = defineProps({
|
||||
title: String,
|
||||
|
||||
@ -159,7 +159,7 @@ const state = reactive({
|
||||
ruleForm: {} as UpdateMenuInput,
|
||||
});
|
||||
// 级联选择器配置选项
|
||||
const cascaderProps = { checkStrictly: true, emitPath: false, value: 'id', label: 'title' };
|
||||
const cascaderProps = { checkOnClickNode: true, checkStrictly: true, emitPath: false, value: 'id', label: 'title' };
|
||||
|
||||
// 获取全局组件大小
|
||||
const getGlobalComponentSize = computed(() => {
|
||||
|
||||
18
docker/docker-compose-builder.yml
Normal file
18
docker/docker-compose-builder.yml
Normal file
@ -0,0 +1,18 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
web-builder:
|
||||
image: node:22-alpine # 官方Node.js v22镜像(Alpine版仅约180MB):ml-citation{ref="3,4" data="citationList"}
|
||||
volumes:
|
||||
- ../Web/:/app # 挂载项目代码目录
|
||||
- ./.env.production:/app/.env.production
|
||||
working_dir: /app
|
||||
environment:
|
||||
NODE_ENV: development
|
||||
command: sh -c "npm install --legacy-peer-deps --registry=https://registry.npmmirror.com && npm run build"
|
||||
net-builder:
|
||||
image: mcr.microsoft.com/dotnet/sdk:9.0
|
||||
volumes:
|
||||
- ../Admin.NET/:/app
|
||||
working_dir: /app
|
||||
command: dotnet build Admin.NET.sln -c Release
|
||||
@ -9,7 +9,7 @@ services:
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
volumes:
|
||||
- "./nginx/dist:/usr/share/nginx/html"
|
||||
- ../Web/dist:/usr/share/nginx/html
|
||||
- "./nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro"
|
||||
- "./nginx/key:/etc/nginx/key/"
|
||||
links:
|
||||
@ -38,16 +38,69 @@ services:
|
||||
volumes:
|
||||
- ./mysql/mysql:/var/lib/mysql
|
||||
- ./mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf
|
||||
redis:
|
||||
image: 'redis:latest' # 使用最新版本的 Redis 镜像,也可以指定特定版本如 'redis:6.2.7'
|
||||
container_name: my-redis # 自定义容器名称
|
||||
ports:
|
||||
- '6379:6379' # 映射宿主机的 6379 端口到容器的 6379 端口
|
||||
volumes: # 持久化数据
|
||||
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf
|
||||
- ./redis/data:/data:rw
|
||||
- ./redis/logs:/logs
|
||||
#command: ['redis-server', '--appendonly', 'yes'] # 启用AOF持久化
|
||||
command: ['redis-server','/usr/local/etc/redis/redis.conf']
|
||||
environment: # 设置环境变量,例如密码
|
||||
- REDIS_PASSWORD=123456
|
||||
minio:
|
||||
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
|
||||
container_name: minio
|
||||
restart: always
|
||||
environment:
|
||||
- MINIO_ROOT_USER=admin
|
||||
- MINIO_ROOT_PASSWORD=admin123456
|
||||
volumes:
|
||||
- ./minio/data:/data
|
||||
- ./minio/config:/root/.minio
|
||||
ports:
|
||||
- "9104:9000" # API端口
|
||||
- "9105:9001" # 控制台端口
|
||||
command: server /data --console-address ":9001"
|
||||
tdengine:
|
||||
image: tdengine/tdengine:3.3.6.13
|
||||
volumes:
|
||||
- ./tdengine/taos/dnode/data:/var/lib/taos
|
||||
- ./tdengine/taos/dnode/log:/var/log/taos
|
||||
hostname: tdengine
|
||||
container_name: tdengine
|
||||
privileged: true
|
||||
environment:
|
||||
TAOS_FQDN: "tdengine"
|
||||
TAOS_FIRST_EP: "tdengine" # 指向首个节点主机名
|
||||
TAOS_SECOND_EP: "tdengine" # 可选备用节点
|
||||
|
||||
|
||||
ports:
|
||||
- 6030:6030
|
||||
- 6041:6041
|
||||
- 6044-6049:6044-6049
|
||||
- 6044-6045:6044-6045/udp
|
||||
- 6060:6060
|
||||
|
||||
|
||||
adminNet:
|
||||
image: mcr.microsoft.com/dotnet/aspnet:6.0
|
||||
image: mcr.microsoft.com/dotnet/aspnet:9.0
|
||||
ports:
|
||||
- "9102:5050"
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
volumes:
|
||||
- "./app:/app"
|
||||
- ../Admin.NET/Admin.NET.Web.Entry/bin/Release/net9.0/:/app
|
||||
- ./app/Configuration/:/app/Configuration/
|
||||
- ./app/wait-for-it.sh:/app/wait-for-it.sh
|
||||
working_dir: /app
|
||||
command: ["/app/wait-for-it.sh", "mysql:3306", "-t", "120", "--","dotnet", "Admin.NET.Web.Entry.dll"]
|
||||
command: ["/bin/bash", "-c", "/app/wait-for-it.sh mysql:3306 -t 120 && dotnet Admin.NET.Web.Entry.dll --content-root /app/wwwroot"]
|
||||
|
||||
depends_on:
|
||||
- mysql
|
||||
- redis
|
||||
|
||||
|
||||
@ -21,13 +21,15 @@ http {
|
||||
gzip_disable "MSIE [1-6]\.";
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
listen 443 ssl;
|
||||
listen 80;
|
||||
server_name localhost;
|
||||
|
||||
charset utf-8;
|
||||
ssl_certificate /etc/nginx/key/abc.admin.com.pem;
|
||||
ssl_certificate /etc/nginx/key/abc.admin.com.pem;
|
||||
ssl_certificate_key /etc/nginx/key/abc.admin.com.key;
|
||||
ssl_session_cache shared:SSL:1m;
|
||||
|
||||
location / {
|
||||
root /usr/share/nginx/html;
|
||||
try_files $uri $uri/ /index.html;
|
||||
@ -39,25 +41,20 @@ http {
|
||||
}
|
||||
|
||||
|
||||
location /prod-api/hubs {
|
||||
proxy_pass http://adminNet:5050/hubs; #启用http长连接支持websocket
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
|
||||
location /prod-api/hubs {
|
||||
proxy_pass http://adminNet:5005/hubs; #启用http长连接支持websocket
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
|
||||
location /prod-api/ {
|
||||
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header REMOTE-HOST $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_pass http://adminNet:5050/;
|
||||
}
|
||||
|
||||
|
||||
|
||||
proxy_pass http://adminNet:5005/;
|
||||
}
|
||||
|
||||
error_page 500 502 503 504 /50x.html;
|
||||
location = /50x.html {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user