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,421 +0,0 @@
1
- <template>
2
- <el-affix v-if="showMenu"
3
- :offset="100"
4
- style="width: 100%; height: 45px;">
5
- <ul class="affix-body">
6
- <template v-for="(item, index) in config.formItems"
7
- :key="index">
8
- <a v-if="item.component === 'divider'"
9
- class="anchor-link"
10
- :class="{active: affixIndex == index}"
11
- @click="clickAffix(index)">
12
- {{ item.label }}
13
- </a>
14
- </template>
15
- </ul>
16
- </el-affix>
17
-
18
- <el-skeleton v-if="renderLoading || Object.keys(form).length == 0"
19
- animated />
20
-
21
- <el-form v-else
22
- ref="form"
23
- :model="form"
24
- :disabled="isView"
25
- :label-width="config.labelWidth"
26
- :label-position="$i18n.locale == 'en-us' ? 'top' : config.labelPosition"
27
- v-loading="loading"
28
- :size="config?.size || 'default'"
29
- element-loading-text="Loading...">
30
- <el-row :gutter="15">
31
-
32
- <template v-for="(item, index) in config.formItems">
33
- <el-col :span="item.span || 24"
34
- v-if="!hideHandle(item)">
35
- <ViewItem v-if="isView"
36
- :item="item"
37
- :form="form"
38
- :index="index">
39
- <!-- 没有组件是component值 就是插槽名称 -->
40
- <template v-if="!['input', 'upload', 'checkbox', 'checkboxGroup', 'switch', 'select', 'treeSelect', 'cascader', 'date', 'number', 'radio', 'color', 'rate', 'slider','tags', 'divider'].includes(item.component)"
41
- v-slot:[item.component]>
42
- <slot :name="item.component"
43
- :itemCur="item"
44
- :formCur="form">
45
- <el-tag type="danger">[{{ item.component }}]
46
- 没有这个默认组件也未自定义插槽内容</el-tag>
47
- </slot>
48
- </template>
49
- <template v-if="item?.options?.component"
50
- v-slot:[item?.options?.component]>
51
- <slot :name="item?.options?.component"></slot>
52
- </template>
53
-
54
- </ViewItem>
55
- <FormItem v-else
56
- :item="item"
57
- :form="form"
58
- :index="index">
59
- <!-- 没有组件是component值 就是插槽名称 -->
60
- <template v-if="!['input', 'upload', 'checkbox', 'checkboxGroup', 'switch', 'select', 'treeSelect', 'cascader', 'date', 'number', 'radio', 'color', 'rate', 'slider','tags', 'divider'].includes(item.component)"
61
- v-slot:[item.component]>
62
- <slot :name="item.component"
63
- :itemCur="item"
64
- :formCur="form">
65
- <el-tag type="danger">[{{ item.component }}]
66
- 没有这个默认组件也未自定义插槽内容</el-tag>
67
- </slot>
68
- </template>
69
- <template v-if="item?.options?.component"
70
- v-slot:[item?.options?.component]>
71
- <slot :name="item?.options?.component"></slot>
72
- </template>
73
- </FormItem>
74
- </el-col>
75
- </template>
76
- <el-col v-if="!isView"
77
- :span="24">
78
- <el-form-item>
79
- <slot>
80
- <el-button type="primary"
81
- @click="submit">提交</el-button>
82
- </slot>
83
- </el-form-item>
84
- </el-col>
85
- </el-row>
86
- </el-form>
87
- </template>
88
-
89
- <script>
90
- import FormItem from './FormItem'
91
- import ViewItem from './ViewItem'
92
- export default {
93
- components: {
94
- FormItem,
95
- ViewItem
96
- },
97
- props: {
98
- modelValue: { type: Object, default: () => { } },
99
- /**
100
- * 配置项
101
- * {
102
- * formItems: [{
103
- * span: 24,
104
- * component: 'input', // 可选项有 input, textarea, select, cascader, date, number, radio, checkbox, switch, color, rate, slider, tags, divider, upload, 自定义名称
105
- * name: 'name', // 表单字段名称
106
- * label: '名称', // 表单字段名称
107
- * message: '提示信息', // 表单字段名称
108
- * value: '1', // 表单字段值
109
- * options: {
110
- * name: 'name', // 表单字段名称
111
- * type: 'input|', // 输入框类型
112
- * placeholder: '请输入', // 表单字段名称
113
- * disabled: false, // 表单字段名称
114
- * maxlength: 10, // 表单字段名称
115
- * append: '元', // 表单字段名称
116
- * items: [{
117
- * value: '1',
118
- * label: '选项1'
119
- * }, {
120
- * value: '2',
121
- * label: '选项2'
122
- * }]
123
- * }
124
- * ...
125
- * }]
126
- * labelWidth: '100px', // 表单域标签的宽度
127
- * labelPosition: 'top', // 表单域标签的位置,如果值为 left 或者 right 时,则需要设置 label-width
128
- * ...
129
- * }
130
- * **/
131
- config: { type: Object, default: () => { } },
132
- // 是否显示加载中
133
- loading: { type: Boolean, default: false },
134
- // 是否是查看模式
135
- isView: { type: Boolean, default: false },
136
- // 显示导航
137
- showMenu: { type: Boolean, default: false },
138
- },
139
- data() {
140
- return {
141
- form: {},
142
- affixIndex: 0,
143
- isChange: true,
144
- scrollObserverEnabled: true,
145
- renderLoading: false
146
- }
147
- },
148
- watch: {
149
- modelValue: {
150
- handler(val, old) {
151
- if (this.hasConfig && this.isChange) {
152
- this.form = val
153
- }
154
- },
155
- deep: true
156
- },
157
- config: {
158
- handler(val) {
159
- this.render(val)
160
- if (this.showMenu) {
161
- this.$nextTick(() => {
162
- this.handleScroll()
163
- })
164
- }
165
- this.$emit("update:config", val)
166
- },
167
- immediate: true,
168
- deep: true
169
- }
170
- },
171
- computed: {
172
- hasConfig() {
173
- return Object.keys(this.config).length > 0
174
- },
175
- hasValue() {
176
- return Object.keys(this.modelValue).length > 0
177
- },
178
-
179
- },
180
- mounted() {
181
- if (this.hasConfig) {
182
- this.render()
183
- }
184
- },
185
- beforeDestroy() {
186
- },
187
- methods: {
188
- /**
189
- * 渲染表单数据。
190
- * 遍历配置中的表单项,根据不同组件类型初始化表单数据。
191
- * 对于复选框和上传组件,将选项值存储在对象中。
192
- * 对于其他组件,直接将值赋给表单数据。
193
- * 如果存在当前值,则将其与表单数据进行深度合并。
194
- */
195
- render(config = this.config) {
196
- function parse(formItems, form) {
197
- const result = {};
198
- formItems.forEach((item) => {
199
- if (item.component === 'checkbox' || item.component === 'upload') {
200
- item.options?.items?.forEach((option) => {
201
- if (!option?.name) { return false }
202
- result[option.name] = form?.[option.name] ?? option.value;
203
- });
204
- }
205
- if (!item?.name) { return false }
206
- let existingValue = form?.[item.name]; // 检查 form 对象中是否已有值
207
-
208
- if (item.component === 'list') {
209
- result[item.name] = item.value?.map((list, listIndex) => {
210
- if (!existingValue) {
211
- existingValue = []
212
- } else {
213
- existingValue = form?.[item.name][listIndex] || {}
214
- }
215
- return parse(list, existingValue)
216
- }) || [];
217
- } else if (item.component === 'object') {
218
- result[item.name] = parse(item.value, existingValue || {});
219
- } else {
220
- if (item.component === 'number') {
221
- result[item.name] = existingValue ?? (item.value !== undefined ? Number(item.value) : item.options?.min || 0);
222
- } else {
223
- result[item.name] = existingValue ?? item.value;
224
-
225
- }
226
- }
227
- });
228
-
229
- return result;
230
- }
231
-
232
- let form = parse(config.formItems, this.modelValue);
233
- form = {
234
- ...this.modelValue,
235
- ...form
236
- }
237
- this.form = this.parseNestedObject(form)
238
- this.$emit("update:modelValue", this.form);
239
- },
240
-
241
- parseNestedObject(obj) {
242
- const result = {};
243
- for (const [key, value] of Object.entries(obj)) {
244
- const keys = key.split('.');
245
- let current = result;
246
-
247
- keys.forEach((k, index) => {
248
- if (!current[k]) {
249
- current[k] = index === keys.length - 1 ? value : {};
250
- }
251
- current = current[k];
252
- });
253
-
254
- delete obj[key]
255
-
256
- }
257
- return result;
258
- },
259
-
260
- //处理动态隐藏
261
- hideHandle(item) {
262
- if (typeof item?.hideHandle === 'string') {
263
- try {
264
- // 构造一个函数并执行,同时捕获潜在的异常
265
- const func = new Function('form', `return ${item?.hideHandle.replace(/\$/g, "form")}`);
266
- return func(this.form);
267
- } catch (error) {
268
- return false; // 或根据需求返回默认值
269
- }
270
- } else if (typeof item?.hideHandle === 'boolean') {
271
- return item.hideHandle
272
- }
273
- return false
274
- },
275
-
276
- //数据验证
277
- validate(valid, obj) {
278
- return this.$refs.form.validate(valid, obj)
279
- },
280
- clearValidate(valid, obj) {
281
- return this.$refs.form.clearValidate()
282
- },
283
- scrollToField(prop) {
284
- return this.$refs.form.scrollToField(prop)
285
- },
286
- resetFields() {
287
- return this.$refs.form.resetFields()
288
- },
289
- //提交
290
- submit() {
291
- this.$emit("submit", this.form)
292
- },
293
- clickAffix(index) {
294
- this.affixIndex = index
295
- const targetElement = document.getElementById('divider-' + index)
296
- if (targetElement) {
297
- targetElement.scrollIntoView({
298
- behavior: 'smooth', // 实现平滑滚动
299
- block: 'start' // 保证滚动时目标元素的顶部对齐窗口顶部
300
- })
301
- }
302
-
303
- this.scrollObserverEnabled = false;
304
- setTimeout(() => {
305
- this.scrollObserverEnabled = true;
306
- }, 500);
307
- },
308
- // 监听滚动
309
- handleScroll() {
310
- // 获取所有 title-name-divider 元素
311
- const titleNameDividers = document.querySelectorAll('.title-name-divider');
312
- const elMain = document.querySelector('.el-main');
313
- let _this = this
314
- // 创建观察者实例
315
- const observer = new IntersectionObserver((entries) => {
316
- let entry = entries[0]
317
- const rect = entry.target.getBoundingClientRect();
318
- const distanceFromTop = rect.top;
319
- if (distanceFromTop >= 0 && distanceFromTop <= 100 && _this.scrollObserverEnabled) {
320
- const dataIndex = entry.target.getAttribute('data-index');
321
- _this.affixIndex = dataIndex; // 更新 affixIndex
322
- }
323
- }, {
324
- root: elMain, // 设置根元素为 el-main
325
- rootMargin: '0px 0px 70% 0px' // 可根据需要调整
326
- });
327
-
328
- // 开始观察每个 title-name-divider 元素
329
- titleNameDividers.forEach(divider => {
330
- observer.observe(divider);
331
- });
332
- }
333
- }
334
- }
335
- </script>
336
- <style lang="scss" scoped>
337
- :deep(.el-col) {
338
- &:first-child {
339
- .title-name {
340
- border: 0;
341
- padding-top: 25px;
342
- margin-top: 0;
343
- }
344
- }
345
- }
346
-
347
- .form-mini {
348
- display: flex;
349
- width: 100%;
350
- box-sizing: border-box;
351
- }
352
- .form-affix {
353
- min-width: 130px;
354
- padding-left: 20px;
355
- }
356
- .button-new-tag {
357
- margin-left: 10px;
358
- }
359
-
360
- .w-20 {
361
- width: 100px;
362
- margin-left: 10px;
363
- }
364
-
365
- .title-name {
366
- font-size: 18px;
367
- font-weight: bold;
368
- margin-bottom: 10px;
369
- margin-top: 25px;
370
- border-top: 10px solid #f5f7fa;
371
- padding-top: 20px;
372
- }
373
-
374
- :deep(.form-item-name-null) {
375
- > .el-form-item__label {
376
- display: none !important;
377
- }
378
- }
379
- .affix-body {
380
- background-color: var(--el-fill-color-light);
381
- border: 1px solid var(--el-border-color-light);
382
- margin: 0;
383
- position: relative;
384
- &::after {
385
- content: "";
386
- position: absolute;
387
- left: -2px;
388
- right: 0;
389
- height: 16px;
390
- background-color: #ffffff;
391
- top: -17px;
392
- }
393
- .anchor-link {
394
- padding: 0 20px;
395
- height: var(--el-tabs-header-height);
396
- box-sizing: border-box;
397
- list-style: none;
398
- font-size: var(--el-font-size-base);
399
- font-weight: bold;
400
- color: var(--el-text-color-secondary);
401
- position: relative;
402
- height: 40px;
403
- display: inline-block;
404
- line-height: 40px;
405
- cursor: pointer;
406
- border-left: 1px solid transparent;
407
- border-right: 1px solid transparent;
408
- }
409
- .active {
410
- color: var(--el-color-primary);
411
- background-color: var(--el-bg-color-overlay);
412
- border-bottom: 1px solid var(--el-bg-color-overlay);
413
- border-right-color: var(--el-border-color);
414
- border-left: 1px solid var(--el-border-color-light);
415
- border-right: 1px solid var(--el-border-color-light);
416
- &:first-child {
417
- border-left: 1px solid var(--el-fill-color-light);
418
- }
419
- }
420
- }
421
- </style>
@@ -1,61 +0,0 @@
1
- <template>
2
- <span class="item-text"
3
- :style="{width: textWidth}">
4
- <!-- 根据加密状态显示加密或解密后的文本 -->
5
- <span>{{ isEncrypted ? encryptedText : (modelValue || '--') }}</span>
6
- <!-- 切换加密/解密按钮 -->
7
- <el-icon v-if="password"
8
- class="primary"
9
- @click="toggleEncryption"><el-icon-view /></el-icon>
10
- </span>
11
- </template>
12
-
13
- <script>
14
- export default {
15
- props: {
16
- modelValue: { type: String, default: '' }, // 传入的字符串
17
- width: { type: String, default: '' },
18
- password: { type: Boolean, default: false }, // 是否需要加密显示
19
- },
20
- data() {
21
- return {
22
- isEncrypted: this.password, // 根据传入的 password 值初始化加密状态
23
- };
24
- },
25
- computed: {
26
- encryptedText() {
27
- // 将输入字符串加密成 *,长度与原字符串相同
28
- return "*".repeat(this.modelValue.length);
29
- },
30
- textWidth() {
31
- return this?.width ? `calc(100% - ${this.width} - 10px)` : "";
32
- }
33
- },
34
- methods: {
35
- toggleEncryption() {
36
- // 切换加密和解密状态
37
- this.isEncrypted = !this.isEncrypted;
38
- // 如果是解密状态,可以更新父组件的值
39
- if (!this.isEncrypted) {
40
- this.$emit('update:modelValue', this.modelValue);
41
- }
42
- },
43
- },
44
- };
45
- </script>
46
- <style lang="scss" scoped>
47
- .item-text {
48
- display: inline-flex;
49
- gap: 10px;
50
- align-items: center;
51
- span {
52
- word-wrap: break-word;
53
- word-break: break-all;
54
- white-space: normal;
55
- }
56
- .primary{
57
- cursor: pointer;
58
- color: var(--el-color-primary);
59
- }
60
- }
61
- </style>