wl-design-mobile 0.2.8 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wl-design-mobile",
3
- "version": "0.2.8",
3
+ "version": "0.3.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "author": "finch",
@@ -1,20 +1,39 @@
1
1
  <template>
2
- <div class="ag-theme-balham" :style="{width: '100%', height: tableHeight}">
3
- <ag-grid-vue
4
- :columnDefs="columns"
5
- :rowData="rowData"
6
- :pinnedBottomRowData="sumData"
7
- :defaultColDef="defaultColDef"
8
- @grid-ready="onGridReady"
9
- class="ag-theme-balham"
10
- style="width: 100%; height: 100%;"
11
- ></ag-grid-vue>
2
+ <div class="table-container">
3
+ <div class="ag-theme-balham" :style="{width: '100%', height: tableHeight}">
4
+ <ag-grid-vue
5
+ :columnDefs="columns"
6
+ :rowData="rowData"
7
+ :pinnedBottomRowData="sumData"
8
+ :defaultColDef="defaultColDef"
9
+ @grid-ready="onGridReady"
10
+ @sortChanged="onSortChanged"
11
+ class="ag-theme-balham"
12
+ style="width: 100%; height: 100%;"
13
+ ></ag-grid-vue>
14
+ </div>
15
+ <van-pagination
16
+ v-if="isPage"
17
+ v-model="currentPage"
18
+ :total-items="total"
19
+ :items-per-page="limit"
20
+ @change="onPageChanged"
21
+ mode="simple"
22
+ class="vant-page-comp">
23
+ <template #prev-text>
24
+ <van-icon name="arrow-left"/>
25
+ </template>
26
+ <template #next-text>
27
+ <van-icon name="arrow"/>
28
+ </template>
29
+ </van-pagination>
12
30
  </div>
13
31
  </template>
14
32
  <script>
15
33
  import 'ag-grid-community/styles/ag-grid.css'
16
34
  import 'ag-grid-community/styles/ag-theme-balham.css'
17
- import {AgGridVue} from 'ag-grid-vue'
35
+ import {AgGridVue} from 'ag-grid-vue/lib/main.cjs.js'
36
+ // import {AgGridVue} from 'ag-grid-vue'
18
37
  import {axios} from "../util/axios/index"
19
38
  import {Toast} from "vant"
20
39
 
@@ -36,7 +55,11 @@ export default {
36
55
  },
37
56
  searchParams: {
38
57
  type: Object
39
- }
58
+ },
59
+ isPage: {
60
+ type: Boolean,
61
+ default: false
62
+ },
40
63
  },
41
64
  data() {
42
65
  return {
@@ -49,21 +72,70 @@ export default {
49
72
  resizable: false,
50
73
  filter: false,
51
74
  autoHeight: true
52
- }
75
+ },
76
+ currentPage: 1,
77
+ offset: 0,
78
+ limit: 10,
79
+ total: 0,
53
80
  }
54
81
  },
