黄伟杰 5 days ago
commit 374ff0009a

@ -1,5 +1,5 @@
server { server {
listen 8088; listen 80;
server_name localhost; server_name localhost;
# 关键允许上传最大100MB # 关键允许上传最大100MB
@ -23,7 +23,7 @@ server {
# 如果 inner 环境的后端服务名不同,比如叫 besure-server-inner # 如果 inner 环境的后端服务名不同,比如叫 besure-server-inner
# 就把下面的 proxy_pass 改成对应的服务名或IP # 就把下面的 proxy_pass 改成对应的服务名或IP
location /admin-api/ { location /admin-api/ {
proxy_pass http://besure_server_inner:48081; # 👈 这里改! proxy_pass http://47.116.4.53:48081; # 👈 这里改!
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@ -35,7 +35,7 @@ server {
# 其他路径保持不变 # 其他路径保持不变
location /api/ { location /api/ {
proxy_pass http://besure_server_inner:48081; # 👈 原生产后端 proxy_pass http://47.116.4.53:48081; # 👈 原生产后端
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@ -46,7 +46,7 @@ server {
} }
location /jmreport/ { location /jmreport/ {
proxy_pass http://besure_server_inner:48081; # 👈 原生产后端 proxy_pass http://47.116.4.53:48081; # 👈 原生产后端
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@ -57,7 +57,7 @@ server {
} }
location /v3/api-docs/ { location /v3/api-docs/ {
proxy_pass http://besure_server_inner:48081; # 👈 原生产后端 proxy_pass http://47.116.4.53:48081; # 👈 原生产后端
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@ -68,7 +68,7 @@ server {
} }
location /doc.html { location /doc.html {
proxy_pass http://besure_server_inner:48081; # 👈 原生产后端 proxy_pass http://47.116.4.53:48081; # 👈 原生产后端
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@ -79,21 +79,21 @@ server {
} }
location /swagger-ui/ { location /swagger-ui/ {
proxy_pass http://besure_server_inner:48081; # 👈 原生产后端 proxy_pass http://47.116.4.53:48081; # 👈 原生产后端
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
} }
# 处理Swagger静态资源 # 处理Swagger静态资源
location /webjars/ { location /webjars/ {
proxy_pass http://besure_server_inner:48081; # 👈 原生产后端 proxy_pass http://47.116.4.53:48081; # 👈 原生产后端
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
} }
# 处理API文档JSON文件 # 处理API文档JSON文件
location ~ /v3/api-docs/.*\.json$ { location ~ /v3/api-docs/.*\.json$ {
proxy_pass http://besure_server_inner:48081; # 👈 原生产后端 proxy_pass http://47.116.4.53:48081; # 👈 原生产后端
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
} }

@ -0,0 +1,112 @@
server {
listen 8088;
server_name localhost;
# 关键允许上传最大100MB
client_max_body_size 100m;
# 超时时间
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
client_body_timeout 300s;
send_timeout 300s;
# 防止大文件上传被缓冲卡死
proxy_request_buffering off;
proxy_buffering off;
# Docker DNS resolver to enable runtime upstream resolution, preventing host not found at startup
resolver 127.0.0.11 valid=10s;
# ========== 内网环境特有配置 ==========
# 如果 inner 环境的后端服务名不同,比如叫 besure-server-inner
# 就把下面的 proxy_pass 改成对应的服务名或IP
location /admin-api/ {
proxy_pass http://besure_server_ypk:48081; # 👈 这里改!
proxy_set_header Host $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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 其他路径保持不变
location /api/ {
proxy_pass http://besure_server_ypk:48081; # 👈 原生产后端
proxy_set_header Host $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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /jmreport/ {
proxy_pass http://besure_server_ypk:48081; # 👈 原生产后端
proxy_set_header Host $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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /v3/api-docs/ {
proxy_pass http://besure_server_ypk:48081; # 👈 原生产后端
proxy_set_header Host $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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /doc.html {
proxy_pass http://besure_server_ypk:48081; # 👈 原生产后端
proxy_set_header Host $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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /swagger-ui/ {
proxy_pass http://besure_server_ypk:48081; # 👈 原生产后端
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 处理Swagger静态资源
location /webjars/ {
proxy_pass http://besure_server_ypk:48081; # 👈 原生产后端
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 处理API文档JSON文件
location ~ /v3/api-docs/.*\.json$ {
proxy_pass http://besure_server_ypk:48081; # 👈 原生产后端
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 前端静态资源
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

@ -17,6 +17,7 @@
"build:stage": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode stage", "build:stage": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode stage",
"build:prod": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode prod", "build:prod": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode prod",
"build:inner": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode inner", "build:inner": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode inner",
"build:ypk": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode ypk",
"serve:dev": "vite preview --mode dev", "serve:dev": "vite preview --mode dev",
"serve:prod": "vite preview --mode prod", "serve:prod": "vite preview --mode prod",
"preview": "pnpm build:local && vite preview", "preview": "pnpm build:local && vite preview",

@ -252,8 +252,8 @@ const currentDeviceRelationRow = ref<any>()
const currentProductData = ref<any>() const currentProductData = ref<any>()
const selectedDeviceRows = ref<any[]>([]) const selectedDeviceRows = ref<any[]>([])
const deviceRelationForm = reactive({ const deviceRelationForm = reactive({
productId: undefined as number | undefined, productId: undefined as string | undefined,
devices: [] as { id: number; name: string }[] devices: [] as { id: string; name: string }[]
}) })
const deviceColumns = computed(() => [ const deviceColumns = computed(() => [
@ -304,7 +304,7 @@ const taskDetailRequestMap = new Map<string, Promise<any[]>>()
const currentDetailRequestId = ref(0) const currentDetailRequestId = ref(0)
const taskTableBusy = computed(() => taskLoading.value || taskSelectionLoading.value) const taskTableBusy = computed(() => taskLoading.value || taskSelectionLoading.value)
const getRelationName = (item: Record<string, any>, nameKeys: string[], fallbackPrefix: string, id: number) => { const getRelationName = (item: Record<string, any>, nameKeys: string[], fallbackPrefix: string, id: string) => {
for (const key of nameKeys) { for (const key of nameKeys) {
const value = item[key] const value = item[key]
if (value !== undefined && value !== null && String(value).trim() !== '') { if (value !== undefined && value !== null && String(value).trim() !== '') {
@ -318,11 +318,11 @@ const normalizeRelationList = (
fallbackRows: any[] | undefined, fallbackRows: any[] | undefined,
nameKeys: string[], nameKeys: string[],
fallbackPrefix: string fallbackPrefix: string
): { id: number; name: string }[] => { ): { id: string; name: string }[] => {
const fallbackMap = new Map<number, string>() const fallbackMap = new Map<string, string>()
;(fallbackRows || []).forEach((row) => { ;(fallbackRows || []).forEach((row) => {
const id = Number(row?.id) const id = String(row?.id)
if (!Number.isFinite(id)) return if (!id || id === 'undefined' || id === 'null') return
fallbackMap.set(id, getRelationName(row, nameKeys, fallbackPrefix, id)) fallbackMap.set(id, getRelationName(row, nameKeys, fallbackPrefix, id))
}) })
const parseArray = (source: unknown): any[] => { const parseArray = (source: unknown): any[] => {
@ -342,23 +342,23 @@ const normalizeRelationList = (
return parseArray(value) return parseArray(value)
.map((item) => { .map((item) => {
if (typeof item === 'object' && item !== null) { if (typeof item === 'object' && item !== null) {
const id = Number((item as any).id) const id = String((item as any).id)
if (!Number.isFinite(id)) return undefined if (!id || id === 'undefined' || id === 'null') return undefined
return { return {
id, id,
name: getRelationName(item as any, nameKeys, fallbackPrefix, id) name: getRelationName(item as any, nameKeys, fallbackPrefix, id)
} }
} }
const id = Number(item) const id = String(item)
if (!Number.isFinite(id)) return undefined if (!id || id === 'undefined' || id === 'null') return undefined
return { return {
id, id,
name: fallbackMap.get(id) || `${fallbackPrefix}ID:${id}` name: fallbackMap.get(id) || `${fallbackPrefix}ID:${id}`
} }
}) })
.filter((item): item is { id: number; name: string } => Boolean(item)) .filter((item): item is { id: string; name: string } => Boolean(item))
} }
const toDeviceRows = (devices: { id: number; name: string }[]) => { const toDeviceRows = (devices: { id: string; name: string }[]) => {
return devices.map((item) => ({ return devices.map((item) => ({
id: item.id, id: item.id,
deviceName: item.name, deviceName: item.name,
@ -625,7 +625,7 @@ const openDeviceRelationDialog = async (row: any) => {
deviceRelationLoading.value = true deviceRelationLoading.value = true
selectedDeviceRows.value = [] selectedDeviceRows.value = []
try { try {
const productData = await ProductApi.getProduct(Number(row.productId)) const productData = await ProductApi.getProduct(String(row.productId))
currentProductData.value = productData currentProductData.value = productData
const devices = normalizeRelationList( const devices = normalizeRelationList(
(productData as any).devices ?? (productData as any).deviceIds, (productData as any).devices ?? (productData as any).deviceIds,
@ -633,7 +633,7 @@ const openDeviceRelationDialog = async (row: any) => {
['name', 'deviceName', 'code'], ['name', 'deviceName', 'code'],
t('ProductionPlan.TaskSummary.deviceColumnName') t('ProductionPlan.TaskSummary.deviceColumnName')
) )
deviceRelationForm.productId = Number(row.productId) deviceRelationForm.productId = String(row.productId)
deviceRelationForm.devices = devices deviceRelationForm.devices = devices
selectedDeviceRows.value = toDeviceRows(devices) selectedDeviceRows.value = toDeviceRows(devices)
} finally { } finally {
@ -656,7 +656,7 @@ const handleDeviceSelectConfirm = (payload: { ids: (number | string)[]; rows: an
name: item.deviceName || item.name || item.code || `${t('ProductionPlan.TaskSummary.deviceColumnName')}ID:${id}` name: item.deviceName || item.name || item.code || `${t('ProductionPlan.TaskSummary.deviceColumnName')}ID:${id}`
} }
}) })
.filter((item): item is { id: number; name: string } => Boolean(item)) .filter((item): item is { id: string; name: string } => Boolean(item))
selectedDeviceRows.value = payload.rows selectedDeviceRows.value = payload.rows
} }
const refreshDetailListAfterDeviceSaved = async () => { const refreshDetailListAfterDeviceSaved = async () => {

Loading…
Cancel
Save