Commit b142865eff219e2632027cb2590a04d8a181a377
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 | 699 | <!--}--> |
| 700 | 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 | 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 | 798 | </template> |
| 705 | 799 | <script> |
| 706 | - import expandRow from '../components/tableExpand.vue'; | |
| 707 | 800 | export default { |
| 708 | - components: { expandRow }, | |
| 709 | 801 | data () { |
| 710 | 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 | 805 | title: 'Name', |
| 725 | - key: 'name' | |
| 806 | + key: 'name', | |
| 807 | + width: 100, | |
| 808 | +// fixed: 'left' | |
| 726 | 809 | }, |
| 727 | 810 | { |
| 728 | 811 | title: 'Age', |
| 729 | 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 | 826 | title: 'Address', |
| 734 | 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 | 892 | name: 'John Brown', |
| 741 | 893 | age: 18, |
| 742 | 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 | 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 | 908 | name: 'Joe Black', |
| 763 | 909 | age: 30, |
| 764 | 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 | 916 | name: 'Jon Snow', |
| 774 | 917 | age: 26, |
| 775 | 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 | 293 | if (this.bodyHeight !== 0) { |
| 294 | 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 | 299 | height = this.bodyHeight; |
| 298 | 300 | } |
| 299 | 301 | // style.height = this.scrollBarWidth > 0 ? `${this.bodyHeight}px` : `${this.bodyHeight - 1}px`; | ... | ... |