Commit 4fe036c9b215ca516ab411eec0c4f730506b4503

Authored by chenxt
1 parent 1d3f0f77

功能模块页面排序

src/components/Common/AffixMenu.js
... ... @@ -11,7 +11,46 @@ import SvgIcon from '../SvgIcon';
11 11  
12 12 const { Option } = Select;
13 13 const { TabPane } = Tabs;
  14 +const type = 'DraggableBodyRow';
  15 +// 自定义可拖拽的表格行
  16 +const DraggableBodyRow = ({ index, moveRow, className, style, ...restProps }) => {
  17 + const ref = React.useRef();
  18 + const [{ isOver, dropClassName }, drop] = useDrop({
  19 + accept: type,
  20 + collect: (monitor) => {
  21 + const { index: dragIndex } = monitor.getItem() || {};
  22 + if (dragIndex === index) {
  23 + return {};
  24 + }
  25 + return {
  26 + isOver: monitor.isOver(),
  27 + dropClassName: dragIndex < index ? 'drop-over-downward' : 'drop-over-upward',
  28 + };
  29 + },
  30 + drop: (item) => {
  31 + moveRow(item.index, index);
  32 + },
  33 + });
  34 +
  35 + const [, drag] = useDrag({
  36 + type,
  37 + item: { index },
  38 + collect: (monitor) => ({
  39 + isDragging: monitor.isDragging(),
  40 + }),
  41 + });
  42 +
  43 + drop(drag(ref));
14 44  
  45 + return (
  46 + <tr
  47 + ref={ref}
  48 + className={`${className}${isOver ? dropClassName : ''}`}
  49 + style={{ cursor: 'move', ...style }}
  50 + {...restProps}
  51 + />
  52 + );
  53 +};
