Browse Source

feat:Table 增加标题,列表样式参数 (#1460)

* feat:Table 增加标题,列表样式参数
zjyau 3 years ago
parent
commit
77a00fb6a2

+ 15 - 2
src/packages/__VUE/table/common.ts

@@ -52,10 +52,20 @@ export const component = (componentName: string, translate: Function) => {
         };
         };
       };
       };
 
 
+      const stylehead = (item: TableColumnProps) => {
+        return item.stylehead ? item.stylehead : '';
+      };
+      const stylecolumn = (item: TableColumnProps) => {
+        return item.stylecolumn ? item.stylecolumn : '';
+      };
+
       const getColumnItem = (value: string): TableColumnProps => {
       const getColumnItem = (value: string): TableColumnProps => {
         return props.columns.filter((item: TableColumnProps) => item.key === value)[0];
         return props.columns.filter((item: TableColumnProps) => item.key === value)[0];
       };
       };
-
+      const getColumnItemStyle = (value: string) => {
+        const style = props.columns.filter((item: TableColumnProps) => item.key === value);
+        return style[0].stylecolumn ? style[0].stylecolumn : '';
+      };
       const handleSorterClick = (item: TableColumnProps) => {
       const handleSorterClick = (item: TableColumnProps) => {
         if (item.sorter) {
         if (item.sorter) {
           emit('sorter', item);
           emit('sorter', item);
@@ -86,9 +96,12 @@ export const component = (componentName: string, translate: Function) => {
         classes,
         classes,
         cellClasses,
         cellClasses,
         getColumnItem,
         getColumnItem,
+        getColumnItemStyle,
         handleSorterClick,
         handleSorterClick,
         sortDataItem,
         sortDataItem,
-        translate
+        translate,
+        stylehead,
+        stylecolumn
       };
       };
     }
     }
   };
   };

+ 4 - 1
src/packages/__VUE/table/demo.vue

