多来源转单API

多来源转单分为两种:普通多来源和带全部页签的多来源

普通多来源转单

  1. render() {
  2. const { transferTable, form, button, search, editTable } = this.props;
  3. const { NCCreateSearch } = search;
  4. const { createForm } = form;
  5. const { createButton } = button;
  6. const { createEditTable } = editTable;
  7. const { createMultiTransferTable } = transferTable;
  8. this.initTransferTemplate = initTransferTemplate;
  9. return (
  10. <div id="transferDemo" style={{backgroundColor: '#fff'}}>
  11. <div>
  12. <div style={{ padding: '20px', borderBottom: '1px solid #d9d9d9' }}>
  13. 选择订单/入库单
  14. <a href="javascript:;" style={{ float: 'right' }} onClick={() => {
  15. if (!this.props.meta.getMeta()['reva_revecont_main']) {
  16. initTemplateFull(this.props); //加载主子拉平模板
  17. }
  18. if (!this.props.meta.getMeta()['reva_revecont_main1']) {
  19. initTemplateFull1(this.props); //加载主子拉平模板
  20. }
  21. this.props.transferTable.changeViewType();
  22. }}>切换</a>
  23. </div>
  24. </div>
  25. <div>
  26. {/* 创建多来源转单 */}
  27. { createMultiTransferTable({
  28. onTabClick: (key) => { //点击页签的钩子函数
  29. console.log('点击了', key)
  30. //拿到当前页签的headTableId给转单页面使用
  31. switch (key) {
  32. case "1":
  33. this.curheadTableId = META.tab2HeadTableId;//记录主表id,供下游转单使用
  34. //已经加载过模板不需再次加载
  35. if (!this.props.meta.getMeta()[META.tab2HeadTableId]) {
  36. initTemplate1(this.props);
  37. }
  38. break;
  39. default:
  40. this.curheadTableId = META.tab1HeadTableId;
  41. break;
  42. }
  43. },
  44. tabActiveIndex: 1, // 设置显示params中定义的第几个tab (默认为0,params参数第一个参数的下标)类型Number
  45. hideTabs: [0], // 设置隐藏params中定义的哪几个tab (默认为全不隐藏) 类型Arry 如: [0, 2] 则隐藏params中第1个和第三个tab
  46. hideTransferBtn: true, // 隐藏transferBtn属性,如果传布尔值true 则隐藏transferTable按钮
  47. hideBtnForShowSelectList: true, // 隐藏查看已选按钮属性,如果传布尔值true 则隐藏查看已选按钮
  48. showChangeViewBtn:true,//控制已选列表页面 切换主子表/拉平表 切换按钮的显示 Boolean,默认是true显示,需要隐藏未false
  49. onExpandedChange:(pks)=>{
  50. //pks Array类型 是当前转单展开的所有主表的pk
  51. },
  52. },[
  53. {
  54. tabName: '工程转固',//tab页签显示文字
  55. searchArea: () => { //查询区域render
  56. return NCCreateSearch('reve_search',{
  57. clickSearchBtn: () => {
  58. console.log('点击了查询1')
  59. this.props.transferTable.setTransferTableValue(META.tab1HeadTableId, 'revecont_b', listTable.data, "crevecontid", 'crevecontbid');
  60. }
  61. })
  62. },
  63. headTableId: META.tab1HeadTableId,//表格组件id
  64. bodyTableId: 'revecont_b',//子表模板id
  65. fullTableId: 'reva_revecont_main',//主子拉平模板id
  66. transferBtnText: '生成工程单', //转单按钮显示文字
  67. containerSelector: '#transferDemo', //容器的选择器 必须唯一,用于设置底部已选区域宽度
  68. onTransferBtnClick: () => { //点击转单按钮钩子函数
  69. hashHistory.push({
  70. pathname: `/transferList?type=transfer`
  71. })
  72. },
  73. selectArea: () => {//已选列表个性化区域
  74. return <span>
  75. <span>本次开票数量:5000.00</span>
  76. <span>本次开票金额:58500.00</span>
  77. <NCButton>一键制单</NCButton>
  78. <NCButton>单据对冲</NCButton>
  79. </span>
  80. },
  81. onChangeViewClick: () => { //点击切换视图钩子函数
  82. if (!this.props.meta.getMeta()['reva_revecont_main']) {
  83. initTemplateFull(this.props); //加载主子拉平模板
  84. }
  85. this.props.transferTable.changeViewType(META.tab1HeadTableId);
  86. }
  87. },
  88. {
  89. tabName: '采购转固',//tab页签显示文字
  90. headTableId: META.tab2HeadTableId,//表格组件id
  91. bodyTableId: 'revecont_b1',//子表模板id
  92. fullTableId: 'reva_revecont_main1',//主子拉平模板id
  93. searchArea: () => { //查询区域render
  94. return NCCreateSearch('reve_search1', {
  95. clickSearchBtn: () => {
  96. console.log('点击了查询2')
  97. this.props.transferTable.setTransferTableValue(META.tab2HeadTableId, 'revecont_b', listTable1.data, "crevecontid", 'crevecontbid');
  98. }
  99. })
  100. },
  101. transferBtnText: '生成采购单', //转单按钮显示文字
  102. containerSelector: '#transferDemo', //容器的选择器 必须唯一,用于设置底部已选区域宽度
  103. onTransferBtnClick: () => { //点击转单按钮钩子函数
  104. hashHistory.push({
  105. pathname: `/transferList?type=transfer`
  106. })
  107. },
  108. onChangeViewClick: () => { //点击切换视图钩子函数
  109. if (!this.props.meta.getMeta()['reva_revecont_main1']) {
  110. initTemplateFull1(this.props); //加载主子拉平模板
  111. }
  112. this.props.transferTable.changeViewType(META.tab2HeadTableId);
  113. }
  114. }
  115. ])}
  116. </div>
  117. </div>
  118. );
  119. }
  120. }

