diff --git a/src/components/table/mixin.js b/src/components/table/mixin.js index 6223dc58..02ed257b 100644 --- a/src/components/table/mixin.js +++ b/src/components/table/mixin.js @@ -1,8 +1,9 @@ export default { methods: { - alignCls (column) { + alignCls (column, type) { return [ { + [`${column.className}`]: column.className && type === 'body', [`${this.prefixCls}-column-${column.align}`]: column.align, [`${this.prefixCls}-hidden`]: (this.fixed === 'left' && column.fixed !== 'left') || (this.fixed === 'right' && column.fixed !== 'right') || (!this.fixed && column.fixed && (column.fixed === 'left' || column.fixed === 'right')) } diff --git a/src/components/table/table-body.vue b/src/components/table/table-body.vue index bb736857..287ba5ef 100644 --- a/src/components/table/table-body.vue +++ b/src/components/table/table-body.vue @@ -11,7 +11,7 @@ @mouseleave.stop="handleMouseOut(row._index)" @click.stop="clickCurrentRow(row._index)" @dblclick.stop="dblclickCurrentRow(row._index)"> - <td v-for="column in columns" :class="alignCls(column)"> + <td v-for="column in columns" :class="alignCls(column, 'body')"> <Cell :fixed="fixed" :prefix-cls="prefixCls" diff --git a/src/components/table/table-head.vue b/src/components/table/table-head.vue index 46147fda..1906c66a 100644 --- a/src/components/table/table-head.vue +++ b/src/components/table/table-head.vue @@ -5,7 +5,7 @@ </colgroup> <thead> <tr> - <th v-for="(index, column) in columns" :class="alignCls(column)"> + <th v-for="(index, column) in columns" :class="alignCls(column, 'head')"> <div :class="cellClasses(column)"> <template v-if="column.type === 'selection'"><Checkbox :checked="isSelectAll" @on-change="selectAll"></Checkbox></template> <template v-else> diff --git a/test/routers/cascader.vue b/test/routers/cascader.vue index b0c62e25..9a289661 100644 --- a/test/routers/cascader.vue +++ b/test/routers/cascader.vue @@ -1,10 +1,19 @@ <template> - <Cascader :data="data" change-on-select></Cascader> + <div v-for="item in list"> + <Cascader :data="data" change-on-select :render-format="format"></Cascader> + </div> + <i-button @click="add">add</i-button> + <i-button @click="remove">remove</i-button> </template> <script> export default { data () { return { + list: [ + { + a: 1 + } + ], data: [{ value: 'beijing', label: '北京', @@ -32,7 +41,7 @@ children: [ { value: 'fuzimiao', - label: '夫子庙', + label: '夫子庙' } ] }, @@ -42,17 +51,30 @@ children: [ { value: 'zhuozhengyuan', - label: '拙政园', + label: '拙政园' }, { value: 'shizilin', - label: '狮子林', + label: '狮子林' } ] } - ], + ] }] } + }, + methods: { + add () { + this.list.push({ + a: 2 + }) + }, + remove () { + this.list.splice(0, 1); + }, + format (labels) { + return labels.join(' - '); + } } } </script> diff --git a/test/routers/more.vue b/test/routers/more.vue index 1d9b97d7..fa1445a1 100644 --- a/test/routers/more.vue +++ b/test/routers/more.vue @@ -4,10 +4,13 @@ } </style> <template> - <row> - <i-col span="0">123</i-col> - <i-col span="24">24</i-col> - </row> + <Tabs active-key="key1"> + <Tab-pane label="标签一" key="key1"> + <Date-picker type="date" placeholder="选择日期" style="width: 200px"></Date-picker> + </Tab-pane> + <Tab-pane label="标签二" key="key2">标签二的内容</Tab-pane> + <Tab-pane label="标签三" key="key3">标签三的内容</Tab-pane> + </Tabs> </template> <script> export default { diff --git a/test/routers/table.vue b/test/routers/table.vue index 22cfd880..45666a71 100644 --- a/test/routers/table.vue +++ b/test/routers/table.vue @@ -1,204 +1,46 @@ +<style> + /*.ivu-table .demo-table-info-row td{*/ + /*background-color: #2db7f5;*/ + /*color: #fff;*/ + /*}*/ + /*.ivu-table .demo-table-error-row td{*/ + /*background-color: #ff6600;*/ + /*color: #fff;*/ + /*}*/ + .ivu-table .table-age-col{ + background: #ff6600; + } + .ivu-table .table-name-col{ + background: #2db7f5; + } + .ivu-table .table-address-col{ + background: #187; + } +</style> <template> - <i-table border :columns="columns1" :data="data1"></i-table> - <!--<i-table border height="200" :columns="columns1" :data="data2"></i-table>--> - <!--<i-table width="550" height="200" border :columns="columns2" :data="data4"></i-table>--> - <!--<i-button @click="changeFilter">改变filter</i-button>--> - <!--<span v-if="currentRow !== null">Current Row: {{currentRow.name}}</span>--> - <!--<Switch size="small" @on-change="switchCellEllipsis"></Switch> Ellipsis--> - <!--<i-table--> - <!--border--> - <!--:columns="columns6"--> - <!--width="500"--> - <!--:data="[]"--> - <!--:highlight-row="true"--> - <!--@on-current-change="onCurrentChange"--> - <!--@on-dblclick="onDblclick">--> - <!--</i-table>--> - - <!--<br/>--> - - <!--<i-table--> - <!--border--> - <!--:columns="columns7"--> - <!--:data="[]"--> - <!--no-data-text="No Data"--> - <!--:highlight-row="true"--> - <!--@on-current-change="onCurrentChange"--> - <!--@on-dblclick="onDblclick">--> - <!--</i-table>--> - - <!--<br/>--> - - <!--<i-table--> - <!--border--> - <!--:columns="columns7"--> - <!--:data="[]"--> - <!--size="small"--> - <!--:highlight-row="true"--> - <!--@on-current-change="onCurrentChange"--> - <!--@on-dblclick="onDblclick">--> - <!--</i-table>--> - - <!--<br/>--> - - <!--<i-table--> - <!--border--> - <!--:columns="columns7"--> - <!--:data="[]"--> - <!--size="large"--> - <!--:highlight-row="true"--> - <!--@on-current-change="onCurrentChange"--> - <!--@on-dblclick="onDblclick">--> - <!--</i-table>--> - - <!--<br/>--> - - <!--<i-table--> - <!--border--> - <!--:columns="columns7"--> - <!--:data="data5"--> - <!--:highlight-row="true"--> - <!--@on-current-change="onCurrentChange"--> - <!--@on-dblclick="onDblclick">--> - <!--</i-table>--> - - <!--<br/>--> - - <!--<i-table--> - <!--border--> - <!--:columns="columns6"--> - <!--width="500"--> - <!--:data="data5"--> - <!--:highlight-row="true"--> - <!--@on-current-change="onCurrentChange"--> - <!--@on-dblclick="onDblclick">--> - <!--</i-table>--> + <i-table :row-class-name="rowClassName" :columns="columns1" :data="data1"></i-table> </template> <script> export default { data () { return { - columns2: [ + columns1: [ { title: '姓名', key: 'name', - width: 100, - fixed: 'left' + fixed: 'right', + className: 'table-name-col' }, { title: '年龄', key: 'age', - width: 100 - }, - { - title: '省份', - key: 'province', - width: 100 - }, - { - title: '市区', - key: 'city', - width: 100 + fixed: 'right', + className: 'table-age-col' }, { title: '地址', key: 'address', - fixed: 'right', - width: 200 - }, - { - title: '邮编', - key: 'zip', - width: 100 - }, - { - title: '操作', - key: 'action', -// fixed: 'right', - width: 120, - render () { - return `<i-button type="text" size="small">查看</i-button><i-button type="text" size="small">编辑</i-button>`; - } - } - ], - data4: [ - { - name: '王小明', - age: 18, - address: '北京市朝阳区芍药居', - province: '北京市', - city: '朝阳区', - zip: 100000 - }, - { - name: '张小刚', - age: 25, - address: '北京市海淀区西二旗', - province: '北京市', - city: '海淀区', - zip: 100000 - }, - { - name: '李小红', - age: 30, - address: '上海市浦东新区世纪大道', - province: '上海市', - city: '浦东新区', - zip: 100000 - }, - { - name: '周小伟', - age: 26, - address: '深圳市南山区深南大道', - province: '广东', - city: '南山区', - zip: 100000 - }, - { - name: '王小明', - age: 18, - address: '北京市朝阳区芍药居', - province: '北京市', - city: '朝阳区', - zip: 100000 - }, - { - name: '张小刚', - age: 25, - address: '北京市海淀区西二旗', - province: '北京市', - city: '海淀区', - zip: 100000 - }, - { - name: '李小红', - age: 30, - address: '上海市浦东新区世纪大道', - province: '上海市', - city: '浦东新区', - zip: 100000 - }, - { - name: '周小伟', - age: 26, - address: '深圳市南山区深南大道', - province: '广东', - city: '南山区', - zip: 100000 - } - ], - columns1: [ - { - title: '姓名', - key: 'name' - }, - { - title: '年龄', - key: 'age' - }, - { - title: '地址', - key: 'address' + className: 'table-address-col' } ], data1: [ @@ -222,206 +64,17 @@ age: 26, address: '深圳市南山区深南大道' } - ], - data2: [ - { - name: '王小明', - age: 18, - address: '北京市朝阳区芍药居' - }, - { - name: '张小刚', - age: 25, - address: '北京市海淀区西二旗' - }, - { - name: '李小红', - age: 30, - address: '上海市浦东新区世纪大道' - }, - { - name: '周小伟', - age: 26, - address: '深圳市南山区深南大道' - }, - { - name: '王小明', - age: 18, - address: '北京市朝阳区芍药居' - }, - { - name: '张小刚', - age: 25, - address: '北京市海淀区西二旗' - }, - { - name: '李小红', - age: 30, - address: '上海市浦东新区世纪大道' - }, - { - name: '周小伟', - age: 26, - address: '深圳市南山区深南大道' - } - ], - columns6: [ - { - type: 'selection', - width: 60, - align: 'center', - width: 100 - }, - { - title: '日期', - key: 'date', - fixed: 'left', - width: 100 - }, - { - title: '姓名', - key: 'name', - width: 100 - }, - { - title: '年龄', - key: 'age', - width: 100, - filters: [ - { - label: '大于25岁', - value: 1 - }, - { - label: '小于25岁', - value: 2 - } - ], - filterMultiple: false, - filterMethod (value, row) { - if (value === 1) { - return row.age > 25; - } else if (value === 2) { - return row.age < 25; - } - } - }, - { - title: '地址', - key: 'address', - width: 100, - filters: [ - { - label: '北京', - value: '北京' - }, - { - label: '上海', - value: '上海' - }, - { - label: '深圳', - value: '深圳' - } - ], - filterMethod (value, row) { - return row.address.indexOf(value) > -1; - } - }, - { - title: '长文本', - key: 'longText', - width: 100, - ellipsis: false - } - ], - columns7: [ - { - type: 'selection', - width: 60, - align: 'center' - }, - { - title: '日期', - key: 'date' - }, - { - title: '姓名', - key: 'name' - }, - { - title: '地址', - key: 'address', - filters: [ - { - label: '北京', - value: '北京' - }, - { - label: '上海', - value: '上海' - }, - { - label: '深圳', - value: '深圳' - } - ], - filterMethod (value, row) { - return row.address.indexOf(value) > -1; - } - }, - { - title: '长文本', - key: 'longText', - ellipsis: false - } - ], - data5: [ - { - name: '王小明', - age: 18, - address: '北京市朝阳区芍药居', - date: '2016-10-03', - longText: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' - }, - { - name: '张小刚', - age: 25, - address: '北京市海淀区西二旗', - date: '2016-10-01', - longText: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' - }, - { - name: '李小红', - age: 30, - address: '上海市浦东新区世纪大道', - date: '2016-10-02', - longText: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' - } - ], - currentRow: null + ] } }, methods: { - changeFilter () { - this.columns6[2].filters = [ - { - label: '小于25岁', - value: 2 - } - ] - }, - switchCellEllipsis (status) { - this.columns6[5].ellipsis = status - }, - onClick (data) { - window.alert('Click ' + data.name) - }, - onCurrentChange (data) { - this.currentRow = data - }, - onDblclick (data) { - window.alert('Double Click ' + data.name) + rowClassName (row, index) { + if (index === 1) { + return 'demo-table-info-row'; + } else if (index === 3) { + return 'demo-table-error-row'; + } + return ''; } } }