@@ -105,11 +105,14 @@ export default createDemo({
       columns1: [
       columns1: [
         {
         {
           title: translate('name'),
           title: translate('name'),
-          key: 'name'
+          key: 'name',
+          stylehead: 'font-size:20px;color:red;font-weight:bolder;',
+          stylecolumn: 'font-size:10px;'
         },
         },
         {
         {
           title: translate('sex'),
           title: translate('sex'),
           key: 'sex',
           key: 'sex',
+          stylecolumn: 'font-size:20px;',
           render: ({ sex }) => {
           render: ({ sex }) => {
             return h(
             return h(
               'span',
               'span',

+ 5 - 1
src/packages/__VUE/table/doc.en-US.md

@@ -34,7 +34,9 @@ app.use(Table);
         columns: [
         columns: [
           {
           {
             title: 'name',
             title: 'name',
-            key: 'name'
+            key: 'name',
+            stylehead: 'font-size:20px;color:red;font-weight:bolder;',
+            stylecolumn: 'font-size:10px;color:blue;'
           },
           },
           {
           {
             title: 'sex',
             title: 'sex',
@@ -623,6 +625,8 @@ app.use(Table);
 | ------ | ------------------------------------------------------------------ | ------------------------- | ------ |
 | ------ | ------------------------------------------------------------------ | ------------------------- | ------ |
 | key    | Unique identification of the column                                          | String                    | ``     |
 | key    | Unique identification of the column                                          | String                    | ``     |
 | title  | Header title                                                                                                                                                 | String                    | ``     |
 | title  | Header title                                                                                                                                                 | String                    | ``     |
+| stylehead  | Header style                                                                                                                                                 | String                    | ``     |
+| stylecolumn  | Column style                                                                                                                                                 | String                    | ``     |
 | align  | Alignment of columns, optional values`left`,`center`,`right`                                                                                                              | String                    | `left` |
 | align  | Alignment of columns, optional values`left`,`center`,`right`                                                                                                              | String                    | `left` |
 | sorter | sort,optional values `true`,`function`, `default`, Where `default` means that you may depend on the interface after clicking, `function` you can return a specific sorting function, `default` indicates that the default sorting algorithm is adopted | Boolean、Function、String | -      |
 | sorter | sort,optional values `true`,`function`, `default`, Where `default` means that you may depend on the interface after clicking, `function` you can return a specific sorting function, `default` indicates that the default sorting algorithm is adopted | Boolean、Function、String | -      |
 | render | Custom render column data, high priority                                                                                                                               | Function(record)          | -      |
 | render | Custom render column data, high priority                                                                                                                               | Function(record)          | -      |

+ 5 - 1
src/packages/__VUE/table/doc.md

@@ -34,7 +34,9 @@ app.use(Table);
         columns: [
         columns: [
           {
           {
             title: '姓名',
             title: '姓名',
-            key: 'name'
+            key: 'name',
+            stylehead: 'font-size:20px;color:red;font-weight:bolder;',
+            stylecolumn: 'font-size:10px;color:blue;'
           },
           },
           {
           {
             title: '性别',
             title: '性别',
@@ -623,6 +625,8 @@ app.use(Table);
 | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ------ |
 | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ------ |
 | key    | 列的唯一标识                                                                                                                                             | String                    | ``     |
 | key    | 列的唯一标识                                                                                                                                             | String                    | ``     |
 | title  | 表头标题                                                                                                                                                 | String                    | ``     |
 | title  | 表头标题                                                                                                                                                 | String                    | ``     |
+| stylehead  | 表头样式                                                                                                                                                 | String                    | ``     |
+| stylecolumn  | 列样式                                                                                                                                                 | String                    | ``     |
 | align  | 列的对齐方式,可选值`left`,`center`,`right`                                                                                                              | String                    | `left` |
 | align  | 列的对齐方式,可选值`left`,`center`,`right`                                                                                                              | String                    | `left` |
 | sorter | 排序,可选值有 `true`,`function`, `default`, 其中 `default`表示点击之后可能会依赖接口, `function`可以返回具体的排序函数, `default`表示采用默认的排序算法 | Boolean、Function、String | -      |
 | sorter | 排序,可选值有 `true`,`function`, `default`, 其中 `default`表示点击之后可能会依赖接口, `function`可以返回具体的排序函数, `default`表示采用默认的排序算法 | Boolean、Function、String | -      |
 | render | 自定义渲染列数据,优先级高                                                                                                                               | Function(record)          | -      |
 | render | 自定义渲染列数据,优先级高                                                                                                                               | Function(record)          | -      |

+ 2 - 0
src/packages/__VUE/table/index.taro.vue

@@ -9,6 +9,7 @@
             v-for="item in columns"
             v-for="item in columns"
             :key="item.key"
             :key="item.key"
             @click="handleSorterClick(item)"
             @click="handleSorterClick(item)"
+            :style="item.stylehead"
           >
           >
             {{ item.title }}
             {{ item.title }}
             <slot name="icon"></slot>
             <slot name="icon"></slot>
@@ -23,6 +24,7 @@
             :class="cellClasses(getColumnItem(value))"
             :class="cellClasses(getColumnItem(value))"
             v-for="[value, render] in sortDataItem()"
             v-for="[value, render] in sortDataItem()"
             :key="value"
             :key="value"
+            :style="getColumnItemStyle(value)"
           >
           >
             <RenderColumn
             <RenderColumn
               :slots="[render, item[value]]"
               :slots="[render, item[value]]"

+ 5 - 3
src/packages/__VUE/table/index.vue

@@ -9,6 +9,7 @@
             v-for="item in columns"
             v-for="item in columns"
             :key="item.key"
             :key="item.key"
             @click="handleSorterClick(item)"
             @click="handleSorterClick(item)"
+            :style="item.stylehead"
           >
           >
             {{ item.title }}
             {{ item.title }}
             <slot name="icon"></slot>
             <slot name="icon"></slot>
@@ -23,6 +24,7 @@
             :class="cellClasses(getColumnItem(value))"
             :class="cellClasses(getColumnItem(value))"
             v-for="[value, render] in sortDataItem()"
             v-for="[value, render] in sortDataItem()"
             :key="value"
             :key="value"
+            :style="getColumnItemStyle(value)"
           >
           >
             <RenderColumn
             <RenderColumn
               :slots="[render, item[value]]"
               :slots="[render, item[value]]"
@@ -36,15 +38,15 @@
         </view>
         </view>
       </view>
       </view>
     </view>
     </view>
-    <view class="nut-table__summary" v-if="summary">
-      <span class="nut-table__summary__text" v-html="summary().value"></span>
-    </view>
     <view class="nut-table__nodata" v-if="!curData.length">
     <view class="nut-table__nodata" v-if="!curData.length">
       <div class="nut-table__nodata" :class="{ 'nut-table__nodata--border': bordered }">
       <div class="nut-table__nodata" :class="{ 'nut-table__nodata--border': bordered }">
         <slot name="nodata"></slot>
         <slot name="nodata"></slot>
         <div v-if="!$slots.nodata" class="nut-table__nodata__text"> {{ translate('noData') }} </div>
         <div v-if="!$slots.nodata" class="nut-table__nodata__text"> {{ translate('noData') }} </div>
       </div>
       </div>
     </view>
     </view>
+    <view class="nut-table__summary" v-if="summary">
+      <span class="nut-table__summary__text" v-html="summary().value"></span>
+    </view>
   </view>
   </view>
 </template>
 </template>
 
 

+ 2 - 0
src/packages/__VUE/table/types.ts

@@ -3,6 +3,8 @@ export interface TableColumnProps {
   key?: string;
   key?: string;
   title?: string;
   title?: string;
   align?: string;
   align?: string;
+  stylehead?: string;
+  stylecolumn?: string;
   sorter?: Function;
   sorter?: Function;
   render?: (rowData?: object, rowIndex?: number) => VNodeChild | string | VNode;
   render?: (rowData?: object, rowIndex?: number) => VNodeChild | string | VNode;
 }
 }