Commit 4fe036c9b215ca516ab411eec0c4f730506b4503
1 parent
1d3f0f77
功能模块页面排序
Showing
4 changed files
with
96 additions
and
30 deletions
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 => { |
| 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 => { |
| 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"> | ... | ... |