Commit 969ac76b6c14d3a292559138a9ea06727b7efc9a

Authored by zhangzzzz
1 parent ba5b70af

处理虚拟滚动报错问题;

src/components/Common/CommonTable/index.js
@@ -61,8 +61,8 @@ import CommonListSelect from '@/components/Common/CommonListSelect'; @@ -61,8 +61,8 @@ import CommonListSelect from '@/components/Common/CommonListSelect';
61 import CommonListTreeSelect from '@/components/Common/CommonListTreeSelect'; 61 import CommonListTreeSelect from '@/components/Common/CommonListTreeSelect';
62 import AntdDraggableDiv from '@/components/Common/AntdDraggableDiv'; 62 import AntdDraggableDiv from '@/components/Common/AntdDraggableDiv';
63 import SlaveMemo from '@/components/Common/SlaveMemo'; 63 import SlaveMemo from '@/components/Common/SlaveMemo';
64 -// import { VList } from '@/components/Vlist';  
65 -// import { VList as VListNew } from '@/components/VlistNew'; 64 +import { VList } from '@/components/Vlist';
  65 +import { VList as VListNew } from '@/components/VlistNew';
66 import SvgIcon from "../../SvgIcon"; 66 import SvgIcon from "../../SvgIcon";
67 import PrintPdf from '@/components/PrintPdf/PrintPdf'; 67 import PrintPdf from '@/components/PrintPdf/PrintPdf';
68 import OfficePreview from '@/components/Common/OfficePreview'; 68 import OfficePreview from '@/components/Common/OfficePreview';
@@ -1804,67 +1804,67 @@ class CommonTableRc extends React.Component { @@ -1804,67 +1804,67 @@ class CommonTableRc extends React.Component {
1804 noVlistTable = true; 1804 noVlistTable = true;
1805 } 1805 }
1806 // 判断是否有合并单元格, 有的话默认关闭虚拟滚动 1806 // 判断是否有合并单元格, 有的话默认关闭虚拟滚动
1807 - // if (this.mergeCellStateMap) {  
1808 - // for (let key in this.mergeCellStateMap) {  
1809 - // if (this.mergeCellStateMap[key]) {  
1810 - // noVlistController= true;  
1811 - // }  
1812 - // }  
1813 - // } 1807 + if (this.mergeCellStateMap) {
  1808 + for (let key in this.mergeCellStateMap) {
  1809 + if (this.mergeCellStateMap[key]) {
  1810 + noVlistController= true;
  1811 + }
  1812 + }
  1813 + }