带全部页签的多来源转单

render() {
        const { transferTable, form, button, search, editTable } = this.props;
        const { NCCreateSearch } = search;
        const { createForm } = form;
        const { createButton } = button;
        const { createEditTable } = editTable;
        const { createMultiTransferTable } = transferTable;
        let selectedShow = transferTable.getSelectedListDisplay('all');

        return (
            <div id="transferDemo" style={{ backgroundColor: '#fff' }}>
                {
                    !selectedShow ? 
                    <div>
                        <div style={{ padding: '20px', borderBottom: '1px solid #d9d9d9' }}>
                        选择订单/入库单
                        <a href="javascript:;" style={{ float: 'right' }} onClick={() => {
                            if (!this.props.meta.getMeta()['reva_revecont_main']) {
                                initTemplateFull(this.props); //加载主子拉平模板
                            }
                            if (!this.props.meta.getMeta()['reva_revecont_main1']) {
                                initTemplateFull1(this.props); //加载主子拉平模板
                            }
                            if (!this.props.meta.getMeta()['reva_revecont_main_all']) {
                                initTemplateFullAll(this.props); //加载主子拉平模板
                            }
                            this.props.transferTable.changeViewType();
                        }}>切换</a>
                        </div>
                    </div> : ''
                }
                <div>
                    {/* 创建多来源转单 */}
                    {createMultiTransferTable({
                        onTabClick: (key) => { //点击页签的钩子函数
                            console.log('点击了', key)
                            //拿到当前页签的headTableId给转单页面使用
                            switch (key) {
                                case "1":
                                    this.curheadTableId = META.tab2HeadTableId;//记录主表id,供下游转单使用
                                    if (!this.props.meta.getMeta()[META.tab2HeadTableId]) {
                                        initTemplate1(this.props);
                                    }
                                    if (!this.props.meta.getMeta()['reva_revecont_main1']) {
                                        initTemplateFull1(this.props); //加载主子拉平模板
                                    }
                                    break;
                                case "2":
                                    this.curheadTableId = META.allHeadTableId;//记录主表id,供下游转单使用
                                    if (!this.props.meta.getMeta()[META.allHeadTableId]) {
                                        initTemplateAll(this.props);
                                    }
                                default:
                                    this.curheadTableId = META.tab1HeadTableId;
                                    break;
                            }
                        },
                        showAll: true,//是否显示全部页签,不显示全部页签时不需要设置 默认为false
                        //==========以下参数必须设置showAll为true时才生效==========
                        allHeadId: META.allHeadTableId, //全部页签的主表id
                        allBodyId: 'revecont_b_all', //全部页签的子表id
                        allFullTableId: 'reva_revecont_main',//已选列表中主子拉平模板id
                        transferBtnText: '生成采购单', //转单按钮显示文字
                        containerSelector: '#transferDemo', //容器的选择器 必须唯一,用于设置底部已选区域宽度
                        headPkIds: ['crevecontid', 'crevecontid1'],//主表的主键字段,下游获取已选id时需要用到
                        bodyPkIds: ['crevecontbid', 'crevecontbid1'],//子表的主键字段,下游获取已选id时需要用到
                        showChangeViewBtn:true,//控制已选列表页面 切换主子表/拉平表 切换按钮的显示 Boolean,默认是true显示,需要隐藏未false
                        // selectArea: () => {//已选列表个性化区域 如果所有页签都显示相同内容,在此设置
                        //     return <span>
                        //         <span>本次开票数量:5000.00</span> 
                        //         <span>本次开票金额:58500.00</span> 
                        //         <NCButton>一键制单</NCButton>
                        //         <NCButton>单据对冲</NCButton>
                        //     </span> 
                        // },
                        onTransferBtnClick: () => { //点击转单按钮钩子函数
                            hashHistory.push({
                                pathname: `/transferList?type=transfer`
                            })

                        },
                        onChangeViewClick: () => { //已选列表中的切换视图钩子函数
                            if (!this.props.meta.getMeta()['reva_revecont_main_all']) {
                                initTemplateFullAll(this.props); //加载主子拉平模板
                            }
                            this.props.transferTable.changeViewType('all');
                        },
                        onSelectedBtnClick: () => { //点击已选列表的钩子函数
                            this.props.transferTable.getTransferTableSelectedValue();//获取全部已选数据
                            this.props.transferTable.setMultiSelectedValue(META.allHeadTableId, 'revecont_b_all', listTableAll.data, ['crevecontid', 'crevecontid1'], ['crevecontbid', 'crevecontbid2']);
                            console.log('已选数据', this.props.transferTable.getTransferTableSelectedValue());
                        },
                        onClearAll: () => {
                            console.log('清空啦')
                        },
                        onSelectedItemRemove: (record,bodys) => {
                            console.log('移除',record)
                            bodys && console.log('移除的子表数据', bodys)
                        },
                        tabActiveIndex: 1, // 设置显示params中定义的第几个tab (默认为0,params参数第一个参数的下标)类型Number
                        hideTabs: [0], // 设置隐藏params中定义的哪几个tab (默认为全不隐藏) 类型Arry 如: [0, 2] 则隐藏params中第1个和第三个tab
                        hideTransferBtn: true, // 隐藏transferBtn属性,如果传布尔值true 则隐藏transferTable按钮
                        hideBtnForShowSelectList: true, // 隐藏查看已选按钮属性,如果传布尔值true 则隐藏查看已选按钮

                    },[
                        {
                            tabName: '工程转固',//tab页签显示文字
                            searchArea: () => { //查询区域render
                                return NCCreateSearch('reve_search',{
                                    clickSearchBtn: () => {
                                        console.log('点击了查询1')
                                        this.props.transferTable.setTransferTableValue(META.tab1HeadTableId, 'revecont_b', listTable.data, "crevecontid", 'crevecontbid');
                                    }
                                })
                            },
                            headTableId: META.tab1HeadTableId,//表格组件id
                            bodyTableId: 'revecont_b',//子表模板id
                            fullTableId: 'reva_revecont_main',//主子拉平模板id
                            selectArea: () => {//已选列表个性化区域
                                return <span>
                                    <span>本次开票数量:5000.00</span>
                                    <NCButton>工程转固</NCButton>
                                    <NCButton>工程转固</NCButton>
                                </span>
                            },
                            onChangeViewClick: () => { //点击切换视图钩子函数
                                if (!this.props.meta.getMeta()['reva_revecont_main']) {
                                    initTemplateFull(this.props); //加载主子拉平模板
                                }
                                this.props.transferTable.changeViewType(META.tab1HeadTableId);
                            }
                        },
                        {
                            // tableType: 'full',//选填 表格默认显示的类型 full:主子拉平 nest:主子表
                            tabName: '采购转固',//tab页签显示文字
                            headTableId: META.tab2HeadTableId,//表格组件id
                            bodyTableId: 'revecont_b1',//子表模板id
                            fullTableId: 'reva_revecont_main1',//主子拉平模板id
                            searchArea: () => { //查询区域render
                                return NCCreateSearch('reve_search1', {
                                    clickSearchBtn: () => {
                                        console.log('点击了查询2')
                                        this.props.transferTable.setTransferTableValue(META.tab2HeadTableId, 'revecont_b', listTable1.data, "crevecontid", 'crevecontbid');
                                    }
                                })
                            },
                            selectArea: () => {//已选列表个性化区域
                                return <span>
                                    <span>本次开票数量:5000.00</span>
                                    <span>本次开票金额:58500.00</span>
                                    <NCButton>采购转固</NCButton>
                                    <NCButton>采购转固</NCButton>
                                </span>
                            },
                            onChangeViewClick: () => { //点击切换视图钩子函数
                                this.props.transferTable.changeViewType(META.tab2HeadTableId);
                            }
                        },
                        {
                            tabName: '全部',//tab页签显示文字
                            headTableId: META.allHeadTableId,//表格组件id
                            bodyTableId: 'revecont_b_all',//子表模板id
                            fullTableId: 'reva_revecont_main_all',//主子拉平模板id
                            searchArea: () => { //查询区域render
                                return NCCreateSearch('reve_search_all', {
                                    clickSearchBtn: () => {
                                        //全部多来源后两个参数需要传数组,将其他页签的主/子表主键字段放到数组中传进来
                                        this.props.transferTable.setTransferTableValue(META.allHeadTableId, 'revecont_b_all', listTableAll.data, ['crevecontid','a'], ['crevecontbid','b']);
                                        console.log('点击了全部查询')
                                    }
                                })
                            },
                            selectArea: () => {//已选列表个性化区域
                                return <span>
                                    <span>本次开票数量:5000.00</span>
                                    <span>本次开票金额:58500.00</span>
                                    <NCButton>一键制单</NCButton>
                                    <NCButton>单据对冲</NCButton>
                                </span>
                            },
                            onChangeViewClick: () => { //已选列表中的切换视图钩子函数
                                if (!this.props.meta.getMeta()['reva_revecont_main_all']) {
                                    initTemplateFullAll(this.props); //加载主子拉平模板
                                }
                                this.props.transferTable.changeViewType(META.allHeadTableId);
                            }
                        }
                        ])}
                </div>
            </div>
        );
    }

