Commit b142865eff219e2632027cb2590a04d8a181a377

Authored by 梁灏
1 parent 55f90d87

fixed #2102

Showing 2 changed files with 188 additions and 46 deletions   Show diff stats
examples/routers/table.vue
@@ -699,86 +699,226 @@ @@ -699,86 +699,226 @@
699 <!--}--> 699 <!--}-->
700 <!--</script>--> 700 <!--</script>-->
701 701
  702 +<!--<template>-->
  703 + <!--<Table :columns="columns10" :data="data9"></Table>-->
  704 +<!--</template>-->
  705 +<!--<script>-->
  706 + <!--import expandRow from '../components/tableExpand.vue';-->
  707 + <!--export default {-->
  708 + <!--components: { expandRow },-->
  709 + <!--data () {-->
  710 + <!--return {-->
  711 + <!--columns10: [-->
  712 + <!--{-->
  713 + <!--type: 'expand',-->
  714 + <!--width: 50,-->
  715 + <!--render: (h, params) => {-->
  716 + <!--return h(expandRow, {-->
  717 + <!--props: {-->
  718 + <!--row: params.row-->
  719 + <!--}-->
  720 + <!--})-->
  721 + <!--}-->
  722 + <!--},-->
  723 + <!--{-->
  724 + <!--title: 'Name',-->
  725 + <!--key: 'name'-->
  726 + <!--},-->
  727 + <!--{-->
  728 + <!--title: 'Age',-->
  729 + <!--key: 'age',-->
  730 + <!--fixed: 'right'-->
  731 + <!--},-->
  732 + <!--{-->
  733 + <!--title: 'Address',-->
  734 + <!--key: 'address',-->
  735 + <!--fixed: 'right'-->
  736 + <!--}-->
  737 + <!--],-->
  738 + <!--data9: [-->
  739 + <!--{-->
  740 + <!--name: 'John Brown',-->
  741 + <!--age: 18,-->
  742 + <!--address: 'New York No. 1 Lake Park',-->
  743 + <!--job: 'Data engineer',-->
  744 + <!--interest: 'badminton',-->
  745 + <!--birthday: '1991-05-14',-->
  746 + <!--book: 'Steve Jobs',-->
  747 + <!--movie: 'The Prestige',-->
  748 + <!--music: 'I Cry'-->
  749 + <!--},-->
  750 + <!--{-->
  751 + <!--name: 'Jim Green',-->
  752 + <!--age: 25,-->
  753 + <!--address: 'London No. 1 Lake Park',-->
  754 + <!--job: 'Data Scientist',-->
  755 + <!--interest: 'volleyball',-->
  756 + <!--birthday: '1989-03-18',-->
  757 + <!--book: 'My Struggle',-->
  758 + <!--movie: 'Roman Holiday',-->
  759 + <!--music: 'My Heart Will Go On'-->
  760 + <!--},-->
  761 + <!--{-->
  762 + <!--name: 'Joe Black',-->
  763 + <!--age: 30,-->
  764 + <!--address: 'Sydney No. 1 Lake Park',-->
  765 + <!--job: 'Data Product Manager',-->
  766 + <!--interest: 'tennis',-->
  767 + <!--birthday: '1992-01-31',-->
  768 + <!--book: 'Win',-->
  769 + <!--movie: 'Jobs',-->
  770 + <!--music: 'Don’t Cry'-->
  771 + <!--},-->
  772 + <!--{-->
  773 + <!--name: 'Jon Snow',-->
  774 + <!--age: 26,-->
  775 + <!--address: 'Ottawa No. 2 Lake Park',-->
  776 + <!--job: 'Data Analyst',-->
  777 + <!--interest: 'snooker',-->
  778 + <!--birthday: '1988-7-25',-->
  779 + <!--book: 'A Dream in Red Mansions',-->
  780 + <!--movie: 'A Chinese Ghost Story',-->
  781 + <!--music: 'actor'-->
  782 + <!--}-->
  783 + <!--]-->
  784 + <!--}-->
  785 + <!--}-->
  786 + <!--}-->
  787 +<!--</script>-->
  788 +
  789 +
702 <template> 790 <template>
703 - <Table :columns="columns10" :data="data9"></Table> 791 + <div>
  792 + <div style="width: 550px;">
  793 + <Table height="200" border :columns="columns2" :data="data4"></Table>
  794 + </div>
  795 + <br><br><br>
  796 + <Table width="550" height="200" border :columns="columns2" :data="data4"></Table>
  797 + </div>
