From ba6844240cda904db061ee0b3689aeaf0f50ff5e Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 13 五月 2025 11:19:05 +0800
Subject: [PATCH] Merge branch 'develop'
---
src/utils/utils-custom.js | 929 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 844 insertions(+), 85 deletions(-)
diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js
index ea5e994..464d315 100644
--- a/src/utils/utils-custom.js
+++ b/src/utils/utils-custom.js
@@ -1886,6 +1886,25 @@
if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) {
if (!cell.modal || cell.modal.fields.length === 0) {
errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`})
+ } else if (cell.OpenType === 'pop') {
+ let forms = []
+ cell.modal.fields.forEach(n => {
+ if (n.type === 'funcvar' && n.field) {
+ forms.push(n.field)
+ }
+ })
+ if (cell.verify && cell.verify.billcodes && cell.verify.billcodes.length > 0) {
+ let bills = cell.verify.billcodes.filter(item => item.status !== 'false').map(item => item.field)
+ bills.forEach(n => {
+ if (!forms.includes(n)) {
+ errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑鍗曞彿鐢熸垚鐨勫嚱鏁板彉閲忊��${n}鈥濅笉瀛樺湪`})
+ }
+ })
+ forms = forms.filter(n => !bills.includes(n))
+ }
+ if (forms.length) {
+ errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑鍑芥暟鍙橀噺琛ㄥ崟鈥�${forms.join(',')}鈥濆皻鏈娇鐢╜})
+ }
}
} else if (cell.OpenType === 'excelIn') {
if (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0) {
@@ -1917,8 +1936,12 @@
if (['pop', 'prompt', 'exec'].includes(cell.OpenType) && cell.verify && !cell.output) {
if (cell.verify.noteEnable === 'true') {
errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濇湭璁剧疆杩斿洖鍊肩煭淇″彂閫佹棤鏁堬紒`})
+ } else if (cell.verify.wxNote === 'true') {
+ errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濇湭璁剧疆杩斿洖鍊煎叕浼楀彿娑堟伅鏃犳晥锛乣})
} else if (cell.verify.emailEnable === 'true') {
errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濇湭璁剧疆杩斿洖鍊奸偖浠跺彂閫佹棤鏁堬紒`})
+ } else if (cell.verify.DeepSeekable === 'true') {
+ errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濇湭璁剧疆杩斿洖鍊糄eekSeek鏃犳晥锛乣})
}
}
@@ -1960,15 +1983,20 @@
if (cell.OpenType === 'form' && cell.formType === 'count_line') return
- if (cell.intertype === 'system') {
- // if (cell.Ot === 'notRequired' && cell.verify && cell.verify.voucher && cell.verify.voucher.enabled) {
- // errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅娇鐢ㄤ簡鍒涘缓鍑瘉鍑芥暟锛岄渶瑕侀�夋嫨琛岋紒`})
- // }
- } else if (cell.intertype === 'custom' || cell.intertype === 'outer') {
- if (cell.callbackType === 'script' && (!cell.verify || !cell.verify.cbScripts || cell.verify.cbScripts.filter(item => item.status !== 'false').length === 0)) {
- errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅娇鐢ㄤ簡鑷畾涔夎剼鏈洖璋冿紝鍥炶皟鑴氭湰涓嶅彲涓虹┖锛乣})
- // } else if (cell.procMode === 'system' && cell.Ot === 'notRequired' && cell.verify && cell.verify.voucher && cell.verify.voucher.enabled) {
- // errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅娇鐢ㄤ簡鍒涘缓鍑瘉鍑芥暟锛岄渶瑕侀�夋嫨琛岋紒`})
+ // if (cell.intertype === 'system') {
+ // // if (cell.Ot === 'notRequired' && cell.verify && cell.verify.voucher && cell.verify.voucher.enabled) {
+ // // errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅娇鐢ㄤ簡鍒涘缓鍑瘉鍑芥暟锛岄渶瑕侀�夋嫨琛岋紒`})
+ // // }
+ // } else if (cell.intertype === 'custom' || cell.intertype === 'outer') {
+ // if (cell.callbackType === 'script' && (!cell.verify || !cell.verify.cbScripts || cell.verify.cbScripts.filter(item => item.status !== 'false').length === 0)) {
+ // errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅娇鐢ㄤ簡鑷畾涔夎剼鏈洖璋冿紝鍥炶皟鑴氭湰涓嶅彲涓虹┖锛乣})
+ // // } else if (cell.procMode === 'system' && cell.Ot === 'notRequired' && cell.verify && cell.verify.voucher && cell.verify.voucher.enabled) {
+ // // errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅娇鐢ㄤ簡鍒涘缓鍑瘉鍑芥暟锛岄渶瑕侀�夋嫨琛岋紒`})
+ // }
+ // }
+ if ((cell.intertype === 'custom' || cell.intertype === 'outer') && cell.callbackType === 'script') {
+ if (!cell.verify || !cell.verify.cbScripts) {
+ errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅娇鐢ㄤ簡鑷畾涔夎剼鏈洖璋冿紝璇疯缃獙璇佷俊鎭紒`})
}
}
} else if (cell.OpenType === 'funcbutton') {
@@ -2085,6 +2113,80 @@
}
}
+ if (card.$c_fc) {
+ let idCtrl = false
+ let supModule = ''
+
+ if (card.wrap.datatype === 'dynamic') {
+ supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : ''
+ if (supModule === 'empty') {
+ supModule = ''
+ }
+ } else {
+ if (card.wrap.datatype === 'static') {
+ supModule = card.wrap.supModule ? card.wrap.supModule[card.wrap.supModule.length - 1] : ''
+ } else {
+ supModule = null
+ }
+ }
+
+ card.subcards.forEach(item => {
+ if (item.subButton.intertype === 'system' && !item.subButton.sqlType) {
+ errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳璇疯缃搷浣滅被鍨媊})
+ }
+ if (item.subButton.Ot === 'requiredSgl' && card.wrap.datatype === 'static') {
+ errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳閫夎鏃朵笉鍙娇鐢ㄩ潤鎬佹暟鎹簮`})
+ }
+ if (item.subButton.verify && !item.subButton.output) {
+ if (item.subButton.verify.noteEnable === 'true') {
+ errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�肩煭淇″彂閫佹棤鏁堬紒`})
+ } else if (item.subButton.verify.wxNote === 'true') {
+ errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�煎叕浼楀彿娑堟伅鏃犳晥锛乣})
+ } else if (item.subButton.verify.emailEnable === 'true') {
+ errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�奸偖浠跺彂閫佹棤鏁堬紒`})
+ } else if (item.subButton.verify.DeepSeekable === 'true') {
+ errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�糄eekSeek鏃犳晥锛乣})
+ }
+ }
+
+ let forms = []
+ item.fields.forEach(m => {
+ if (m.type === 'funcvar' && m.field) {
+ forms.push(m.field)
+ }
+ if (m.dataSource && /@ID@/ig.test(m.dataSource)) {
+ idCtrl = true
+ }
+ if (m.type === 'linkMain' && !supModule && supModule !== null) {
+ if (item.setting && item.setting.title) {
+ errors.push({ level: 1, detail: `璇锋鏌ュ垎缁勨��${item.setting.title}鈥濅腑鍏宠仈涓昏〃鈥�${m.label}鈥濇槸鍚︽湁鏁坄})
+ } else {
+ errors.push({ level: 1, detail: `璇锋鏌ュ叧鑱斾富琛ㄢ��${m.label}鈥濇槸鍚︽湁鏁坄})
+ }
+ }
+ })
+
+ if (item.subButton.verify && item.subButton.verify.billcodes && item.subButton.verify.billcodes.length > 0) {
+ let bills = item.subButton.verify.billcodes.filter(item => item.status !== 'false').map(item => item.field)
+ bills.forEach(n => {
+ if (!forms.includes(n)) {
+ errors.push({ level: 0, detail: `鎸夐挳鈥�${item.subButton.label}鈥濅腑鍗曞彿鐢熸垚鐨勫嚱鏁板彉閲忊��${n}鈥濅笉瀛樺湪`})
+ }
+ })
+ forms = forms.filter(n => !bills.includes(n))
+ }
+ if (forms.length) {
+ if (item.setting && item.setting.title) {
+ errors.push({ level: 0, detail: `鍒嗙粍鈥�${item.setting.title}鈥濅腑鍑芥暟鍙橀噺琛ㄥ崟鈥�${forms.join(',')}鈥濆皻鏈娇鐢╜})
+ } else {
+ errors.push({ level: 0, detail: `鍑芥暟鍙橀噺琛ㄥ崟鈥�${forms.join(',')}鈥濆皻鏈娇鐢╜})
+ }
+ }
+ })
+
+ card.idCtrl = idCtrl
+ }
+
return errors
}
@@ -2106,6 +2208,7 @@
let _ch_d = sql.match(/@check\$/ig)
let _m_b = sql.match(/\$@/ig)
let _m_d = sql.match(/@\$/ig)
+ let caseErr = false
_quot = _quot ? _quot.length : 0
_lparen = _lparen ? _lparen.length : 0
@@ -2114,6 +2217,14 @@
_ch_d = _ch_d ? _ch_d.length : 0
_m_b = _m_b ? _m_b.length : 0
_m_d = _m_d ? _m_d.length : 0
+
+ if (/case\s+when\s+[\s\S]+\send(\s|\n|$)/ig.test(sql)) {
+ sql.match(/case\s+when\s+[\s\S]+\send(\s|\n|$)/ig).forEach(line => {
+ if (!/\selse\s/ig.test(line)) {
+ caseErr = true
+ }
+ })
+ }
if (_quot % 2 !== 0) {
notification.warning({
@@ -2177,40 +2288,6 @@
duration: 5
})
return false
- } else if (/,\./ig.test(sql)) {
- let lines = []
- sql.split(/\n/).forEach((s, i) => {
- if (/,\./ig.test(s)) {
- lines.push(i + 1)
- }
- })
-
- lines = lines.join('銆�')
- lines = lines ? '(绗�' + lines + '琛�)' : ''
-
- notification.warning({
- top: 92,
- message: label + `${lines}锛屼笉鍙嚭鐜拌嫳鏂囬�楀彿,.`,
- duration: 5
- })
- return false
- } else if (/\.,/ig.test(sql)) {
- let lines = []
- sql.split(/\n/).forEach((s, i) => {
- if (/\.,/ig.test(s)) {
- lines.push(i + 1)
- }
- })
-
- lines = lines.join('銆�')
- lines = lines ? '(绗�' + lines + '琛�)' : ''
-
- notification.warning({
- top: 92,
- message: label + `${lines}锛屼笉鍙嚭鐜拌嫳鏂囬�楀彿.,`,
- duration: 5
- })
- return false
} else if (/鈥榺鈥�/ig.test(sql)) {
let lines = []
sql.split(/\n/).forEach((s, i) => {
@@ -2236,9 +2313,23 @@
})
return false
} else if (/\sdecimal\(8,/ig.test(sql)) {
+ let lines = ''
+ sql.split(/\n/).forEach((s, i) => {
+ if (/(^|\s)decimal\(8,/ig.test(s)) {
+ lines = '绗�' + (i + 1) + '琛屼腑'
+ }
+ })
+
notification.warning({
top: 92,
- message: `涓嶅彲浣跨敤 decimal(8`,
+ message: `${lines}涓嶅彲浣跨敤 decimal(8`,
+ duration: 5
+ })
+ return false
+ } else if (caseErr) {
+ notification.warning({
+ top: 92,
+ message: 'case when 璇彞闇�瑕佹湁 else',
duration: 5
})
return false
@@ -2299,6 +2390,38 @@
duration: 5
})
return false
+ } else if (/,\./ig.test(sql)) {
+ let lines = []
+ sql.split(/\n/).forEach((s, i) => {
+ if (/,\./ig.test(s)) {
+ lines.push(i + 1)
+ }
+ })
+
+ lines = lines.join('銆�')
+ lines = lines ? '(绗�' + lines + '琛�)' : ''
+
+ notification.warning({
+ top: 92,
+ message: label + `${lines}锛屼笉鍙嚭鐜拌嫳鏂囬�楀彿,.`,
+ duration: 5
+ })
+ } else if (/\.,/ig.test(sql)) {
+ let lines = []
+ sql.split(/\n/).forEach((s, i) => {
+ if (/\.,/ig.test(s)) {
+ lines.push(i + 1)
+ }
+ })
+
+ lines = lines.join('銆�')
+ lines = lines ? '(绗�' + lines + '琛�)' : ''
+
+ notification.warning({
+ top: 92,
+ message: label + `${lines}锛屼笉鍙嚭鐜拌嫳鏂囬�楀彿.,`,
+ duration: 5
+ })
}
return true
@@ -2308,6 +2431,8 @@
* @description 鑾峰彇璇█杞崲淇℃伅
*/
export function getLangTrans (config) {
+ if (sessionStorage.getItem('lang') !== 'zh-CN') return ''
+
let langList = sessionStorage.getItem('langList')
let appType = sessionStorage.getItem('appType')
@@ -2315,18 +2440,19 @@
langList = sessionStorage.getItem('applangList')
}
- if (!langList) return
-
- let defLang = ''
+ if (!langList) return ''
try {
langList = JSON.parse(langList)
- defLang = langList[0]
} catch (e) {
- defLang = ''
+ langList = ''
}
- if (!defLang) return ''
+ if (!langList) return ''
+
+ langList = langList.filter(n => n !== 'zh-CN')
+
+ if (langList.length === 0) return ''
let sql = []
let btn = []
@@ -2349,8 +2475,9 @@
let filterSql = (sl) => {
if (!sl) return
+ let _sl = sl.replace(/\/\*[^*/]+\*\//g, '')
let cutreg = /[\u4E00-\u9FA5銆傦紒锛屻�乚+/ig
- let tbs = sl.match(cutreg)
+ let tbs = _sl.match(cutreg)
if (!tbs) return
@@ -2360,8 +2487,18 @@
let filterBtn = (btn) => {
if (!btn.verify) return
+ btn.verify.columns && btn.verify.columns.forEach(col => {
+ if (col.Text) {
+ sql.push(col.Text)
+ }
+ })
+
btn.verify.customverifys && btn.verify.customverifys.forEach(script => {
filterSql(script.sql)
+
+ if (script.errmsg) {
+ sql.push(script.errmsg)
+ }
})
btn.verify.scripts && btn.verify.scripts.forEach(script => {
filterSql(script.sql)
@@ -2402,6 +2539,13 @@
} else if (item.type === 'group') {
traversal(item.components)
} else {
+ if (item.wrap && item.wrap.title) {
+ sql.push(item.wrap.title)
+ }
+ if (item.plot && item.plot.title) {
+ sql.push(item.plot.title)
+ }
+
if (item.setting && (!item.wrap || !item.wrap.datatype || item.wrap.datatype === 'dynamic')) {
if (item.setting.interType === 'system') {
filterSql(item.setting.dataresource)
@@ -2618,6 +2762,16 @@
text = text.filter(Boolean)
menu = menu.filter(Boolean)
+ sql = sql.map(n => n.replace(/^\s+|\s+$/g, '').replace(/(:|锛�)$/g, ''))
+ btn = btn.map(n => n.replace(/^\s+|\s+$/g, ''))
+ ops = ops.map(n => n.replace(/^\s+|\s+$/g, ''))
+ menu = menu.map(n => n.replace(/^\s+|\s+$/g, ''))
+
+ sql = sql.filter(Boolean)
+ btn = btn.filter(Boolean)
+ ops = ops.filter(Boolean)
+ menu = menu.filter(Boolean)
+
sql = Array.from(new Set(sql))
btn = Array.from(new Set(btn))
ops = Array.from(new Set(ops))
@@ -2635,8 +2789,6 @@
let result = []
langList.forEach(lan => {
- if (lan === defLang) return
-
list.forEach(n => {
result.push(`'${lan}',${n}`)
})
@@ -2653,31 +2805,159 @@
export function setLangTrans (config, btnDict, titDict, lisDict, menuDict, regs, tail) {
let filterElement = (card) => {
if (card.datatype === 'static' && card.eleType === 'text' && !/@.+@/g.test(card.value)) {
- if (card.value && titDict[card.value]) {
- card.value = titDict[card.value]
+ if (card.value) {
+ card.value = replaceTitle(card.value)
}
}
- if (card.prefix && titDict[card.prefix]) {
- card.prefix = titDict[card.prefix]
+ if (card.prefix) {
+ card.prefix = replaceTitle(card.prefix)
}
- if (card.postfix && titDict[card.postfix]) {
- card.postfix = titDict[card.postfix]
+ if (card.postfix) {
+ card.postfix = replaceTitle(card.postfix)
}
+ }
+
+ let replaceTitle = (val)聽=> {
+ let s = ''
+ let e = ''
+ if (/^\s+/g) {
+ val = val.replace(/^\s+/g,聽(w) => {
+ s = w
+ return ''
+ })
+ }
+ if (/\s+$/g) {
+ val = val.replace(/\s+$/g,聽(w) => {
+ e = w
+ return ''
+ })
+ }
+
+ if聽(/(:|锛�)$/g.test(val)) {
+ let _val = val.replace(/(:|锛�)$/g,聽'')
+ if聽(titDict[_val]) {
+ val = titDict[_val] + val.substr(-1)
+ }聽else if (titDict[val]) {
+ val = titDict[val]
+ }
+ }聽else if (titDict[val]) {
+ val = titDict[val]
+ }
+
+ val = s + val + e
+
+ return val
+ }
+
+ let replaceBtn = (val)聽=> {
+ let s = ''
+ let e = ''
+ if (/^\s+/g) {
+ val = val.replace(/^\s+/g,聽(w) => {
+ s = w
+ return ''
+ })
+ }
+ if (/\s+$/g) {
+ val = val.replace(/\s+$/g,聽(w) => {
+ e = w
+ return ''
+ })
+ }
+
+ if (btnDict[val]) {
+ val = btnDict[val]
+ }
+
+ val = s + val + e
+
+ return val
+ }
+
+ let replaceList = (val)聽=> {
+ let s = ''
+ let e = ''
+ if (/^\s+/g) {
+ val = val.replace(/^\s+/g,聽(w) => {
+ s = w
+ return ''
+ })
+ }
+ if (/\s+$/g) {
+ val = val.replace(/\s+$/g,聽(w) => {
+ e = w
+ return ''
+ })
+ }
+
+ if (lisDict[val]) {
+ val = lisDict[val]
+ }
+
+ val = s + val + e
+
+ return val
+ }
+
+ let replaceMenu = (val)聽=> {
+ let s = ''
+ let e = ''
+ if (/^\s+/g) {
+ val = val.replace(/^\s+/g,聽(w) => {
+ s = w
+ return ''
+ })
+ }
+ if (/\s+$/g) {
+ val = val.replace(/\s+$/g,聽(w) => {
+ e = w
+ return ''
+ })
+ }
+
+ if (menuDict[val]) {
+ val = menuDict[val]
+ }
+
+ val = s + val + e
+
+ return val
+ }
+
+ let getuuid = () => {
+ let uuid = []
+ let _options = '0123456789abcdefghigklmnopqrstuv'
+ for (let i = 0; i < 19; i++) {
+ uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1))
+ }
+ return uuid.join('')
}
let filterSql = (sl) => {
if (!sl) return
+ let arr = []
+
+ sl = sl.replace(/\/\*[^*/]+\*\//g, (word) => {
+ let uuid = getuuid()
+ arr.push({id: `/*${uuid}*/`, value: word})
+ return `/*${uuid}*/`
+ })
+
regs.forEach(item => {
sl = sl.replace(item.reg, item.value)
+ })
+
+ arr.forEach(item => {
+ sl = sl.replace(item.id, item.value)
})
return sl
}
let filterBtn = (btn) => {
- if (btn.label && btnDict[btn.label]) {
- btn.label = btnDict[btn.label]
+ if (btn.label) {
+ btn.label = replaceBtn(btn.label)
}
if (btn.OpenType === 'tab' && btn.linkmenu) {
@@ -2733,8 +3013,24 @@
if (!btn.verify) return
+ btn.verify.columns && btn.verify.columns.forEach(col => {
+ if (col.Text) {
+ col.Text = replaceTitle(col.Text)
+ }
+ })
+
+ btn.verify.uniques && btn.verify.uniques.forEach(col => {
+ if (col.fieldlabel) {
+ col.fieldlabel = col.fieldlabel.split(',').map(n => replaceTitle(n)).join(',')
+ }
+ })
+
btn.verify.customverifys && btn.verify.customverifys.forEach(script => {
script.sql = filterSql(script.sql)
+
+ if (script.errmsg) {
+ script.errmsg = replaceTitle(script.errmsg)
+ }
})
btn.verify.scripts && btn.verify.scripts.forEach(script => {
script.sql = filterSql(script.sql)
@@ -2753,15 +3049,15 @@
}
let filterForm = (n) => {
- if (n.label && titDict[n.label]) {
- n.label = titDict[n.label]
+ if (n.label) {
+ n.label = replaceTitle(n.label)
}
if (n.resourceType === '1') {
n.dataSource = filterSql(n.dataSource)
} else if (n.options) {
n.options.forEach(o => {
- if (o.Text && lisDict[o.Text]) {
- o.Text = lisDict[o.Text]
+ if (o.Text) {
+ o.Text = replaceList(o.Text)
}
})
}
@@ -2815,14 +3111,20 @@
components.forEach(item => {
if (item.type === 'tabs') {
item.subtabs.forEach(tab => {
- if (tab.label && titDict[tab.label]) {
- tab.label = titDict[tab.label]
+ if (tab.label) {
+ tab.label = replaceTitle(tab.label)
}
traversal(tab.components)
})
} else if (item.type === 'group') {
traversal(item.components)
} else {
+ if (item.wrap && item.wrap.title) {
+ item.wrap.title = replaceTitle(item.wrap.title)
+ }
+ if (item.plot && item.plot.title) {
+ item.plot.title = replaceTitle(item.plot.title)
+ }
if (item.wrap && (item.wrap.click === 'menu' || item.wrap.click === 'menus')) {
if (item.wrap.click === 'menu') {
resetMenu(item.wrap)
@@ -2847,8 +3149,8 @@
if (item.columns) {
item.columns.forEach(cell => {
- if (cell.label && titDict[cell.label]) {
- cell.label = titDict[cell.label]
+ if (cell.label) {
+ cell.label = replaceTitle(cell.label)
}
})
}
@@ -2895,8 +3197,8 @@
item.wrap.linkmenu = item.wrap.linkmenu.slice(0, 24) + tail
} else if (item.type === 'menubar') {
item.subMenus = item.subMenus.map(cell => {
- if (cell.setting.name && menuDict[cell.setting.name]) {
- cell.setting.name = menuDict[cell.setting.name]
+ if (cell.setting.name) {
+ cell.setting.name = replaceMenu(cell.setting.name)
}
if (cell.setting.type === 'linkmenu') {
cell.setting.linkMenuId = cell.setting.linkMenuId.slice(0, 24) + tail
@@ -2967,14 +3269,419 @@
} else if (item.type === 'table') {
let loopCol = (cols) => {
cols.forEach(col => {
- if (col.label && titDict[col.label]) {
- col.label = titDict[col.label]
+ if (col.label) {
+ col.label = replaceTitle(col.label)
}
- if (col.prefix && titDict[col.prefix]) {
- col.prefix = titDict[col.prefix]
+ if (col.prefix) {
+ col.prefix = replaceTitle(col.prefix)
}
- if (col.postfix && titDict[col.postfix]) {
- col.postfix = titDict[col.postfix]
+ if (col.postfix) {
+ col.postfix = replaceTitle(col.postfix)
+ }
+ if (col.type === 'colspan') {
+ loopCol(col.subcols)
+ } else if (col.type === 'custom') {
+ col.elements.forEach(cell => {
+ if (cell.eleType === 'button') {
+ filterBtn(cell)
+ if (cell.OpenType === 'popview' && cell.config) {
+ traversal(cell.config.components)
+ } else if (cell.OpenType === 'pop') {
+ if (cell.modal && cell.modal.fields.length) {
+ cell.modal.fields.forEach(n => {
+ filterForm(n)
+ })
+ }
+ }
+ } else {
+ filterElement(cell)
+ }
+ })
+ }
+ })
+ }
+ loopCol(item.cols)
+ } else if (item.type === 'form') {
+ item.subcards.forEach(cell => {
+ filterBtn(cell.subButton)
+ cell.fields.forEach(n => {
+ filterForm(n)
+ })
+ })
+ }
+ }
+ })
+ }
+
+ if (config.interfaces) {
+ config.interfaces.forEach(item => {
+ if (item.setting.interType === 'system') {
+ item.setting.dataresource = filterSql(item.setting.dataresource)
+ item.scripts && item.scripts.forEach(script => {
+ script.sql = filterSql(script.sql)
+ })
+ }
+ })
+ }
+
+ traversal(config.components)
+}
+
+/**
+ * @description 璇█杞崲
+ */
+export function setLangSingleTrans (config, btnDict, titDict, lisDict, menuDict, regs) {
+ let filterElement = (card) => {
+ if (card.datatype === 'static' && card.eleType === 'text' && !/@.+@/g.test(card.value)) {
+ if (card.value) {
+ card.value = replaceTitle(card.value)
+ }
+ }
+ if (card.prefix) {
+ card.prefix = replaceTitle(card.prefix)
+ }
+ if (card.postfix) {
+ card.postfix = replaceTitle(card.postfix)
+ }
+ }
+
+ let replaceTitle = (val)聽=> {
+ let s = ''
+ let e = ''
+ if (/^\s+/g) {
+ val = val.replace(/^\s+/g,聽(w) => {
+ s = w
+ return ''
+ })
+ }
+ if (/\s+$/g) {
+ val = val.replace(/\s+$/g,聽(w) => {
+ e = w
+ return ''
+ })
+ }
+ if聽(/(:|锛�)$/g.test(val)) {
+ let _val = val.replace(/(:|锛�)$/g,聽'')
+ if聽(titDict[_val]) {
+ val = titDict[_val] + val.substr(-1)
+ }聽else if (titDict[val]) {
+ val = titDict[val]
+ }
+ }聽else if (titDict[val]) {
+ val = titDict[val]
+ }
+
+ val = s + val + e
+
+ return val
+ }
+
+ let replaceBtn = (val)聽=> {
+ let s = ''
+ let e = ''
+ if (/^\s+/g) {
+ val = val.replace(/^\s+/g,聽(w) => {
+ s = w
+ return ''
+ })
+ }
+ if (/\s+$/g) {
+ val = val.replace(/\s+$/g,聽(w) => {
+ e = w
+ return ''
+ })
+ }
+
+ if (btnDict[val]) {
+ val = btnDict[val]
+ }
+
+ val = s + val + e
+
+ return val
+ }
+
+ let replaceList = (val)聽=> {
+ let s = ''
+ let e = ''
+ if (/^\s+/g) {
+ val = val.replace(/^\s+/g,聽(w) => {
+ s = w
+ return ''
+ })
+ }
+ if (/\s+$/g) {
+ val = val.replace(/\s+$/g,聽(w) => {
+ e = w
+ return ''
+ })
+ }
+
+ if (lisDict[val]) {
+ val = lisDict[val]
+ }
+
+ val = s + val + e
+
+ return val
+ }
+
+ let replaceMenu = (val)聽=> {
+ let s = ''
+ let e = ''
+ if (/^\s+/g) {
+ val = val.replace(/^\s+/g,聽(w) => {
+ s = w
+ return ''
+ })
+ }
+ if (/\s+$/g) {
+ val = val.replace(/\s+$/g,聽(w) => {
+ e = w
+ return ''
+ })
+ }
+
+ if (menuDict[val]) {
+ val = menuDict[val]
+ }
+
+ val = s + val + e
+
+ return val
+ }
+
+ let getuuid = () => {
+ let uuid = []
+ let _options = '0123456789abcdefghigklmnopqrstuv'
+ for (let i = 0; i < 19; i++) {
+ uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1))
+ }
+ return uuid.join('')
+ }
+
+ let filterSql = (sl) => {
+ if (!sl) return
+
+ let arr = []
+
+ sl = sl.replace(/\/\*[^*/]+\*\//g, (word) => {
+ let uuid = getuuid()
+ arr.push({id: `/*${uuid}*/`, value: word})
+ return `/*${uuid}*/`
+ })
+
+ regs.forEach(item => {
+ sl = sl.replace(item.reg, item.value)
+ })
+
+ arr.forEach(item => {
+ sl = sl.replace(item.id, item.value)
+ })
+
+ return sl
+ }
+
+ let filterBtn = (btn) => {
+ if (btn.label) {
+ btn.label = replaceBtn(btn.label)
+ }
+
+ if (!btn.verify) return
+
+ btn.verify.columns && btn.verify.columns.forEach(col => {
+ if (col.Text) {
+ col.Text = replaceTitle(col.Text)
+ }
+ })
+
+ btn.verify.uniques && btn.verify.uniques.forEach(col => {
+ if (col.fieldlabel) {
+ col.fieldlabel = col.fieldlabel.split(',').map(n => replaceTitle(n)).join(',')
+ }
+ })
+
+ btn.verify.customverifys && btn.verify.customverifys.forEach(script => {
+ script.sql = filterSql(script.sql)
+
+ if (script.errmsg) {
+ script.errmsg = replaceTitle(script.errmsg)
+ }
+ })
+ btn.verify.scripts && btn.verify.scripts.forEach(script => {
+ script.sql = filterSql(script.sql)
+ })
+ btn.verify.cbScripts && btn.verify.cbScripts.forEach(script => {
+ script.sql = filterSql(script.sql)
+ })
+
+ if (btn.OpenType === 'funcbutton') {
+ if (btn.intertype === 'system' && btn.verify.dataType === 'custom' && btn.verify.setting) {
+ btn.verify.setting.dataresource = filterSql(btn.verify.setting.dataresource)
+ }
+ } else if (btn.OpenType === 'excelOut' && btn.verify.dataresource) {
+ btn.verify.dataresource = filterSql(btn.verify.dataresource)
+ }
+ }
+
+ let filterForm = (n) => {
+ if (n.label) {
+ n.label = replaceTitle(n.label)
+ }
+ if (n.resourceType === '1') {
+ n.dataSource = filterSql(n.dataSource)
+ } else if (n.options) {
+ n.options.forEach(o => {
+ if (o.Text) {
+ o.Text = replaceList(o.Text)
+ }
+ })
+ }
+ }
+
+ let traversal = (components) => {
+ if (!components) return
+
+ components.forEach(item => {
+ if (item.type === 'tabs') {
+ item.subtabs.forEach(tab => {
+ if (tab.label) {
+ tab.label = replaceTitle(tab.label)
+ }
+ traversal(tab.components)
+ })
+ } else if (item.type === 'group') {
+ traversal(item.components)
+ } else {
+ if (item.wrap && item.wrap.title) {
+ item.wrap.title = replaceTitle(item.wrap.title)
+ }
+ if (item.plot && item.plot.title) {
+ item.plot.title = replaceTitle(item.plot.title)
+ }
+ if (item.setting && (!item.wrap || !item.wrap.datatype || item.wrap.datatype === 'dynamic')) {
+ if (item.setting.interType === 'system') {
+ item.setting.dataresource = filterSql(item.setting.dataresource)
+ item.scripts && item.scripts.forEach(script => {
+ script.sql = filterSql(script.sql)
+ })
+ }
+ }
+
+ if (item.columns) {
+ item.columns.forEach(cell => {
+ if (cell.label) {
+ cell.label = replaceTitle(cell.label)
+ }
+ })
+ }
+ if (item.search) {
+ if (item.type === 'topbar') {
+ if (item.search.fields) {
+ item.search.fields.forEach(cell => {
+ filterForm(cell)
+ })
+ }
+ if (item.search.groups) {
+ item.search.groups.forEach(group => {
+ if (group.fields) {
+ group.fields.forEach(cell => {
+ filterForm(cell)
+ })
+ }
+ })
+ }
+ } else {
+ item.search.forEach(cell => {
+ filterForm(cell)
+ })
+ }
+ }
+ if (item.action) {
+ item.action.forEach(cell => {
+ filterBtn(cell)
+ if (cell.OpenType === 'popview' && cell.config) {
+ traversal(cell.config.components)
+ } else if (cell.OpenType === 'pop') {
+ if (cell.modal && cell.modal.fields.length) {
+ cell.modal.fields.forEach(n => {
+ filterForm(n)
+ })
+ }
+ }
+ })
+ }
+
+ if (item.type === 'menubar') {
+ item.subMenus = item.subMenus.map(cell => {
+ if (cell.setting.name) {
+ cell.setting.name = replaceMenu(cell.setting.name)
+ }
+ return cell
+ })
+ } else if (item.type === 'card' || item.type === 'carousel' || item.type === 'timeline') {
+ item.subcards.forEach(card => {
+ card.elements && card.elements.forEach(cell => {
+ if (cell.eleType === 'button') {
+ filterBtn(cell)
+ if (cell.OpenType === 'popview' && cell.config) {
+ traversal(cell.config.components)
+ } else if (cell.OpenType === 'pop') {
+ if (cell.modal && cell.modal.fields.length) {
+ cell.modal.fields.forEach(n => {
+ filterForm(n)
+ })
+ }
+ }
+ } else {
+ filterElement(cell)
+ }
+ })
+ card.backElements && card.backElements.forEach(cell => {
+ if (cell.eleType === 'button') {
+ filterBtn(cell)
+ if (cell.OpenType === 'popview' && cell.config) {
+ traversal(cell.config.components)
+ } else if (cell.OpenType === 'pop') {
+ if (cell.modal && cell.modal.fields.length) {
+ cell.modal.fields.forEach(n => {
+ filterForm(n)
+ })
+ }
+ }
+ } else {
+ filterElement(cell)
+ }
+ })
+ })
+ } else if (item.type === 'balcony') {
+ item.elements && item.elements.forEach(cell => {
+ if (cell.eleType === 'button') {
+ filterBtn(cell)
+ if (cell.OpenType === 'popview' && cell.config) {
+ traversal(cell.config.components)
+ } else if (cell.OpenType === 'pop') {
+ if (cell.modal && cell.modal.fields.length) {
+ cell.modal.fields.forEach(n => {
+ filterForm(n)
+ })
+ }
+ }
+ } else {
+ filterElement(cell)
+ }
+ })
+ } else if (item.type === 'table') {
+ let loopCol = (cols) => {
+ cols.forEach(col => {
+ if (col.label) {
+ col.label = replaceTitle(col.label)
+ }
+ if (col.prefix) {
+ col.prefix = replaceTitle(col.prefix)
+ }
+ if (col.postfix) {
+ col.postfix = replaceTitle(col.postfix)
}
if (col.type === 'colspan') {
loopCol(col.subcols)
@@ -3808,6 +4515,30 @@
// 鍞竴鎬ч獙璇侊紝蹇呴』瀛樺湪琛ㄥ崟锛堣〃鍗曞瓨鍦ㄦ椂锛屼富閿潎涓哄崟鍊硷級,蹇呴』濉啓鏁版嵁婧愶紝澶氳鎷兼帴鏃朵笉鍙敤
if (formdata && verify.uniques && verify.uniques.length > 0 && btn.Ot !== 'requiredOnce') {
+ let nFields = []
+ let dataFields = []
+ formdata.forEach(form => {
+ let _key = form.key.toLowerCase()
+ if (form.type === 'number' || form.type === 'rate') {
+ nFields.push(_key)
+ } else if (form.type === 'date') {
+ dataFields.push(_key)
+ }
+ })
+ if (columns && columns.length > 0 && btn.Ot !== 'notRequired') {
+ columns.forEach(col => {
+ let _key = col.field.toLowerCase()
+ if (col.type === 'number') {
+ if (!nFields.includes(_key)) {
+ nFields.push(_key)
+ }
+ } else if (/^date/ig.test(col.datatype)) {
+ if (!dataFields.includes(_key)) {
+ dataFields.push(_key)
+ }
+ }
+ })
+ }
verify.uniques.forEach(item => {
let _fieldValue = [] // 琛ㄥ崟閿�煎field=value
let _value = [] // 琛ㄥ崟鍊硷紝鐢ㄤ簬閿欒鎻愮ず
@@ -3833,7 +4564,13 @@
_val2 = `' + ${BID} + '`
} else {
// _val2 = `@mk_${_key}_mk@`
- _val2 = `' + @${_field} + '`
+ if (nFields.includes(_key)) {
+ _val2 = `' + cast (@${_field} as nvarchar(50)) + '`
+ } else if (dataFields.includes(_key)) {
+ _val2 = `' + CONVERT(nvarchar(50), @${_field}, 23) + '`
+ } else {
+ _val2 = `' + @${_field} + '`
+ }
}
_value.push(`${_labels[index] || ''}锛�${_val2}`)
@@ -4811,7 +5548,7 @@
let sFields = getSearches(searches)
let _columns = []
- if (item.subtype === 'dualdatacard') {
+ if (item.subtype === 'dualdatacard' && item.setting.subdata !== 'sub_data_string') {
_columns = [...item.columns, ...item.subColumns]
} else if (item.columns) {
_columns = [...item.columns]
@@ -4844,6 +5581,7 @@
// }
let _search = ''
+
if (item.setting.execute !== 'false') {
_dataresource = item.setting.dataresource || ''
_search = '@mk_search@'
@@ -4853,14 +5591,21 @@
_search = ''
}
+ let custompage = false
+ let testSql = _dataresource + _customScript + _tailScript
+
+ if (/order\s+by\s+sort_id\s*$/i.test(_dataresource)) {
+ custompage = true
+ } else if (/@pageSize@|@orderBy@|@mk_total/i.test(testSql)) {
+ custompage = true
+ }
+
if (/\s/.test(_dataresource) && !/\)\s+tb$/.test(_dataresource)) {
_dataresource = '(' + _dataresource + ') tb'
}
item.setting.dataresource = _dataresource
item.setting.customScript = _customScript
-
- let testSql = _dataresource + _customScript + _tailScript
let decSql = [`@ErrorCode nvarchar(50),@retmsg nvarchar(4000)`]
let secSql = [`@ErrorCode='S',@retmsg =''`]
@@ -4914,12 +5659,12 @@
let DateCount = ''
if (_dataresource) {
/*system_query*/
- if (/@pageSize@|@orderBy@|@mk_total/i.test(testSql) || (item.wrap && item.wrap.tree === 'true')) {
+ if (custompage || (item.wrap && item.wrap.tree === 'true')) {
LText = `select ${arr_field} from ${_dataresource} ${_search} `
} else if (item.setting.laypage === 'true' && item.setting.order) {
LText = `select top @pageSize@ ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by @orderBy@) as rows from ${_dataresource} ${_search}) tmptable where rows > @pageSize@ * (@pageIndex@ - 1) order by tmptable.rows `
reps.push('pageSize', 'orderBy', 'pageIndex')
- if (item.subtype === 'dualdatacard') {
+ if (item.subtype === 'dualdatacard' && item.setting.subdata !== 'sub_data_string') {
DateCount = `select count(1) as total from (select distinct ${item.setting.primaryKey || 'ID'} from ${_dataresource} ${_search})a`
} else {
DateCount = `select count(1) as total from ${_dataresource} ${_search}`
@@ -4946,7 +5691,7 @@
let parid = ''
let sub_field = ''
- if (item.subtype === 'dualdatacard') {
+ if (item.subtype === 'dualdatacard' && item.setting.subdata !== 'sub_data_string') {
arr_field = item.columns.map(col => col.field).join(',')
sub_name = item.setting.subdata
tabid = item.setting.primaryKey || ''
@@ -5488,6 +6233,7 @@
let _fields = unique.field.split(',')
let _fields_ = _fields.map(_field => `a.${_field}=b.${_field}`)
_fields_ = _fields_.join(' and ')
+ _fields_ += ` and a.jskey != b.${setting.primaryKey || 'id'}`
let _where = []
_fields.forEach(f => {
@@ -5544,6 +6290,7 @@
let declarefields = []
let fields = []
+ let upFields = []
forms.forEach(col => {
let key = col.field.toLowerCase()
@@ -5551,15 +6298,27 @@
declarefields.push(`${col.field} ${col.datatype}`)
fields.push(col.field)
+ upFields.push(`${col.field}=t.${col.field}`)
})
fields = fields.join(',')
+ upFields = upFields.join(',')
let _insert = ''
if (btn.default !== 'false') {
_insert = `
/* 榛樿sql */
- Insert into ${database}${sheet} (${fields},createuserid,createuser,createstaff,bid)
+ update a set ${upFields},modifydate=getdate(),modifyuserid=@UserID@,modifyuser=@username,modifystaff=@fullname,deleted=0
+ from (select * from #${sheet} where data_type='upt') t
+ inner join ${database}${sheet} a on t.jskey=a.${setting.primaryKey || 'id'}
+
+ update a set deleted=1,modifydate=getdate(),modifyuserid=@UserID@,modifyuser=@username,modifystaff=@fullname
+ from (select * from #${sheet} where data_type='del') t
+ inner join ${database}${sheet} a on t.jskey=a.${setting.primaryKey || 'id'}
+
+ delete t from #${sheet} t inner join ${database}${sheet} a on t.jskey=a.${setting.primaryKey || 'id'}
+
+ Insert into ${database}${sheet} (${fields},createuserid,createuser,createstaff,bid)
Select ${fields},@UserID@,@username,@fullname,@BID@ From #${sheet}
`
}
--
Gitblit v1.8.0