部分子表无数据不显示主表展开符号 的数据格式

在使用setTransferTableValue设置数据的时候,data格式示例:
{
    head: {
        reva_revecont: {
            rows: [{
                values: {
                    vbillcode: {
                        value: Math.ceil(Math.random() * 100000000),  scale: Math.ceil(Math.random() * 5)
                    },
                    pk_org_v: {
                        display: '辅导辅导费',
                        value: '1001A11000000000058I'
                    },
                    ts: {
                        value: '2018-03-21 10:53:18'
                    },
                    switch1: {
                        value: true
                    },
                    crevecontid: {
                        display: 'jykukuk',
                        value: '1001A310000000005SC8'
                    },
                    ccustomerid: {
                        display: '434r32tt',
                        value: '1001A11000000000223R'
                    },
                    pk_org: {
                        display: '8i87i78i87i',
                        value: '0001A11000000000246T'
                    },
                    ctrantypeid: {
                        display: 'e32e32e',
                        value: '1001Z510000000004JMJ'
                    },
                    bcloseflag: {
                        value: false
                    },
                    vname: {
                        value: 'wew'
                    },
                    dbilldate: {
                        value: '2018-05-13 12:00:00'
                    },
                    cdeptvid: {
                        display: "研发部",
                        value: "1001Z510000000004JMJ"
                    },
                    fstatusflag: {
                        display: "",
                        value: ""
                    },
                    noritotalmny: {
                        display: "",
                        value: ""
                    },
                    ndealtotalmny: {
                        display: "",
                        value: ""
                    },
                    fstageflag: {
                        display: "",
                        value: ""
                    },
                    isstartpf: {
                        display: "",
                        value: ""
                    },
                    fpfstatusflag: {
                        display: "",
                        value: ""
                    },
                    ccurrencyid: {
                        display: "人民币",
                        value: "u6u6u6u6u6u"
                    },
                    ts: {
                        display: "",
                        value: "2347784454545"
                    },
                    datepicker: {
                        display: "",
                        value: "654645757575"
                    },
                    dmakedate: {
                        display: "",
                        value: "6ui6i77000"
                    },
                    vtrantypecode: {
                        display: "",
                        value: "5u5uut4t"
                    },

                }
            }]
        }


    },
    body: {
        revecont_b: {
            rows: [ ] //--------------重点在此
        }

    }
}

