From 2e5d532f234a9b8ec0e092cf025f0417be4b68c9 Mon Sep 17 00:00:00 2001 From: ZhangAo Date: Fri, 21 Aug 2026 17:34:18 +0800 Subject: [PATCH] 20260821173417 --- .../.playwright-cli/analyze-dialog-lines.mjs | 97 ++++ code/fms/.playwright-cli/dialog-before.png | Bin 0 -> 168491 bytes code/fms/.playwright-cli/dialog-debug.png | Bin 0 -> 167990 bytes .../.playwright-cli/inspect-dialog-bars.mjs | 92 ++++ code/fms/.playwright-cli/measure-dialog.mjs | 57 ++ code/fms/.playwright-cli/nav-debug.mjs | 29 + .../fms/.playwright-cli/pixel-scan-dialog.mjs | 97 ++++ code/fms/.playwright-cli/pixel-scan2.mjs | 72 +++ code/fms/.playwright-cli/pixel-scan3.mjs | 123 +++++ code/fms/.playwright-cli/walk-dialog-dom.mjs | 68 +++ code/fms/FMS新系统核心表结构设计.md | 341 +++++++++--- .../migrations/100_initialize_fms_new.sql | 509 ++++++++++++++++++ .../101_drop_physical_foreign_keys.sql | 44 ++ .../src/components/fms-file/FileListPanel.vue | 9 +- .../src/components/fms-file/FmsFile.vue | 24 + .../src/components/fms-file/FmsFileModal.vue | 4 - code/fms/fms-vue/src/services/http.js | 17 +- code/fms/fms-vue/src/theme/tokens.css | 2 +- code/fms/fms-vue/src/views/login/index.vue | 3 +- 19 files changed, 1495 insertions(+), 93 deletions(-) create mode 100644 code/fms/.playwright-cli/analyze-dialog-lines.mjs create mode 100644 code/fms/.playwright-cli/dialog-before.png create mode 100644 code/fms/.playwright-cli/dialog-debug.png create mode 100644 code/fms/.playwright-cli/inspect-dialog-bars.mjs create mode 100644 code/fms/.playwright-cli/measure-dialog.mjs create mode 100644 code/fms/.playwright-cli/nav-debug.mjs create mode 100644 code/fms/.playwright-cli/pixel-scan-dialog.mjs create mode 100644 code/fms/.playwright-cli/pixel-scan2.mjs create mode 100644 code/fms/.playwright-cli/pixel-scan3.mjs create mode 100644 code/fms/.playwright-cli/walk-dialog-dom.mjs create mode 100644 code/fms/fms-api/config/migrations/100_initialize_fms_new.sql create mode 100644 code/fms/fms-api/config/migrations/101_drop_physical_foreign_keys.sql diff --git a/code/fms/.playwright-cli/analyze-dialog-lines.mjs b/code/fms/.playwright-cli/analyze-dialog-lines.mjs new file mode 100644 index 00000000..cf5ad302 --- /dev/null +++ b/code/fms/.playwright-cli/analyze-dialog-lines.mjs @@ -0,0 +1,97 @@ +import { chromium } from 'playwright-core' +import { PNG } from 'pngjs' + +const BASE = 'http://localhost:5082' +const browser = await chromium.launch({ + headless: true, + executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', +}) +const page = await browser.newPage({ viewport: { width: 1440, height: 900 }, deviceScaleFactor: 1 }) + +await page.addInitScript(() => { + sessionStorage.setItem('fms-login', JSON.stringify({ loginInfo: { token: 'dev-token', user: { id: 1, name: 'dev', account: 'g3soft' } } })) + localStorage.setItem('fms-user', JSON.stringify({ userInfo: { orgId: 'G3HD', account: 'g3soft' } })) +}) +await page.route('**/api/**', async (route) => { + const req = route.request() + const url = req.url() + let body = {} + try { body = req.postDataJSON() || {} } catch {} + if (url.includes('/data/loaddata')) { + const rows = body.view_name === 's_module' ? [{ b_id: 1, b_code: 'b_port', b_name: '港口管理' }] : + body.view_name === 'bf_files_cateid' ? [{ b_id: '10', b_name: '合同文件' }] : [] + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: rows }) }) + } + if (url.includes('/data/page')) { + const files = Array.from({ length: 4 }, (_, i) => ({ + subid: String(1000 + i), father: '1001', mx_moduleid: '1', mx_cate_id: '10', + mx_filename: `文件-${i + 1}.pdf`, mx_filesize: (i + 1) * 1024 * 1024, + mx_fileext: 'pdf', mx_mapfilename: '', + })) + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: { rows: files, total: files.length } }) }) + } + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: null }) }) +}) + +await page.goto(`${BASE}/file-demo`, { waitUntil: 'networkidle', timeout: 30000 }) +await page.waitForTimeout(2000) +await page.locator('button:has-text("声明式弹窗")').click() +await page.waitForTimeout(1500) + +const buf = await page.screenshot({ fullPage: false }) +const png = PNG.sync.read(buf) + +// Scan for "line-like" pixels: contiguous vertical runs of a gray border color in the splitter region. +// Detect distinct vertical line clusters (x positions with many pixels of border color). +const { width, height, data } = png +const isBorderColor = (x, y) => { + const i = (y * width + x) * 4 + const r = data[i], g = data[i + 1], b = data[i + 2] + // fms-border rgb(229,230,235) — treat near-gray light lines + return Math.abs(r - g) <= 6 && Math.abs(g - b) <= 6 && r >= 200 && r <= 245 +} +const colCounts = new Array(width).fill(0) +for (let x = 0; x < width; x++) { + for (let y = 200; y < 850; y++) { + if (isBorderColor(x, y)) colCounts[x]++ + } +} +// Find clusters of consecutive columns with meaningful counts +const clusters = [] +let start = -1 +for (let x = 0; x < width; x++) { + if (colCounts[x] > 300) { + if (start === -1) start = x + } else if (start !== -1) { + clusters.push({ from: start, to: x - 1, count: colCounts[start] }) + start = -1 + } +} +if (start !== -1) clusters.push({ from: start, to: width - 1, count: colCounts[start] }) +console.log('vertical line clusters (border-colored, >300px tall):') +console.log(JSON.stringify(clusters, null, 2)) + +// Also check the modal resize handles positions +const handles = await page.evaluate(() => { + const hs = Array.from(document.querySelectorAll('.fms-modal-resizer')).map((el) => { + const r = el.getBoundingClientRect() + const cs = getComputedStyle(el) + const before = getComputedStyle(el, '::before') + return { + cls: el.className, + x: Math.round(r.x), y: Math.round(r.y), w: Math.round(r.width), h: Math.round(r.height), + beforeW: before.width, beforeH: before.height, beforeOpacity: before.opacity, + } + }) + const bars = Array.from(document.querySelectorAll('.fms-splitter-bar')).map((el) => { + const r = el.getBoundingClientRect() + return { cls: el.className, x: Math.round(r.x), y: Math.round(r.y), w: Math.round(r.width), h: Math.round(r.height) } + }) + return { handles, bars } +}) +console.log('modal resize handles + splitter bars:') +console.log(JSON.stringify(handles, null, 2)) + +// Save the screenshot for reference +require('fs').writeFileSync('.playwright-cli/dialog-geo.png', buf) +await browser.close() diff --git a/code/fms/.playwright-cli/dialog-before.png b/code/fms/.playwright-cli/dialog-before.png new file mode 100644 index 0000000000000000000000000000000000000000..394592b0733dafd50c156ce6a1147dc625145c3a GIT binary patch literal 168491 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%0DH(N{PRS??X~G#{GXON$~WS1JKVC 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 literal 0 HcmV?d00001 diff --git a/code/fms/.playwright-cli/dialog-debug.png b/code/fms/.playwright-cli/dialog-debug.png new file mode 100644 index 0000000000000000000000000000000000000000..5ecf17053da61301cd72c8c106654d17a384a11d GIT binary patch literal 167990 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%0A4*Pthf`_+p;gJ{y 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�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 XO2hS14+;NOT|-<%Mz~N=&-?!XR#3e& literal 0 HcmV?d00001 diff --git a/code/fms/.playwright-cli/inspect-dialog-bars.mjs b/code/fms/.playwright-cli/inspect-dialog-bars.mjs new file mode 100644 index 00000000..d8222adf --- /dev/null +++ b/code/fms/.playwright-cli/inspect-dialog-bars.mjs @@ -0,0 +1,92 @@ +import { chromium } from 'playwright-core' + +const BASE = 'http://localhost:5082' +const browser = await chromium.launch({ + headless: true, + executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', +}) +const page = await browser.newPage({ viewport: { width: 1440, height: 900 } }) + +await page.addInitScript(() => { + sessionStorage.setItem('fms-login', JSON.stringify({ loginInfo: { token: 'dev-token', user: { id: 1, name: 'dev', account: 'g3soft' } } })) + localStorage.setItem('fms-user', JSON.stringify({ userInfo: { orgId: 'G3HD', account: 'g3soft' } })) +}) +await page.route('**/api/**', async (route) => { + const req = route.request() + const url = req.url() + let body = {} + try { body = req.postDataJSON() || {} } catch {} + if (url.includes('/data/loaddata')) { + const rows = body.view_name === 's_module' ? [{ b_id: 1, b_code: 'b_port', b_name: '港口管理' }] : + body.view_name === 'bf_files_cateid' ? [{ b_id: '10', b_name: '合同文件' }] : [] + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: rows }) }) + } + if (url.includes('/data/page')) { + const files = Array.from({ length: 4 }, (_, i) => ({ + subid: String(1000 + i), father: '1001', mx_moduleid: '1', mx_cate_id: '10', + mx_filename: `文件-${i + 1}.pdf`, mx_filesize: (i + 1) * 1024 * 1024, + mx_fileext: 'pdf', mx_mapfilename: '', + })) + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: { rows: files, total: files.length } }) }) + } + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: null }) }) +}) + +await page.goto(`${BASE}/file-demo`, { waitUntil: 'networkidle', timeout: 30000 }) +await page.waitForTimeout(2000) +await page.locator('button:has-text("声明式弹窗")').click() +await page.waitForTimeout(1500) + +const result = await page.evaluate(() => { + const ff = document.querySelector('.ff-splitter') + if (!ff) return { error: 'no .ff-splitter' } + const all = ff.querySelectorAll(':scope > *') + const items = Array.from(all).map((el, i) => { + const cls = el.className + const rect = el.getBoundingClientRect() + const cs = getComputedStyle(el) + const barInfo = cls.includes('fms-splitter-bar') + ? (() => { + const style = getComputedStyle(el, '::before') + const grip = el.querySelector('.fms-splitter-bar-grip') + const gripStyle = grip ? getComputedStyle(grip) : null + return { + w: Math.round(rect.width), + beforeW: style.width, + beforeH: style.height, + beforeBg: style.background, + gripW: gripStyle ? gripStyle.width : null, + gripH: gripStyle ? gripStyle.height : null, + gripOpacity: gripStyle ? gripStyle.opacity : null, + } + })() + : null + return { + index: i, + class: cls, + left: Math.round(rect.left), + top: Math.round(rect.top), + width: Math.round(rect.width), + height: Math.round(rect.height), + csWidth: cs.width, + csMargin: cs.margin, + csFlex: cs.flex, + csFlexBasis: cs.flexBasis, + barInfo, + } + }) + const container = ff.closest('.ff-container') + const containerRect = container ? container.getBoundingClientRect() : null + const containerCS = container ? getComputedStyle(container) : null + const modalBody = document.querySelector('.fms-modal-body') + const modalBodyRect = modalBody ? modalBody.getBoundingClientRect() : null + const panels = Array.from(ff.querySelectorAll(':scope > .fms-splitter-panel')).map((el) => { + const r = el.getBoundingClientRect() + const cs = getComputedStyle(el) + return { w: Math.round(r.width), h: Math.round(r.height), flex: cs.flex, flexBasis: cs.flexBasis, padding: cs.padding, border: cs.border } + }) + return { items, containerRect, containerCS: containerCS ? { border: containerCS.border, padding: containerCS.padding } : null, modalBodyRect, panels } +}) + +console.log(JSON.stringify(result, null, 2)) +await browser.close() diff --git a/code/fms/.playwright-cli/measure-dialog.mjs b/code/fms/.playwright-cli/measure-dialog.mjs new file mode 100644 index 00000000..3534f491 --- /dev/null +++ b/code/fms/.playwright-cli/measure-dialog.mjs @@ -0,0 +1,57 @@ +import { chromium } from 'playwright-core' + +const BASE = 'http://localhost:5082' +const browser = await chromium.launch({ + headless: true, + executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', +}) +const page = await browser.newPage({ viewport: { width: 1600, height: 1000 } }) +const logs = [] +page.on('console', (m) => { + if (m.type() === 'error') logs.push(`[console.error] ${m.text()}`) +}) +page.on('pageerror', (e) => logs.push(`[pageerror] ${e.message}`)) + +await page.addInitScript(() => { + sessionStorage.setItem( + 'fms-login', + JSON.stringify({ loginInfo: { token: 'dev-token', user: { id: 1, name: 'dev' } } }), + ) + localStorage.setItem('fms-user', JSON.stringify({ userInfo: { orgId: 'G3HD', account: 'g3soft' } })) +}) +// mock all API calls so the fake token never gets 401'd +await page.route('**/api/**', (route) => + route.fulfill({ + status: 200, + contentType: 'application/json', + body: JSON.stringify({ code: 0, data: null, message: '' }), + }), +) + +try { + await page.goto(`${BASE}/file-demo`, { waitUntil: 'networkidle', timeout: 30000 }) + await page.waitForTimeout(1500) + console.log('url after load:', page.url()) + + const clickInfo = await page.evaluate(() => { + const els = Array.from(document.querySelectorAll('.button, button')) + const el = els.find((b) => (b.textContent || '').includes('声明式弹窗')) + if (!el) return { found: false } + el.click() + return { found: true } + }) + console.log('click:', JSON.stringify(clickInfo)) + await page.waitForTimeout(1200) + + const state = await page.evaluate(() => ({ + url: location.href, + modalCount: document.querySelectorAll('.fms-modal').length, + ffCount: document.querySelectorAll('.ff-container').length, + ffSplitter: !!document.querySelector('.ff-splitter'), + })) + console.log('state:', JSON.stringify(state)) +} catch (e) { + console.log('ERROR:', String(e)) +} +console.log('logs:', JSON.stringify(logs.slice(0, 10), null, 2)) +await browser.close() diff --git a/code/fms/.playwright-cli/nav-debug.mjs b/code/fms/.playwright-cli/nav-debug.mjs new file mode 100644 index 00000000..46a8ea59 --- /dev/null +++ b/code/fms/.playwright-cli/nav-debug.mjs @@ -0,0 +1,29 @@ +import { chromium } from 'playwright-core' + +const BASE = 'http://localhost:5082' +const browser = await chromium.launch({ + headless: true, + executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', +}) +const page = await browser.newPage({ viewport: { width: 1600, height: 1000 } }) +page.on('framenavigated', (f) => { + if (f === page.mainFrame()) console.log('nav ->', f.url()) +}) + +await page.addInitScript(() => { + sessionStorage.setItem( + 'fms-login', + JSON.stringify({ loginInfo: { token: 'dev-token', user: { id: 1, name: 'dev' } } }), + ) + localStorage.setItem('fms-user', JSON.stringify({ userInfo: { orgId: 'G3HD', account: 'g3soft' } })) +}) + +await page.goto(`${BASE}/file-demo`, { waitUntil: 'domcontentloaded', timeout: 30000 }) +await page.waitForTimeout(2500) +console.log('final url:', page.url()) +console.log('session:', await page.evaluate(() => sessionStorage.getItem('fms-login'))) +console.log( + 'body snippet:', + await page.evaluate(() => (document.body.textContent || '').slice(0, 120).replace(/\s+/g, ' ')), +) +await browser.close() diff --git a/code/fms/.playwright-cli/pixel-scan-dialog.mjs b/code/fms/.playwright-cli/pixel-scan-dialog.mjs new file mode 100644 index 00000000..0d00308a --- /dev/null +++ b/code/fms/.playwright-cli/pixel-scan-dialog.mjs @@ -0,0 +1,97 @@ +import { chromium } from 'playwright-core' + +const BASE = 'http://localhost:5082' +const browser = await chromium.launch({ + headless: true, + executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', +}) +const page = await browser.newPage({ viewport: { width: 1440, height: 900 }, deviceScaleFactor: 1 }) + +await page.addInitScript(() => { + sessionStorage.setItem('fms-login', JSON.stringify({ loginInfo: { token: 'dev-token', user: { id: 1, name: 'dev', account: 'g3soft' } } })) + localStorage.setItem('fms-user', JSON.stringify({ userInfo: { orgId: 'G3HD', account: 'g3soft' } })) +}) +await page.route('**/api/**', async (route) => { + const req = route.request() + const url = req.url() + let body = {} + try { body = req.postDataJSON() || {} } catch {} + if (url.includes('/data/loaddata')) { + const rows = body.view_name === 's_module' ? [{ b_id: 1, b_code: 'b_port', b_name: '港口管理' }] : + body.view_name === 'bf_files_cateid' ? [{ b_id: '10', b_name: '合同文件' }] : [] + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: rows }) }) + } + if (url.includes('/data/page')) { + const files = Array.from({ length: 4 }, (_, i) => ({ + subid: String(1000 + i), father: '1001', mx_moduleid: '1', mx_cate_id: '10', + mx_filename: `文件-${i + 1}.pdf`, mx_filesize: (i + 1) * 1024 * 1024, + mx_fileext: 'pdf', mx_mapfilename: '', + })) + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: { rows: files, total: files.length } }) }) + } + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: null }) }) +}) + +await page.goto(`${BASE}/file-demo`, { waitUntil: 'networkidle', timeout: 30000 }) +await page.waitForTimeout(2000) +await page.locator('button:has-text("声明式弹窗")').click() +await page.waitForTimeout(1500) + +// Take screenshot as base64, load into canvas inside the page, and sample pixel columns +const b64 = await page.screenshot({ encoding: 'base64' }) +const analysis = await page.evaluate(async (b64) => { + const img = new Image() + img.src = 'data:image/png;base64,' + b64 + await img.decode() + const canvas = document.createElement('canvas') + canvas.width = img.width + canvas.height = img.height + const ctx = canvas.getContext('2d') + ctx.drawImage(img, 0, 0) + const { width, height } = canvas + + // get color at pixel + const px = (x, y) => { + const d = ctx.getImageData(x, y, 1, 1).data + return `${d[0]},${d[1]},${d[2]}` + } + + // Scan a horizontal strip at y = 500 (mid of dialog) from x=570 to x=1410 + // and report runs of distinct colors + const y = 500 + const runs = [] + let cur = null + for (let x = 570; x < 1410; x++) { + const c = px(x, y) + if (cur && cur.color === c) { + cur.to = x + } else { + if (cur) runs.push(cur) + cur = { color: c, from: x, to: x } + } + } + if (cur) runs.push(cur) + + // Vertical line detection: for a given x, count how many y in [215, 850] have the same color + const lineAt = (x) => { + const counts = new Map() + for (let yy = 215; yy < 850; yy += 2) { + const c = px(x, yy) + counts.set(c, (counts.get(c) || 0) + 1) + } + const sorted = [...counts.entries()].sort((a, b) => b[1] - a[1]).slice(0, 3) + return sorted.map(([c, n]) => ({ color: c, count: n })) + } + + // Check the two bar regions: every x in the bar area, list dominant colors + const bars = [] + for (const [x0, x1] of [[795, 806], [1301, 1312]]) { + const cols = [] + for (let x = x0; x <= x1; x++) cols.push({ x, colors: lineAt(x) }) + bars.push(cols) + } + return { runs, bars, imgW: width, imgH: height } +}, b64) + +console.log(JSON.stringify(analysis, null, 2)) +await browser.close() diff --git a/code/fms/.playwright-cli/pixel-scan2.mjs b/code/fms/.playwright-cli/pixel-scan2.mjs new file mode 100644 index 00000000..11ea43c1 --- /dev/null +++ b/code/fms/.playwright-cli/pixel-scan2.mjs @@ -0,0 +1,72 @@ +import { chromium } from 'playwright-core' + +const BASE = 'http://localhost:5082' +const browser = await chromium.launch({ + headless: true, + executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', +}) +const page = await browser.newPage({ viewport: { width: 1440, height: 900 }, deviceScaleFactor: 1 }) + +await page.addInitScript(() => { + sessionStorage.setItem('fms-login', JSON.stringify({ loginInfo: { token: 'dev-token', user: { id: 1, name: 'dev', account: 'g3soft' } } })) + localStorage.setItem('fms-user', JSON.stringify({ userInfo: { orgId: 'G3HD', account: 'g3soft' } })) +}) +await page.route('**/api/**', async (route) => { + const req = route.request() + const url = req.url() + let body = {} + try { body = req.postDataJSON() || {} } catch {} + if (url.includes('/data/loaddata')) { + const rows = body.view_name === 's_module' ? [{ b_id: 1, b_code: 'b_port', b_name: '港口管理' }] : + body.view_name === 'bf_files_cateid' ? [{ b_id: '10', b_name: '合同文件' }] : [] + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: rows }) }) + } + if (url.includes('/data/page')) { + const files = Array.from({ length: 4 }, (_, i) => ({ + subid: String(1000 + i), father: '1001', mx_moduleid: '1', mx_cate_id: '10', + mx_filename: `文件-${i + 1}.pdf`, mx_filesize: (i + 1) * 1024 * 1024, + mx_fileext: 'pdf', mx_mapfilename: '', + })) + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: { rows: files, total: files.length } }) }) + } + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: null }) }) +}) + +await page.goto(`${BASE}/file-demo`, { waitUntil: 'networkidle', timeout: 30000 }) +await page.waitForTimeout(2000) +await page.locator('button:has-text("声明式弹窗")').click() +await page.waitForTimeout(1500) + +const b64 = await page.screenshot({ encoding: 'base64' }) +const analysis = await page.evaluate(async (b64) => { + const bin = atob(b64) + const bytes = new Uint8Array(bin.length) + for (let i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i) + const blob = new Blob([bytes], { type: 'image/png' }) + const bmp = await createImageBitmap(blob) + const canvas = document.createElement('canvas') + canvas.width = bmp.width + canvas.height = bmp.height + const ctx = canvas.getContext('2d') + ctx.drawImage(bmp, 0, 0) + const { width, height } = canvas + + const px = (x, y) => { + const d = ctx.getImageData(x, y, 1, 1).data + return `${d[0]},${d[1]},${d[2]}` + } + + // For each x in the splitter region, count how many sample rows are the border-gray color + // and report a compact "row" profile at several y positions + const yPositions = [220, 300, 400, 500, 600, 700] + const profile = [] + for (let x = 370; x <= 930; x++) { + const row = {} + for (const y of yPositions) row[`y${y}`] = px(x, y) + profile.push({ x, ...row }) + } + return { imgW: width, imgH: height, profile } +}, b64) + +console.log(JSON.stringify(analysis, null, 2)) +await browser.close() diff --git a/code/fms/.playwright-cli/pixel-scan3.mjs b/code/fms/.playwright-cli/pixel-scan3.mjs new file mode 100644 index 00000000..9ee57d6a --- /dev/null +++ b/code/fms/.playwright-cli/pixel-scan3.mjs @@ -0,0 +1,123 @@ +import { chromium } from 'playwright-core' +import zlib from 'node:zlib' + +const BASE = 'http://localhost:5082' +const browser = await chromium.launch({ + headless: true, + executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', +}) +const page = await browser.newPage({ viewport: { width: 1440, height: 900 }, deviceScaleFactor: 1 }) + +await page.addInitScript(() => { + sessionStorage.setItem('fms-login', JSON.stringify({ loginInfo: { token: 'dev-token', user: { id: 1, name: 'dev', account: 'g3soft' } } })) + localStorage.setItem('fms-user', JSON.stringify({ userInfo: { orgId: 'G3HD', account: 'g3soft' } })) +}) +await page.route('**/api/**', async (route) => { + const req = route.request() + const url = req.url() + let body = {} + try { body = req.postDataJSON() || {} } catch {} + if (url.includes('/data/loaddata')) { + const rows = body.view_name === 's_module' ? [{ b_id: 1, b_code: 'b_port', b_name: '港口管理' }] : + body.view_name === 'bf_files_cateid' ? [{ b_id: '10', b_name: '合同文件' }] : [] + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: rows }) }) + } + if (url.includes('/data/page')) { + const files = Array.from({ length: 4 }, (_, i) => ({ + subid: String(1000 + i), father: '1001', mx_moduleid: '1', mx_cate_id: '10', + mx_filename: `文件-${i + 1}.pdf`, mx_filesize: (i + 1) * 1024 * 1024, + mx_fileext: 'pdf', mx_mapfilename: '', + })) + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: { rows: files, total: files.length } }) }) + } + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: null }) }) +}) + +await page.goto(`${BASE}/file-demo`, { waitUntil: 'networkidle', timeout: 30000 }) +await page.waitForTimeout(2000) +await page.locator('button:has-text("声明式弹窗")').click() +await page.waitForTimeout(1500) + +const buf = await page.screenshot() + +// ---- minimal PNG decoder ---- +function decodePNG(buf) { + if (buf.readUInt32BE(0) !== 0x89504e47) throw new Error('not png') + let pos = 8 + let width = 0, height = 0, bitDepth = 0, colorType = 0 + const idat = [] + while (pos < buf.length) { + const len = buf.readUInt32BE(pos) + const type = buf.toString('ascii', pos + 4, pos + 8) + const data = buf.subarray(pos + 8, pos + 8 + len) + if (type === 'IHDR') { + width = data.readUInt32BE(0) + height = data.readUInt32BE(4) + bitDepth = data[8] + colorType = data[9] + } else if (type === 'IDAT') { + idat.push(data) + } else if (type === 'IEND') break + pos += 12 + len + } + const channels = colorType === 6 ? 4 : colorType === 2 ? 3 : colorType === 0 ? 1 : 4 + const bpp = Math.max(1, (channels * bitDepth) / 8) + const raw = zlib.inflateSync(Buffer.concat(idat)) + const stride = width * channels + const out = Buffer.alloc(height * stride) + const paeth = (a, b, c) => { + const p = a + b - c + const pa = Math.abs(p - a), pb = Math.abs(p - b), pc = Math.abs(p - c) + if (pa <= pb && pa <= pc) return a + if (pb <= pc) return b + return c + } + for (let y = 0; y < height; y++) { + const filter = raw[y * (stride + 1)] + const row = raw.subarray(y * (stride + 1) + 1, (y + 1) * (stride + 1)) + const prev = y > 0 ? out.subarray((y - 1) * stride, y * stride) : null + const cur = out.subarray(y * stride, (y + 1) * stride) + for (let x = 0; x < stride; x++) { + const a = x >= bpp ? cur[x - bpp] : 0 + const b = prev ? prev[x] : 0 + const c = x >= bpp && prev ? prev[x - bpp] : 0 + let v = row[x] + if (filter === 1) v = (v + a) & 0xff + else if (filter === 2) v = (v + b) & 0xff + else if (filter === 3) v = (v + Math.floor((a + b) / 2)) & 0xff + else if (filter === 4) v = (v + paeth(a, b, c)) & 0xff + cur[x] = v + } + } + return { width, height, channels, data: out } +} + +const png = decodePNG(buf) +const { width, height, channels, data } = png +const px = (x, y) => { + const i = (y * width + x) * channels + return channels === 4 + ? `${data[i]},${data[i + 1]},${data[i + 2]}` + : `${data[i]},${data[i + 1]},${data[i + 2]}` +} + +// Profile horizontal strip at several y's around the two bars (x 380..940) +const yPositions = [220, 300, 400, 500, 600, 700, 800] +const compact = [] +for (let x = 385; x <= 940; x++) { + const row = { x } + for (const y of yPositions) row[`y${y}`] = px(x, y) + compact.push(row) +} + +// Also sample a vertical strip through both bars at mid height to show line thickness +const vertical = [] +for (let y = 215; y <= 720; y += 10) { + vertical.push({ y, bar1: px(400, y), bar2: px(906, y), gap1: px(397, y), gap2: px(403, y) }) +} + +console.log('HORIZONTAL PROFILE (x around both bars):') +for (const r of compact) console.log(JSON.stringify(r)) +console.log('\nVERTICAL PROFILE:') +for (const r of vertical) console.log(JSON.stringify(r)) +await browser.close() diff --git a/code/fms/.playwright-cli/walk-dialog-dom.mjs b/code/fms/.playwright-cli/walk-dialog-dom.mjs new file mode 100644 index 00000000..7c7a49cb --- /dev/null +++ b/code/fms/.playwright-cli/walk-dialog-dom.mjs @@ -0,0 +1,68 @@ +import { chromium } from 'playwright-core' + +const BASE = 'http://localhost:5082' +const browser = await chromium.launch({ + headless: true, + executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', +}) +const page = await browser.newPage({ viewport: { width: 1440, height: 900 }, deviceScaleFactor: 1 }) + +await page.addInitScript(() => { + sessionStorage.setItem('fms-login', JSON.stringify({ loginInfo: { token: 'dev-token', user: { id: 1, name: 'dev', account: 'g3soft' } } })) + localStorage.setItem('fms-user', JSON.stringify({ userInfo: { orgId: 'G3HD', account: 'g3soft' } })) +}) +await page.route('**/api/**', async (route) => { + const req = route.request() + const url = req.url() + let body = {} + try { body = req.postDataJSON() || {} } catch {} + if (url.includes('/data/loaddata')) { + const rows = body.view_name === 's_module' ? [{ b_id: 1, b_code: 'b_port', b_name: '港口管理' }] : + body.view_name === 'bf_files_cateid' ? [{ b_id: '10', b_name: '合同文件' }] : [] + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: rows }) }) + } + if (url.includes('/data/page')) { + const files = Array.from({ length: 4 }, (_, i) => ({ + subid: String(1000 + i), father: '1001', mx_moduleid: '1', mx_cate_id: '10', + mx_filename: `文件-${i + 1}.pdf`, mx_filesize: (i + 1) * 1024 * 1024, + mx_fileext: 'pdf', mx_mapfilename: '', + })) + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: { rows: files, total: files.length } }) }) + } + return route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify({ code: 0, data: null }) }) +}) + +await page.goto(`${BASE}/file-demo`, { waitUntil: 'networkidle', timeout: 30000 }) +await page.waitForTimeout(2000) +await page.locator('button:has-text("声明式弹窗")').click() +await page.waitForTimeout(1500) + +const result = await page.evaluate(() => { + const lines = [] + function info(el) { + if (!el) return null + const r = el.getBoundingClientRect() + const cs = getComputedStyle(el) + return { + tag: el.tagName.toLowerCase(), + cls: String(el.className), + x: Math.round(r.x), y: Math.round(r.y), w: Math.round(r.width), h: Math.round(r.height), + display: cs.display, + padding: cs.padding, + border: cs.border, + overflow: cs.overflow, + } + } + const walk = (el, depth) => { + if (!el || depth > 12) return + lines.push(' '.repeat(depth * 2) + JSON.stringify(info(el))) + for (const child of el.children) walk(child, depth + 1) + } + const modal = document.querySelector('.fms-modal') + if (!modal) return { error: 'no modal' } + walk(modal, 0) + return lines +}) + +console.log('RESULT:', JSON.stringify(result)) +await browser.close() diff --git a/code/fms/FMS新系统核心表结构设计.md b/code/fms/FMS新系统核心表结构设计.md index bea845a4..2e4ac9e1 100644 --- a/code/fms/FMS新系统核心表结构设计.md +++ b/code/fms/FMS新系统核心表结构设计.md @@ -8,17 +8,17 @@ 本方案坚持五项原则: 1. **沿用模块主体**:`s_module` 继续作为旧系统的数据配置主体,分类节点和数据节点在同一棵树中维护,不再增加 `s_entity`。 -2. **模块与字段分离**:`data/query` 模块声明查询源、保存源和主键字段;字段挂模块保存数据库列定义,列表、表单、查询行为由字段配置子表承载。 +2. **模块与字段分离**:`data/query` 模块声明查询源、保存源和主键字段;字段挂模块保存物理列名、字段类型和数据库列约束,列表、表单、查询行为由字段配置子表承载。 3. **菜单与模块分离**:`s_menu` 是纯导航树,只引用数据模块或固定页面;本方案只恢复旧系统的模块数据主体,不把菜单、路由和角色授权重新塞回 `s_module`。 -4. **字段定义与视图配置分责**:字段定义、列表、表单、查询是四类不同职责;本方案保留 `s_field` 作为字段定义表,并将列表、表单、查询行为分别放入 `s_field_list`、`s_field_edit`、`s_field_query`,避免一张宽表充满互不相关的空字段。 +4. **字段定义与视图配置分责**:字段定义、列表、表单、查询是四类不同职责;本方案保留 `s_field` 作为字段定义表,并将列表、表单、查询行为分别放入 `s_field_view`、`s_field_edit`、`s_field_query`,避免一张宽表充满互不相关的空字段。 5. **配置入口与存储职责分离**:管理员可从模块树或菜单树定位数据模块,在一个配置工作台内完成数据源、字段、列表、表单、查询、编码和权限配置;底层仍按模块、菜单和权限分别存储。 其余约定: - 内部主键 `b_id bigint identity(1, 1)`,跨环境稳定标识使用 `b_code`(参考旧系统)。 -- 元数据表保留物理外键(低频、高一致性,防脏数据);若担心部署顺序,可退化为逻辑外键并保留索引。 +- 全系统不建立物理外键;关联字段保留索引,引用完整性、跨模块一致性、停用与删除保护统一由服务层维护。 - 布尔语义使用 `int`(0/1),与旧系统 `s_module` 风格一致。 -- 时间使用 `datetime2`,默认 `sysdatetime()`。 +- 时间统一使用 UTC:字段类型为 `datetime2`,默认 `sysutcdatetime()`;前端按用户时区转换显示。 - 审计字段:定义类表保留 `b_inputuser_id / b_inputdatetime / b_updateuser_id / b_updatedatetime`;关联类表只保留 `b_inputdatetime`。 - `s_module.b_parent_id` 只表达模块树位置;模块间真实的引用、主从、外键和级联关系由 `s_relation` 表达。 - `b_module_type` 使用 `category/data/query`:分类节点不配置数据源,数据节点可查可存,查询节点只读。 @@ -31,21 +31,22 @@ | 1 | `s_module` | 模块树(分类/数据/查询节点,数据所有者) | | 2 | `s_field` | 字段定义(数据库列与通用控件元数据) | | 3 | `s_field_group` | 字段分组(模块级) | -| 4 | `s_field_list` | 字段列表配置(显示、排序、列宽、分组) | +| 4 | `s_field_view` | 字段视图配置(列表显示、排序、列宽、分组) | | 5 | `s_field_edit` | 字段表单配置(显示、排序、分组、必填、只读、禁用) | -| 6 | `s_field_query` | 字段查询配置(启用、排序、组件、操作符、默认值) | -| 7 | `s_relation` | 模块关系(引用/主从,驱动外键校验与级联) | +| 6 | `s_field_query` | 字段查询配置(关联字段、操作符、默认值) | +| 7 | `s_relation` | 模块关系(引用/主从/多对多,驱动外键校验与级联) | | 8 | `s_menu` | 菜单/页面导航(data 菜单直接绑定数据模块) | | 9 | `s_autocode` | 自动编码规则 | | 10 | `s_role` | 角色 | | 11 | `s_user_role` | 用户-角色 | | 12 | `s_power` | 权限点(menu/module/action/field) | -| 13 | `s_role_power` | 角色-权限 | -| 14 | `s_i18n` | 多语言资源 | -| 15 | `s_log_technical` | 技术日志(请求链路/SQL/异常/性能) | -| 16 | `s_log_login` | 登录日志(登录/退出/失败/锁定) | -| 17 | `s_log_audit` | 业务审计事件 | -| 18 | `s_log_audit_field` | 审计字段变更明细 | +| 13 | `s_role_power` | 角色-权限(允许/拒绝) | +| 14 | `s_role_scope` | 角色-模块数据范围 | +| 15 | `s_i18n` | 多语言资源 | +| 16 | `s_log_technical` | 技术日志(请求链路/SQL/异常/性能) | +| 17 | `s_log_login` | 登录日志(登录/退出/失败/锁定) | +| 18 | `s_log_audit` | 业务审计事件 | +| 19 | `s_log_audit_field` | 审计字段变更明细 | ## 3. 各表结构 ### 3.1 s_module 模块 @@ -64,18 +65,23 @@ create table s_module ( b_savetable varchar(128) null, -- 保存目标(data 可用,query 必须为空) b_keyfield varchar(50) null, -- 主键字段(data/query 使用) b_orderfield varchar(500) null, -- 默认排序表达式 - b_delete_policy varchar(20) null, -- restrict/lifecycle/cascade/hard + b_delete_policy varchar(20) null, -- restrict/lifecycle/hard;级联由 s_relation 表达 b_canuse int not null default 1, -- 是否启用 b_xh int not null default 0, -- 排序号 - b_icon varchar(50) null, -- 图标 b_bz nvarchar(1000) null, -- 描述 b_inputuser_id bigint null, - b_inputdatetime datetime2 null default sysdatetime(), + b_inputdatetime datetime2 null default sysutcdatetime(), b_updateuser_id bigint null, b_updatedatetime datetime2 null, constraint pk_s_module primary key (b_id), constraint ux_s_module_code unique (b_code), constraint ck_s_module_type check (b_module_type in ('category', 'data', 'query')), + constraint ck_s_module_delete_policy check (b_delete_policy is null or b_delete_policy in ('restrict', 'lifecycle', 'hard')), + constraint ck_s_module_config check ( + (b_module_type = 'category' and b_viewtable is null and b_savetable is null and b_keyfield is null and b_orderfield is null and b_delete_policy is null) + or (b_module_type = 'data' and b_viewtable is not null and b_savetable is not null and b_keyfield is not null and b_delete_policy is not null) + or (b_module_type = 'query' and b_viewtable is not null and b_savetable is null and b_delete_policy is null) + ), constraint ck_s_module_parent check (b_parent_id is null or b_parent_id <> b_id), constraint fk_s_module_parent foreign key (b_parent_id) references s_module (b_id) ); @@ -87,20 +93,23 @@ create index ix_s_module_savetable on s_module (b_savetable); 模块的查/存配置方式: ```text -分类模块: b_module_type = category, 查/存字段全部为空 -数据模块: b_module_type = data, b_viewtable 为查询源, b_savetable 为保存表 -查询模块: b_module_type = query, b_viewtable 为查询源, b_savetable 必须为空 +分类模块: b_module_type = category, 查/存/主键/排序/删除策略全部为空 +数据模块: b_module_type = data, b_viewtable/b_savetable/b_keyfield/b_delete_policy 必填 +查询模块: b_module_type = query, b_viewtable 必填, b_savetable/b_delete_policy 必须为空;汇总查询可不填 b_keyfield ``` +数据库约束只能判断空值,服务层还必须拒绝空字符串,并校验表、视图、主键和排序字段真实存在。模块树、菜单树和字段分组树在修改父节点时必须检查完整祖先链,禁止 `A -> B -> C -> A` 形式的间接循环。 + 删除策略取值(`b_delete_policy`): ```text restrict 主数据:有引用时拒绝删除,只能停用或合并 lifecycle 业务单据:草稿且无下游时可删,正式后只能取消/作废 -cascade 主表拥有的从数据:随主表同一事务级联删除 hard 临时记录:校验权限后直接物理删除 ``` +模块删除策略只控制“直接删除当前模块记录”是否允许;主记录删除时如何处理从记录由具体 `s_relation.b_delete_policy` 决定,因此模块层不再重复设置 `cascade`。 + ### 3.2 s_field 字段 只保存字段本身的规范定义,不混入列表、表单和查询布局。字段同步、数据库列校验和业务审计均以本表为准;三类界面行为分别放在后续配置表中。 @@ -112,31 +121,69 @@ create table s_field ( b_field varchar(50) not null, -- 物理列名(与真实表列一致) b_name nvarchar(100) not null, -- 字段名称 b_i18n varchar(150) null, -- 显示名多语言 key - b_type varchar(30) not null, -- 存储类型:varchar/decimal/datetime/int/bit/text + b_type varchar(30) not null, -- 字段类型(input/textarea/number/money/date/datetime/checkbox/select/selectId...) + b_dbtype varchar(30) not null, -- 数据库存储类型(varchar/nvarchar/int/bigint/decimal/date/datetime2/bit/text) b_length int null, -- 长度 b_precision int null, -- 数值精度(总位数) b_scale int null, -- 数值小数位 b_nullable int not null default 1, -- 数据库层是否可空 - b_default_value nvarchar(500) null, -- 默认值(文本表达) - b_options nvarchar(max) null, -- 下拉/单选选项(JSON 文本) + b_default_value nvarchar(500) null, -- 固定业务/UI 默认值(文本或 JSON 表达) + b_db_default nvarchar(500) null, -- 数据库列默认表达式(结构同步得到) + b_writemode varchar(20) not null default 'direct', -- direct/createOnly/readOnly/computed/system + b_options nvarchar(max) null, -- 字段类型配置(JSON;静态选项或 selectId 选择器配置) b_canuse int not null default 1, -- 是否启用(停用隐藏并保留数据) b_inputuser_id bigint null, - b_inputdatetime datetime2 null default sysdatetime(), + b_inputdatetime datetime2 null default sysutcdatetime(), b_updateuser_id bigint null, b_updatedatetime datetime2 null, constraint pk_s_field primary key (b_id), constraint ux_s_field_module_field unique (b_module_id, b_field), - constraint fk_s_field_module foreign key (b_module_id) references s_module (b_id) + constraint ux_s_field_module_id unique (b_module_id, b_id), + constraint fk_s_field_module foreign key (b_module_id) references s_module (b_id), + constraint ck_s_field_type check (b_type in ('input', 'textarea', 'number', 'money', 'date', 'datetime', 'checkbox', 'select', 'selectId')), + constraint ck_s_field_dbtype check (b_dbtype in ('varchar', 'nvarchar', 'char', 'nchar', 'int', 'bigint', 'smallint', 'tinyint', 'decimal', 'numeric', 'float', 'real', 'date', 'datetime', 'datetime2', 'bit', 'text', 'ntext', 'uniqueidentifier')), + constraint ck_s_field_writemode check (b_writemode in ('direct', 'createOnly', 'readOnly', 'computed', 'system')) ); create index ix_s_field_module on s_field (b_module_id, b_canuse, b_id); ``` -字段是否允许用户写入属于表单配置,由 `s_field_edit` 表达;如果需要声明数据库计算列、系统维护列等全局写入语义,可在本表增加 `b_writemode varchar(20)`(direct/createOnly/readOnly/computed/actionOnly/system)。 +`b_type` 沿用旧系统语义,直接指定字段的业务/控件类型,而不是数据库字段类型。数据库真实列类型记录在 `b_dbtype`,用于同步和结构校验;前端默认控件、值转换和展示规则由 `b_type` 决定。服务层必须执行类型兼容校验:`checkbox` 只能映射 `bit/int`;`number` 映射整数或数值类型;`money` 映射 `decimal/numeric`;`date` 映射 `date/datetime/datetime2`;`datetime` 映射 `datetime/datetime2`;`selectId` 映射可承载目标 ID 的整数、字符或 `uniqueidentifier`;`input/textarea` 映射字符类型;`select` 可映射字符或整数类型。`b_default_value` 只表示新增表单时可直接使用的固定默认值,`b_db_default` 是数据库列默认表达式,两者不能混用。 + +`b_writemode` 是通用保存服务的强制规则:`direct` 可新增可修改,`createOnly` 仅新增时写入,`readOnly/computed` 永不接收客户端写入,`system` 仅允许受信任的系统逻辑写入。查询视图中的显示列、计算列和 `v_xxx` 字段必须标记为 `readOnly/computed`,即使它们出现在 `s_field_edit` 中也不能被保存接口写入。 + +依赖其他业务数据的默认值不在 `s_field` 中配置通用规则,也不增加默认值类型字段。此类值由具体业务模块的服务逻辑处理:例如新增业务单据时,根据单据币种和业务日期查询汇率模块,将汇率写入单据作为当时的业务快照;用户修改币种或日期时,由该业务服务重新计算,是否覆盖人工修改由具体业务规则决定。 + +第一阶段沿用旧系统已有类型: + +```text +input 单行文本 +textarea 多行文本 +number 数字 +money 金额 +date 日期 +datetime 日期时间 +checkbox 布尔/复选框 +select 静态枚举下拉选择,直接保存选项值 +selectId 关联模块选择器,保存目标记录 ID +``` + +`select` 的静态选项直接放在 `b_options`。`selectId` 必须对应一条以当前字段作为外键端的启用 `s_relation`;`b_options` 只保存选择器展示配置,例如 `relationCode`、`labelField`、`searchFields` 和是否允许清空,不保存目标模块的动态数据。服务层保存配置时必须校验 relation、目标模块以及显示/搜索字段真实存在且已启用。后续增加人员选择、附件、级联选择等自定义类型时,继续扩展 `b_type` 的受控枚举,并在 `b_options` 保存该类型的专用配置。 + +示例: + +```json +{ + "relationCode": "booking.customer", + "labelField": "b_name", + "searchFields": ["b_code", "b_name"], + "allowClear": true +} +``` ### 3.3 s_field_group 字段分组 -分组是模块级独立定义,支持分组树。列表和表单可以分别通过自己的配置表引用同一个分组,也可以选择不同分组。 +分组是模块级独立定义,支持分组树。列表和表单可以分别通过自己的配置表引用同一个分组,也可以选择不同分组。配置表冗余保存 `b_module_id`,通过复合外键保证字段、分组和配置始终属于同一个模块。 ```sql create table s_field_group ( @@ -148,107 +195,168 @@ create table s_field_group ( b_xh int not null default 0, -- 分组排序 b_canuse int not null default 1, -- 是否启用(停用整组隐藏) constraint pk_s_field_group primary key (b_id), + constraint ux_s_field_group_module_id unique (b_module_id, b_id), + constraint ck_s_field_group_parent check (b_parent_id is null or b_parent_id <> b_id), constraint fk_s_field_group_module foreign key (b_module_id) references s_module (b_id), - constraint fk_s_field_group_parent foreign key (b_parent_id) references s_field_group (b_id) + constraint fk_s_field_group_parent foreign key (b_module_id, b_parent_id) references s_field_group (b_module_id, b_id) ); create index ix_s_field_group_module on s_field_group (b_module_id, b_xh, b_canuse); ``` -### 3.4 s_field_list 字段列表配置 +### 3.4 s_field_view 字段视图配置 -保存字段在列表中的显示、顺序、宽度和分组。每个字段最多一条列表配置;未创建配置记录表示该字段不进入列表。 +保存字段在列表中的显示、顺序、宽度和分组。每个模块字段最多一条列表配置;未创建配置记录表示该字段不进入列表。 ```sql -create table s_field_list ( +create table s_field_view ( b_id bigint identity(1, 1) not null, + b_module_id bigint not null, -- 所属数据模块(与字段、分组一致) b_field_id bigint not null, -- 字段 b_group_id bigint null, -- 列表分组 b_i18n varchar(150) null, -- 列表标题多语言 key(空则继承字段) b_visible int not null default 1, -- 是否显示 b_xh int not null default 0, -- 列表排序 b_width int null, -- 列宽(px) - constraint pk_s_field_list primary key (b_id), - constraint ux_s_field_list_field unique (b_field_id), - constraint fk_s_field_list_field foreign key (b_field_id) references s_field (b_id), - constraint fk_s_field_list_group foreign key (b_group_id) references s_field_group (b_id) + constraint pk_s_field_view primary key (b_id), + constraint ux_s_field_view_field unique (b_module_id, b_field_id), + constraint fk_s_field_view_module foreign key (b_module_id) references s_module (b_id), + constraint fk_s_field_view_field foreign key (b_module_id, b_field_id) references s_field (b_module_id, b_id), + constraint fk_s_field_view_group foreign key (b_module_id, b_group_id) references s_field_group (b_module_id, b_id) ); -create index ix_s_field_list_order on s_field_list (b_xh, b_id); +create index ix_s_field_view_order on s_field_view (b_xh, b_id); ``` ### 3.5 s_field_edit 字段表单配置 -保存字段在新增、编辑表单中的布局和交互行为。控件类型属于表单行为,因此放在本表,而不是放在字段物理定义中。 +保存字段在新增、编辑表单中的布局和交互行为。每个模块字段最多一条表单配置;字段的默认控件类型由 `s_field.b_type` 决定,本表只配置当前表单中的显示、必填、只读和禁用状态。 ```sql create table s_field_edit ( b_id bigint identity(1, 1) not null, + b_module_id bigint not null, -- 所属数据模块(与字段、分组一致) b_field_id bigint not null, -- 字段 b_group_id bigint null, -- 表单分组 - b_component varchar(30) null, -- input/select/date/datetime/textarea/number/checkbox/radio b_visible int not null default 1, -- 是否显示 b_required int not null default 0, -- 是否必填 b_readonly int not null default 0, -- 是否只读 b_disabled int not null default 0, -- 是否禁用 b_xh int not null default 0, -- 表单排序 constraint pk_s_field_edit primary key (b_id), - constraint ux_s_field_edit_field unique (b_field_id), - constraint fk_s_field_edit_field foreign key (b_field_id) references s_field (b_id), - constraint fk_s_field_edit_group foreign key (b_group_id) references s_field_group (b_id) + constraint ux_s_field_edit_field unique (b_module_id, b_field_id), + constraint fk_s_field_edit_module foreign key (b_module_id) references s_module (b_id), + constraint fk_s_field_edit_field foreign key (b_module_id, b_field_id) references s_field (b_module_id, b_id), + constraint fk_s_field_edit_group foreign key (b_module_id, b_group_id) references s_field_group (b_module_id, b_id) ); create index ix_s_field_edit_order on s_field_edit (b_xh, b_id); ``` -数据库可空性以 `s_field.b_nullable` 为准,表单必填以 `s_field_edit.b_required` 为准。元数据校验器应保证:数据库不可空且无数据库默认值的可编辑字段,表单不能配置为非必填。 +数据库可空性以 `s_field.b_nullable` 为准,数据库默认值以 `s_field.b_db_default` 为准,表单必填以 `s_field_edit.b_required` 为准;表单组件直接按 `s_field.b_type` 选择,不在 `s_field_edit` 重复配置。元数据校验器应保证:数据库不可空、无数据库默认值且允许客户端写入的字段,新增表单不能配置为非必填;`readOnly/computed/system` 字段不能配置为客户端必填。 ### 3.6 s_field_query 字段查询配置 -查询条件是可选集合,只有需要进入查询区的字段才创建记录。查询组件、操作符和默认查询值独立于字段默认值。 +查询条件是可选集合,只有需要进入查询区的字段才创建记录。第一阶段所有启用条件按 `b_xh` 排序,并统一使用 `AND` 组合;暂不支持 `OR`、嵌套括号和条件组。同一字段可以配置多个不同操作符,也允许通过 `b_condition_no` 配置多个相同操作符的条件。`b_module_id` 表示查询所属模块,`b_field_module_id` 表示条件字段实际所属模块;查询本模块字段时二者相同,关联查询时必须通过 `b_relation_id` 指向一条从查询模块可达的启用关系。查询组件优先使用配置中的 `b_component`;为空时再根据 `s_field.b_type` 和操作符推导。 ```sql create table s_field_query ( b_id bigint identity(1, 1) not null, - b_field_id bigint not null, -- 字段 - b_component varchar(30) not null, -- input/select/date-picker/number-range/radio-group + b_module_id bigint not null, -- 查询所属模块 + b_field_module_id bigint not null, -- 条件字段所属模块 + b_field_id bigint not null, -- 条件字段 + b_relation_id bigint null, -- 关联字段使用的模块关系 + b_component varchar(30) null, -- 查询控件覆盖(input/select/date/datetime/number/checkbox...) + b_condition_no int not null default 1, -- 同模块同字段同操作符的条件序号 b_operator varchar(20) not null, -- eq/like/gt/ge/lt/le/in/between b_default_value nvarchar(500) null, -- 默认查询值 b_canuse int not null default 1, -- 是否启用 b_xh int not null default 0, -- 查询条件排序 constraint pk_s_field_query primary key (b_id), - constraint ux_s_field_query_field unique (b_field_id), - constraint fk_s_field_query_field foreign key (b_field_id) references s_field (b_id) + constraint ux_s_field_query_condition unique (b_module_id, b_field_module_id, b_field_id, b_relation_id, b_operator, b_condition_no), + constraint fk_s_field_query_module foreign key (b_module_id) references s_module (b_id), + constraint fk_s_field_query_field foreign key (b_field_module_id, b_field_id) references s_field (b_module_id, b_id) ); create index ix_s_field_query_order on s_field_query (b_canuse, b_xh, b_id); ``` +`b_operator` 表达查询条件的比较语义,默认控件由字段定义和操作符组合推导:`b_options` 非空时优先使用下拉/多选,`datetime` 使用日期或日期时间控件,数值和日期字段在 `between` 操作符下使用范围控件。服务层必须校验操作符与字段类型匹配,并将 `in`/`between` 的默认值按约定 JSON/数组格式解析。若 `b_relation_id` 为空,字段必须属于查询模块;若不为空,关系必须连接查询模块与字段模块,并验证字段确实位于关系指定的一侧。第一阶段运行时对所有启用条件追加 `AND`,未来如需 `OR` 或括号,再增加独立的条件组模型。 + ### 3.7 s_relation 模块关系 -描述模块间的引用与主子关系,运行时据此执行外键校验、主子事务与级联删除。 +描述模块间的引用与主子关系,运行时据此执行外键校验、主子事务与级联删除。`b_module_id` 和 `b_target_module_id` 是关系两端,不预设哪一端保存外键;`b_foreign_side` 明确外键位于哪一端,两个端点字段都使用 `s_field` 主键引用,避免只写物理列名导致跨模块歧义。 ```sql create table s_relation ( b_id bigint identity(1, 1) not null, -- 内部主键 - b_module_id bigint not null, -- 主模块 - b_target_module_id bigint not null, -- 目标模块 + b_code varchar(50) not null, -- 跨环境稳定关系编码 + b_module_id bigint not null, -- 关系端 A 模块 + b_target_module_id bigint not null, -- 关系端 B 模块 b_relation_type varchar(20) not null, -- one-to-one/one-to-many/many-to-one/many-to-many - b_foreign_field varchar(50) null, -- 子表侧外键字段 - b_link_field varchar(50) null, -- 主模块侧关联字段 + b_module_field_id bigint not null, -- 端 A 关联字段 + b_target_field_id bigint not null, -- 端 B 关联字段 + b_foreign_side varchar(10) null, -- 普通关系外键所在端:module/target + b_junction_module_id bigint null, -- many-to-many 中间模块 + b_junction_module_field_id bigint null, -- 中间模块指向端 A 字段 + b_junction_target_field_id bigint null, -- 中间模块指向端 B 字段 b_ownership varchar(20) not null default 'reference', -- reference 引用/owned 主从 + b_owner_side varchar(10) null, -- owned 时主/拥有者端:module/target b_delete_policy varchar(20) null, -- restrict/set-null/cascade/archive - b_orderfield varchar(500) null, -- 子表排序字段表达式 + b_order_module_id bigint null, -- 从/被拥有模块 + b_order_field_id bigint null, -- 从模块排序字段 b_canuse int not null default 1, -- 是否启用 b_xh int not null default 0, -- 排序号 constraint pk_s_relation primary key (b_id), + constraint ux_s_relation_code unique (b_code), constraint fk_s_relation_module foreign key (b_module_id) references s_module (b_id), - constraint fk_s_relation_target_module foreign key (b_target_module_id) references s_module (b_id) + constraint fk_s_relation_target_module foreign key (b_target_module_id) references s_module (b_id), + constraint fk_s_relation_module_field foreign key (b_module_id, b_module_field_id) references s_field (b_module_id, b_id), + constraint fk_s_relation_target_field foreign key (b_target_module_id, b_target_field_id) references s_field (b_module_id, b_id), + constraint fk_s_relation_junction_module foreign key (b_junction_module_id) references s_module (b_id), + constraint fk_s_relation_junction_module_field foreign key (b_junction_module_id, b_junction_module_field_id) references s_field (b_module_id, b_id), + constraint fk_s_relation_junction_target_field foreign key (b_junction_module_id, b_junction_target_field_id) references s_field (b_module_id, b_id), + constraint fk_s_relation_order_module foreign key (b_order_module_id) references s_module (b_id), + constraint fk_s_relation_order_field foreign key (b_order_module_id, b_order_field_id) references s_field (b_module_id, b_id), + constraint ux_s_relation_key unique (b_module_id, b_target_module_id, b_module_field_id, b_target_field_id), + constraint ck_s_relation_self_fields check (b_module_id <> b_target_module_id or b_module_field_id <> b_target_field_id), + constraint ck_s_relation_type check (b_relation_type in ('one-to-one', 'one-to-many', 'many-to-one', 'many-to-many')), + constraint ck_s_relation_foreign_side check (b_foreign_side is null or b_foreign_side in ('module', 'target')), + constraint ck_s_relation_ownership check (b_ownership in ('reference', 'owned')), + constraint ck_s_relation_owner_side check (b_owner_side is null or b_owner_side in ('module', 'target')), + constraint ck_s_relation_shape check ( + (b_relation_type = 'many-to-many' and b_foreign_side is null and b_junction_module_id is not null and b_junction_module_field_id is not null and b_junction_target_field_id is not null) + or (b_relation_type <> 'many-to-many' and b_foreign_side is not null and b_junction_module_id is null and b_junction_module_field_id is null and b_junction_target_field_id is null) + ), + constraint ck_s_relation_owned check ( + (b_ownership = 'reference' and b_owner_side is null) + or (b_ownership = 'owned' and b_owner_side is not null and b_relation_type <> 'many-to-many') + ), + constraint ck_s_relation_order check ( + (b_order_module_id is null and b_order_field_id is null) + or (b_order_module_id is not null and b_order_field_id is not null) + ), + constraint ck_s_relation_delete_policy check (b_delete_policy is null or b_delete_policy in ('restrict', 'set-null', 'cascade', 'archive')) ); create index ix_s_relation_target on s_relation (b_target_module_id); + +alter table s_field_query add constraint fk_s_field_query_relation + foreign key (b_relation_id) references s_relation (b_id); ``` +关系配置必须满足以下规则: + +- `b_code` 是跨环境稳定标识,`selectId.b_options.relationCode` 和配置导入导出都使用该编码;运行时内部关联仍可使用 `b_id`。 +- 允许同一模块自关联,用于组织树、父子记录等场景;自关联时两端字段不能相同,并仍需通过 `b_foreign_side` 明确父键和外键端。 +- `one-to-one/one-to-many/many-to-one` 不填写中间模块字段且必须明确 `b_foreign_side`;`many-to-many` 必须同时填写中间模块及两个中间外键字段,且不填写 `b_foreign_side`。 +- 普通关系由 `b_foreign_side` 指定哪一端保存外键;外键字段与另一端被引用字段类型必须兼容;`one-to-one` 还要求外键字段具有唯一约束。 +- `one-to-many`/`many-to-one` 必须与 `b_foreign_side` 的方向一致:外键在端 B 时端 A 为“一”,外键在端 A 时端 B 为“一”。`set-null` 仅允许实际外键字段可空时使用。 +- `reference` 不填写 `b_owner_side`,默认删除策略为 `restrict/set-null`;`owned` 必须明确 `b_owner_side`,另一端才是从/被拥有端,只有 owned 关系允许 `cascade/archive`、主从事务保存和从表排序。 +- `b_order_module_id/b_order_field_id` 必须同时为空或同时有值;有值时模块必须是 owned 关系的从端,字段必须属于该模块。 +- 模块自身的 `b_delete_policy` 决定该模块记录能否进入删除流程;关系的 `b_delete_policy` 决定删除发生后如何处理关联记录,两者都必须通过才可执行。 +- 同一对模块可以存在多条关系,但“两端模块 + 两侧字段”必须唯一;配置、导入导出使用关系 `b_code`,运行时和关联查询使用关系 `b_id`。 + ### 3.8 s_menu 菜单/页面 菜单是独立导航树,不保存字段、列表或表单配置。`data` 菜单通过 `b_module_id` 绑定一个 `data/query` 模块,并直接使用该模块的字段、列表、表单和查询配置。 @@ -265,11 +373,11 @@ create table s_menu ( b_module_id bigint null, -- data 页面绑定的数据/查询模块 b_power_code varchar(50) null, -- 页面访问权限编码(对应 s_power.b_code) b_icon varchar(50) null, -- 图标 - b_canmenu int not null default 1, -- 是否显示在菜单 b_xh int not null default 0, -- 排序号 - b_canuse int not null default 1, -- 是否启用 + b_canuse int not null default 1, -- 是否启用(停用后不显示且不可访问) constraint pk_s_menu primary key (b_id), constraint ux_s_menu_code unique (b_code), + constraint ck_s_menu_parent check (b_parent_id is null or b_parent_id <> b_id), constraint fk_s_menu_parent foreign key (b_parent_id) references s_menu (b_id), constraint fk_s_menu_module foreign key (b_module_id) references s_module (b_id) ); @@ -292,7 +400,7 @@ create index ix_s_menu_module on s_menu (b_module_id); create table s_autocode ( b_id bigint identity(1, 1) not null, -- 内部主键 b_module_id bigint not null, -- 所属数据模块 - b_field varchar(50) not null, -- 目标字段(物理列名) + b_field_id bigint not null, -- 目标字段 b_prefix nvarchar(100) not null default '', -- 前缀 b_dateformat varchar(30) not null default 'yyyyMM', -- 日期格式 b_separator nvarchar(10) not null default '-', -- 分隔符 @@ -303,11 +411,16 @@ create table s_autocode ( b_currentvalue bigint not null default 0, -- 当前流水值 b_canuse int not null default 1, -- 是否启用 constraint pk_s_autocode primary key (b_id), - constraint ux_s_autocode_module_field unique (b_module_id, b_field), - constraint fk_s_autocode_module foreign key (b_module_id) references s_module (b_id) + constraint ux_s_autocode_module_field unique (b_module_id, b_field_id), + constraint fk_s_autocode_module foreign key (b_module_id) references s_module (b_id), + constraint fk_s_autocode_field foreign key (b_module_id, b_field_id) references s_field (b_module_id, b_id), + constraint ck_s_autocode_resettype check (b_resettype in ('none', 'day', 'month', 'year')), + constraint ck_s_autocode_values check (b_seqwidth > 0 and b_startvalue >= 0 and b_currentvalue >= 0) ); ``` +自动编码目标字段必须是当前模块的可写字符字段;服务层还需校验目标字段未配置为 `computed/system/readOnly`,并保证业务字段上的唯一性约束。规则周期切换、取号和业务保存必须在同一事务内完成。 + ### 3.10 s_role 角色 ```sql @@ -317,13 +430,16 @@ create table s_role ( b_name nvarchar(100) not null, -- 角色名称 b_i18n varchar(150) null, -- 显示名多语言 key b_remark nvarchar(500) null, -- 描述 + b_is_system int not null default 0, -- 系统内置角色(禁止普通管理员删除) + b_bypass_power int not null default 0, -- 是否绕过业务权限校验(仅超级管理员) b_canuse int not null default 1, -- 是否启用 b_inputuser_id bigint null, - b_inputdatetime datetime2 null default sysdatetime(), + b_inputdatetime datetime2 null default sysutcdatetime(), b_updateuser_id bigint null, b_updatedatetime datetime2 null, constraint pk_s_role primary key (b_id), - constraint ux_s_role_code unique (b_code) + constraint ux_s_role_code unique (b_code), + constraint ck_s_role_system_bypass check (b_bypass_power = 0 or b_is_system = 1) ); ``` @@ -335,7 +451,7 @@ create table s_user_role ( b_user_id bigint not null, -- 用户(逻辑外键,当前身份系统) b_role_id bigint not null, -- 角色 b_canuse int not null default 1, -- 是否启用该关系 - b_inputdatetime datetime2 null default sysdatetime(), + b_inputdatetime datetime2 null default sysutcdatetime(), constraint pk_s_user_role primary key (b_id), constraint ux_s_user_role unique (b_user_id, b_role_id), constraint fk_s_user_role_role foreign key (b_role_id) references s_role (b_id) @@ -353,16 +469,30 @@ create table s_power ( b_name nvarchar(100) not null, -- 权限名称 b_i18n varchar(150) null, -- 显示名多语言 key b_power_type varchar(20) not null, -- menu/module/action/field - b_resource varchar(128) null, -- 资源标识(菜单 code/模块 code/动作 code/字段) + b_resource varchar(128) null, -- 菜单 code/固定页面或扩展资源 code + b_module_id bigint null, -- module/action/field 所属模块 + b_field_id bigint null, -- field 权限对应字段 + b_operation varchar(30) not null, -- access/read/create/update/delete/export/execute/view/edit b_canuse int not null default 1, -- 是否启用 b_xh int not null default 0, -- 排序号 constraint pk_s_power primary key (b_id), - constraint ux_s_power_code unique (b_code) + constraint ux_s_power_code unique (b_code), + constraint fk_s_power_module foreign key (b_module_id) references s_module (b_id), + constraint fk_s_power_field foreign key (b_module_id, b_field_id) references s_field (b_module_id, b_id), + constraint ck_s_power_type check (b_power_type in ('menu', 'module', 'action', 'field')), + constraint ck_s_power_shape check ( + (b_power_type = 'menu' and b_resource is not null and b_module_id is null and b_field_id is null and b_operation = 'access') + or (b_power_type = 'module' and b_resource is null and b_module_id is not null and b_field_id is null and b_operation in ('read', 'create', 'update', 'delete', 'export')) + or (b_power_type = 'action' and b_resource is not null and b_module_id is not null and b_field_id is null and b_operation = 'execute') + or (b_power_type = 'field' and b_resource is null and b_module_id is not null and b_field_id is not null and b_operation in ('view', 'edit')) + ) ); create index ix_s_power_resource on s_power (b_power_type, b_resource, b_canuse); ``` +权限点的资源约束由服务层补充:`menu` 使用菜单编码且操作只能为 `access`;`module` 必须填写 `b_module_id` 且操作为 `read/create/update/delete/export`;`action` 必须填写模块和动作编码且操作为 `execute`;`field` 必须同时填写模块、字段且操作为 `view/edit`。权限编码 `b_code` 在全库唯一,资源停用后对应权限自动失效。 + ### 3.13 s_role_power 角色-权限 ```sql @@ -370,20 +500,65 @@ create table s_role_power ( b_id bigint identity(1, 1) not null, -- 内部主键 b_role_id bigint not null, -- 角色 b_power_id bigint not null, -- 权限点 + b_effect varchar(10) not null default 'allow', -- allow/deny b_canuse int not null default 1, -- 是否启用 - b_inputdatetime datetime2 null default sysdatetime(), + b_inputdatetime datetime2 null default sysutcdatetime(), constraint pk_s_role_power primary key (b_id), constraint ux_s_role_power unique (b_role_id, b_power_id), constraint fk_s_role_power_role foreign key (b_role_id) references s_role (b_id), - constraint fk_s_role_power_power foreign key (b_power_id) references s_power (b_id) + constraint fk_s_role_power_power foreign key (b_power_id) references s_power (b_id), + constraint ck_s_role_power_effect check (b_effect in ('allow', 'deny')) ); create index ix_s_role_power_power on s_role_power (b_power_id, b_canuse); ``` +### 3.14 s_role_scope 角色-模块数据范围 + +数据范围控制用户通过某个模块操作时可访问哪些业务记录。范围按角色、模块和操作配置,不承担租户隔离;本系统采用一个租户一个数据库,数据范围只解决租户内部的本人、部门、负责人等业务授权。 + +```sql +create table s_role_scope ( + b_id bigint identity(1, 1) not null, + b_role_id bigint not null, -- 角色 + b_module_id bigint not null, -- 数据模块 + b_operation varchar(20) not null, -- read/update/delete/export + b_scope_type varchar(30) not null, -- all/creator/owner/department/department-tree/custom + b_scope_no int not null default 1, -- 同角色同模块同操作的范围序号 + b_scope_field_id bigint null, -- owner/department/custom 用于匹配的业务字段 + b_scope_value nvarchar(max) null, -- 固定值或自定义条件(JSON) + b_canuse int not null default 1, + b_inputdatetime datetime2 null default sysutcdatetime(), + constraint pk_s_role_scope primary key (b_id), + constraint ux_s_role_scope unique (b_role_id, b_module_id, b_operation, b_scope_type, b_scope_field_id, b_scope_no), + constraint fk_s_role_scope_role foreign key (b_role_id) references s_role (b_id), + constraint fk_s_role_scope_module foreign key (b_module_id) references s_module (b_id), + constraint fk_s_role_scope_field foreign key (b_module_id, b_scope_field_id) references s_field (b_module_id, b_id), + constraint ck_s_role_scope_operation check (b_operation in ('read', 'update', 'delete', 'export')), + constraint ck_s_role_scope_type check (b_scope_type in ('all', 'creator', 'owner', 'department', 'department-tree', 'custom')), + constraint ck_s_role_scope_no check (b_scope_no > 0), + constraint ck_s_role_scope_shape check ( + (b_scope_type in ('all', 'creator') and b_scope_field_id is null and b_scope_value is null) + or (b_scope_type in ('owner', 'department', 'department-tree') and b_scope_field_id is not null) + or (b_scope_type = 'custom' and b_scope_value is not null) + ) +); + +create index ix_s_role_scope_role on s_role_scope (b_role_id, b_module_id, b_operation, b_canuse); +``` + +权限运行规则: + +- 默认拒绝:用户必须通过至少一个启用角色取得权限;`b_bypass_power = 1` 的受保护系统角色除外。 +- 多角色权限先合并,任一有效 `deny` 优先于所有 `allow`;没有 `allow` 视为无权。超级管理员角色只能由受保护的系统管理接口分配,不能通过普通角色维护接口创建或提权。 +- 访问数据页需要同时具备菜单 `access`、模块 `read` 和对应操作权限;前端只负责隐藏,后端接口必须按同一权限编码再次校验。 +- 字段权限区分 `view` 与 `edit`。未配置字段权限时继承模块权限;存在字段级 `deny` 时,查询结果必须移除或脱敏该字段,保存接口必须忽略并拒绝提交无编辑权限的字段。 +- 数据范围在操作权限通过后追加。`creator` 匹配记录创建人,`owner/department/department-tree` 通过 `b_scope_field_id` 与当前登录上下文匹配;`custom` 使用结构化 JSON 条件并只允许引用当前模块字段。 +- 用户拥有多个角色时,同一操作的数据范围取并集;同一角色内多个范围记录也取并集,任一角色/范围为 `all` 即不再追加范围条件。没有有效范围记录时,即使拥有操作权限也默认无数据,避免误放开全表。 + 菜单显示继承页面访问权限:用户拥有 `s_menu.b_power_code` 对应权限时菜单才显示;前端只控制显示,后端运行时必须再次校验同一个权限编码。 -### 3.14 s_i18n 多语言 +### 3.15 s_i18n 多语言 ```sql create table s_i18n ( @@ -400,7 +575,7 @@ create table s_i18n ( create index ix_s_i18n_locale on s_i18n (b_locale, b_canuse); ``` -### 3.15 s_log_technical 技术日志 +### 3.16 s_log_technical 技术日志 用于请求链路、SQL、异常、性能与外部接口排查。高频日志推荐写入 Loki/OpenSearch/Elasticsearch 等日志平台,本表用于集中日志库或短期数据库兜底,不建议长期写入租户业务库。 @@ -424,7 +599,7 @@ create table s_log_technical ( b_error_message nvarchar(2000) null, -- 错误信息 b_exception_text nvarchar(max) null, -- 异常堆栈(文本) b_context_text nvarchar(max) null, -- 上下文信息(文本) - b_occurdatetime datetime2 null default sysdatetime(), -- 发生时间(UTC) + b_occurdatetime datetime2 null default sysutcdatetime(), -- 发生时间(UTC) constraint pk_s_log_technical primary key (b_id) ); @@ -433,7 +608,7 @@ create index ix_s_log_technical_org on s_log_technical (b_org_id, b_occurdatetim create index ix_s_log_technical_level on s_log_technical (b_loglevel, b_occurdatetime desc); ``` -### 3.16 s_log_login 登录日志 +### 3.17 s_log_login 登录日志 记录登录成功、失败、退出、刷新令牌与账号锁定等安全事件,可通过 `b_request_id` / `b_trace_id` 与技术日志关联。 @@ -457,7 +632,7 @@ create table s_log_login ( b_session_id varchar(50) null, -- 会话 ID b_request_id varchar(64) null, -- 请求 ID b_trace_id varchar(64) null, -- 追踪 ID - b_occurdatetime datetime2 null default sysdatetime(), -- 登录时间(UTC) + b_occurdatetime datetime2 null default sysutcdatetime(), -- 登录时间(UTC) constraint pk_s_log_login primary key (b_id) ); @@ -466,7 +641,7 @@ create index ix_s_log_login_account on s_log_login (b_account, b_occurdatetime d create index ix_s_log_login_result on s_log_login (b_login_result, b_occurdatetime desc); ``` -### 3.17 业务审计事件与字段变更 +### 3.18 业务审计事件与字段变更 审计事件与字段变更分表存储:事件一条、字段变更多条,通过 `b_event_id` 关联。字段级明细是**面向客户的硬需求**(客户可在门户查看某个单号发生过哪些字段变更),**字段一旦发生修改即写入明细**,不按字段配置开关;`b_visibility` 控制内部/客户可见。 @@ -485,7 +660,7 @@ create table s_log_audit ( b_request_id varchar(64) null, -- 请求 ID b_trace_id varchar(64) null, -- 追踪 ID(关联技术日志) b_payload_text nvarchar(max) null, -- 事件载荷(文本,如前后快照) - b_occurdatetime datetime2 null default sysdatetime(), -- 发生时间(UTC) + b_occurdatetime datetime2 null default sysutcdatetime(), -- 发生时间(UTC) constraint pk_s_log_audit primary key (b_id) ); @@ -525,7 +700,7 @@ create index ix_s_log_audit_field_customer on s_log_audit_field (b_module_code, 当前 `s_module` 不是可独立安装、发布的软件包,因此不额外维护模块依赖 DAG。数据模块之间的引用和主从关系由 `s_relation` 表达,数据库对象依赖由实际表、视图和 Schema Compiler 校验,部署依赖由构建或插件系统管理。 ### 4.3 为什么字段定义与页面行为分表 -旧系统的字段、列表、编辑、查询虽然都挂在 `b_module_id` 下,但运行时和管理端都把它们当作四类独立配置。列表与表单的显示、排序、分组并不相同,查询条件也只覆盖部分字段。强行并入 `s_field` 会形成宽表,并混淆数据库列定义与页面行为。因此本方案保留四张职责明确的表,但统一改为通过 `b_field_id` 关联字段,字段归属再由 `s_field.b_module_id` 确定。 +旧系统的字段、列表、编辑、查询虽然都挂在 `b_module_id` 下,但运行时和管理端都把它们当作四类独立配置。列表与表单的显示、排序、分组并不相同,查询条件也只覆盖部分字段。强行并入 `s_field` 会形成宽表,并混淆数据库列定义与页面行为。因此本方案保留字段定义、列表、表单和查询条件等职责明确的表;列表、表单通过模块 + 字段/分组复合外键保证同模块,查询条件允许通过明确的 `s_relation` 引用关联模块字段。第一阶段查询条件统一使用 `AND`,暂不增加条件组。 ### 4.4 为什么菜单独立且引用模块 导航是展示层概念,数据模块是业务数据概念。`s_menu` 引用 `b_module_id`,不重复保存数据源;同一数据模块可以被多个菜单入口引用,但默认共享模块上的同一套字段、列表、表单和查询配置。 @@ -534,7 +709,7 @@ create index ix_s_log_audit_field_customer on s_log_audit_field (b_module_code, 旧系统实际以一个 `data` 模块承载一套字段、列表、编辑和查询配置,没有菜单级字段覆盖机制。当前若再增加 `s_page_profile`、`s_page_field`,会与字段配置表重复,并引入菜单、配置档、模块三者的一致性维护成本。因此第一阶段规定一个数据模块只有一套页面配置。 ### 4.6 为什么权限引入角色层 -旧系统 `b_user_power` 是用户直挂权限,用户一多授权矩阵爆炸。本方案 `s_role` + `s_user_role` + `s_role_power` 三层,权限点 `s_power` 支持到 menu/module/action/field 四级粒度,为后续数据范围、字段脱敏策略留出扩展位。 +旧系统 `b_user_power` 是用户直挂权限,用户一多授权矩阵爆炸。本方案使用 `s_role` + `s_user_role` + `s_role_power` 管理角色权限,并通过 `s_role_scope` 补充模块级数据范围。权限点 `s_power` 支持 menu/module/action/field 四级粒度,角色权限支持 allow/deny,字段权限支持 view/edit;数据范围按角色取并集,显式 deny 优先,后端在每次请求中重新计算有效权限。 ### 4.7 自动编码的并发处理 @@ -554,9 +729,12 @@ create index ix_s_log_audit_field_customer on s_log_audit_field (b_module_code, | --- | --- | --- | | `s_user_role` | `b_user_id` | 当前身份系统的用户 `b_id` | | `s_menu` | `b_module_id` | 绑定的数据/查询模块 `s_module.b_id` | -| `s_field_list` | `b_group_id` | 分组必须与 `b_field_id` 所属字段位于同一数据模块 | -| `s_field_edit` | `b_group_id` | 分组必须与 `b_field_id` 所属字段位于同一数据模块 | +| `s_field_group` | `b_parent_id` | 父分组必须与当前分组属于同一数据模块 | +| `s_field_query` | `b_relation_id` | 关联关系必须从查询模块可达条件字段所属模块 | | `s_menu` | `b_power_code` | `s_power.b_code` | +| `s_power` | `b_resource` / `b_operation` | 权限类型、资源和操作必须匹配;field 权限必须引用对应模块字段 | +| `s_role_scope` | `b_scope_field_id` / `b_scope_value` | 数据范围字段和范围值必须与模块及范围类型匹配 | +| `s_relation` | 关系类型与字段组合 | 多对多必须有中间模块;两侧字段必须属于声明的模块 | | `s_module` | `b_viewtable` / `b_savetable` | Schema Compiler 生成的物理表/视图 | | `s_log_technical` | `b_user_id` | 当前身份系统的用户 `b_id` | | `s_log_login` | `b_user_id` | 当前身份系统的用户 `b_id` | @@ -567,7 +745,8 @@ create index ix_s_log_audit_field_customer on s_log_audit_field (b_module_code, ```text 引用是否已启用 -> 目标资源是否存在且类型匹配 --> 字段、分组和模块关系是否属于正确的数据模块 +-> 字段、分组和关系是否属于正确的数据模块 +-> 权限类型、操作、字段和数据范围规则是否匹配 -> 删除或停用前是否仍被其他资源引用 ``` @@ -577,12 +756,12 @@ create index ix_s_log_audit_field_customer on s_log_audit_field (b_module_code, | --- | --- | --- | | `s_module`(含表/路由/菜单/权限) | `s_module` + `s_menu` | 保留模块数据主体,拆出导航与角色权限 | | `s_module_field` | `s_field` | 字段挂模块 | -| `s_module_field_list` | `s_field_list` | 改为通过字段关联模块 | +| `s_module_field_list` | `s_field_view` | 改为通过字段关联模块 | | `s_module_field_edit` | `s_field_edit` | 改为通过字段关联模块 | -| `s_module_field_query` | `s_field_query` | 改为通过字段关联模块 | +| `s_module_field_query` | `s_field_query` | 保留平铺查询配置,增加关联字段与同字段多条件 | | `s_module_field_group` | `s_field_group` | 分组挂模块 | | `s_module_auto_code` | `s_autocode` | 挂模块+字段,原子取号 | -| `s_module_power` + `b_user_power` | `s_power` + `s_role` + `s_user_role` + `s_role_power` | 引入角色层 | +| `s_module_power` + `b_user_power` | `s_power` + `s_role` + `s_user_role` + `s_role_power` + `s_role_scope` | 引入角色、允许/拒绝和数据范围 | | `b_i18n` | `s_i18n` | 增加资源类型维度 | | `s_login_log` | `s_log_login` | 字段扩充(设备/UA/请求链路) | | (无) | `s_relation` | 新增模块关系 | diff --git a/code/fms/fms-api/config/migrations/100_initialize_fms_new.sql b/code/fms/fms-api/config/migrations/100_initialize_fms_new.sql new file mode 100644 index 00000000..9cdc3928 --- /dev/null +++ b/code/fms/fms-api/config/migrations/100_initialize_fms_new.sql @@ -0,0 +1,509 @@ +SET NOCOUNT ON; +SET XACT_ABORT ON; + +IF DB_NAME() <> N'FMS-NEW' + THROW 51000, N'This migration can only run against FMS-NEW.', 1; + +BEGIN TRANSACTION; + +IF OBJECT_ID(N'dbo.b_user', N'U') IS NULL +BEGIN + CREATE TABLE dbo.b_user ( + b_id bigint NOT NULL, + b_account nvarchar(50) NOT NULL, + b_name nvarchar(50) NULL, + b_department nvarchar(50) NULL, + b_subcode nvarchar(50) NULL, + b_machineid nvarchar(50) NULL, + b_bz nvarchar(200) NULL, + b_password nvarchar(255) NOT NULL, + b_canuse tinyint NOT NULL CONSTRAINT DF_b_user_canuse DEFAULT (1), + b_othermachinelogin tinyint NOT NULL CONSTRAINT DF_b_user_othermachinelogin DEFAULT (0), + b_salesman tinyint NOT NULL CONSTRAINT DF_b_user_salesman DEFAULT (0), + b_docman tinyint NOT NULL CONSTRAINT DF_b_user_docman DEFAULT (0), + b_dealman tinyint NOT NULL CONSTRAINT DF_b_user_dealman DEFAULT (0), + b_receivelevel tinyint NULL, + b_paylevel tinyint NULL, + b_visible_customer tinyint NOT NULL CONSTRAINT DF_b_user_visible_customer DEFAULT (0), + b_visible_supply tinyint NOT NULL CONSTRAINT DF_b_user_visible_supply DEFAULT (0), + b_levelvisible tinyint NOT NULL CONSTRAINT DF_b_user_levelvisible DEFAULT (0), + b_fromcustomer tinyint NOT NULL CONSTRAINT DF_b_user_fromcustomer DEFAULT (0), + b_logintime tinyint NOT NULL CONSTRAINT DF_b_user_logintime DEFAULT (0), + b_checkxy tinyint NOT NULL CONSTRAINT DF_b_user_checkxy DEFAULT (0), + b_loginfee tinyint NOT NULL CONSTRAINT DF_b_user_loginfee DEFAULT (0), + b_phone nvarchar(50) NULL, + CONSTRAINT PK_b_user PRIMARY KEY (b_id), + CONSTRAINT UQ_b_user_account UNIQUE (b_account) + ); +END; + +IF NOT EXISTS (SELECT 1 FROM dbo.b_user) +BEGIN + INSERT INTO dbo.b_user ( + b_id, b_account, b_name, b_department, b_subcode, b_machineid, b_bz, + b_password, b_canuse, b_othermachinelogin, b_salesman, b_docman, b_dealman, + b_receivelevel, b_paylevel, b_visible_customer, b_visible_supply, b_levelvisible, + b_fromcustomer, b_logintime, b_checkxy, b_loginfee, b_phone + ) + SELECT + b_id, b_account, b_name, b_department, b_subcode, b_machineid, b_bz, + b_password, b_canuse, b_othermachinelogin, b_salesman, b_docman, b_dealman, + b_receivelevel, b_paylevel, b_visible_customer, b_visible_supply, b_levelvisible, + b_fromcustomer, b_logintime, b_checkxy, b_loginfee, b_phone + FROM [FMS].dbo.b_user; +END; + +IF OBJECT_ID(N'dbo.s_module', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_module ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_code varchar(50) NOT NULL, + b_parent_id bigint NULL, + b_name nvarchar(100) NOT NULL, + b_i18n varchar(150) NULL, + b_module_type varchar(20) NOT NULL, + b_viewtable varchar(128) NULL, + b_savetable varchar(128) NULL, + b_keyfield varchar(50) NULL, + b_orderfield varchar(500) NULL, + b_delete_policy varchar(20) NULL, + b_canuse int NOT NULL CONSTRAINT DF_s_module_canuse DEFAULT (1), + b_xh int NOT NULL CONSTRAINT DF_s_module_xh DEFAULT (0), + b_bz nvarchar(1000) NULL, + b_inputuser_id bigint NULL, + b_inputdatetime datetime2 NULL CONSTRAINT DF_s_module_inputdatetime DEFAULT (SYSUTCDATETIME()), + b_updateuser_id bigint NULL, + b_updatedatetime datetime2 NULL, + CONSTRAINT PK_s_module PRIMARY KEY (b_id), + CONSTRAINT UQ_s_module_code UNIQUE (b_code), + CONSTRAINT CK_s_module_type CHECK (b_module_type IN ('category','data','query')), + CONSTRAINT CK_s_module_delete_policy CHECK (b_delete_policy IS NULL OR b_delete_policy IN ('restrict','lifecycle','hard')), + CONSTRAINT CK_s_module_config CHECK ( + (b_module_type = 'category' AND b_viewtable IS NULL AND b_savetable IS NULL AND b_keyfield IS NULL AND b_orderfield IS NULL AND b_delete_policy IS NULL) + OR (b_module_type = 'data' AND b_viewtable IS NOT NULL AND b_savetable IS NOT NULL AND b_keyfield IS NOT NULL AND b_delete_policy IS NOT NULL) + OR (b_module_type = 'query' AND b_viewtable IS NOT NULL AND b_savetable IS NULL AND b_delete_policy IS NULL) + ), + CONSTRAINT CK_s_module_parent CHECK (b_parent_id IS NULL OR b_parent_id <> b_id) + ); + CREATE INDEX IX_s_module_parent ON dbo.s_module (b_parent_id, b_xh, b_canuse, b_id); + CREATE INDEX IX_s_module_savetable ON dbo.s_module (b_savetable); +END; + +IF OBJECT_ID(N'dbo.s_field', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_field ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_module_id bigint NOT NULL, + b_field varchar(50) NOT NULL, + b_name nvarchar(100) NOT NULL, + b_i18n varchar(150) NULL, + b_type varchar(30) NOT NULL, + b_dbtype varchar(30) NOT NULL, + b_length int NULL, + b_precision int NULL, + b_scale int NULL, + b_nullable int NOT NULL CONSTRAINT DF_s_field_nullable DEFAULT (1), + b_default_value nvarchar(500) NULL, + b_db_default nvarchar(500) NULL, + b_writemode varchar(20) NOT NULL CONSTRAINT DF_s_field_writemode DEFAULT ('direct'), + b_options nvarchar(max) NULL, + b_canuse int NOT NULL CONSTRAINT DF_s_field_canuse DEFAULT (1), + b_inputuser_id bigint NULL, + b_inputdatetime datetime2 NULL CONSTRAINT DF_s_field_inputdatetime DEFAULT (SYSUTCDATETIME()), + b_updateuser_id bigint NULL, + b_updatedatetime datetime2 NULL, + CONSTRAINT PK_s_field PRIMARY KEY (b_id), + CONSTRAINT UQ_s_field_module_field UNIQUE (b_module_id, b_field), + CONSTRAINT UQ_s_field_module_id UNIQUE (b_module_id, b_id), + CONSTRAINT CK_s_field_type CHECK (b_type IN ('input','textarea','number','money','date','datetime','checkbox','select','selectId')), + CONSTRAINT CK_s_field_dbtype CHECK (b_dbtype IN ('varchar','nvarchar','char','nchar','int','bigint','smallint','tinyint','decimal','numeric','float','real','date','datetime','datetime2','bit','text','ntext','uniqueidentifier')), + CONSTRAINT CK_s_field_writemode CHECK (b_writemode IN ('direct','createOnly','readOnly','computed','system')) + ); + CREATE INDEX IX_s_field_module ON dbo.s_field (b_module_id, b_canuse, b_id); +END; + +IF OBJECT_ID(N'dbo.s_field_group', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_field_group ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_module_id bigint NOT NULL, + b_parent_id bigint NULL, + b_title nvarchar(100) NOT NULL, + b_i18n varchar(150) NULL, + b_xh int NOT NULL CONSTRAINT DF_s_field_group_xh DEFAULT (0), + b_canuse int NOT NULL CONSTRAINT DF_s_field_group_canuse DEFAULT (1), + CONSTRAINT PK_s_field_group PRIMARY KEY (b_id), + CONSTRAINT UQ_s_field_group_module_id UNIQUE (b_module_id, b_id), + CONSTRAINT CK_s_field_group_parent CHECK (b_parent_id IS NULL OR b_parent_id <> b_id) + ); + CREATE INDEX IX_s_field_group_module ON dbo.s_field_group (b_module_id, b_xh, b_canuse); +END; + +IF OBJECT_ID(N'dbo.s_field_view', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_field_view ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_module_id bigint NOT NULL, + b_field_id bigint NOT NULL, + b_group_id bigint NULL, + b_i18n varchar(150) NULL, + b_visible int NOT NULL CONSTRAINT DF_s_field_view_visible DEFAULT (1), + b_xh int NOT NULL CONSTRAINT DF_s_field_view_xh DEFAULT (0), + b_width int NULL, + CONSTRAINT PK_s_field_view PRIMARY KEY (b_id), + CONSTRAINT UQ_s_field_view_field UNIQUE (b_module_id, b_field_id) + ); + CREATE INDEX IX_s_field_view_order ON dbo.s_field_view (b_xh, b_id); +END; + +IF OBJECT_ID(N'dbo.s_field_edit', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_field_edit ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_module_id bigint NOT NULL, + b_field_id bigint NOT NULL, + b_group_id bigint NULL, + b_visible int NOT NULL CONSTRAINT DF_s_field_edit_visible DEFAULT (1), + b_required int NOT NULL CONSTRAINT DF_s_field_edit_required DEFAULT (0), + b_readonly int NOT NULL CONSTRAINT DF_s_field_edit_readonly DEFAULT (0), + b_disabled int NOT NULL CONSTRAINT DF_s_field_edit_disabled DEFAULT (0), + b_xh int NOT NULL CONSTRAINT DF_s_field_edit_xh DEFAULT (0), + CONSTRAINT PK_s_field_edit PRIMARY KEY (b_id), + CONSTRAINT UQ_s_field_edit_field UNIQUE (b_module_id, b_field_id) + ); + CREATE INDEX IX_s_field_edit_order ON dbo.s_field_edit (b_xh, b_id); +END; + +IF OBJECT_ID(N'dbo.s_field_query', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_field_query ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_module_id bigint NOT NULL, + b_field_module_id bigint NOT NULL, + b_field_id bigint NOT NULL, + b_relation_id bigint NULL, + b_component varchar(30) NULL, + b_condition_no int NOT NULL CONSTRAINT DF_s_field_query_condition_no DEFAULT (1), + b_operator varchar(20) NOT NULL, + b_default_value nvarchar(500) NULL, + b_canuse int NOT NULL CONSTRAINT DF_s_field_query_canuse DEFAULT (1), + b_xh int NOT NULL CONSTRAINT DF_s_field_query_xh DEFAULT (0), + CONSTRAINT PK_s_field_query PRIMARY KEY (b_id), + CONSTRAINT UQ_s_field_query_condition UNIQUE (b_module_id, b_field_module_id, b_field_id, b_relation_id, b_operator, b_condition_no), + CONSTRAINT CK_s_field_query_condition_no CHECK (b_condition_no > 0) + ); + CREATE INDEX IX_s_field_query_order ON dbo.s_field_query (b_canuse, b_xh, b_id); +END; + +IF OBJECT_ID(N'dbo.s_relation', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_relation ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_code varchar(50) NOT NULL, + b_module_id bigint NOT NULL, + b_target_module_id bigint NOT NULL, + b_relation_type varchar(20) NOT NULL, + b_module_field_id bigint NOT NULL, + b_target_field_id bigint NOT NULL, + b_foreign_side varchar(10) NULL, + b_junction_module_id bigint NULL, + b_junction_module_field_id bigint NULL, + b_junction_target_field_id bigint NULL, + b_ownership varchar(20) NOT NULL CONSTRAINT DF_s_relation_ownership DEFAULT ('reference'), + b_owner_side varchar(10) NULL, + b_delete_policy varchar(20) NULL, + b_order_module_id bigint NULL, + b_order_field_id bigint NULL, + b_canuse int NOT NULL CONSTRAINT DF_s_relation_canuse DEFAULT (1), + b_xh int NOT NULL CONSTRAINT DF_s_relation_xh DEFAULT (0), + CONSTRAINT PK_s_relation PRIMARY KEY (b_id), + CONSTRAINT UQ_s_relation_code UNIQUE (b_code), + CONSTRAINT UQ_s_relation_key UNIQUE (b_module_id, b_target_module_id, b_module_field_id, b_target_field_id), + CONSTRAINT CK_s_relation_self_fields CHECK (b_module_id <> b_target_module_id OR b_module_field_id <> b_target_field_id), + CONSTRAINT CK_s_relation_type CHECK (b_relation_type IN ('one-to-one','one-to-many','many-to-one','many-to-many')), + CONSTRAINT CK_s_relation_foreign_side CHECK (b_foreign_side IS NULL OR b_foreign_side IN ('module','target')), + CONSTRAINT CK_s_relation_ownership CHECK (b_ownership IN ('reference','owned')), + CONSTRAINT CK_s_relation_owner_side CHECK (b_owner_side IS NULL OR b_owner_side IN ('module','target')), + CONSTRAINT CK_s_relation_shape CHECK ( + (b_relation_type = 'many-to-many' AND b_foreign_side IS NULL AND b_junction_module_id IS NOT NULL AND b_junction_module_field_id IS NOT NULL AND b_junction_target_field_id IS NOT NULL) + OR (b_relation_type <> 'many-to-many' AND b_foreign_side IS NOT NULL AND b_junction_module_id IS NULL AND b_junction_module_field_id IS NULL AND b_junction_target_field_id IS NULL) + ), + CONSTRAINT CK_s_relation_owned CHECK ((b_ownership = 'reference' AND b_owner_side IS NULL) OR (b_ownership = 'owned' AND b_owner_side IS NOT NULL AND b_relation_type <> 'many-to-many')), + CONSTRAINT CK_s_relation_order CHECK ((b_order_module_id IS NULL AND b_order_field_id IS NULL) OR (b_order_module_id IS NOT NULL AND b_order_field_id IS NOT NULL)), + CONSTRAINT CK_s_relation_delete_policy CHECK (b_delete_policy IS NULL OR b_delete_policy IN ('restrict','set-null','cascade','archive')) + ); + CREATE INDEX IX_s_relation_target ON dbo.s_relation (b_target_module_id); +END; + +IF OBJECT_ID(N'dbo.s_menu', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_menu ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_parent_id bigint NULL, + b_code varchar(50) NOT NULL, + b_name nvarchar(100) NOT NULL, + b_i18n varchar(150) NULL, + b_menu_type varchar(20) NOT NULL, + b_route varchar(200) NULL, + b_module_id bigint NULL, + b_power_code varchar(50) NULL, + b_icon varchar(50) NULL, + b_xh int NOT NULL CONSTRAINT DF_s_menu_xh DEFAULT (0), + b_canuse int NOT NULL CONSTRAINT DF_s_menu_canuse DEFAULT (1), + CONSTRAINT PK_s_menu PRIMARY KEY (b_id), + CONSTRAINT UQ_s_menu_code UNIQUE (b_code), + CONSTRAINT CK_s_menu_parent CHECK (b_parent_id IS NULL OR b_parent_id <> b_id), + CONSTRAINT CK_s_menu_type CHECK (b_menu_type IN ('directory','page','data','external')) + ); + CREATE INDEX IX_s_menu_parent ON dbo.s_menu (b_parent_id, b_xh, b_canuse); + CREATE INDEX IX_s_menu_module ON dbo.s_menu (b_module_id); +END; + +IF OBJECT_ID(N'dbo.s_autocode', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_autocode ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_module_id bigint NOT NULL, + b_field_id bigint NOT NULL, + b_prefix nvarchar(100) NOT NULL CONSTRAINT DF_s_autocode_prefix DEFAULT (N''), + b_dateformat varchar(30) NOT NULL CONSTRAINT DF_s_autocode_dateformat DEFAULT ('yyyyMM'), + b_separator nvarchar(10) NOT NULL CONSTRAINT DF_s_autocode_separator DEFAULT (N'-'), + b_seqwidth int NOT NULL CONSTRAINT DF_s_autocode_seqwidth DEFAULT (5), + b_resettype varchar(10) NOT NULL CONSTRAINT DF_s_autocode_resettype DEFAULT ('month'), + b_startvalue bigint NOT NULL CONSTRAINT DF_s_autocode_startvalue DEFAULT (1), + b_currentperiod varchar(8) NULL, + b_currentvalue bigint NOT NULL CONSTRAINT DF_s_autocode_currentvalue DEFAULT (0), + b_canuse int NOT NULL CONSTRAINT DF_s_autocode_canuse DEFAULT (1), + CONSTRAINT PK_s_autocode PRIMARY KEY (b_id), + CONSTRAINT UQ_s_autocode_module_field UNIQUE (b_module_id, b_field_id), + CONSTRAINT CK_s_autocode_resettype CHECK (b_resettype IN ('none','day','month','year')), + CONSTRAINT CK_s_autocode_values CHECK (b_seqwidth > 0 AND b_startvalue >= 0 AND b_currentvalue >= 0) + ); +END; + +IF OBJECT_ID(N'dbo.s_role', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_role ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_code varchar(50) NOT NULL, + b_name nvarchar(100) NOT NULL, + b_i18n varchar(150) NULL, + b_remark nvarchar(500) NULL, + b_is_system int NOT NULL CONSTRAINT DF_s_role_is_system DEFAULT (0), + b_bypass_power int NOT NULL CONSTRAINT DF_s_role_bypass_power DEFAULT (0), + b_canuse int NOT NULL CONSTRAINT DF_s_role_canuse DEFAULT (1), + b_inputuser_id bigint NULL, + b_inputdatetime datetime2 NULL CONSTRAINT DF_s_role_inputdatetime DEFAULT (SYSUTCDATETIME()), + b_updateuser_id bigint NULL, + b_updatedatetime datetime2 NULL, + CONSTRAINT PK_s_role PRIMARY KEY (b_id), + CONSTRAINT UQ_s_role_code UNIQUE (b_code), + CONSTRAINT CK_s_role_system_bypass CHECK (b_bypass_power = 0 OR b_is_system = 1) + ); +END; + +IF OBJECT_ID(N'dbo.s_user_role', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_user_role ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_user_id bigint NOT NULL, + b_role_id bigint NOT NULL, + b_canuse int NOT NULL CONSTRAINT DF_s_user_role_canuse DEFAULT (1), + b_inputdatetime datetime2 NULL CONSTRAINT DF_s_user_role_inputdatetime DEFAULT (SYSUTCDATETIME()), + CONSTRAINT PK_s_user_role PRIMARY KEY (b_id), + CONSTRAINT UQ_s_user_role UNIQUE (b_user_id, b_role_id) + ); + CREATE INDEX IX_s_user_role_role ON dbo.s_user_role (b_role_id, b_canuse); +END; + +IF OBJECT_ID(N'dbo.s_power', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_power ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_code varchar(50) NOT NULL, + b_name nvarchar(100) NOT NULL, + b_i18n varchar(150) NULL, + b_power_type varchar(20) NOT NULL, + b_resource varchar(128) NULL, + b_module_id bigint NULL, + b_field_id bigint NULL, + b_operation varchar(30) NOT NULL, + b_canuse int NOT NULL CONSTRAINT DF_s_power_canuse DEFAULT (1), + b_xh int NOT NULL CONSTRAINT DF_s_power_xh DEFAULT (0), + CONSTRAINT PK_s_power PRIMARY KEY (b_id), + CONSTRAINT UQ_s_power_code UNIQUE (b_code), + CONSTRAINT CK_s_power_type CHECK (b_power_type IN ('menu','module','action','field')), + CONSTRAINT CK_s_power_shape CHECK ( + (b_power_type = 'menu' AND b_resource IS NOT NULL AND b_module_id IS NULL AND b_field_id IS NULL AND b_operation = 'access') + OR (b_power_type = 'module' AND b_resource IS NULL AND b_module_id IS NOT NULL AND b_field_id IS NULL AND b_operation IN ('read','create','update','delete','export')) + OR (b_power_type = 'action' AND b_resource IS NOT NULL AND b_module_id IS NOT NULL AND b_field_id IS NULL AND b_operation = 'execute') + OR (b_power_type = 'field' AND b_resource IS NULL AND b_module_id IS NOT NULL AND b_field_id IS NOT NULL AND b_operation IN ('view','edit')) + ) + ); + CREATE INDEX IX_s_power_resource ON dbo.s_power (b_power_type, b_resource, b_canuse); +END; + +IF OBJECT_ID(N'dbo.s_role_power', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_role_power ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_role_id bigint NOT NULL, + b_power_id bigint NOT NULL, + b_effect varchar(10) NOT NULL CONSTRAINT DF_s_role_power_effect DEFAULT ('allow'), + b_canuse int NOT NULL CONSTRAINT DF_s_role_power_canuse DEFAULT (1), + b_inputdatetime datetime2 NULL CONSTRAINT DF_s_role_power_inputdatetime DEFAULT (SYSUTCDATETIME()), + CONSTRAINT PK_s_role_power PRIMARY KEY (b_id), + CONSTRAINT UQ_s_role_power UNIQUE (b_role_id, b_power_id), + CONSTRAINT CK_s_role_power_effect CHECK (b_effect IN ('allow','deny')) + ); + CREATE INDEX IX_s_role_power_power ON dbo.s_role_power (b_power_id, b_canuse); +END; + +IF OBJECT_ID(N'dbo.s_role_scope', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_role_scope ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_role_id bigint NOT NULL, + b_module_id bigint NOT NULL, + b_operation varchar(20) NOT NULL, + b_scope_type varchar(30) NOT NULL, + b_scope_no int NOT NULL CONSTRAINT DF_s_role_scope_no DEFAULT (1), + b_scope_field_id bigint NULL, + b_scope_value nvarchar(max) NULL, + b_canuse int NOT NULL CONSTRAINT DF_s_role_scope_canuse DEFAULT (1), + b_inputdatetime datetime2 NULL CONSTRAINT DF_s_role_scope_inputdatetime DEFAULT (SYSUTCDATETIME()), + CONSTRAINT PK_s_role_scope PRIMARY KEY (b_id), + CONSTRAINT UQ_s_role_scope UNIQUE (b_role_id, b_module_id, b_operation, b_scope_type, b_scope_field_id, b_scope_no), + CONSTRAINT CK_s_role_scope_operation CHECK (b_operation IN ('read','update','delete','export')), + CONSTRAINT CK_s_role_scope_type CHECK (b_scope_type IN ('all','creator','owner','department','department-tree','custom')), + CONSTRAINT CK_s_role_scope_no CHECK (b_scope_no > 0), + CONSTRAINT CK_s_role_scope_shape CHECK ( + (b_scope_type IN ('all','creator') AND b_scope_field_id IS NULL AND b_scope_value IS NULL) + OR (b_scope_type IN ('owner','department','department-tree') AND b_scope_field_id IS NOT NULL) + OR (b_scope_type = 'custom' AND b_scope_value IS NOT NULL) + ) + ); + CREATE INDEX IX_s_role_scope_role ON dbo.s_role_scope (b_role_id, b_module_id, b_operation, b_canuse); +END; + +IF OBJECT_ID(N'dbo.s_i18n', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_i18n ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_key varchar(150) NOT NULL, + b_locale varchar(20) NOT NULL, + b_value nvarchar(500) NOT NULL, + b_i18ntype varchar(20) NULL, + b_canuse int NOT NULL CONSTRAINT DF_s_i18n_canuse DEFAULT (1), + CONSTRAINT PK_s_i18n PRIMARY KEY (b_id), + CONSTRAINT UQ_s_i18n_key_locale UNIQUE (b_key, b_locale) + ); + CREATE INDEX IX_s_i18n_locale ON dbo.s_i18n (b_locale, b_canuse); +END; + +IF OBJECT_ID(N'dbo.s_log_technical', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_log_technical ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_org_id varchar(50) NULL, + b_user_id bigint NULL, + b_account varchar(50) NULL, + b_sourcetype varchar(20) NULL, + b_loglevel varchar(16) NOT NULL, + b_logcategory varchar(64) NULL, + b_operation varchar(100) NULL, + b_module_code varchar(50) NULL, + b_request_id varchar(64) NULL, + b_trace_id varchar(64) NULL, + b_server_node varchar(128) NULL, + b_duration_ms bigint NULL, + b_result_code varchar(50) NULL, + b_error_code varchar(50) NULL, + b_error_message nvarchar(2000) NULL, + b_exception_text nvarchar(max) NULL, + b_context_text nvarchar(max) NULL, + b_occurdatetime datetime2 NULL CONSTRAINT DF_s_log_technical_occurdatetime DEFAULT (SYSUTCDATETIME()), + CONSTRAINT PK_s_log_technical PRIMARY KEY (b_id) + ); + CREATE INDEX IX_s_log_technical_trace ON dbo.s_log_technical (b_trace_id, b_occurdatetime DESC); + CREATE INDEX IX_s_log_technical_org ON dbo.s_log_technical (b_org_id, b_occurdatetime DESC); + CREATE INDEX IX_s_log_technical_level ON dbo.s_log_technical (b_loglevel, b_occurdatetime DESC); +END; + +IF OBJECT_ID(N'dbo.s_log_login', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_log_login ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_org_id varchar(50) NULL, + b_user_id bigint NULL, + b_account varchar(50) NULL, + b_login_type varchar(20) NOT NULL, + b_login_result int NOT NULL CONSTRAINT DF_s_log_login_result DEFAULT (0), + b_fail_reason nvarchar(200) NULL, + b_ip varchar(50) NULL, + b_ip_location nvarchar(200) NULL, + b_browser varchar(100) NULL, + b_browser_version varchar(50) NULL, + b_os varchar(100) NULL, + b_os_version varchar(50) NULL, + b_device_type varchar(20) NULL, + b_user_agent nvarchar(max) NULL, + b_session_id varchar(50) NULL, + b_request_id varchar(64) NULL, + b_trace_id varchar(64) NULL, + b_occurdatetime datetime2 NULL CONSTRAINT DF_s_log_login_occurdatetime DEFAULT (SYSUTCDATETIME()), + CONSTRAINT PK_s_log_login PRIMARY KEY (b_id) + ); + CREATE INDEX IX_s_log_login_user ON dbo.s_log_login (b_user_id, b_occurdatetime DESC); + CREATE INDEX IX_s_log_login_account ON dbo.s_log_login (b_account, b_occurdatetime DESC); + CREATE INDEX IX_s_log_login_result ON dbo.s_log_login (b_login_result, b_occurdatetime DESC); +END; + +IF OBJECT_ID(N'dbo.s_log_audit', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_log_audit ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_event_code varchar(50) NOT NULL, + b_module_code varchar(50) NULL, + b_data_id varchar(50) NULL, + b_business_no varchar(50) NULL, + b_operation varchar(100) NULL, + b_operator_id bigint NULL, + b_operator_name nvarchar(100) NULL, + b_source_type varchar(20) NOT NULL CONSTRAINT DF_s_log_audit_source_type DEFAULT ('user'), + b_visibility varchar(20) NOT NULL CONSTRAINT DF_s_log_audit_visibility DEFAULT ('internal'), + b_request_id varchar(64) NULL, + b_trace_id varchar(64) NULL, + b_payload_text nvarchar(max) NULL, + b_occurdatetime datetime2 NULL CONSTRAINT DF_s_log_audit_occurdatetime DEFAULT (SYSUTCDATETIME()), + CONSTRAINT PK_s_log_audit PRIMARY KEY (b_id) + ); + CREATE INDEX IX_s_log_audit_module ON dbo.s_log_audit (b_module_code, b_data_id, b_occurdatetime DESC); + CREATE INDEX IX_s_log_audit_trace ON dbo.s_log_audit (b_trace_id); +END; + +IF OBJECT_ID(N'dbo.s_log_audit_field', N'U') IS NULL +BEGIN + CREATE TABLE dbo.s_log_audit_field ( + b_id bigint IDENTITY(1,1) NOT NULL, + b_event_id bigint NOT NULL, + b_module_code varchar(50) NULL, + b_data_id varchar(50) NULL, + b_field varchar(50) NOT NULL, + b_field_label nvarchar(100) NULL, + b_before_value nvarchar(max) NULL, + b_after_value nvarchar(max) NULL, + b_before_display nvarchar(500) NULL, + b_after_display nvarchar(500) NULL, + b_visibility varchar(20) NOT NULL CONSTRAINT DF_s_log_audit_field_visibility DEFAULT ('internal'), + CONSTRAINT PK_s_log_audit_field PRIMARY KEY (b_id) + ); + CREATE INDEX IX_s_log_audit_field_event ON dbo.s_log_audit_field (b_event_id); + CREATE INDEX IX_s_log_audit_field_customer ON dbo.s_log_audit_field (b_module_code, b_data_id, b_visibility, b_event_id); +END; + +COMMIT TRANSACTION; + +SELECT DB_NAME() AS database_name, + (SELECT COUNT(*) FROM dbo.b_user) AS user_count, + (SELECT COUNT(*) FROM sys.tables WHERE is_ms_shipped = 0) AS user_table_count; diff --git a/code/fms/fms-api/config/migrations/101_drop_physical_foreign_keys.sql b/code/fms/fms-api/config/migrations/101_drop_physical_foreign_keys.sql new file mode 100644 index 00000000..35cdf3ba --- /dev/null +++ b/code/fms/fms-api/config/migrations/101_drop_physical_foreign_keys.sql @@ -0,0 +1,44 @@ +SET NOCOUNT ON; +SET XACT_ABORT ON; + +IF DB_NAME() <> N'FMS-NEW' + THROW 51001, N'This migration can only run against FMS-NEW.', 1; + +BEGIN TRANSACTION; + +DECLARE @sql nvarchar(max) = N''; +SELECT @sql = @sql + + N'ALTER TABLE ' + QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id)) + N'.' + + QUOTENAME(OBJECT_NAME(parent_object_id)) + N' DROP CONSTRAINT ' + QUOTENAME(name) + N';' +FROM sys.foreign_keys +ORDER BY object_id; + +IF @sql <> N'' + EXEC sys.sp_executesql @sql; + +IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_field_group') AND name = N'IX_s_field_group_parent') + CREATE INDEX IX_s_field_group_parent ON dbo.s_field_group (b_module_id, b_parent_id); +IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_field_view') AND name = N'IX_s_field_view_group') + CREATE INDEX IX_s_field_view_group ON dbo.s_field_view (b_module_id, b_group_id); +IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_field_edit') AND name = N'IX_s_field_edit_group') + CREATE INDEX IX_s_field_edit_group ON dbo.s_field_edit (b_module_id, b_group_id); +IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_field_query') AND name = N'IX_s_field_query_module') + CREATE INDEX IX_s_field_query_module ON dbo.s_field_query (b_module_id, b_canuse, b_xh, b_id); +IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_field_query') AND name = N'IX_s_field_query_field') + CREATE INDEX IX_s_field_query_field ON dbo.s_field_query (b_field_module_id, b_field_id); +IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_field_query') AND name = N'IX_s_field_query_relation') + CREATE INDEX IX_s_field_query_relation ON dbo.s_field_query (b_relation_id) WHERE b_relation_id IS NOT NULL; +IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_relation') AND name = N'IX_s_relation_module') + CREATE INDEX IX_s_relation_module ON dbo.s_relation (b_module_id, b_canuse, b_xh, b_id); +IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_relation') AND name = N'IX_s_relation_junction') + CREATE INDEX IX_s_relation_junction ON dbo.s_relation (b_junction_module_id) WHERE b_junction_module_id IS NOT NULL; +IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_relation') AND name = N'IX_s_relation_order_module') + CREATE INDEX IX_s_relation_order_module ON dbo.s_relation (b_order_module_id) WHERE b_order_module_id IS NOT NULL; +IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_power') AND name = N'IX_s_power_module') + CREATE INDEX IX_s_power_module ON dbo.s_power (b_module_id, b_field_id, b_canuse); +IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.s_role_scope') AND name = N'IX_s_role_scope_field') + CREATE INDEX IX_s_role_scope_field ON dbo.s_role_scope (b_module_id, b_scope_field_id) WHERE b_scope_field_id IS NOT NULL; + +COMMIT TRANSACTION; + +SELECT COUNT(*) AS foreign_key_count FROM sys.foreign_keys; diff --git a/code/fms/fms-vue/src/components/fms-file/FileListPanel.vue b/code/fms/fms-vue/src/components/fms-file/FileListPanel.vue index a39fe810..5413e466 100644 --- a/code/fms/fms-vue/src/components/fms-file/FileListPanel.vue +++ b/code/fms/fms-vue/src/components/fms-file/FileListPanel.vue @@ -250,7 +250,8 @@ async function submitUpload() { emit('uploaded') await loadFiles(1) } catch (e) { - Message.error('上传失败:' + (e?.message || e)) + // 服务端不可达 / 5xx 已由 http 拦截器统一弹 Message,这里去重 + if (!e?.toasted) Message.error('上传失败:' + (e?.message || e)) } finally { uploading.value = false } @@ -305,7 +306,8 @@ async function deleteSelected() { emit('deleted') await loadFiles(currentPage.value) } catch (e) { - Message.error('删除失败:' + (e?.message || e)) + // 服务端不可达 / 5xx 已由 http 拦截器统一弹 Message,这里去重 + if (!e?.toasted) Message.error('删除失败:' + (e?.message || e)) } }, }) @@ -330,7 +332,8 @@ async function deleteSingle(file) { emit('deleted') await loadFiles(currentPage.value) } catch (e) { - Message.error('删除失败:' + (e?.message || e)) + // 服务端不可达 / 5xx 已由 http 拦截器统一弹 Message,这里去重 + if (!e?.toasted) Message.error('删除失败:' + (e?.message || e)) } }, }) diff --git a/code/fms/fms-vue/src/components/fms-file/FmsFile.vue b/code/fms/fms-vue/src/components/fms-file/FmsFile.vue index 841528b2..d74757b7 100644 --- a/code/fms/fms-vue/src/components/fms-file/FmsFile.vue +++ b/code/fms/fms-vue/src/components/fms-file/FmsFile.vue @@ -213,6 +213,30 @@ defineExpose({ moduleId, refreshCategories: loadCategories }) min-height: 0; } +/* 分隔条:宽 0 + 无负 margin,不占 flex 宽度,面板在交界处无缝相接, + 消除分割线左右两侧的空白条(对比:DefaultLayout 用负 margin 让面板互相 + 覆盖,但附件三栏背景色不同——白列表 / 灰预览——覆盖会露底,这里改用 + ::after 扩展命中区,不挤压面板也不遮挡相邻面板背景)。 */ +.ff-splitter :deep(> .fms-splitter-bar) { + width: 0; + position: relative; + z-index: 1; +} + +/* 命中区:从宽 0 的分隔条向两侧各伸出 3px(共 6px,与 --fms-splitter-trigger-size + 一致),保持拖拽热区不变;伪元素的事件命中会冒泡到 .fms-splitter-bar 本体, + pointerdown / 键盘聚焦仍由原逻辑处理 */ +.ff-splitter :deep(> .fms-splitter-bar::after) { + content: ''; + position: absolute; + top: 0; + bottom: 0; + left: 50%; + transform: translateX(-50%); + width: var(--fms-splitter-trigger-size); + cursor: col-resize; +} + .ff-center { display: flex; width: 100%; diff --git a/code/fms/fms-vue/src/components/fms-file/FmsFileModal.vue b/code/fms/fms-vue/src/components/fms-file/FmsFileModal.vue index 88fd0c19..b0bcf77c 100644 --- a/code/fms/fms-vue/src/components/fms-file/FmsFileModal.vue +++ b/code/fms/fms-vue/src/components/fms-file/FmsFileModal.vue @@ -69,10 +69,6 @@ const { state } = useFileModal() /* Modal 根节点是 Teleport,class 无法透传(Vue 会告警且不生效), 因此通过内容锚点 .ff-container(FmsFile 根元素)用 :has() 定位附件弹窗。 打开中的附件弹窗体内必然渲染 .ff-container,其他弹窗不受影响。 */ -.fms-modal:has(.ff-container) { - max-width: 1440px; /* 超宽屏封顶,避免三栏被拉得过宽 */ - min-width: 960px; /* 极小屏保底,三栏不挤 */ -} .fms-modal-body:has(.ff-container) { padding: 0; diff --git a/code/fms/fms-vue/src/services/http.js b/code/fms/fms-vue/src/services/http.js index d5fa5955..653fecc1 100644 --- a/code/fms/fms-vue/src/services/http.js +++ b/code/fms/fms-vue/src/services/http.js @@ -1,5 +1,6 @@ import axios from 'axios' import { useAuthStore } from '@/stores/auth' +import { Message } from '@/components/ui/message/message-manager' const AUTH_ERROR_CODE = 401 const SESSION_REPLACED_CODE = 40101 @@ -81,13 +82,23 @@ http.interceptors.response.use( const errorCode = payload?.code ?? status ?? 0 if (isAuthenticationError(errorCode)) handleUnauthorized(errorCode) - const requestError = new Error( + const message = payload?.message || - (error.code === 'ECONNABORTED' ? '请求超时,请稍后重试' : '网络异常,请检查服务是否正常'), - ) + (error.code === 'ECONNABORTED' ? '请求超时,请稍后重试' : '网络异常,请检查服务是否正常') + + const requestError = new Error(message) requestError.code = payload?.code ?? status ?? -1 requestError.data = payload?.data requestError.success = false + + // 服务端不可达(无 status)/ 5xx 属全局性问题,统一弹 Message 提示; + // 4xx 等业务错误由调用方自行决定提示方式。 + // 打 toasted 标记:登录、上传/删除等已有自身 Message 的调用方据此去重,避免重复弹窗 + if (!status || status >= 500) { + Message.error(message) + requestError.toasted = true + } + throw requestError }, ) diff --git a/code/fms/fms-vue/src/theme/tokens.css b/code/fms/fms-vue/src/theme/tokens.css index 892a3996..151e9487 100644 --- a/code/fms/fms-vue/src/theme/tokens.css +++ b/code/fms/fms-vue/src/theme/tokens.css @@ -103,7 +103,7 @@ /* 栅格(grid):默认水平/垂直间距(不随主题变化) */ --fms-grid-gutter: 0px; - --fms-splitter-bar-size: 2px; + --fms-splitter-bar-size: 1px; --fms-splitter-bar-size-hover: 4px; --fms-splitter-handle-size: 20px; diff --git a/code/fms/fms-vue/src/views/login/index.vue b/code/fms/fms-vue/src/views/login/index.vue index 5f29d977..2153abcd 100644 --- a/code/fms/fms-vue/src/views/login/index.vue +++ b/code/fms/fms-vue/src/views/login/index.vue @@ -60,7 +60,8 @@ async function onSubmit(values) { Message.success('登录成功') router.replace(String(route.query.redirect || '/dashboard')) } catch (e) { - Message.error(e.message || '登录失败,请稍后重试') + // 服务端不可达 / 5xx 已由 http 拦截器统一弹 Message,这里去重避免重复弹窗 + if (!e?.toasted) Message.error(e.message || '登录失败,请稍后重试') } finally { submitting.value = false }