lw-cdp-ui 1.2.48 → 1.2.49

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 (88) hide show
  1. package/package.json +1 -1
  2. package/dist/assets/images/empty.jpg +0 -0
  3. package/dist/assets/images/login.svg +0 -558
  4. package/dist/assets/images/logo.jpg +0 -0
  5. package/dist/assets/images/logo.svg +0 -78
  6. package/dist/assets/images/logo1.svg +0 -86
  7. package/dist/assets/images/register.svg +0 -351
  8. package/dist/components/lwCronSelect/index.vue +0 -218
  9. package/dist/components/lwFlow/components/lfControl.vue +0 -126
  10. package/dist/components/lwFlow/components/lfNodePanel.vue +0 -98
  11. package/dist/components/lwFlow/config/dagre.js +0 -279
  12. package/dist/components/lwFlow/config/nodesList.js +0 -243
  13. package/dist/components/lwFlow/index.vue +0 -781
  14. package/dist/components/lwFlow/nodeEdit/audienceReceive.vue +0 -262
  15. package/dist/components/lwFlow/nodeEdit/basicSettings.vue +0 -88
  16. package/dist/components/lwFlow/nodeEdit/eventReceive.vue +0 -145
  17. package/dist/components/lwFlow/nodeEdit/index.vue +0 -306
  18. package/dist/components/lwFlow/nodeEdit/sms.vue +0 -107
  19. package/dist/components/lwFlow/nodeEdit/styleSettings.vue +0 -236
  20. package/dist/components/lwFlow/nodes/basisEnd.js +0 -56
  21. package/dist/components/lwFlow/nodes/basisStart.js +0 -56
  22. package/dist/components/lwFlow/nodes/custom.js +0 -129
  23. package/dist/components/lwFlow/nodes/et2lTable.js +0 -132
  24. package/dist/components/lwFlow/nodesData/datas/audienceReceive.js +0 -137
  25. package/dist/components/lwFlow/nodesData/datas/base.js +0 -190
  26. package/dist/components/lwFlow/nodesData/datas/collap.js +0 -95
  27. package/dist/components/lwFlow/nodesData/datas/eventReceive.js +0 -106
  28. package/dist/components/lwFlow/nodesData/datas/expand.js +0 -85
  29. package/dist/components/lwFlow/nodesData/datas/filter.js +0 -85
  30. package/dist/components/lwFlow/nodesData/datas/joiner.js +0 -96
  31. package/dist/components/lwFlow/nodesData/datas/mapper.js +0 -111
  32. package/dist/components/lwFlow/nodesData/datas/reduce.js +0 -69
  33. package/dist/components/lwFlow/nodesData/datas/sms.js +0 -69
  34. package/dist/components/lwFlow/nodesData/datas/source.js +0 -142
  35. package/dist/components/lwFlow/nodesData/datas/target.js +0 -95
  36. package/dist/components/lwFlow/nodesData/datas/timer.js +0 -180
  37. package/dist/components/lwFlow/nodesData/index.js +0 -41
  38. package/dist/components/lwForm/index.vue +0 -631
  39. package/dist/components/lwFormJson/JsonItem.vue +0 -302
  40. package/dist/components/lwFormJson/StatsConfig.vue +0 -544
  41. package/dist/components/lwFormJson/TreeItem.vue +0 -149
  42. package/dist/components/lwFormJson/index.vue +0 -362
  43. package/dist/components/lwFormJson/menuList.js +0 -324
  44. package/dist/components/lwFormMini/FormItem.vue +0 -466
  45. package/dist/components/lwFormMini/ViewItem.vue +0 -391
  46. package/dist/components/lwFormMini/index.vue +0 -421
  47. package/dist/components/lwFormMini/textToPassword.vue +0 -61
  48. package/dist/components/lwFormView/index.vue +0 -390
  49. package/dist/components/lwFormView/textToPassword.vue +0 -59
  50. package/dist/components/lwIconSelect/iconSelect.js +0 -289
  51. package/dist/components/lwIconSelect/index.vue +0 -142
  52. package/dist/components/lwLayout/components/NavMenu.vue +0 -36
  53. package/dist/components/lwLayout/components/aside.vue +0 -295
  54. package/dist/components/lwLayout/components/bu.vue +0 -88
  55. package/dist/components/lwLayout/components/iframeView.vue +0 -57
  56. package/dist/components/lwLayout/components/lang.vue +0 -77
  57. package/dist/components/lwLayout/components/setting.vue +0 -102
  58. package/dist/components/lwLayout/components/sideM.vue +0 -135
  59. package/dist/components/lwLayout/components/tags.vue +0 -388
  60. package/dist/components/lwLayout/components/topbar.vue +0 -69
  61. package/dist/components/lwLayout/components/userbar.vue +0 -214
  62. package/dist/components/lwLayout/index.vue +0 -469
  63. package/dist/components/lwLogin/index.vue +0 -511
  64. package/dist/components/lwLogin/locale/en-us.js +0 -37
  65. package/dist/components/lwLogin/locale/zh-cn.js +0 -37
  66. package/dist/components/lwSearch/date/date.vue +0 -113
  67. package/dist/components/lwSearch/dateRange/dateRange.vue +0 -118
  68. package/dist/components/lwSearch/dates/dates.vue +0 -366
  69. package/dist/components/lwSearch/index.vue +0 -628
  70. package/dist/components/lwSearch/input/input.vue +0 -55
  71. package/dist/components/lwSearch/locale/en-us.js +0 -15
  72. package/dist/components/lwSearch/locale/zh-cn.js +0 -15
  73. package/dist/components/lwSearch/select/select.vue +0 -58
  74. package/dist/components/lwSvgIcon/index.vue +0 -29
  75. package/dist/components/lwTable/index.js +0 -286
  76. package/dist/components/lwTable/index.scss +0 -238
  77. package/dist/components/lwTable/index.vue +0 -346
  78. package/dist/components/lwTable/locale/en-US.js +0 -26
  79. package/dist/components/lwTable/locale/zh-CN.js +0 -26
  80. package/dist/components/lwTable/useFullscreen.js +0 -73
  81. package/dist/components/lwTableForm/index.vue +0 -662
  82. package/dist/components/lwTableSelect/index.vue +0 -266
  83. package/dist/components/lwTableSelect/tableSelect.js +0 -23
  84. package/dist/components/lwUpload/index.vue +0 -564
  85. package/dist/lw-cdp-ui.esm.js +0 -19906
  86. package/dist/lw-cdp-ui.umd.js +0 -22
  87. package/dist/style.css +0 -1
  88. package/dist/vite.svg +0 -1
