fl-web-component 0.1.0 → 0.1.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.
Files changed (33) hide show
  1. package/README.md +35 -24
  2. package/dist/fl-web-component.common.js +67035 -54
  3. package/dist/fl-web-component.common.js.map +1 -1
  4. package/dist/fl-web-component.css +1 -1
  5. package/dist/fl-web-component.umd.js +67035 -54
  6. package/dist/fl-web-component.umd.js.map +1 -1
  7. package/dist/fl-web-component.umd.min.js +13 -1
  8. package/dist/fl-web-component.umd.min.js.map +1 -1
  9. package/package.json +59 -47
  10. package/packages/components/button/index.vue +6 -3
  11. package/packages/components/com-card/card-page.vue +100 -0
  12. package/packages/components/com-card/index.vue +54 -0
  13. package/packages/components/com-dialogWrapper/Readme.md +53 -0
  14. package/packages/components/com-dialogWrapper/index.vue +101 -0
  15. package/packages/components/com-formDialog/Readme.md +409 -0
  16. package/packages/components/com-formDialog/index.vue +470 -0
  17. package/packages/components/com-graphics/index.vue +240 -0
  18. package/packages/components/com-page/index.vue +101 -0
  19. package/packages/components/com-selectTree/Readme.md +17 -0
  20. package/packages/components/com-selectTree/index.vue +238 -0
  21. package/packages/components/com-table/column-default.vue +76 -0
  22. package/packages/components/com-table/column-dynamic.vue +40 -0
  23. package/packages/components/com-table/column-menu.vue +71 -0
  24. package/packages/components/com-table/column-slot.vue +53 -0
  25. package/packages/components/com-table/column.vue +49 -0
  26. package/packages/components/com-table/config.js +21 -0
  27. package/packages/components/com-table/index.vue +281 -0
  28. package/packages/components/com-table/table-page.vue +106 -0
  29. package/packages/components/com-tabs/index.vue +50 -0
  30. package/packages/components/com-treeDynamic/Readme.md +271 -0
  31. package/packages/components/com-treeDynamic/index.vue +207 -0
  32. package/patches/camera-controls+2.9.0.patch +63 -0
  33. package/{packages/index.js → src/main.js} +5 -5