15 54 class AffixMenuComponent extends Component {
16 55 constructor(props) {
17 56 super(props);
... ... @@ -367,6 +406,10 @@ class AffixMenuComponent extends Component {
367 406 } else {
368 407 dataSource = this.state[`modalContentData${count}`];
369 408 }
  409 + dataSource.forEach((item, index) => {
  410 + // 根据索引来更新 iOrder,使用 index + 1 因为排序通常从1开始,而不是0
  411 + dataSource[index].iOrder = (index + 1) * 10;
  412 + });
370 413 const columns = [{
371 414 title: columniOrder,
372 415 dataIndex: 'iOrder',
... ... @@ -456,7 +499,11 @@ class AffixMenuComponent extends Component {
456 499 }
457 500 }
458 501 }
459   -
  502 + const components = {
  503 + body: {
  504 + row: DraggableBodyRow,
  505 + },
  506 + };
460 507 childTable = (
461 508 <TabPane tab={configName} key={count}>
462 509 <div key={count} className={styles.affixMenuTableAll}>
... ... @@ -466,6 +513,7 @@ class AffixMenuComponent extends Component {
466 513 <Table
467 514 bordered
468 515 columns={columns}
  516 + components={components}
469 517 dataSource={dataSource_dep}
470 518 pagination={false}
471 519 scroll={{ y: 310 }}
... ...
src/components/Common/CommonNewBill.js
... ... @@ -2046,6 +2046,18 @@ const BillComponent = Form.create({
2046 2046 onChange: props.onTitleChange.bind(this, "slave0"),
2047 2047 },
2048 2048 };
  2049 +
  2050 + if (sModelsId === '16411004790004762980820285096000') {
  2051 + slaveTableProps.tableProps.AutoTableHeight = 344
  2052 + slaveTableProps.isDragAndDrop = true
  2053 + slaveTableProps.onMoveRow = props.onMoveRow
  2054 + slaveTableProps.isSettingFunctions = true
  2055 + slave0TableProps.tableProps.AutoTableHeight = 344
  2056 + slave0TableProps.isDragAndDrop = true
  2057 + slave0TableProps.onMoveRow = props.onMove0Row
  2058 + slave0TableProps.isSettingFunctions = true
  2059 + slave0TableProps.noVlistTable = true
  2060 + }
2049 2061 const bCheck1 = commonUtils.isNotEmptyObject(slave1Config) && slave1Config.sTbName === "sysbillcheckresult" ? true : false;
2050 2062 const slave1TableProps = {
2051 2063 ...commonBusiness.getTableTypes("slave1", props),
... ...
src/components/Common/CommonNewBillEvent.js
... ... @@ -6518,36 +6518,32 @@ export default ChildComponent =&gt; {
6518 6518 /* 拖拽表格树形节点 */
6519 6519 handleMoveRow = (dragIndex, hoverIndex, dragKey, hoverKey, props) => {
6520 6520 const { slaveData: data } = this.props;
6521   - // const dragRow = data[dragIndex];
  6521 + const newData = [...data];
  6522 + const [removed] = newData.splice(dragIndex, 1);
  6523 + newData.splice(hoverIndex, 0, removed);
6522 6524 const dragObject = commonUtils.isNotEmptyArr(data.filter(ele => ele.sId === dragKey)) ? data.filter(ele => ele.sId === dragKey)[0] : {};
6523   - const hoverObject = commonUtils.isNotEmptyArr(data.filter(ele => ele.sId === hoverKey)) ? data.filter(ele => ele.sId === hoverKey)[0] : {};
6524   - // 同级菜单的移动
6525   - let newData = data.filter(ele => ele.sId !== dragKey);
6526   - let insertIndex = 0;
6527   - if (commonUtils.isNotEmptyArr(newData)) {
6528   - newData.forEach((ele, index) => {
6529   - if (ele.sId === hoverKey) {
6530   - if (dragIndex > hoverIndex) {
6531   - // 上移:dragKey表示的元素 放到 hoverKey表示的元素之前
6532   - insertIndex = index;
6533   - } else {
6534   - // 下移 dragKey表示的元素 放到 hoverKey表示的元素之后
6535   - insertIndex = index + 1;
6536   - }
6537   - }
6538   - });
6539   - newData.splice(insertIndex, 0, dragObject);
6540   - if (commonUtils.isNotEmptyObject(dragObject)) {
6541   - dragObject.handleType = dragObject.handleType ? dragObject.handleType : "update";
6542   - dragObject.iOrder = hoverObject.iOrder + 1
6543   - }
6544   - // newData.forEach((item,index) =>{
6545   - // item.handleType = 'update'
6546   - // item.iOrder =
6547   - // })
6548   - this.props.onSaveState({ slaveData: newData });
6549   - }
  6525 + newData.forEach((item, index) => {
  6526 + // 根据索引来更新 iOrder,使用 index + 1 因为排序通常从1开始,而不是0
  6527 + newData[index].iOrder = (index + 1) * 10;
  6528 + newData[index].handleType = dragObject.handleType ? dragObject.handleType : "update";
  6529 + });
  6530 + this.props.onSaveState({ slaveData: newData });
6550 6531 };
  6532 + handleMove0Row = (dragIndex, hoverIndex, dragKey, hoverKey, props) => {
  6533 + const { slave0Data: data } = this.props;
  6534 + const newData = [...data];
  6535 + const [removed] = newData.splice(dragIndex, 1);
  6536 + newData.splice(hoverIndex, 0, removed);
  6537 + const dragObject = commonUtils.isNotEmptyArr(data.filter(ele => ele.sId === dragKey)) ? data.filter(ele => ele.sId === dragKey)[0] : {};
  6538 + newData.forEach((item, index) => {
  6539 + // 根据索引来更新 iOrder,使用 index + 1 因为排序通常从1开始,而不是0
  6540 + newData[index].iOrder = (index + 1) * 10000;
  6541 + newData[index].handleType = dragObject.handleType ? dragObject.handleType : "update";
  6542 + });
  6543 + this.props.onSaveState({ slave0Data: newData });
  6544 + // }
  6545 + };
  6546 +
6551 6547 render() {
6552 6548 const { masterData, sModelsType, app } = this.props;
6553 6549 const imgSrc = commonBusiness.handleAddIcon(masterData, sModelsType, app);
... ... @@ -6610,6 +6606,7 @@ export default ChildComponent =&gt; {
6610 6606 onGetParamsValue={this.handleGetParamsValue}
6611 6607 onSelectCommonPopup={this.handleSelectCommonPopup}
6612 6608 onMoveRow={this.handleMoveRow}
  6609 + onMove0Row={this.handleMove0Row}
6613 6610 />
6614 6611 );
6615 6612 }
... ...
src/components/Common/CommonTable/index.js
... ... @@ -7396,7 +7396,16 @@ class CommonTableRc extends React.Component {
7396 7396  
7397 7397 const hasColorInfo = this.props?.masterConfig?.sTableColorTs;
7398 7398 const BtnUpload = commonFunc.showLocalMessage(this.props, "BtnUpload", "上传");
7399   -
  7399 + const { sModelsId } = this.props
  7400 + const columniOrder = commonFunc.showMessage(this.props.app.commonConst, 'columniOrder');/* 排序 */
  7401 + if (sModelsId === '16411004790004762980820285096000') {
  7402 + tableProps.onRow = (record, index) => ({
  7403 + index,
  7404 + moveRow: (dragIndex, hoverIndex, dragKey, hoverKey) => {
  7405 + this.moveRow(dragIndex, hoverIndex, dragKey, hoverKey);
  7406 + },
  7407 + });
  7408 + }
7400 7409 return (
7401 7410 <FormItem className={styles.subForm} style={{ height: '100%' }}>
7402 7411 <div className={styles.extraAction} onselectstart="return false">
... ...