55
82
  methods: {
56
83
  onGridReady(params) {
57
84
  params.api.sizeColumnsToFit();
58
85
  },
86
+ columnsFilterSort() {
87
+ if (this.columns && this.columns.length > 0) {
88
+ for (const item of this.columns) {
89
+ if (item && item.hasOwnProperty("field")) {
90
+ item['comparator'] = this.preventComparator
91
+ }
92
+ }
93
+ }
94
+ },
95
+ preventComparator(v1, v2) {
96
+ return 0;
97
+ },
98
+ onSortChanged(event) {
99
+ console.log("lambo-ag-table -- onSortChanged -- event:", event)
100
+ if (event && event.hasOwnProperty("columns") && event.columns) {
101
+ let sortColumns = event.columns
102
+ if (sortColumns && sortColumns.length > 0) {
103
+ let sortCol = sortColumns[sortColumns.length - 1]
104
+ if (sortCol && sortCol.hasOwnProperty("colId") && sortCol.hasOwnProperty("sort")) {
105
+ let sortField = sortCol.colId
106
+ let sortType = sortCol.sort
107
+ console.log("lambo-ag-table -- onSortChanged -- sortField:" + sortField + ",sortType:" + sortType)
108
+ if (sortField && (sortType === 'desc' || sortType === 'asc')) {
109
+ this.searchParams.sort = sortField
110
+ this.searchParams.order = sortType
111
+ this.dataRefresh()
112
+ }
113
+ }
114
+ }
115
+ }
116
+ },
117
+ onPageChanged() {
118
+ this.offset = (this.currentPage - 1) * this.limit
119
+ this.dataRefresh()
120
+ },
59
121
  dataRefresh() {
60
- axios.get(this.url, this.searchParams).then(res => {
122
+ let params = {}
123
+ if (this.isPage === true) {
124
+ params = {offset: this.offset, limit: this.limit, ...this.searchParams}
125
+ } else {
126
+ params = {...this.searchParams}
127
+ }
128
+ console.log("lambo-ag-table -- onLoad -- params:", params)
129
+ axios.get(this.url, {params}).then(res => {
61
130
  console.log("lambo-ag-table -- onLoad -- dataRefresh:", res)
62
131
  if (res && res.code === 1) {
63
- this.rowData = []
64
- this.sumData = []
65
- this.rowData = res.data.data || []
66
- this.sumData = res.data.sumData || []
132
+ let dataObj = res.data
133
+ this.rowData = dataObj.rows || []
134
+ this.sumData = dataObj.sum || []
135
+
136
+ if (this.isPage === true) {
137
+ this.total = dataObj.total || 0
138
+ }
67
139
  } else {
68
140
  console.error("lambo-ag-table -- onLoad -- 查询[" + this.url + "]数据失败", res)
69
141
  Toast.fail("查询[" + this.url + "]数据失败:" + res.data || '')
@@ -85,9 +157,14 @@ export default {
85
157
  },
86
158
  deep: true
87
159
  }
160
+ },
161
+ created() {
162
+ this.columnsFilterSort()
88
163
  }
89
164
  }
90
165
  </script>
91
166
  <style scoped>
92
-
167
+ /deep/ .vant-page-comp .van-pagination__item {
168
+ color: #0070D2
169
+ }
93
170
  </style>
@@ -1,44 +0,0 @@
1
- <template>
2
- <div>
3
- <div class="table-footer" ref="listRowDiv">
4
- <div class="footer-cell">
5
- <p>{{footerData.label}}</p>
6
- <p>{{footerData.value}}</p>
7
- </div>
8
- </div>
9
- </div>
10
- </template>
11
- <script>
12
- export default {
13
- name: 'LamboTableFooter',
14
- props: {
15
- footerData: {
16
- type: Object
17
- }
18
- },
19
- data() {
20
- return {}
21
- },
22
- }
23
- </script>
24
- <style scoped lang="css">
25
- .table-footer {
26
- width: 100%;
27
- display: grid;
28
- grid-auto-rows: 30px;
29
- gap: 1px;
30
- align-items: center;
31
- }
32
-
33
- .footer-cell {
34
- box-sizing: border-box;
35
- border: 1px solid #ddd;
36
- border-radius: 3px;
37
- font-size: 14px;
38
- white-space: nowrap;
39
- place-items: center;
40
- display: flex;
41
- align-items: center;
42
- }
43
- </style>
44
-
@@ -1,48 +0,0 @@
1
- <template>
2
- <div>
3
- <div class="table-header" ref="listRowDiv">
4
- <div v-for="(item, index) in columns" :key="index" class="header-cell" :style="{
5
- gridColumn: index + 1,
6
- textAlign: item.align || 'left' }">
7
- {{ item.title }}
8
- </div>
9
- </div>
10
- </div>
11
- </template>
12
- <script>
13
- export default {
14
- name: 'LamboTableHead',
15
- props: {
16
- columns: {
17
- type: Array,
18
- required: true
19
- }
20
- },
21
- data() {
22
- return {}
23
- },
24
- }
25
- </script>
26
- <style scoped lang="css">
27
- .table-header {
28
- width: 100%;
29
- display: grid;
30
- grid-auto-rows: 30px;
31
- gap: 1px;
32
- align-items: end;
33
- justify-content: stretch;
34
- align-content: start;
35
- }
36
-
37
- .header-cell {
38
- box-sizing: border-box;
39
- border: 1px solid #ddd;
40
- border-radius: 3px;
41
- font-size: 14px;
42
- white-space: nowrap;
43
- place-items: center;
44
- display: flex;
45
- align-items: center;
46
- }
47
- </style>
48
-
@@ -1,72 +0,0 @@
1
- <template>
2
- <div class="table-row" ref="listRowDiv">
3
- <div v-for="(item, index) in columns" :key="index" class="table-cell" :style="{
4
- gridColumn: index + 1,
5
-
6
- textAlign: item.align || 'left' }">
7
- <p v-if="item?.type === 'index'">{{seq + 1}}</p>
8
- <p v-else> {{ data[item.key] }} </p>
9
- </div>
10
- </div>
11
- </template>
12
- <script>
13
- // width: item.width,
14
- export default {
15
- name: 'LamboTableRow',
16
- props: {
17
- columns: {
18
- type: Array,
19
- required: true
20
- },
21
- data: {
22
- type: Object,
23
- required: true
24
- },
25
- seq: {
26
- type: Number,
27
- required: true
28
- }
29
- },
30
- data() {
31
- return {
32
- itemWidth: ''
33
- }
34
- },
35
- mounted() {
36
- this.setBodyWidth()
37
- },
38
- methods: {
39
- setBodyWidth() {
40
- const headerItems = this.$refs.listRowDiv
41
- if (headerItems && headerItems.length) {
42
- const widths = headerItems.map(item => item.offsetWidth);
43
- const maxWidth = Math.max(...widths) + 'px'; // 获取最大宽度
44
- this.itemWidth = maxWidth; // 设置表体宽度
45
- }
46
- }
47
- }
48
- }
49
- </script>
50
- <style scoped lang="css">
51
- .table-row {
52
- width: 100%;
53
- display: grid;
54
- grid-auto-rows: 30px;
55
- gap: 1px;
56
- align-items: center;
57
- justify-content: stretch;
58
- align-content: start;
59
- }
60
-
61
- .table-cell {
62
- box-sizing: border-box;
63
- border: 1px solid #ddd;
64
- border-radius: 3px;
65
- font-size: 14px;
66
- /* white-space: nowrap;*/
67
- place-items: center;
68
- display: inline-block;
69
- align-items: center;
70
- }
71
- </style>
72
-
@@ -1,185 +0,0 @@
1
- <template>
2
- <div class="container">
3
- <div class="table-head">
4
- <div class="table-cell" :style="{'--width': item.width + 'px' || 'auto'}" v-for="(item,index) in columns" :key="index" >{{ item.title }}</div>
5
- </div>
6
- <van-list ref="vanList1" v-model="loading"
7
- :finished="finished" finished-text="没有更多了" @load="onLoad" offset="10">
8
- <div class="table-row" v-for="(item,index) in list" :key="index">
9
- <template v-for="column in columns">
10
- <div v-if="column.type === 'index'" v-bind:key="column.key" class="table-cell table-cell-list" :style="{'--width': column.width + 'px' || 'auto'}">{{index + 1}}</div>
11
- <div v-else class="table-cell table-cell-list" v-bind:key="column.key" :style="{'--width': column.width + 'px' || 'auto'}">{{item[column.key]}} </div>
12
- </template>
13
- </div>
14
- </van-list>
15
- </div>
16
- </template>
17
- <script>
18
- import {axios} from "../util/axios/index"
19
- import {Toast} from "vant"
20
-
21
- export default {
22
- name: "LamboTableList",
23
- components: {},
24
- props: {
25
- heightRatio: {
26
- type: Number,
27
- default: 0.5,
28
- },
29
- url: {
30
- type: String
31
- },
32
- searchParams: {
33
- type: Object
34
- },
35
- columns: {
36
- type: Array,
37
- default: () => []
38
- }
39
- },
40
- data() {
41
- return {
42
- loading: false,
43
- finished: true,
44
- finishedTxt: "",
45
- pageNum: 1, // 当前页数
46
- pageSize: 10, // 每页数据条数
47
- listHeight: '100vh', // 默认列表高度为视口高度的80%
48
- refreshing: false,
49
- offset: 0,
50
- limit: 10,
51
- list: [],
52
- };
53
- },
54
- mounted() {
55
- this.getListHeight();
56
- },
57
- watch: {
58
- searchParams: {
59
- handler: function (val, oldVal) {
60
- console.log("searchParams -- val,oldVal:", {val, oldVal})
61
- console.log("searchParams -- val===oldVal:", val === oldVal)
62
- //查询时重置页码
63
- this.pageNum = 1
64
- this.offset = 0
65
- this.limit = 10
66
- this.list = []
67
-
68
- this.onLoad()
69
- },
70
- deep: true
71
- }
72
- },
73
- methods: {
74
- onLoad() {
75
- if (this.refreshing) {
76
- this.list = [];
77
- this.refreshing = false;
78
- }
79
- this.list = [
80
- {
81
- "distCtId": "000000000000O0000000000000000051",
82
- "carCode": "JN2408220001",
83
- "carName": "123",
84
- "distCtName": "济南烟草卷烟配送中心"
85
- },
86
- {
87
- "distCtId": "000000000000O0000000000000000051",
88
- "carCode": "JN2408220002",
89
- "carName": "1",
90
- "distCtName": "济南烟草卷烟配送中心"
91
- },
92
- {
93
- "distCtId": "000000000000O0000000000000000051",
94
- "carCode": "JN2408290001",
95
- "carName": "14",
96
- "distCtName": "济南烟草卷烟配送中心"
97
- }
98
- ]
99
-
100
- // let params = {offset: this.offset, limit: this.limit, ...this.searchParams}
101
- // axios.get(this.url, {params}).then(res => {
102
- // console.log("lambo-init-table-list -- onLoad -- loadData:", res)
103
- // if (res && res.code === 1) {
104
- // let pageData = res.data
105
- //
106
- // if (pageData && pageData.rows.length > 0) {
107
- // for (let item of pageData.rows) {
108
- // if (this.list.length < pageData.total) {
109
- // this.list.push(item)
110
- // this.finished = false
111
- // } else {
112
- // this.finished = true // 数据加载完毕
113
- // }
114
- // }
115
- // this.offset = this.pageNum * 10
116
- // this.pageNum++;
117
- // this.finishedTxt = "没有更多了"
118
- // } else {
119
- // this.finished = true; // 数据加载完毕
120
- // }
121
- // this.loading = false; // 加载状态结束
122
- // } else {
123
- // console.error("lambo-init-list -- onLoad -- 查询[" + this.title + "]数据失败", res)
124
- // Toast.fail("查询[" + this.title + "]数据失败:" + res.data || '')
125
- // }
126
- // }).catch(err => {
127
- // console.error("lambo-init-list -- onLoad -- 查询[" + this.title + "]异常:", err)
128
- // Toast.fail("查询[" + this.url + "]数据异常")
129
- // })
130
- },
131
- getListHeight() {
132
- const windowHeight = window.innerHeight;
133
- this.listHeight = `${windowHeight * this.heightRatio}px`;
134
- },
135
- onRefresh() {
136
- console.log("lambo-init-list -- onRefresh")
137
-
138
- this.finished = false
139
- this.pageNum = 1
140
- this.offset = 0
141
- this.limit = 10
142
-
143
- this.loading = true
144
- this.onLoad()
145
- }
146
- },
147
- beforeDestroy() {
148
- this.pageNum = 1
149
- this.offset = 0
150
- this.limit = 10
151
- this.list = []
152
- },
153
- };
154
- </script>
155
- <style scoped>
156
- :root {
157
- --width: auto
158
- }
159
-
160
- .container {
161
- background: var(--scl-white-1);
162
- }
163
-
164
- .table-head {
165
- display: flex;
166
- margin-bottom: 5px;
167
- color: var(--scl-blue);
168
- }
169
-
170
- .table-row {
171
- display: flex;
172
- }
173
-
174
- .table-cell {
175
- flex: 0 0 var(--width);
176
- text-align: center;
177
- padding: 5px;
178
- min-width: 0;
179
- word-wrap: break-word;
180
- }
181
-
182
- .table-cell-list {
183
- font-size: var(--ind-font-size-sm);
184
- }
185
- </style>
@@ -1,211 +0,0 @@
1
- <template>
2
- <div>
3
- <lambo-table-head :columns="columns"></lambo-table-head>
4
- <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
5
- <van-list v-model="loading" :finished="finished" :finished-text="finishedTxt" :offset="200" @load="onLoad">
6
- <div v-for="(item, index) in list" :key="index">
7
- <lambo-table-row :seq="index" v-bind:key="index" :data="item" :columns="columns"></lambo-table-row>
8
- </div>
9
- </van-list>
10
- </van-pull-refresh>
11
- <lambo-table-footer v-if="tableFooter" :footer-data="footerData"></lambo-table-footer>
12
- </div>
13
- </template>
14
- <script>
15
- import {axios} from "../util/axios/index"
16
- import {Toast} from "vant"
17
- import LamboTableHead from "../list/components/table/lambo-table-head.vue";
18
- import LamboTableRow from "../list/components/table/lambo-table-row.vue";
19
- import LamboTableFooter from "../list/components/table/lambo-table-footer.vue";
20
-
21
- export default {
22
- name: "LamboTableList2",
23
- components: {
24
- LamboTableHead,
25
- LamboTableRow,
26
- LamboTableFooter
27
- },
28
- props: {
29
- heightRatio: {
30
- type: Number,
31
- default: 0.5,
32
- },
33
- url: {
34
- type: String
35
- },
36
- searchParams: {
37
- type: Object
38
- },
39
- testMode: {
40
- type: Boolean,
41
- default: false
42
- },
43
- tableFooter: {
44
- type: Boolean,
45
- default: false
46
- },
47
- columns: {
48
- type: Array,
49
- default: () => []
50
- },
51
- footerData: {
52
- type: Object,
53
- default: () => {
54
- return {
55
- label: '',
56
- value: '',
57
- }
58
- }
59
- }
60
- },
61
- data() {
62
- return {
63
- loading: false,
64
- finished: true,
65
- finishedTxt: "",
66
- pageNum: 1, // 当前页数
67
- pageSize: 10, // 每页数据条数
68
- refreshing: false,
69
- offset: 0,
70
- limit: 10,
71
- list: [
72
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-01", person:"01", dpt: "储配部XXXXXX", note: "测试"},
73
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-02", person:"02", dpt: "储配部XXXXXXXXXXXXXXXXXXXXX", note: "测试"},
74
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-01", person:"01", dpt: "储配部", note: "测试"},
75
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-02", person:"02", dpt: "储配部", note: "测试"},
76
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-01", person:"01", dpt: "储配部", note: "测试"},
77
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-02", person:"02", dpt: "储配部", note: "测试"},
78
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-01", person:"01", dpt: "储配部", note: "测试"},
79
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-02", person:"02", dpt: "储配部", note: "测试"},
80
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-01", person:"01", dpt: "储配部", note: "测试"},
81
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-02", person:"02", dpt: "储配部", note: "测试"},
82
- ]
83
- };
84
- },
85
- mounted() {
86
- },
87
- watch: {
88
- searchParams: {
89
- handler: function (val, oldVal) {
90
- console.log("searchParams -- val,oldVal:", {val, oldVal})
91
- console.log("searchParams -- val===oldVal:", val === oldVal)
92
- //查询时重置页码
93
- this.pageNum = 1
94
- this.offset = 0
95
- this.limit = 10
96
- this.list = []
97
-
98
- this.onLoad()
99
- },
100
- deep: true
101
- }
102
- },
103
- methods: {
104
- onLoad() {
105
- if (this.refreshing) {
106
- this.list = [];
107
- this.refreshing = false;
108
- }
109
- if (this.testMode === true) {
110
- let arr = [
111
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-01", person:"01", dpt: "储配部", note: "测试"},
112
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-02", person:"02", dpt: "储配部", note: "测试"},
113
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-01", person:"01", dpt: "储配部", note: "测试"},
114
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-02", person:"02", dpt: "储配部", note: "测试"},
115
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-01", person:"01", dpt: "储配部", note: "测试"},
116
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-02", person:"02", dpt: "储配部", note: "测试"},
117
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-01", person:"01", dpt: "储配部", note: "测试"},
118
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-02", person:"02", dpt: "储配部", note: "测试"},
119
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-01", person:"01", dpt: "储配部", note: "测试"},
120
- {title: "盐城市亭湖区大树酒业商行", time: "2024-01-02", person:"02", dpt: "储配部", note: "测试"},
121
- ]
122
- this.list.push(...arr)
123
- this.finished = false
124
- this.offset = this.pageNum * 10
125
- this.pageNum++;
126
- }else{
127
- let params = {offset: this.offset, limit: this.limit, ...this.searchParams}
128
- axios.get(this.url, {params}).then(res => {
129
- console.log("lambo-list -- onLoad -- loadData:", res)
130
- if (res && res.code === 1) {
131
- let pageData = res.data
132
-
133
- if (pageData && pageData.rows.length > 0) {
134
- for (let item of pageData.rows) {
135
- if (this.list.length < pageData.total) {
136
- this.list.push(item)
137
- this.finished = false
138
- } else {
139
- this.finished = true // 数据加载完毕
140
- }
141
- }
142
- this.offset = this.pageNum * 10
143
- this.pageNum++;
144
- this.finishedTxt = "没有更多了"
145
- } else {
146
- this.finished = true; // 数据加载完毕
147
- }
148
- this.loading = false; // 加载状态结束
149
- } else {
150
- console.error("lambo-init-list -- onLoad -- 查询[" + this.title + "]数据失败", res)
151
- Toast.fail("查询[" + this.title + "]数据失败:" + res.data || '')
152
- }
153
- }).catch(err => {
154
- console.error("lambo-init-list -- onLoad -- 查询[" + this.title + "]异常:", err)
155
- Toast.fail("查询[" + this.url + "]数据异常")
156
- })
157
- }
158
- },
159
- onRefresh() {
160
- console.log("lambo-init-list -- onRefresh")
161
-
162
- this.finished = false
163
- this.pageNum = 1
164
- this.offset = 0
165
- this.limit = 10
166
-
167
- this.loading = true
168
- this.onLoad()
169
- },
170
- },
171
- beforeDestroy() {
172
- this.pageNum = 1
173
- this.offset = 0
174
- this.limit = 10
175
- this.list = []
176
- }
177
- };
178
- </script>
179
- <style scoped>
180
- @import "../styles/index.less";
181
-
182
- /* 设置滚动条轨道颜色 */
183
- ::-webkit-scrollbar-track {
184
- background: rgba(231, 242, 250, 0.4);
185
- border-radius: 3px;
186
- }
187
-
188
- /* 设置滚动条滑块颜色 */
189
- ::-webkit-scrollbar-thumb {
190
- background: rgba(45, 140, 240, 0.6);
191
- }
192
-
193
- /* 设置滚动条宽度 */
194
- ::-webkit-scrollbar {
195
- width: 6px;
196
- }
197
-
198
- .custom-list {
199
- overflow-y: auto;
200
- background-color: var(--scl-white-1);
201
- padding: 0 8px 0 14px;
202
- margin-top: -6px;
203
- }
204
-
205
- .list-item {
206
- border-bottom: 1px solid var(--scl-gray-5);
207
- }
208
-
209
-
210
-
211
- </style>