方法名 createMultiTransferTable

createMultiTransferTable({
    showAll,
    allHeadId,
    allBodyId,
    allFullTableId,
    headPkIds,
    bodyPkIds,
    containerSelector,
    transferBtnText,
    onTransferBtnClick,
    onSelectedBtnClick,
    onChangeViewClick,
    showChangeViewBtn,
    onTabClick,
    setMultiSelectedValue,
    selectArea,
    onClearAll,
    onSelectedItemRemove,
    tabActiveIndex,
    hideTabs,
    showSeletedBtn,
    showGenerateBtn
}, [...transfers])
方法 说明
getTransferTableAllSelectedId 获取所有页签选中的数据pk
参数 说明
showAll 是否显示全部页签,不显示全部页签时不需要设置 默认为false
allHeadId 全部页签的主表id
allBodyId 全部页签的子表id
allFullTableId 已选列表中主子拉平模板id
headPkIds 各页签主表的主键字段,
bodyPkIds 各页签子表的主键字段
containerSelector 容器的选择器 必须唯一,用于设置底部已选区域宽度
transferBtnText 转单按钮显示文字
showChangeViewBtn 转单已选列表页面右上角切换 主子/拉平表的切换按钮的显隐 类型Boolean 默认true
onTransferBtnClick 点击转单按钮钩子函数
onSelectedBtnClick 点击已选列表的钩子函数
onChangeViewClick 点击已选列表中的切换视图钩子函数
onTabClick 点击页签的钩子函数
selectArea 已选列表底部自定义区域 如果所有页签都显示相同内容,在此设置
onClearAll 已选列表清空的钩子函数
onSelectedItemRemove 已选列表移除钩子函数(返回参数:record:移除的数据 bodys:移除主表对应的子表数据,只有移除主表时才生效)
tabActiveIndex 设置显示params中定义的第几个tab (默认为’0’,params参数第一个参数的下标)类型Number/String
hideTabs 设置隐藏params中定义的哪几个tab (默认为全不隐藏) 类型Arry 如: [‘0’, ‘2’] 则隐藏params中第1个和第三个tab
showSeletedBtn 转单显示查看已选按钮默认为true
showGenerateBtn 显示右侧自定义按钮 默认为true