@@ -1,362 +0,0 @@
1
- <template>
2
- <el-container :style="{ maxHeight }">
3
- <el-aside v-if="!hideModule"
4
- width="200px"
5
- class="form-json-body">
6
- <div class="menu-list">
7
- <el-collapse v-model="activeNames">
8
- <el-collapse-item v-for="item in menuList"
9
- :title="item.title"
10
- :name="item.title"
11
- class="menu-list-title">
12
- <draggable class="menu-list-group"
13
- :list="item.list"
14
- :group="{ name: 'people', pull: 'clone', put: false }"
15
- :clone="cloneItem"
16
- item-key="name">
17
- <template #item="{ element }">
18
- <div v-if="!element?.hide"
19
- class="list-group-item">
20
- {{ element.label }}
21
- </div>
22
- </template>
23
- </draggable>
24
- </el-collapse-item>
25
- </el-collapse>
26
- </div>
27
-
28
- </el-aside>
29
- <el-container>
30
- <!-- <el-header v-if="hideTool">暂未开发工具栏</el-header> -->
31
- <el-main class="form-json-body">
32
- <el-form ref="form"
33
- @click.capture="back(config)"
34
- :model="form"
35
- :label-width="config.labelWidth"
36
- :label-position="$i18n.locale == 'en-us' ? 'top' : config.labelPosition"
37
- v-loading="loading"
38
- :disabled="isView"
39
- element-loading-text="Loading...">
40
- <el-row :gutter="10">
41
- <JsonItem :formItems="config.formItems"
42
- :hideBorder="hideBorder"
43
- :form="form"
44
- :custom="custom"
45
- @curClick="selectItem">
46
- <template v-for="item in custom"
47
- v-slot:[item.component]="{ itemCur, formCur }">
48
- <slot :name="item.component"
49
- :itemCur="itemCur"
50
- :formCur="formCur"></slot>
51
- </template>
52
- </JsonItem>
53
- </el-row>
54
-
55
- </el-form>
56
- </el-main>
57
- </el-container>
58
-
59
- <el-aside v-if="!hideConfig"
60
- width="300px"
61
- class="aside-right">
62
- <StatsConfig :item="curItem"
63
- :config="config" />
64
- </el-aside>
65
- </el-container>
66
- </template>
67
-
68
- <script>
69
- import JsonItem from './JsonItem.vue'
70
- import StatsConfig from './StatsConfig.vue'
71
- import MenuList from './menuList'
72
- import draggable from 'vuedraggable'
73
- export default {
74
- components: {
75
- JsonItem,
76
- StatsConfig,
77
- draggable
78
- },
79
- props: {
80
- modelValue: { type: Object, default: () => { } },
81
- /**
82
- * 配置项
83
- * {
84
- * formItems: [{
85
- * span: 24,
86
- * component: 'input', // 可选项有 input, textarea, select, cascader, date, number, radio, checkbox, switch, color, rate, slider, tags, divider, upload, 自定义名称
87
- * name: 'name', // 表单字段名称
88
- * label: '名称', // 表单字段名称
89
- * message: '提示信息', // 表单字段名称
90
- * value: '1', // 表单字段值
91
- * options: {
92
- * name: 'name', // 表单字段名称
93
- * type: 'input|', // 输入框类型
94
- * placeholder: '请输入', // 表单字段名称
95
- * disabled: false, // 表单字段名称
96
- * maxlength: 10, // 表单字段名称
97
- * append: '元', // 表单字段名称
98
- * items: [{
99
- * value: '1',
100
- * label: '选项1'
101
- * }, {
102
- * value: '2',
103
- * label: '选项2'
104
- * }]
105
- * }
106
- * ...
107
- * }]
108
- * labelWidth: '100px', // 表单域标签的宽度
109
- * labelPosition: 'top', // 表单域标签的位置,如果值为 left 或者 right 时,则需要设置 label-width
110
- * ...
111
- * }
112
- * **/
113
- config: { type: Object, default: () => { return {} } },
114
- // 最大高度
115
- maxHeight: { type: String, default: 'calc(100vh - 137px)' },
116
- // 自定义组件
117
- custom: { type: Array, default: () => [] },
118
- customTitle: { type: String, default: '自定义组件' },
119
- // 是否显示加载中
120
- loading: { type: Boolean, default: false },
121
- // 隐藏工具、组件、属性
122
- hideTool: { type: Boolean, default: true },
123
- hideModule: { type: Boolean, default: false },
124
- hideConfig: { type: Boolean, default: false },
125
- // 是否是查看模式
126
- isView: { type: Boolean, default: false },
127
- // 隐藏边界
128
- hideBorder: { type: Boolean, default: false },
129
- // 隐藏默认组件
130
- hideDefault: { type: Boolean, default: false }
131
- },
132
- data() {
133
- return {
134
- form: {},
135
- curItem: {},
136
- menuList: [],
137
- scrollObserverEnabled: true,
138
- renderLoading: false,
139
- activeNames: ''
140
- }
141
- },
142
- emits: ['update:config', 'update:modelValue'],
143
- watch: {
144
- modelValue: {
145
- handler(val, old) {
146
- if (this.hasConfig) {
147
- this.form = val
148
- }
149
- },
150
- deep: true
151
- },
152
- config: {
153
- handler(val) {
154
- this.render(val)
155
- this.$emit("update:config", val)
156
- },
157
- immediate: true,
158
- deep: true
159
- },
160
- custom: {
161
- handler(val) {
162
- // 初始化菜单列表
163
- this.menuList = this.hideDefault ? [] : [...MenuList];
164
-
165
- // 如果有自定义组件
166
- if (val.length) {
167
-
168
- // 查找现有的自定义组件菜单
169
- const existingCustomMenu = this.menuList.find(item => item.title === this.customTitle);
170
-
171
- if (existingCustomMenu) {
172
- // 更新现有的自定义组件列表
173
- existingCustomMenu.list = val;
174
- } else {
175
- // 添加新的自定义组件菜单
176
- this.menuList.push({
177
- title: this.customTitle,
178
- list: val
179
- });
180
- }
181
- }
182
-
183
- // 设置默认激活的菜单
184
- if (!this.activeNames) {
185
- this.activeNames = this.menuList[0]?.title ?? '';
186
- }
187
-
188
- },
189
- immediate: true,
190
- deep: true
191
- },
192
- },
193
- computed: {
194
- hasConfig() {
195
- return Object.keys(this.config).length > 0
196
- },
197
- hasValue() {
198
- return Object.keys(this.modelValue).length > 0
199
- }
200
- },
201
- mounted() {
202
- if (this.hasConfig) {
203
- this.render()
204
- this.curItem = this.config;
205
- }
206
- },
207
- methods: {
208
- /**
209
- * 渲染表单数据。
210
- * 遍历配置中的表单项,根据不同组件类型初始化表单数据。
211
- * 对于复选框和上传组件,将选项值存储在对象中。
212
- * 对于其他组件,直接将值赋给表单数据。
213
- * 如果存在当前值,则将其与表单数据进行深度合并。
214
- */
215
- render(config = this.config) {
216
- function parse(formItems, form) {
217
- const result = {};
218
- formItems.forEach((item) => {
219
- if (item.component === 'checkbox' || item.component === 'upload') {
220
- item.options?.items?.forEach((option) => {
221
- if (!option?.name) { return false }
222
- result[option.name] = form?.[option.name] ?? option.value;
223
- });
224
- }
225
- if (!item?.name) { return false }
226
- let existingValue = form?.[item.name]; // 检查 form 对象中是否已有值
227
-
228
- if (item.component === 'list') {
229
- result[item.name] = item.value?.map((list, listIndex) => {
230
- if (!existingValue) {
231
- existingValue = []
232
- } else {
233
- if (form?.[item.name] && form?.[item.name][listIndex]) {
234
- existingValue = form?.[item.name][listIndex] || {}
235
- } else {
236
- existingValue = {}
237
- }
238
-
239
- }
240
- return parse(list, existingValue)
241
- }) || [];
242
- } else if (item.component === 'object') {
243
- result[item.name] = parse(item.value, existingValue || {});
244
- } else {
245
- if (item.component === 'number') {
246
- result[item.name] = existingValue ?? (item.value !== undefined ? Number(item.value) : item.options?.min || 0);
247
- } else {
248
- result[item.name] = existingValue ?? item.value;
249
- }
250
- }
251
- });
252
-
253
- return result;
254
- }
255
-
256
- let form = parse(config.formItems, this.modelValue);
257
- // form = {
258
- // ...this.modelValue,
259
- // ...form
260
- // }
261
- this.form = this.parseNestedObject(form)
262
- this.$emit("update:modelValue", this.form);
263
- },
264
- parseNestedObject(obj) {
265
- const result = {};
266
- for (const [key, value] of Object.entries(obj)) {
267
- const keys = key.split('.');
268
- let current = result;
269
-
270
- keys.forEach((k, index) => {
271
- if (!current[k]) {
272
- current[k] = index === keys.length - 1 ? value : {};
273
- }
274
- current = current[k];
275
- });
276
-
277
- if (keys.length > 1) {
278
- delete obj[key]
279
- }
280
-
281
- }
282
- return result;
283
- },
284
-
285
- //数据验证
286
- validate(valid, obj) {
287
- return this.$refs.form.validate(valid, obj)
288
- },
289
- clearValidate(valid, obj) {
290
- return this.$refs.form.clearValidate()
291
- },
292
- scrollToField(prop) {
293
- return this.$refs.form.scrollToField(prop)
294
- },
295
- resetFields() {
296
- return this.$refs.form.resetFields()
297
- },
298
- // 拷贝数据
299
- cloneItem(item) {
300
- let clone = JSON.parse(JSON.stringify(item));
301
- if (item.component == 'checkbox' || item.component == 'upload') {
302
- clone.options.items[0].name = `${item.component}-${this.$tool.getUUID('', 2)}`
303
- } else {
304
- clone.name = `${item.component}-${this.$tool.getUUID('', 2)}`
305
- }
306
- return {
307
- ...clone
308
- };
309
- },
310
- // 选中Item
311
- selectItem(item) {
312
- this.curItem = item
313
- },
314
- // 返回最外层
315
- back() {
316
- this.curItem = this.config
317
- this.$store.state.curIndex = ''
318
- }
319
- }
320
- }
321
- </script>
322
-
323
- <style lang="scss" scoped>
324
- .menu-list {
325
- :deep(.el-collapse) {
326
- border-top: 0;
327
- }
328
- .menu-list-title {
329
- :deep(.el-collapse-item__header) {
330
- font-weight: bold;
331
- padding-left: 10px;
332
- background-color: var(--el-menu-bg-color);
333
- }
334
- }
335
- :deep(.el-collapse-item__content) {
336
- padding-bottom: 10px;
337
- }
338
- .menu-list-group {
339
- display: flex;
340
- flex-wrap: wrap;
341
- gap: 10px;
342
- padding: 10px;
343
- .list-group-item {
344
- width: calc(50% - 5px);
345
- background-color: var(--el-fill-color-light);
346
- color: var(--el-button-text-color);
347
- padding: 8px 10px;
348
- font-size: 12px;
349
- text-align: center;
350
- cursor: move;
351
- }
352
- }
353
- }
354
-
355
- .aside-right {
356
- border-right: 0;
357
- border-left: 1px solid var(--el-border-color-light);
358
- }
359
- .form-json-body {
360
- max-height: calc(100vh - 137px);
361
- }
362
- </style>
@@ -1,324 +0,0 @@
1
- export default [
2
- {
3
- title: '布局组件',
4
- list: [
5
- {
6
- label: '组合',
7
- name: 'object',
8
- value: [],
9
- component: 'object',
10
- span: 24
11
- },
12
- {
13
- label: '列表',
14
- name: 'list',
15
- value: [[]],
16
- component: 'list',
17
- span: 24
18
- },
19
- {
20
- label: '标题',
21
- span: 24,
22
- component: 'divider'
23
- }
24
- ]
25
- },
26
- {
27
- title: '基础组件',
28
- list: [
29
- {
30
- label: '单行输入',
31
- name: 'input',
32
- value: '',
33
- component: 'input',
34
- span: 24,
35
- options: {
36
- placeholder: '请输入'
37
- }
38
- },
39
- {
40
- label: '多行输入',
41
- name: 'textarea',
42
- value: '',
43
- component: 'input',
44
- span: 24,
45
- options: {
46
- type: 'textarea',
47
- placeholder: '请输入'
48
- }
49
- },
50
- {
51
- label: '数值',
52
- name: 'number',
53
- value: 0,
54
- options: {},
55
- span: 24,
56
- component: 'number'
57
- },
58
- {
59
- label: '颜色',
60
- name: 'color',
61
- value: '',
62
- span: 24,
63
- component: 'color'
64
- },
65
- {
66
- label: '标签',
67
- name: 'tags',
68
- value: [],
69
- span: 24,
70
- options: {
71
- addText: '添加',
72
- },
73
- component: 'tags'
74
- }
75
- ]
76
- },
77
- {
78
- title: '是否选项',
79
- list: [
80
- {
81
- label: '开关',
82
- name: 'switch',
83
- span: 24,
84
- options: {},
85
- value: false,
86
- component: 'switch'
87
- },
88
- {
89
- label: '下拉选择',
90
- name: 'select',
91
- value: '',
92
- component: 'select',
93
- span: 24,
94
- options: {
95
- placeholder: '请选择',
96
- items: [
97
- {
98
- label: '选项1',
99
- value: '1'
100
- }
101
- ]
102
- }
103
- }
104
- ]
105
- },
106
- {
107
- title: '单选多选',
108
- list: [
109
- {
110
- label: '单选',
111
- name: 'radio',
112
- value: '',
113
- component: 'radio',
114
- span: 24,
115
- options: {
116
- items: [
117
- {
118
- label: '选项1',
119
- value: '1'
120
- }
121
- ]
122
- }
123
- },
124
- {
125
- label: '多选框',
126
- name: 'checkboxGroup',
127
- component: 'checkboxGroup',
128
- span: 24,
129
- value: [],
130
- options: {
131
- items: [
132
- {
133
- label: '选项1',
134
- value: '1'
135
- }
136
- ]
137
- }
138
- },
139
- {
140
- label: '下拉多选',
141
- name: 'select',
142
- value: '',
143
- component: 'select',
144
- span: 24,
145
- options: {
146
- placeholder: '请选择',
147
- multiple: true,
148
- items: [
149
- {
150
- label: '选项1',
151
- value: '1'
152
- }
153
- ]
154
- }
155
- },
156
- {
157
- label: '下拉单选',
158
- name: 'select',
159
- value: '',
160
- component: 'select',
161
- span: 24,
162
- options: {
163
- placeholder: '请选择',
164
- items: [
165
- {
166
- label: '选项1',
167
- value: '1'
168
- }
169
- ]
170
- }
171
- }
172
- ]
173
- },
174
- {
175
- title: '文件上传',
176
- list: [
177
- {
178
- label: '图片单张',
179
- component: 'upload',
180
- span: 24,
181
- width: 148,
182
- height: 148,
183
- options: {
184
- items: [
185
- {
186
- label: '请选择',
187
- name: 'img1',
188
- value: ''
189
- }
190
- ]
191
- }
192
- },
193
- {
194
- label: '图片多张',
195
- component: 'upload',
196
- span: 24,
197
- width: 148,
198
- height: 148,
199
- options: {
200
- items: [
201
- {
202
- label: '请选择',
203
- multiple: true,
204
- maxSize: 100,
205
- limit: 6,
206
- name: 'img2',
207
- returnFile: 'url',
208
- value: []
209
- }
210
- ]
211
- }
212
- },
213
- {
214
- label: '视屏单个',
215
- component: 'upload',
216
- span: 24,
217
- width: 148,
218
- height: 148,
219
- options: {
220
- items: [
221
- {
222
- label: '请选择',
223
- accept: 'video/mp4',
224
- name: 'videos',
225
- value: ''
226
- }
227
- ]
228
- }
229
- },
230
- {
231
- label: '视屏多个',
232
- component: 'upload',
233
- span: 24,
234
- width: 148,
235
- height: 148,
236
- options: {
237
- items: [
238
- {
239
- label: '请选择',
240
- accept: 'video/mp4',
241
- multiple: true,
242
- maxSize: 100,
243
- limit: 6,
244
- returnFile: 'url',
245
- name: 'videos3',
246
- value: []
247
- }
248
- ]
249
- }
250
- }
251
- ]
252
- },
253
- {
254
- title: '时间日期',
255
- list: [
256
- {
257
- label: '日期范围',
258
- name: 'date',
259
- value: '',
260
- component: 'date',
261
- span: 24,
262
- options: {
263
- type: 'daterange',
264
- startPlaceholder: '开始时间',
265
- endPlaceholder: '结束时间',
266
- valueFormat: 'YYYY-MM-DD HH:mm:ss'
267
- }
268
- },
269
- {
270
- label: '日期时间',
271
- name: 'date1',
272
- value: '',
273
- component: 'date',
274
- span: 24,
275
- options: {
276
- type: 'datetime',
277
- valueFormat: 'YYYY-MM-DD HH:mm:ss'
278
- }
279
- },
280
- {
281
- label: '日期',
282
- name: 'date2',
283
- value: '',
284
- component: 'date',
285
- span: 24,
286
- options: {
287
- type: 'date',
288
- valueFormat: 'YYYY-MM-DD'
289
- }
290
- },
291
- {
292
- label: '年',
293
- name: 'date4',
294
- value: '',
295
- component: 'date',
296
- span: 24,
297
- options: {
298
- type: 'year'
299
- }
300
- },
301
- {
302
- label: '月',
303
- name: 'date5',
304
- value: '',
305
- component: 'date',
306
- span: 24,
307
- options: {
308
- type: 'month'
309
- }
310
- },
311
- {
312
- label: '周',
313
- name: 'date6',
314
- value: '',
315
- component: 'date',
316
- span: 24,
317
- options: {
318
- type: 'week',
319
- format: '[Week] ww'
320
- }
321
- }
322
- ]
323
- }
324
- ]