@@ -0,0 +1,281 @@
1
+ <template>
2
+ <div>
3
+ <!-- 统计 -->
4
+ <el-tag
5
+ class="com-table__tip"
6
+ v-if="vaildData(tableOption.tip, config.tip) && tableOption.selection"
7
+ >
8
+ <span class="com-table__tip-name">
9
+ {{ "当前表格已选择" }}
10
+ <span class="com-table__tip-count">{{ selectLen }}</span>
11
+ {{ "项" }}
12
+ </span>
13
+ <el-button
14
+ type="text"
15
+ size="small"
16
+ @click="clearSelection"
17
+ v-if="vaildData(tableOption.selectClearBtn, config.selectClearBtn) && tableOption.selection"
18
+ >{{ "清 空" }}</el-button
19
+ >
20
+ </el-tag>
21
+ <!-- 表格主体 -->
22
+ <el-table
23
+ :key="reload"
24
+ :data="list"
25
+ :row-key="vaildData(tableOption.rowKey, config.rowKey)"
26
+ @current-change="currentRowChange"
27
+ @row-click="rowClick"
28
+ :height="tableHeight"
29
+ ref="table"
30
+ v-loading="tableLoading"
31
+ @selection-change="selectionChange"
32
+ @select="select"
33
+ @select-all="selectAll"
34
+ >
35
+ <template slot="empty">
36
+ <slot name="empty" v-if="$slots.empty"></slot>
37
+ <el-empty
38
+ v-else
39
+ :image-size="100"
40
+ :description="tableOption.emptyText || '暂无数据'"
41
+ ></el-empty>
42
+ </template>
43
+ <column :columnOption="columnOption">
44
+ <column-default ref="columnDefault" slot="header">
45
+ <template slot-scope="{ row, index }" slot="expand">
46
+ <slot :row="row" :index="index" name="expand"></slot>
47
+ </template>
48
+ </column-default>
49
+ <template v-for="item in mainSlot" slot-scope="scope" :slot="item">
50
+ <slot v-bind="scope" :name="item"></slot>
51
+ </template>
52
+ <column-menu slot="footer">
53
+ <template slot="menu" slot-scope="scope">
54
+ <slot name="menu" v-bind="scope"></slot>
55
+ </template>
56
+ </column-menu>
57
+ </column>
58
+ </el-table>
59
+ <!-- 分页 -->
60
+ <table-page ref="tablePage"> </table-page>
61
+ </div>
62
+ </template>
63
+ <script>
64
+ import init from "../../utils/init.js";
65
+ import tablePage from "./table-page";
66
+ import column from "./column";
67
+ import columnMenu from "./column-menu";
68
+ import columnDefault from "./column-default";
69
+ import config from "./config.js";
70
+ import { getColumn } from "../../utils/util.js";
71
+ import sortable from "sortablejs";
72
+
73
+ export default {
74
+ name: "comTable",
75
+ mixins: [init()],
76
+ provide() {
77
+ return {
78
+ comTable: this,
79
+ };
80
+ },
81
+ components: {
82
+ column, // 数据列
83
+ columnDefault, // 其它列,
84
+ columnMenu, // 操作栏,
85
+ tablePage, // 分页
86
+ },
87
+ data() {
88
+ return {
89
+ reload: Math.random(),
90
+ config: config,
91
+ list: [],
92
+ listError: {},
93
+ tableHeight: undefined,
94
+ tableIndex: -1,
95
+ tableSelect: [],
96
+ sumsList: {},
97
+ btnDisabledList: {},
98
+ btnDisabled: false,
99
+ default: {},
100
+ };
101
+ },
102
+ created() {},
103
+ mounted() {
104
+ this.dataInit();
105
+ // this.getTableHeight();
106
+ this.refreshTable();
107
+ },
108
+ computed: {
109
+ rowKey() {
110
+ return this.tableOption.rowKey;
111
+ },
112
+ tableColumnName() {
113
+ return "elTableColumn";
114
+ },
115
+ isRowSort() {
116
+ return this.tableOption.rowSort;
117
+ },
118
+ isAutoHeight() {
119
+ return this.tableOption.height === "auto";
120
+ },
121
+ mainSlot() {
122
+ let result = [];
123
+
124
+ this.propOption.forEach((item) => {
125
+ if (this.$scopedSlots[item.prop]) result.push(item.prop);
126
+ });
127
+
128
+ return result;
129
+ },
130
+ calcHeight() {
131
+ return this.tableOption.calcHeight || 0;
132
+ },
133
+ propOption() {
134
+ let result = [];
135
+ function findProp(list = []) {
136
+ if (!Array.isArray(list)) return;
137
+ list.forEach((ele) => {
138
+ if (Array.isArray(ele.children)) findProp(ele.children);
139
+ else result.push(ele);
140
+ });
141
+ }
142
+ findProp(this.columnOption);
143
+ return result;
144
+ },
145
+ columnOption() {
146
+ let tableOption = this.deepClone(this.tableOption);
147
+ return getColumn(tableOption.column);
148
+ },
149
+ selectLen() {
150
+ return this.tableSelect ? this.tableSelect.length : 0;
151
+ },
152
+ },
153
+ watch: {
154
+ data: {
155
+ handler() {
156
+ this.dataInit();
157
+ },
158
+ deep: true,
159
+ },
160
+ },
161
+ props: {
162
+ value: {
163
+ type: Object,
164
+ default: () => {
165
+ return {};
166
+ },
167
+ },
168
+ page: {
169
+ type: Object,
170
+ default() {
171
+ return {};
172
+ },
173
+ },
174
+ tableLoading: {
175
+ type: Boolean,
176
+ default: false,
177
+ },
178
+ data: {
179
+ type: Array,
180
+ required: true,
181
+ default: () => {
182
+ return [];
183
+ },
184
+ },
185
+ },
186
+ methods: {
187
+ // 计算表格高度
188
+ getTableHeight() {
189
+ if (this.isAutoHeight) {
190
+ this.$nextTick(() => {
191
+ const tableRef = this.$refs.table;
192
+ const tablePageRef = this.$refs.tablePage;
193
+ if (!tableRef) return;
194
+ const tableStyle = tableRef.$el;
195
+ const pageStyle = tablePageRef.$el.offsetHeight || 20;
196
+ this.tableHeight =
197
+ document.documentElement.clientHeight -
198
+ tableStyle.offsetTop -
199
+ pageStyle -
200
+ this.calcHeight;
201
+ });
202
+ } else {
203
+ this.tableHeight = this.tableOption.height;
204
+ }
205
+ },
206
+ // 刷新表格
207
+ refreshTable(callback) {
208
+ console.log("refreshTable");
209
+ this.reload = Math.random();
210
+ this.$nextTick(() => {
211
+ callback && callback();
212
+ });
213
+ },
214
+ // 清除多选
215
+ clearSelection() {
216
+ console.log("clearSelection");
217
+ this.$emit("selection-clear", this.deepClone(this.tableSelect));
218
+ this.$refs.table.clearSelection();
219
+ },
220
+ // 初始化
221
+ dataInit() {
222
+ console.log("dataInit");
223
+ this.list = this.data;
224
+ this.list.forEach((ele, index) => {
225
+ this.$set(ele, "$index", index);
226
+ });
227
+ },
228
+ //设置单选
229
+ currentRowChange(currentRow, oldCurrentRow) {
230
+ console.log("currentRowChange");
231
+ this.$emit("current-row-change", currentRow, oldCurrentRow);
232
+ },
233
+ // 选择回调
234
+ selectionChange(val) {
235
+ console.log("selectionChange");
236
+ this.tableSelect = val;
237
+ this.$emit("selection-change", this.tableSelect);
238
+ },
239
+ // 单个选择回调
240
+ select(selection, row) {
241
+ console.log("select");
242
+ this.$emit("select", selection, row);
243
+ },
244
+ // 点击勾选全选 Checkbox
245
+ selectAll(selection) {
246
+ console.log("selectAll");
247
+ this.$emit("select-all", selection);
248
+ },
249
+ // 行点击
250
+ rowClick(row, event, column) {
251
+ console.log("rowClick");
252
+ this.$emit("row-click", row, event, column);
253
+ },
254
+ // 编辑
255
+ rowEdit(row, index) {
256
+ console.log("rowEdit", row, index);
257
+ this.$emit("row-edit", row, index, () => {});
258
+ },
259
+ // 删除
260
+ rowDel(row, index) {
261
+ console.log("rowDel", row, index);
262
+ this.$emit("row-del", row, index, () => {});
263
+ },
264
+ // 拖拽
265
+ tableDrop(type, el, callback) {
266
+ console.log("tableDrop");
267
+ if (this.isSortable !== true) {
268
+ if (type == "row" && !this.isRowSort) {
269
+ return;
270
+ }
271
+ }
272
+ sortable &&
273
+ sortable.create(el, {
274
+ animation: 500,
275
+ delay: 0,
276
+ onEnd: (evt) => callback(evt),
277
+ });
278
+ },
279
+ },
280
+ };
281
+ </script>
@@ -0,0 +1,106 @@
1
+ <template>
2
+ <el-card v-if="pageFlag && vaildData(comTable.tableOption.page, true)">
3
+ <el-pagination
4
+ :small="comTable.size == 'mini'"
5
+ :disabled="defaultPage.disabled"
6
+ :hide-on-single-page="defaultPage.single"
7
+ :pager-count="defaultPage.pagerCount"
8
+ :current-page.sync="defaultPage.currentPage"
9
+ :background="defaultPage.background"
10
+ :page-size="defaultPage.pageSize"
11
+ :page-sizes="defaultPage.pageSizes"
12
+ @size-change="sizeChange"
13
+ @prev-click="prevClick"
14
+ @next-click="nextClick"
15
+ @current-change="currentChange"
16
+ :layout="defaultPage.layout"
17
+ :total="defaultPage.total"
18
+ ></el-pagination>
19
+ </el-card>
20
+ </template>
21
+
22
+ <script>
23
+ import base from "../../utils/base.js";
24
+
25
+ export default {
26
+ name: "comTable",
27
+ inject: ["comTable"],
28
+ mixins: [base()],
29
+ data() {
30
+ return {
31
+ defaultPage: {
32
+ single: false,
33
+ total: 0, // 总页数
34
+ pagerCount: 7, //超过多少条隐藏
35
+ currentPage: 1, // 当前页数
36
+ pageSize: 10, // 每页显示多少条
37
+ pageSizes: [10, 20, 30, 40, 50, 100],
38
+ layout: "total, sizes, prev, pager, next, jumper",
39
+ background: true, // 背景颜色
40
+ },
41
+ };
42
+ },
43
+ created() {
44
+ this.pageInit();
45
+ this.comTable.$emit("on-load", this.defaultPage);
46
+ },
47
+ watch: {
48
+ "comTable.page": {
49
+ handler() {
50
+ this.pageInit();
51
+ },
52
+ deep: true,
53
+ },
54
+ pageFlag() {
55
+ this.comTable.getTableHeight();
56
+ },
57
+ },
58
+ computed: {
59
+ pageFlag() {
60
+ return this.defaultPage.total != 0;
61
+ },
62
+ },
63
+ methods: {
64
+ pageInit() {
65
+ this.defaultPage = Object.assign(this.defaultPage, this.comTable.page);
66
+ this.updateValue();
67
+ },
68
+ updateValue() {
69
+ console.log("updateValue defaultPage", this.defaultPage);
70
+ this.comTable.$emit("update:page", this.defaultPage);
71
+ },
72
+ //下一页事件
73
+ nextClick(val) {
74
+ console.log("nextClick", val);
75
+ this.comTable.$emit("next-click", val);
76
+ },
77
+ //上一页事件
78
+ prevClick(val) {
79
+ console.log("prevClick", val);
80
+ this.comTable.$emit("prev-click", val);
81
+ },
82
+ // 页大小回调
83
+ sizeChange(val) {
84
+ this.defaultPage.currentPage = 1;
85
+ this.defaultPage.pageSize = val;
86
+ this.updateValue();
87
+ console.log("sizeChange", val);
88
+ this.comTable.$emit("on-load", this.defaultPage);
89
+ this.comTable.$emit("size-change", val);
90
+ },
91
+ // 页码回调
92
+ currentChange(val) {
93
+ this.updateValue();
94
+ this.comTable.$emit("on-load", this.defaultPage);
95
+ this.comTable.$emit("current-change", val);
96
+ },
97
+ },
98
+ };
99
+ </script>
100
+
101
+ <style lang="scss" scoped>
102
+ .el-pagination {
103
+ text-align: right;
104
+ padding: 15px 10px 15px 20px !important;
105
+ }
106
+ </style>
@@ -0,0 +1,50 @@
1
+ <template>
2
+ <el-tabs
3
+ v-model="active"
4
+ :before-leave="option.beforeLeave"
5
+ :tab-position="option.position"
6
+ :type="option.type"
7
+ >
8
+ <el-tab-pane
9
+ :name="index + ''"
10
+ :disabled="column.disabled"
11
+ :label="column.label"
12
+ v-for="(column, index) in columnOption"
13
+ :key="index"
14
+ >
15
+ </el-tab-pane>
16
+ </el-tabs>
17
+ </template>
18
+
19
+ <script>
20
+ export default {
21
+ name: "comTabs",
22
+ props: {
23
+ option: {
24
+ type: Object,
25
+ required: true,
26
+ default: () => {
27
+ return {};
28
+ },
29
+ },
30
+ },
31
+ data() {
32
+ return {
33
+ active: "0",
34
+ };
35
+ },
36
+ watch: {
37
+ active() {
38
+ this.$emit("change", this.tabsObj);
39
+ },
40
+ },
41
+ computed: {
42
+ tabsObj() {
43
+ return this.columnOption[this.active];
44
+ },
45
+ columnOption() {
46
+ return this.option.column || [];
47
+ },
48
+ },
49
+ };
50
+ </script>
@@ -0,0 +1,271 @@
1
+ <!-- 使用方法 样例 -->
2
+ <template>
3
+ <div class="trigger_tree">
4
+ <TreeDynamic
5
+ :tree-data="treeData"
6
+ :tree-props="treeProps"
7
+ @treeNodeClick="treeNodeClick"
8
+ >
9
+ <template slot-scope="{ data }">
10
+ <span v-show="data.show" title="添加子级" class="el-icon-plus" />
11
+ <span v-show="data.show" title="编辑" class="el-icon-edit" />
12
+ <span v-show="data.show" title="删除" class="el-icon-close" />
13
+ </template>
14
+ </TreeDynamic>
15
+ </dev>
16
+ </template>
17
+
18
+ <script>
19
+ export default {
20
+ name: 'TriggerDialog',
21
+ components: {
22
+ // 树结构引入,如注册全局组件则克直接使用
23
+ TreeDynamic: () => import('./TreeDynamic.vue')
24
+ },
25
+ props: {},
26
+ data() {
27
+ return {
28
+ // 树结构数据
29
+ treeData: [
30
+ {
31
+ 'id': '1745253848118845442',
32
+ 'name': '对象分类',
33
+ 'value': 'objectClass',
34
+ 'businessCode': 'objectClass',
35
+ 'level': 1,
36
+ 'children': [
37
+ {
38
+ 'id': '12618484347122',
39
+ 'name': '设备',
40
+ 'value': 'shebei',
41
+ 'level': 2,
42
+ 'children': [
43
+ {
44
+ 'id': '12618485050290',
45
+ 'name': '容器类',
46
+ 'value': 'rongqilei',
47
+ 'level': 3,
48
+ 'children': [
49
+ {
50
+ 'id': '12618485152250',
51
+ 'name': '分离器',
52
+ 'value': 'fenliqi',
53
+ 'level': 5
54
+ },
55
+ {
56
+ 'id': '12618484578645',
57
+ 'name': '过滤器',
58
+ 'value': 'guolu:qi',
59
+ 'level': 4
60
+ },
61
+ {
62
+ 'id': '12618485917543',
63
+ 'name': '容器',
64
+ 'value': 'rongqi',
65
+ 'level': 4
66
+ },
67
+ {
68
+ 'id': '1754016181494267905',
69
+ 'name': '篮式过滤器',
70
+ 'value': 'lanshiguolu:qi',
71
+ 'level': 4
72
+ }
73
+ ]
74
+ }
75
+ ]
76
+ }
77
+ ]
78
+ }, {
79
+ 'id': '12618484760325',
80
+ 'name': '电气',
81
+ 'value': 'dianqi',
82
+ 'level': 2,
83
+ 'children': [
84
+ {
85
+ 'id': '12618485975945',
86
+ 'name': '变压器类',
87
+ 'value': 'bianyaqilei',
88
+ 'level': 3,
89
+ 'children': [
90
+ {
91
+ 'id': '12618485384756',
92
+ 'name': '变压器',
93
+ 'value': 'bianyaqi',
94
+ 'level': 4
95
+ },
96
+ {
97
+ 'id': '12618485707383',
98
+ 'name': '箱式变电站',
99
+ 'value': 'xiangshibiandianzhan',
100
+ 'level': 4
101
+ },
102
+ {
103
+ 'id': '12618485371135',
104
+ 'name': '光伏电站',
105
+ 'value': 'guangfudianzhan',
106
+ 'level': 4
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ 'id': '12618485814127',
112
+ 'name': '发电机',
113
+ 'value': 'fadianji',
114
+ 'level': 3,
115
+ 'children': [
116
+ {
117
+ 'id': '12618485358015',
118
+ 'name': '燃气轮发电机',
119
+ 'value': 'ranqilunfadianji',
120
+ 'level': 4
121
+ },
122
+ {
123
+ 'id': '12618483950122',
124
+ 'name': '燃气内燃发电机',
125
+ 'value': 'ranqineiranfadianji',
126
+ 'level': 4
127
+ },
128
+ {
129
+ 'id': '12618485975170',
130
+ 'name': '双燃料发电机',
131
+ 'value': 'shuangranliaofadianji',
132
+ 'level': 4
133
+ },
134
+ {
135
+ 'id': '12618485691024',
136
+ 'name': '应急柴油发电机',
137
+ 'value': 'yingjichaiyoufadianji',
138
+ 'level': 4
139
+ }
140
+ ]
141
+ },
142
+ {
143
+ 'id': '12618485453906',
144
+ 'name': '开关设备和控制设备',
145
+ 'value': 'kaiguanshebeihekongzhishebei',
146
+ 'level': 3,
147
+ 'children': [
148
+ {
149
+ 'id': '12618483905472',
150
+ 'name': '低压成套开关设备',
151
+ 'value': 'diyachengtaokaiguanshebei',
152
+ 'level': 4
153
+ },
154
+ {
155
+ 'id': '12618484387637',
156
+ 'name': '中压成套开关设备树结构长度测试',
157
+ 'value': 'zhongyachengtaokaiguanshebei',
158
+ 'level': 4
159
+ }
160
+ ]
161
+ },
162
+ {
163
+ 'id': '12618484918030',
164
+ 'name': '电源装置',
165
+ 'value': 'dianyuanzhuangzhi',
166
+ 'level': 3,
167
+ 'children': [
168
+ {
169
+ 'id': '12618484390629',
170
+ 'name': 'AC UPS',
171
+ 'value': 'AC UPS',
172
+ 'level': 4
173
+ },
174
+ {
175
+ 'id': '12618484534407',
176
+ 'name': 'DC UPS',
177
+ 'value': 'DC UPS',
178
+ 'level': 4
179
+ }
180
+ ]
181
+ },
182
+ {
183
+ 'id': '12618484767931',
184
+ 'name': '配电箱类',
185
+ 'value': 'peidianxianglei',
186
+ 'level': 3,
187
+ 'children': [
188
+ {
189
+ 'id': '12618485304400',
190
+ 'name': '配电箱',
191
+ 'value': 'peidianxiang',
192
+ 'level': 4
193
+ }
194
+ ]
195
+ },
196
+ {
197
+ 'id': '12618485729502',
198
+ 'name': '变频器类',
199
+ 'value': 'bianpinqilei',
200
+ 'level': 3,
201
+ 'children': [
202
+ {
203
+ 'id': '12618483944869',
204
+ 'name': '变频器',
205
+ 'value': 'bianpinqi',
206
+ 'level': 4
207
+ }
208
+ ]
209
+ },
210
+ {
211
+ 'id': '12618485102937',
212
+ 'name': '软起动器类',
213
+ 'value': 'ruanqidongqilei',
214
+ 'level': 3,
215
+ 'children': [
216
+ {
217
+ 'id': '12618484212277',
218
+ 'name': '软起动器',
219
+ 'value': 'ruanqidongqi',
220
+ 'level': 4
221
+ }
222
+ ]
223
+ },
224
+ {
225
+ 'id': '12618485021977',
226
+ 'name': '电机类',
227
+ 'value': 'dianjilei',
228
+ 'level': 3,
229
+ 'children': [
230
+ {
231
+ 'id': '12618484664538',
232
+ 'name': '电机',
233
+ 'value': 'dianji',
234
+ 'level': 4
235
+ }
236
+ ]
237
+ }
238
+ ]
239
+ }
240
+ ],
241
+ treeProps: {
242
+ children: 'children',
243
+ label: 'name'
244
+ }
245
+ }
246
+ },
247
+ computed: { },
248
+ watch: {},
249
+ created() {},
250
+ mounted() {},
251
+ methods: {
252
+ /* 点击树结构返回数据 */
253
+ treeNodeClick(node) {
254
+ console.log(node)
255
+ }
256
+ }
257
+ }
258
+ </script>
259
+ <style lang="scss" scoped>
260
+ .trigger_tree {
261
+ height: 100%;
262
+ width: 300px;
263
+ background-color: #fff;
264
+ }
265
+ .el-icon-plus, .el-icon-edit, .el-icon-close {
266
+ color: #1890ff;
267
+ text-align: right;
268
+ margin-right: 8px;
269
+ font-size: 14px;
270
+ }
271
+ </style>