wl-design-mobile 0.2.9 → 0.3.1

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.
@@ -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>