Commit 0960448f5406eac8deb041c9b857e5182dc69a4b
1 parent
24c52a3e
1.列表支持点击字段时,键盘ctrl+C支持复制单元格内容
Showing
2 changed files
with
21 additions
and
10 deletions
src/components/Common/CommonComponent/index.js
| @@ -785,14 +785,14 @@ export default class CommonComponent extends Component { | @@ -785,14 +785,14 @@ export default class CommonComponent extends Component { | ||
| 785 | const { scrollTop } = oTBody; | 785 | const { scrollTop } = oTBody; |
| 786 | 786 | ||
| 787 | const oTr = this.selectTableRef1.querySelector(".selected-record-row"); | 787 | const oTr = this.selectTableRef1.querySelector(".selected-record-row"); |
| 788 | - const trRect = oTr.getBoundingClientRect(); | ||
| 789 | - const tbodyRect = oTBody.getBoundingClientRect(); | 788 | + const trRect = oTr?.getBoundingClientRect(); |
| 789 | + const tbodyRect = oTBody?.getBoundingClientRect(); | ||
| 790 | 790 | ||
| 791 | - const tbodyTop = tbodyRect.top + window.scrollY; | ||
| 792 | - const tbodyBottom = tbodyRect.bottom + window.scrollY; | 791 | + const tbodyTop = tbodyRect?.top + window.scrollY; |
| 792 | + const tbodyBottom = tbodyRect?.bottom + window.scrollY; | ||
| 793 | 793 | ||
| 794 | - const trTop = trRect.top + window.scrollY; | ||
| 795 | - const trBottom = trRect.bottom + window.scrollY; | 794 | + const trTop = trRect?.top + window.scrollY; |
| 795 | + const trBottom = trRect?.bottom + window.scrollY; | ||
| 796 | if (keyCode === 40) { | 796 | if (keyCode === 40) { |
| 797 | const selectTableIndexNew = Math.min(selectTableIndex + 1, selectTableData.length - 1); | 797 | const selectTableIndexNew = Math.min(selectTableIndex + 1, selectTableData.length - 1); |
| 798 | if (selectTableIndex !== selectTableIndexNew) { | 798 | if (selectTableIndex !== selectTableIndexNew) { |
src/components/Common/CommonTable/index.js
| @@ -1013,7 +1013,7 @@ class CommonTableRc extends React.Component { | @@ -1013,7 +1013,7 @@ class CommonTableRc extends React.Component { | ||
| 1013 | if (e.key === 'F10') { | 1013 | if (e.key === 'F10') { |
| 1014 | message.info(sName); | 1014 | message.info(sName); |
| 1015 | } else if (e.ctrlKey && e.keyCode === 67) { | 1015 | } else if (e.ctrlKey && e.keyCode === 67) { |
| 1016 | - console.log('复制成功!'); | 1016 | + // console.log('复制成功!'); |
| 1017 | } else if (e.ctrlKey && e.keyCode === 65) { | 1017 | } else if (e.ctrlKey && e.keyCode === 65) { |
| 1018 | console.log('全选成功!'); | 1018 | console.log('全选成功!'); |
| 1019 | } else if (e.ctrlKey && (e.altKey || e.metaKey) && e.keyCode === 71) { /* CTRL+ALT+G F7 设置界面 */ | 1019 | } else if (e.ctrlKey && (e.altKey || e.metaKey) && e.keyCode === 71) { /* CTRL+ALT+G F7 设置界面 */ |
| @@ -5780,12 +5780,23 @@ class CommonTableRc extends React.Component { | @@ -5780,12 +5780,23 @@ class CommonTableRc extends React.Component { | ||
| 5780 | > | 5780 | > |
| 5781 | <span | 5781 | <span |
| 5782 | className={linkStyle} | 5782 | className={linkStyle} |
| 5783 | - style={{ border: 'none', outline: 'none' }} | 5783 | + style={{ border: 'none', outline: 'none', userSelect: 'text' }} // 允许选中复制 |
| 5784 | onKeyDown={e => this.onKeyDownDiv(e, sName)} | 5784 | onKeyDown={e => this.onKeyDownDiv(e, sName)} |
| 5785 | onCut={e => e.preventDefault()} | 5785 | onCut={e => e.preventDefault()} |
| 5786 | onPaste={e => e.preventDefault()} | 5786 | onPaste={e => e.preventDefault()} |
| 5787 | - // suppressContentEditableWarning | ||
| 5788 | - // contentEditable="true" | 5787 | + // onInput={e => e.preventDefault()} |
| 5788 | + suppressContentEditableWarning | ||
| 5789 | + contentEditable="true" | ||
| 5790 | + tabIndex="0" | ||
| 5791 | + onCopy={(e) => { | ||
| 5792 | + // 先拿到当前选中的文本(如果没选中,就拿整个span的内容) | ||
| 5793 | + let text = window.getSelection().toString() || sValue; | ||
| 5794 | + text = text.trimEnd(); // 自动去末尾空格 | ||
| 5795 | + e.clipboardData.setData('text/plain', text); | ||
| 5796 | + e.preventDefault(); | ||
| 5797 | + message.success('复制成功'); | ||
| 5798 | + console.log('复制的内容:', text); // 方便调试 | ||
| 5799 | + }} | ||
| 5789 | onClick={commonUtils.isNotEmptyObject(linkStyle) ? this.handleViewClick.bind(this, isSlaveInfo ? 'slaveInfo' : this.props.name, showConfig.sName, record, index, showConfig) : null} | 5800 | onClick={commonUtils.isNotEmptyObject(linkStyle) ? this.handleViewClick.bind(this, isSlaveInfo ? 'slaveInfo' : this.props.name, showConfig.sName, record, index, showConfig) : null} |
| 5790 | > {isAmount ? this.formatThousands(sValue) : sValue}</span> | 5801 | > {isAmount ? this.formatThousands(sValue) : sValue}</span> |
| 5791 | </Tooltip> | 5802 | </Tooltip> |