704 </template> 798 </template>
705 <script> 799 <script>
706 - import expandRow from '../components/tableExpand.vue';  
707 export default { 800 export default {
708 - components: { expandRow },  
709 data () { 801 data () {
710 return { 802 return {
711 - columns10: [  
712 - {  
713 - type: 'expand',  
714 - width: 50,  
715 - render: (h, params) => {  
716 - return h(expandRow, {  
717 - props: {  
718 - row: params.row  
719 - }  
720 - })  
721 - }  
722 - }, 803 + columns2: [
723 { 804 {
724 title: 'Name', 805 title: 'Name',
725 - key: 'name' 806 + key: 'name',
  807 + width: 100,
  808 +// fixed: 'left'
726 }, 809 },
727 { 810 {
728 title: 'Age', 811 title: 'Age',
729 key: 'age', 812 key: 'age',
730 - fixed: 'right' 813 + width: 100
  814 + },
  815 + {
  816 + title: 'Province',
  817 + key: 'province',
  818 + width: 100
  819 + },
  820 + {
  821 + title: 'City',
  822 + key: 'city',
  823 + width: 100
731 }, 824 },
732 { 825 {
733 title: 'Address', 826 title: 'Address',
734 key: 'address', 827 key: 'address',
735 - fixed: 'right' 828 + width: 200
  829 + },
  830 + {
  831 + title: 'Postcode',
  832 + key: 'zip',
  833 + width: 100
  834 + },
  835 + {
  836 + title: 'Action',
  837 + key: 'action',
  838 + fixed: 'right',
  839 + width: 120,
  840 + render: (h, params) => {
  841 + return h('div', [
  842 + h('Button', {
  843 + props: {
  844 + type: 'text',
  845 + size: 'small'
  846 + }
  847 + }, 'View'),
  848 + h('Button', {
  849 + props: {
  850 + type: 'text',
  851 + size: 'small'
  852 + }
  853 + }, 'Edit')
  854 + ]);
  855 + }
736 } 856 }
737 ], 857 ],
738 - data9: [ 858 + data4: [
  859 + {
  860 + name: 'John Brown',
  861 + age: 18,
  862 + address: 'New York No. 1 Lake Park',
  863 + province: 'America',
  864 + city: 'New York',
  865 + zip: 100000
  866 + },
  867 + {
  868 + name: 'Jim Green',
  869 + age: 24,
  870 + address: 'Washington, D.C. No. 1 Lake Park',
  871 + province: 'America',
  872 + city: 'Washington, D.C.',
  873 + zip: 100000
  874 + },
  875 + {
  876 + name: 'Joe Black',
  877 + age: 30,
  878 + address: 'Sydney No. 1 Lake Park',
  879 + province: 'Australian',
  880 + city: 'Sydney',
  881 + zip: 100000
  882 + },
  883 + {
  884 + name: 'Jon Snow',
  885 + age: 26,
  886 + address: 'Ottawa No. 2 Lake Park',
  887 + province: 'Canada',
  888 + city: 'Ottawa',
  889 + zip: 100000
  890 + },
739 { 891 {
740 name: 'John Brown', 892 name: 'John Brown',
741 age: 18, 893 age: 18,
742 address: 'New York No. 1 Lake Park', 894 address: 'New York No. 1 Lake Park',
743 - job: 'Data engineer',  
744 - interest: 'badminton',  
745 - birthday: '1991-05-14',  
746 - book: 'Steve Jobs',  
747 - movie: 'The Prestige',  
748 - music: 'I Cry' 895 + province: 'America',
  896 + city: 'New York',
  897 + zip: 100000
749 }, 898 },
750 { 899 {
751 name: 'Jim Green', 900 name: 'Jim Green',
752 - age: 25,  
753 - address: 'London No. 1 Lake Park',  
754 - job: 'Data Scientist',  
755 - interest: 'volleyball',  
756 - birthday: '1989-03-18',  
757 - book: 'My Struggle',  
758 - movie: 'Roman Holiday',  
759 - music: 'My Heart Will Go On' 901 + age: 24,
  902 + address: 'Washington, D.C. No. 1 Lake Park',
  903 + province: 'America',
  904 + city: 'Washington, D.C.',
  905 + zip: 100000
760 }, 906 },
761 { 907 {
762 name: 'Joe Black', 908 name: 'Joe Black',
763 age: 30, 909 age: 30,
764 address: 'Sydney No. 1 Lake Park', 910 address: 'Sydney No. 1 Lake Park',
765 - job: 'Data Product Manager',  
766 - interest: 'tennis',  
767 - birthday: '1992-01-31',  
768 - book: 'Win',  
769 - movie: 'Jobs',  
770 - music: 'Don’t Cry' 911 + province: 'Australian',
  912 + city: 'Sydney',
  913 + zip: 100000
771 }, 914 },
772 { 915 {
773 name: 'Jon Snow', 916 name: 'Jon Snow',
774 age: 26, 917 age: 26,
775 address: 'Ottawa No. 2 Lake Park', 918 address: 'Ottawa No. 2 Lake Park',
776 - job: 'Data Analyst',  
777 - interest: 'snooker',  
778 - birthday: '1988-7-25',  
779 - book: 'A Dream in Red Mansions',  
780 - movie: 'A Chinese Ghost Story',  
781 - music: 'actor' 919 + province: 'Canada',
  920 + city: 'Ottawa',
  921 + zip: 100000
782 } 922 }
783 ] 923 ]
784 } 924 }
src/components/table/table.vue
@@ -293,7 +293,9 @@ @@ -293,7 +293,9 @@
293 if (this.bodyHeight !== 0) { 293 if (this.bodyHeight !== 0) {
294 let height = this.bodyHeight + this.scrollBarWidth - 1; 294 let height = this.bodyHeight + this.scrollBarWidth - 1;
295 295
296 - if (this.width && this.width < this.tableWidth){ 296 + // #2102 里,如果 Table 没有设置 width,而是集成父级的 width,固定列也应该不包含滚动条高度,所以这里直接计算表格宽度
  297 + const tableWidth = parseInt(getStyle(this.$el, 'width')) - 1;
  298 + if ((this.width && this.width < this.tableWidth) || tableWidth < this.tableWidth){
297 height = this.bodyHeight; 299 height = this.bodyHeight;
298 } 300 }
299 // style.height = this.scrollBarWidth > 0 ? `${this.bodyHeight}px` : `${this.bodyHeight - 1}px`; 301 // style.height = this.scrollBarWidth > 0 ? `${this.bodyHeight}px` : `${this.bodyHeight - 1}px`;