1814 1814
1815 - // if (!noVlistTable) {  
1816 - // if (this.props.slaveInfo || this.useVListNew) {  
1817 - // if (!this.uniqueId || window.vlistNewSearh) {  
1818 - // this.uniqueId = this.props.formId ? `${this.props.formId}_${lodash.uniqueId()}` : lodash.uniqueId();  
1819 - // }  
1820 - // if (!this.Vcomponents || window.vlistNewSearh) {  
1821 - // const { tableClassName } = this.state;  
1822 - // const oTable = document.querySelectorAll(`.${tableClassName}`)[0];  
1823 - // if (oTable) {  
1824 - // const oBody = oTable.querySelector('.ant-table-body');  
1825 - // oBody && (oBody.scrollTop = 0);  
1826 - // }  
1827 - // window.vlistNewSearh = null;  
1828 - // this.Vcomponents = VListNew({height: this.scrollY, vid: this.uniqueId, onScroll: () => {  
1829 - // setTimeout(() => {  
1830 - // let divs = document.getElementsByClassName('noInputInsert');  
1831 - // if (divs.length) {  
1832 - // Array.prototype.forEach.call(divs, item => {  
1833 - // item.parentNode.parentNode.parentNode.parentNode.classList.add('insertTd');  
1834 - // });  
1835 - // }  
1836 - // }, 20);  
1837 - // }});  
1838 - // }  
1839 - // components = {...this.Vcomponents, ...components};  
1840 - // } else {  
1841 - // // vid是多个列表在同个页面中,同时渲染会促发问题  
1842 - // // vid不可以为随机数,随机数会导致双击时,点击的两个VList id不同  
1843 - // if (!this.uniqueId || window.vlistNewSearh) {  
1844 - // this.uniqueId = this.props.formId ? `${this.props.formId}_${lodash.uniqueId()}` : lodash.uniqueId();  
1845 - // }  
1846 - // if (!this.Vcomponents1 || window.vlistNewSearh) {  
1847 - // const { tableClassName } = this.state;  
1848 - // const oTable = document.querySelectorAll(`.${tableClassName}`)[0];  
1849 - // if (oTable) {  
1850 - // const oBody = oTable.querySelector('.ant-table-body');  
1851 - // oBody && (oBody.scrollTop = 0);  
1852 - // }  
1853 - // window.vlistNewSearh = null;  
1854 - // this.Vcomponents1 = VListNew({ height: this.scrollY, vid: this.uniqueId, rowKey: this.rowKey, onScroll: () => {  
1855 - // setTimeout(() => {  
1856 - // let divs = document.getElementsByClassName('noInputInsert');  
1857 - // if (divs.length) {  
1858 - // Array.prototype.forEach.call(divs, item => {  
1859 - // item.parentNode.parentNode.parentNode.parentNode.classList.add('insertTd');  
1860 - // });  
1861 - // }  
1862 - // }, 20);  
1863 - // } });  
1864 - // }  
1865 - // components = { ...this.Vcomponents1, ...components };  
1866 - // }  
1867 - // } 1815 + if (!noVlistTable) {
  1816 + if (this.props.slaveInfo || this.useVListNew) {
  1817 + if (!this.uniqueId || window.vlistNewSearh) {
  1818 + this.uniqueId = this.props.formId ? `${this.props.formId}_${lodash.uniqueId()}` : lodash.uniqueId();
  1819 + }
  1820 + if (!this.Vcomponents || window.vlistNewSearh) {
  1821 + const { tableClassName } = this.state;
  1822 + const oTable = document.querySelectorAll(`.${tableClassName}`)[0];
  1823 + if (oTable) {
  1824 + const oBody = oTable.querySelector('.ant-table-body');
  1825 + oBody && (oBody.scrollTop = 0);
  1826 + }
  1827 + window.vlistNewSearh = null;
  1828 + this.Vcomponents = VListNew({height: this.scrollY, vid: this.uniqueId, onScroll: () => {
  1829 + setTimeout(() => {
  1830 + let divs = document.getElementsByClassName('noInputInsert');
  1831 + if (divs.length) {
  1832 + Array.prototype.forEach.call(divs, item => {
  1833 + item.parentNode.parentNode.parentNode.parentNode.classList.add('insertTd');
  1834 + });
  1835 + }
  1836 + }, 20);
  1837 + }});
  1838 + }
  1839 + components = {...this.Vcomponents, ...components};
  1840 + } else {
  1841 + // vid是多个列表在同个页面中,同时渲染会促发问题
  1842 + // vid不可以为随机数,随机数会导致双击时,点击的两个VList id不同
  1843 + if (!this.uniqueId || window.vlistNewSearh) {
  1844 + this.uniqueId = this.props.formId ? `${this.props.formId}_${lodash.uniqueId()}` : lodash.uniqueId();
  1845 + }
  1846 + if (!this.Vcomponents1 || window.vlistNewSearh) {
  1847 + const { tableClassName } = this.state;
  1848 + const oTable = document.querySelectorAll(`.${tableClassName}`)[0];
  1849 + if (oTable) {
  1850 + const oBody = oTable.querySelector('.ant-table-body');
  1851 + oBody && (oBody.scrollTop = 0);
  1852 + }
  1853 + window.vlistNewSearh = null;
  1854 + this.Vcomponents1 = VList({ height: this.scrollY, vid: this.uniqueId, rowKey: this.rowKey, onScroll: () => {
  1855 + setTimeout(() => {
  1856 + let divs = document.getElementsByClassName('noInputInsert');
  1857 + if (divs.length) {
  1858 + Array.prototype.forEach.call(divs, item => {
  1859 + item.parentNode.parentNode.parentNode.parentNode.classList.add('insertTd');
  1860 + });
  1861 + }
  1862 + }, 20);
  1863 + } });
  1864 + }
  1865 + components = { ...this.Vcomponents1, ...components };
  1866 + }
  1867 + }
