From f0bf8c399c354c22227f8f1a76ed806098db59c0 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 21 五月 2024 16:51:02 +0800 Subject: [PATCH] 2024-05-21 --- src/tabviews/custom/components/share/normalTable/index.jsx | 156 ++++++++++++++++++++++++++++++++-------------------- 1 files changed, 96 insertions(+), 60 deletions(-) diff --git a/src/tabviews/custom/components/share/normalTable/index.jsx b/src/tabviews/custom/components/share/normalTable/index.jsx index 66f8c96..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,7 +152,7 @@ } 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}/>) @@ -169,10 +214,7 @@ resProps.children = content if (!record.$disabled && (col.linkThdMenu || col.linkurl)) { - style = style || {} - style.cursor = 'pointer' - - return (<td {...resProps} className={className} onDoubleClick={() => triggerLink(col, record)} style={style}/>) + return (<td {...resProps} className={className + ' clickable'} onClick={(e) => triggerLink(e, col, record)} style={style}/>) } } else if (col.type === 'number') { let content = '' @@ -202,6 +244,7 @@ } if (col.format === 'thdSeparator') { + content = content + '' content = content.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,') } @@ -243,10 +286,7 @@ resProps.children = content if (!record.$disabled && (col.linkThdMenu || col.linkurl)) { - style = style || {} - style.cursor = 'pointer' - - return (<td {...resProps} className={className} onDoubleClick={() => triggerLink(col, record)} style={style}/>) + return (<td {...resProps} className={className + ' clickable'} onClick={(e) => triggerLink(e, col, record)} style={style}/>) } } else if (col.type === 'picture') { let photos = '' @@ -332,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) { @@ -455,7 +506,8 @@ chgSelectData: PropTypes.func, // 鏁版嵁鍒囨崲 autoMatic: PropTypes.any, allSearch: PropTypes.any, - colsCtrls: PropTypes.any + colsCtrls: PropTypes.any, + parCtrl: PropTypes.any } state = { @@ -504,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 } @@ -528,7 +577,6 @@ record, col: item, config: item.type === 'custom' ? {setting, columns: fields} : null, - triggerLink: this.triggerLink }) } } @@ -604,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))) { @@ -613,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) }) } } @@ -802,48 +880,6 @@ MKEmitter.emit('resetSelectLine', MenuID, '', '') MKEmitter.emit('syncBalconyData', MenuID, [], false) - } - } - - // 瀛楁閫忚 - triggerLink = (item, record) => { - 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) } } @@ -1076,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() { @@ -1159,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