From 4cc738e535d1a20701d206e12cf9de8cc5a01170 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期六, 01 六月 2024 15:24:12 +0800
Subject: [PATCH] Merge branch 'develop'
---
src/tabviews/custom/components/share/normalTable/index.jsx | 198 +++++++++++++++++++++++++++++++------------------
1 files changed, 125 insertions(+), 73 deletions(-)
diff --git a/src/tabviews/custom/components/share/normalTable/index.jsx b/src/tabviews/custom/components/share/normalTable/index.jsx
index 115e30a..a468ec1 100644
--- a/src/tabviews/custom/components/share/normalTable/index.jsx
+++ b/src/tabviews/custom/components/share/normalTable/index.jsx
@@ -20,6 +20,51 @@
'5:1': '20%', '6:1': '16.67%', '7:1': '14.29%', '8:1': '12.5%', '9:1': '11.11%',
'10:1': '10%', '3:4': '133.33%', '2:3': '150%', '9:16': '177.78%'
}
+
+// 瀛楁閫忚
+const triggerLink = (e, item, record) => {
+ e.stopPropagation()
+
+ if (item.linkThdMenu) {
+ let __param = {
+ $BID: record.$$uuid
+ }
+
+ if (item.field) {
+ __param.$searchkey = item.field.toLowerCase()
+ __param.$searchval = record[item.field] || ''
+ }
+
+ Object.keys(record).forEach(key => {
+ if (/^\$/.test(key)) return
+ __param[key] = record[key]
+ })
+
+ let tabmenu = item.linkThdMenu
+
+ tabmenu.param = __param
+
+ MKEmitter.emit('modifyTabs', tabmenu, true)
+ } else if (item.linkurl) {
+ let src = item.linkurl
+
+ if (/@/.test(src)) {
+ src = src.replace(/@id@/ig, record.$$uuid)
+ src = src.replace(/@appkey@/ig, window.GLOB.appkey)
+ src = src.replace(/@userid@/ig, sessionStorage.getItem('UserID'))
+ src = src.replace(/@LoginUID@/ig, sessionStorage.getItem('LoginUID'))
+
+ Object.keys(record).forEach(key => {
+ if (/^\$/.test(key)) return
+ let reg = new RegExp('@' + key + '@', 'ig')
+ src = src.replace(reg, record[key])
+ })
+ }
+
+ window.open(src)
+ }
+}
+
class BodyRow extends React.Component {
shouldComponentUpdate (nextProps, nextState) {
return !is(fromJS(this.props.data), fromJS(nextProps.data)) || this.props.className !== nextProps.className
@@ -107,10 +152,10 @@
}
render() {
- let { col, config, record, className, style, triggerLink, ...resProps } = this.props
+ let { col, config, record, className, style, ...resProps } = this.props
if (!col) return (<td {...resProps} className={className} style={style}/>)
-
+
if (col.type === 'text') {
let content = ''
if (record[col.field] !== undefined) {
@@ -124,6 +169,10 @@
content = `${content.substr(0, 4)}-${content.substr(5, 2)}-${content.substr(8, 2)} ${content.substr(11, 2)}:${content.substr(14, 2)}:${content.substr(17, 2)}`
} else if (col.textFormat === 'encryption') {
content = <span>{col.prefix || ''}<Encrypts value={content} />{col.postfix || ''}</span>
+ }
+
+ if (col.noValue === 'hide' && content < '1949-10-02') {
+ content = ''
}
if (col.textFormat !== 'encryption') {
@@ -162,21 +211,19 @@
resProps.rowSpan = record['$$' + col.field]
}
- if (!record.$disabled && (col.linkThdMenu || col.linkurl)) {
- content = (
- <div>
- <div className="link-menu" onDoubleClick={(e) => triggerLink(e, col, record)}></div>
- {content}
- </div>
- )
- }
-
resProps.children = content
+
+ if (!record.$disabled && (col.linkThdMenu || col.linkurl)) {
+ return (<td {...resProps} className={className + ' clickable'} onClick={(e) => triggerLink(e, col, record)} style={style}/>)
+ }
} else if (col.type === 'number') {
let content = ''
try {
content = parseFloat(record[col.field])
if (isNaN(content)) {
+ content = ''
+ }
+ if (col.noValue === 'hide' && content === 0) {
content = ''
}
} catch (e) {
@@ -197,6 +244,7 @@
}
if (col.format === 'thdSeparator') {
+ content = content + ''
content = content.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,')
}
@@ -235,16 +283,11 @@
resProps.rowSpan = record['$$' + col.field]
}
- if (!record.$disabled && (col.linkThdMenu || col.linkurl)) {
- content = (
- <div>
- <div className="link-menu" onDoubleClick={(e) => triggerLink(e, col, record)}></div>
- {content}
- </div>
- )
- }
-
resProps.children = content
+
+ if (!record.$disabled && (col.linkThdMenu || col.linkurl)) {
+ return (<td {...resProps} className={className + ' clickable'} onClick={(e) => triggerLink(e, col, record)} style={style}/>)
+ }
} else if (col.type === 'picture') {
let photos = ''
if (record[col.field]) {
@@ -329,6 +372,17 @@
} else {
_href += '?' + _param
}
+ } else if (/@/.test(_href)) {
+ _href = _href.replace(/@id@/ig, record.$$uuid || '')
+ _href = _href.replace(/@appkey@/ig, window.GLOB.appkey)
+ _href = _href.replace(/@userid@/ig, sessionStorage.getItem('UserID'))
+ _href = _href.replace(/@LoginUID@/ig, sessionStorage.getItem('LoginUID'))
+
+ Object.keys(record).forEach(key => {
+ if (/^\$/.test(key)) return
+ let reg = new RegExp('@' + key + '@', 'ig')
+ _href = _href.replace(reg, record[key])
+ })
}
if (col.blur) {
@@ -352,6 +406,10 @@
// eslint-disable-next-line
let func = new Function('data', col.formula)
content = func([record])
+
+ if (col.noValue === 'hide' && content === 0) {
+ content = ''
+ }
} catch (e) {
console.warn(e)
content = ''
@@ -365,6 +423,10 @@
try {
// eslint-disable-next-line
content = eval(content)
+
+ if (col.noValue === 'hide' && content === 0) {
+ content = ''
+ }
} catch (e) {
console.info(content)
console.warn(e)
@@ -444,7 +506,8 @@
chgSelectData: PropTypes.func, // 鏁版嵁鍒囨崲
autoMatic: PropTypes.any,
allSearch: PropTypes.any,
- colsCtrls: PropTypes.any
+ colsCtrls: PropTypes.any,
+ parCtrl: PropTypes.any
}
state = {
@@ -493,10 +556,7 @@
if (item.rowspan === 'true') {
rowspans.push(item.field)
}
- if (item.type === 'index') {
- item.field = '$Index'
- item.type = 'text'
- } else if (_format && !Math.floor(Math.random() * radio)) {
+ if (_format && !Math.floor(Math.random() * radio)) {
item.blur = true
}
@@ -517,7 +577,6 @@
record,
col: item,
config: item.type === 'custom' ? {setting, columns: fields} : null,
- triggerLink: this.triggerLink
})
}
}
@@ -566,6 +625,10 @@
pageOptions = pageOptions.sort((a, b) => a - b)
}
+ if (setting.maxPageSize) {
+ pageOptions = pageOptions.filter(item => item <= setting.maxPageSize)
+ }
+
let allColumns = null
if (colsCtrls) {
rowspans = null
@@ -589,7 +652,7 @@
}
UNSAFE_componentWillReceiveProps(nextProps) {
- const { allSearch } = this.props
+ const { allSearch, parCtrl } = this.props
const { allColumns } = this.state
if (allSearch && !is(fromJS(allSearch), fromJS(nextProps.allSearch))) {
@@ -598,6 +661,36 @@
columns: this.getCurColumns(allColumns, nextProps.allSearch)
}, () => {
this.setState({reseting: false})
+ })
+ } else if (parCtrl && !is(fromJS(this.props.columns), fromJS(nextProps.columns))) {
+ let getColumns = (cols) => {
+ return cols.map(item => {
+ let cell = null
+
+ if (item.type === 'colspan') {
+ cell = { title: item.label, align: item.Align }
+ cell.children = getColumns(item.subcols)
+ } else {
+ cell = {
+ align: item.Align,
+ dataIndex: item.uuid,
+ title: item.label,
+ sorter: (item.field || item.sortField) && item.IsSort === 'true',
+ width: item.Width || 120,
+ onCell: record => ({
+ record,
+ col: item,
+ config: item.type === 'custom' ? {setting: this.props.setting, columns: this.props.fields} : null,
+ })
+ }
+ }
+
+ return cell
+ })
+ }
+
+ this.setState({
+ columns: getColumns(nextProps.columns)
})
}
}
@@ -647,6 +740,9 @@
result = originVal === contrastVal
} else if (item.match === '!=') {
result = originVal !== contrastVal
+ } else if (item.match === 'regexp') {
+ let reg = new RegExp(item.contrastValue, 'ig')
+ result = reg.test(originVal)
} else {
originVal = isNaN(originVal) ? originVal : +originVal
contrastVal = isNaN(contrastVal) ? contrastVal : +contrastVal
@@ -784,50 +880,6 @@
MKEmitter.emit('resetSelectLine', MenuID, '', '')
MKEmitter.emit('syncBalconyData', MenuID, [], false)
- }
- }
-
- // 瀛楁閫忚
- triggerLink = (e, item, record) => {
- e.stopPropagation()
-
- let __param = {
- $searchkey: item.field,
- $searchval: record[item.field] || '',
- $BID: record.$$uuid
- }
-
- if (item.linkfields && item.linkfields.length > 0) {
- item.linkfields.forEach(field => {
- __param[field] = record[field] || ''
- })
- }
-
- if (item.linkThdMenu) {
- let tabmenu = item.linkThdMenu
-
- tabmenu.param = __param
-
- MKEmitter.emit('modifyTabs', tabmenu, true)
- } else if (item.linkurl) {
- let src = item.linkurl
-
- let con = '?'
-
- if (/\?/ig.test(src)) {
- con = '&'
- }
-
- if (item.linkfields && item.linkfields.length > 0) {
- item.linkfields.forEach(field => {
- if (field.toLowerCase() === 'id') return
- con += `${field}=${record[field] || ''}&`
- })
- }
-
- src = src + `${con}id=${record.$$uuid}&appkey=${window.GLOB.appkey}&userid=${sessionStorage.getItem('UserID')}&LoginUID=${sessionStorage.getItem('LoginUID') || ''}`
-
- window.open(src)
}
}
@@ -1060,7 +1112,7 @@
if (!setting.doubleClick) return
if (record.$disabled) return
- MKEmitter.emit('triggerBtnId', setting.doubleClick, [record], 'linkbtn')
+ MKEmitter.emit('triggerBtnId', setting.doubleClick, [record], 'linkbtn', (record.$$uuid || '') + (record.$Index || ''))
}
render() {
@@ -1143,7 +1195,7 @@
}
return (
- <div className={`normal-custom-table ${setting.tableHeader || ''} ${height ? 'fixed-height' : ''} ${setting.mode || ''} table-vertical-${setting.vertical || 'middle'} table-col-${columns.length} ${fixed}`} style={style}>
+ <div className={`normal-custom-table ${setting.tableHeader || ''} ${setting.parity === 'true' ? 'mk-parity' : ''} ${height ? 'fixed-height' : ''} ${setting.mode || ''} table-vertical-${setting.vertical || 'middle'} table-col-${columns.length} ${fixed}`} style={style}>
{(setting.tableType === 'radio' || setting.tableType === 'checkbox') && data && data.length > 0 ?
<Switch title="鏀惰捣" className="main-pickup" checkedChildren="寮�" unCheckedChildren="鍏�" checked={pickup} onChange={this.pickupChange} /> : null
}
--
Gitblit v1.8.0