1868 if (this.props.config && this.props.config.iFreezeColumn) { 1868 if (this.props.config && this.props.config.iFreezeColumn) {
1869 tableColumn.forEach((val, index) => { 1869 tableColumn.forEach((val, index) => {
1870 if(tableColumn[index].fixedHelp) { 1870 if(tableColumn[index].fixedHelp) {
src/components/Vlist/index.js
1 /* eslint-disable */ 1 /* eslint-disable */
  2 +import React from 'react';
  3 +
2 import './index.less'; 4 import './index.less';
3 var throttleTime = 1; 5 var throttleTime = 1;
4 6
@@ -703,8 +705,7 @@ export function scrollTo(e) { @@ -703,8 +705,7 @@ export function scrollTo(e) {
703 Object.defineProperty(exports, '__esModule', { 705 Object.defineProperty(exports, '__esModule', {
704 value: !0, 706 value: !0,
705 }); 707 });
706 -var React = require('react'),  
707 - React__default = _interopDefault(React), 708 +var React__default = _interopDefault(React),
708 __assign = function () { 709 __assign = function () {
709 return (__assign = 710 return (__assign =
710 Object.assign || 711 Object.assign ||
src/components/VlistNew/index.js
1 /* eslint-disable */ 1 /* eslint-disable */
2 -var React = require('react'); 2 +// var React = require('react');
  3 +import React from 'react';
  4 +
3 5
4 /****************************************************************************** 6 /******************************************************************************
5 Copyright (c) Microsoft Corporation. 7 Copyright (c) Microsoft Corporation.
@@ -1000,7 +1002,7 @@ function VTable(props, otherParams) { @@ -1000,7 +1002,7 @@ function VTable(props, otherParams) {
1000 React.createElement("table", __assign({}, rest, { ref: tableRef, style: __assign(__assign({}, rest_style), { width: width, position: 'relative', transform: "translateY(-" + offsetStart + "px)" }) }), children)))); 1002 React.createElement("table", __assign({}, rest, { ref: tableRef, style: __assign(__assign({}, rest_style), { width: width, position: 'relative', transform: "translateY(-" + offsetStart + "px)" }) }), children))));
1001 } 1003 }
1002 // ================导出=================== 1004 // ================导出===================
1003 -function VList(props) { 1005 +export function VList(props) {
1004 var _a = props.vid, vid = _a === void 0 ? DEFAULT_VID : _a, height = props.height, onReachEnd = props.onReachEnd, onScroll = props.onScroll, onListRender = props.onListRender, debounceListRenderMS = props.debounceListRenderMS; props.resetTopWhenDataChange; 1006 var _a = props.vid, vid = _a === void 0 ? DEFAULT_VID : _a, height = props.height, onReachEnd = props.onReachEnd, onScroll = props.onScroll, onListRender = props.onListRender, debounceListRenderMS = props.debounceListRenderMS; props.resetTopWhenDataChange;
1005 // const resetScrollTopWhenDataChange = onReachEnd 1007 // const resetScrollTopWhenDataChange = onReachEnd
1006 // ? false 1008 // ? false
@@ -1032,7 +1034,7 @@ function VList(props) { @@ -1032,7 +1034,7 @@ function VList(props) {
1032 }, 1034 },
1033 }; 1035 };
1034 } 1036 }
1035 -function scrollTo(option) { 1037 +export function scrollTo(option) {
1036 var row = option.row, y = option.y, _a = option.vid, vid = _a === void 0 ? DEFAULT_VID : _a; 1038 var row = option.row, y = option.y, _a = option.vid, vid = _a === void 0 ? DEFAULT_VID : _a;
1037 var _b = vidMap.get(vid), scrollNode = _b.scrollNode, rowItemHeight = _b.rowItemHeight; 1039 var _b = vidMap.get(vid), scrollNode = _b.scrollNode, rowItemHeight = _b.rowItemHeight;
1038 if (row) { 1040 if (row) {
@@ -1049,5 +1051,5 @@ function scrollTo(option) { @@ -1049,5 +1051,5 @@ function scrollTo(option) {
1049 return { vid: vid, rowItemHeight: rowItemHeight }; 1051 return { vid: vid, rowItemHeight: rowItemHeight };
1050 } 1052 }
1051 1053
1052 -exports.VList = VList;  
1053 -exports.scrollTo = scrollTo; 1054 +// exports.VList = VList;
  1055 +// exports.scrollTo = scrollTo;
1054 \ No newline at end of file 1056 \ No newline at end of file