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,511 +0,0 @@
1
- <template>
2
- <div class="login_bg">
3
- <div class="video-container">
4
- <!-- logo 插槽 -->
5
- <slot name="logo">
6
- <img class="logo"
7
- src="../../assets/images/logo1.svg" />
8
- </slot>
9
-
10
- <!-- 注册背景图插槽 -->
11
- <slot name="registerBg">
12
- <img v-show="isRegistered"
13
- class="img"
14
- src="../../assets/images/register.svg" />
15
- </slot>
16
- <!-- 登录背景图插槽 -->
17
- <slot name="loginBg">
18
- <img v-show="!isRegistered"
19
- class="img"
20
- src="../../assets/images/login.svg" />
21
- </slot>
22
-
23
- </div>
24
- <div class="login_main">
25
- <template v-if="isRegistered">
26
- <div class="login_registered">
27
- <el-button type="primary"
28
- link
29
- @click="isRegistered = false">
30
- <i class="iconfont icon-quit"></i>
31
- </el-button>
32
- </div>
33
- <div class="login-form">
34
- <el-form ref="registForm"
35
- class="form-body"
36
- :model="registForm"
37
- :rules="rules"
38
- label-width="0"
39
- size="large">
40
- <el-form-item>
41
- <!-- 系统注册名称插槽 -->
42
- <div class="title-name">
43
- <slot name="titleRegister">
44
- {{ $t('loginPage.trialRequest') }}
45
- </slot>
46
- </div>
47
-
48
- </el-form-item>
49
- <el-form-item prop="name">
50
- <el-input v-model="registForm.name"
51
- prefix-icon="el-icon-user"
52
- clearable
53
- :placeholder="$t('loginPage.enterTitle')">
54
- </el-input>
55
- </el-form-item>
56
- <el-form-item prop="phone">
57
- <el-input v-model="registForm.phone"
58
- prefix-icon="el-icon-iphone"
59
- clearable
60
- maxlength="11"
61
- :placeholder="$t('loginPage.enterPhone')">
62
- </el-input>
63
- </el-form-item>
64
- <el-form-item prop="company">
65
- <el-input v-model="registForm.company"
66
- prefix-icon="el-icon-office-building"
67
- clearable
68
- :placeholder="$t('loginPage.enterCompany')">
69
- </el-input>
70
- </el-form-item>
71
- <el-form-item prop="position">
72
- <el-select v-model="registForm.position"
73
- :placeholder="$t('loginPage.selectPosition')">
74
- <el-option v-for="item in optionsCompany"
75
- :key="item.id"
76
- :label="item.name"
77
- :value="item.id" />
78
- </el-select>
79
- </el-form-item>
80
- <el-form-item prop="description">
81
- <el-select v-model="registForm.description"
82
- :placeholder="$t('loginPage.selectPurpose')">
83
- <el-option v-for="item in optionsDescription"
84
- :key="item.id"
85
- :label="item.name"
86
- :value="item.id" />
87
- </el-select>
88
- </el-form-item>
89
- <el-form-item>
90
- <el-button type="primary"
91
- style="width: 100%"
92
- :loading="islogin"
93
- @click="apply">{{ $t('loginPage.trialRequest') }}</el-button>
94
- </el-form-item>
95
- </el-form>
96
- </div>
97
- </template>
98
- <template v-else>
99
- <div class="login_config">
100
- <Lang />
101
- </div>
102
- <div class="login-form">
103
- <el-form ref="loginForm"
104
- class="form-body"
105
- :model="ruleForm"
106
- :rules="rules"
107
- label-width="0"
108
- size="large">
109
- <el-form-item>
110
-
111
- <div class="title-name">
112
- <slot name="title">{{$t('loginPage.accountLogin')}}</slot>
113
- </div>
114
-
115
- </el-form-item>
116
- <el-form-item prop="user">
117
- <el-input v-model="ruleForm.user"
118
- prefix-icon="el-icon-user"
119
- clearable
120
- :placeholder="$t('loginPage.userPlaceholder')">
121
- </el-input>
122
- </el-form-item>
123
- <el-form-item prop="password">
124
- <el-input v-model="ruleForm.password"
125
- prefix-icon="el-icon-lock"
126
- clearable
127
- show-password
128
- :placeholder="$t('loginPage.PWPlaceholder')">
129
- </el-input>
130
- </el-form-item>
131
- <el-form-item style="margin-bottom: 10px">
132
- <el-row>
133
- <el-col :span="12">
134
- <el-checkbox :label="$t('loginPage.rememberMe')"
135
- v-model="ruleForm.autologin"></el-checkbox>
136
- </el-col>
137
- <el-col :span="12"
138
- style="text-align: right">
139
- <el-button type="primary"
140
- text>{{ $t("loginPage.forgetPassword") }}?
141
- </el-button>
142
- </el-col>
143
- </el-row>
144
- </el-form-item>
145
- <el-form-item>
146
- <el-button type="primary"
147
- style="width: 100%"
148
- :loading="islogin"
149
- @click="login">{{ $t("loginPage.signIn") }}</el-button>
150
- </el-form-item>
151
- <el-form-item>
152
- {{ $t('loginPage.noAccount') }}
153
- <el-button type="primary"
154
- link
155
- @click="isRegistered = true">{{ $t('loginPage.trialRequest') }}</el-button>
156
- </el-form-item>
157
- </el-form>
158
- </div>
159
- </template>
160
- </div>
161
- </div>
162
- </template>
163
-
164
- <script>
165
- import JSEncrypt from 'jsencrypt/bin/jsencrypt.min'
166
- import Lang from '../lwLayout/components/lang.vue'
167
-
168
- export default {
169
- name: 'lwLogin',
170
- props: {
171
- // 是否要校验初始化
172
- isInitialized: {
173
- type: Boolean,
174
- default: true
175
- },
176
- // 是否手动合并菜单到同一个项目
177
- isCombined: {
178
- type: Boolean,
179
- default: true
180
- },
181
- // 是否加密登录
182
- isEncryption: {
183
- type: Boolean,
184
- default: true
185
- },
186
-
187
- },
188
- components: {
189
- Lang,
190
- },
191
- data() {
192
- return {
193
- isRegistered: false,
194
- ruleForm: {
195
- user: "",
196
- password: "",
197
- role: 0,
198
- autologin: false,
199
- },
200
- registForm: {
201
- },
202
- rules: {
203
- user: [
204
- {
205
- required: true,
206
- message: this.t("loginPage.userError"),
207
- trigger: "blur",
208
- },
209
- ],
210
- password: [
211
- {
212
- required: true,
213
- message: this.t("loginPage.PWError"),
214
- trigger: "blur",
215
- },
216
- ],
217
- name: [
218
- {
219
- required: true,
220
- message: this.t('loginPage.enterTitle'),
221
- trigger: "blur",
222
- },
223
- ],
224
- phone: [
225
- {
226
- required: true,
227
- message: this.t('loginPage.enterPhone'),
228
- trigger: "blur",
229
- },
230
- {
231
- pattern: /^[1]([3-9])[0-9]{9}$/,
232
- message: this.t('loginPage.correctPhone'),
233
- trigger: "blur",
234
- },
235
- ],
236
- company: [
237
- {
238
- required: true,
239
- message: this.t('loginPage.enterCompany'),
240
- trigger: "blur",
241
- },
242
- ],
243
- position: [
244
- {
245
- required: true,
246
- message: this.t('loginPage.selectPosition'),
247
- trigger: "change",
248
- },
249
- ],
250
- description: [
251
- {
252
- required: true,
253
- message: this.t('loginPage.selectPurpose'),
254
- trigger: "change",
255
- },
256
- ],
257
- },
258
- optionsDescription: [
259
- {
260
- name: this.t('purposes.findSolution'),
261
- id: "1",
262
- },
263
- {
264
- name: this.t('purposes.compareProducts'),
265
- id: "2",
266
- },
267
- {
268
- name: this.t('purposes.other'),
269
- id: "3",
270
- },
271
- ],
272
- optionsCompany: [
273
- {
274
- name: this.t('positions.techStaff'),
275
- id: "1",
276
- },
277
- {
278
- name: this.t('positions.businessStaff'),
279
- id: "2",
280
- },
281
- {
282
- name: this.t('positions.researchStaff'),
283
- id: "3",
284
- },
285
- {
286
- name: this.t('positions.marketingStaff'),
287
- id: "4",
288
- },
289
- {
290
- name: this.t('positions.operationStaff'),
291
- id: "5",
292
- },
293
- {
294
- name: this.t('positions.otherStaff'),
295
- id: "6",
296
- },
297
- ],
298
- islogin: false,
299
-
300
- };
301
- },
302
-
303
- created: function () {
304
- this.$store.commit("clearViewTags");
305
- this.$store.commit("clearKeepLive");
306
- this.$store.commit("clearIframeList")
307
- },
308
- methods: {
309
- // 加密
310
- encrypt(publicKey, txt) {
311
- const encryptor = new JSEncrypt()
312
- encryptor.setPublicKey(publicKey) // 设置公钥
313
- return encryptor.encrypt(txt) // 对数据进行加密
314
- },
315
- async login() {
316
- let validate = await this.$refs.loginForm
317
- .validate()
318
- .catch(() => { });
319
- if (!validate) {
320
- return false;
321
- }
322
-
323
- let data = {
324
- username: this.ruleForm.user,
325
- password: this.ruleForm.password,
326
- };
327
-
328
- if (this.isEncryption) {
329
- const publicKey = await this.$api.auth.key()
330
- if (publicKey) {
331
- data = {
332
- username: this.encrypt(publicKey, this.ruleForm.user),
333
- password: this.encrypt(publicKey, this.ruleForm.password),
334
- };
335
- }
336
- }
337
-
338
- //获取token
339
- let token = await this.$api.auth.token(data)
340
- this.$tool.data.set("TOKEN", token);
341
-
342
- this.islogin = true;
343
- // 获取所有bu
344
- let bu = await this.$api.auth.bu()
345
- this.$tool.data.set('buList', bu)
346
- let code = this.$tool.data.get('buCode')
347
- let item = bu.find(x => { return x.code == code })
348
- if (!item) {
349
- this.$tool.data.set('buCode', bu[0].code)
350
- }
351
-
352
- // 获取用户信息
353
- let user = await this.$api.auth.user()
354
- // 处理应用显示逻辑
355
- let application = [...new Set(user.userAuthInfo.menus.map(permission => permission.split('.')[0]))]
356
- user.userAuthInfo.grantedApplications = user.userAuthInfo.grantedApplications.filter(x => application.includes(x.code))
357
-
358
- this.$tool.data.set('tenantId', user.userAuthInfo.tenantId)
359
- this.$tool.data.set('userAuthInfo', user.userAuthInfo)
360
- // 用与应用菜单显示
361
- this.$tool.data.set('MenuPath', user.userAuthInfo.grantedApplications)
362
- this.$store.state.user = user.userAuthInfo
363
-
364
-
365
- // 兼容旧项目设置信息
366
- sessionStorage.setItem('easyweb_session_passport_current_user', JSON.stringify({ v: user }))
367
- sessionStorage.setItem('easyweb_session_passport_bu', JSON.stringify({ v: bu[0] }))
368
- sessionStorage.setItem('easyweb_session_passport_bu_list', JSON.stringify({ v: bu }))
369
- document.cookie = `Authorization=Bearer ${token}`;
370
-
371
- // 获取合并菜单信息 isCombined 这参数后期要加是否要合并菜单展示 现在默认tue
372
- /**
373
- * 此处进行 获取的数据路由router文件进行合并
374
- * 需要开发一个接口返回 权限与具体页面路径映射数据 (这个功能要开发)
375
- * 需要在 platform 菜单管理中 配置isCombined参数 用于标识是否合并项目菜单
376
- * 原有的数据要加两个配置项 icon path
377
- * 返回的数据是
378
- * [
379
- * {
380
- "id": "ma_menu.workplace",
381
- "tenantId": "connext",
382
- "name": "工作台",
383
- "type": "MENU",
384
- ...
385
- "applications": ["ma"],
386
- "icon": 'el-icon-discount', // icon
387
- "path": '/reach/flow-template/, // 菜单路径
388
- "authority": [
389
- "ma.marketing_center.locate",
390
- "ma.marketing_center_operation.locate",
391
- ]
392
- }
393
- * ]
394
- */
395
- if (user.combined || this.isCombined) {
396
- let menu = await this.$api.auth.menu();
397
- this.$tool.data.set("MENUCOMBINED", menu);
398
- // 注入 用于判断子项目 是否扁平化
399
- this.$tool.data.set("MENUCOMBINEDNMAE", this.$config.APP_NAME);
400
- } else {
401
- this.$tool.data.remove("MENUCOMBINED");
402
- this.$tool.data.remove("MENUCOMBINEDNMAE");
403
- }
404
-
405
- // 检验是否初始化
406
-
407
- if (this.isInitialized) {
408
- let initialized = await this.$api.auth.initialized()
409
- this.$tool.data.set('zoneInitialized', initialized)
410
- if (initialized) {
411
- this.$router.push(this.$config.DASHBOARD_URL);
412
- } else {
413
- this.$router.push(this.$config.INIT_URL);
414
- }
415
- } else {
416
- this.$router.push(this.$config.DASHBOARD_URL);
417
- }
418
-
419
-
420
- this.$message.success(this.t('loginPage.loginSuccess'));
421
- this.islogin = false;
422
- },
423
- // 申请试用
424
- async apply() {
425
- let validate = await this.$refs.registForm
426
- .validate()
427
- .catch(() => { });
428
- if (!validate) {
429
- return false;
430
- }
431
- await this.$api.auth.apply(this.registForm)
432
- this.$message.success(this.t('loginPage.applySuccess'));
433
- }
434
- },
435
- };
436
- </script>
437
-
438
- <style lang="scss" scoped>
439
- .login_bg {
440
- width: 100%;
441
- height: 100%;
442
- background: #fff;
443
- display: flex;
444
- }
445
-
446
- .video-container {
447
- height: 100vh;
448
- background: #f8f8f8;
449
- width: 100%;
450
- position: relative;
451
- display: flex;
452
- align-items: center;
453
- padding: 40px;
454
-
455
- .logo {
456
- position: fixed;
457
- z-index: 1;
458
- top: 30px;
459
- left: 30px;
460
- width: 200px;
461
- object-fit: cover;
462
- }
463
-
464
- .img {
465
- width: 100%;
466
- max-height: 80%;
467
- object-fit: fill;
468
- }
469
- }
470
-
471
- .login_main {
472
- width: 600px;
473
- min-width: 600px;
474
- overflow: auto;
475
- display: flex;
476
- position: relative;
477
- }
478
-
479
- .login-form {
480
- margin: auto;
481
- padding: 50px;
482
- position: relative;
483
- z-index: 9;
484
- display: flex;
485
- align-items: center;
486
- gap: 150px;
487
- width: 100%;
488
-
489
- .form-body {
490
- width: 100%;
491
- padding: 24px;
492
- color: #333;
493
-
494
- .title-name {
495
- font-size: 35px;
496
- font-weight: bold;
497
- line-height: 58px;
498
- }
499
- }
500
- }
501
- .login_registered {
502
- position: absolute;
503
- top: 20px;
504
- left: 20px;
505
- }
506
- .login_config {
507
- position: absolute;
508
- top: 20px;
509
- right: 20px;
510
- }
511
- </style>
@@ -1,37 +0,0 @@
1
- export default {
2
- loginPage: {
3
- accountLoginNologo:'Marketing Cloud',
4
- accountLogin: 'Lianwei Marketing Cloud',
5
- rememberMe: 'Keep me logged in',
6
- forgetPassword: 'Forgot password',
7
- signIn: 'Account verification',
8
- userPlaceholder: 'Username / Mobile / Email',
9
- userError: 'Please enter your username',
10
- PWPlaceholder: 'Please enter your password',
11
- PWError: 'Please enter your password',
12
- mobileError: 'Please enter your mobile number',
13
- trialRequest: 'Request a trial',
14
- enterTitle: 'Please enter your title',
15
- enterPhone: 'Please enter your phone number',
16
- correctPhone: 'Please enter a valid phone number format',
17
- enterCompany: 'Please enter your company name',
18
- selectPosition: 'Please select your position',
19
- selectPurpose: 'Please select your purpose',
20
- noAccount: 'Don’t have an account?',
21
- applySuccess: 'You have applied for a trial, please check your SMS for a prompt.',
22
- loginSuccess: 'Login successful'
23
- },
24
- positions: {
25
- techStaff: 'Technical staff',
26
- businessStaff: 'Business staff',
27
- researchStaff: 'Research and development staff',
28
- marketingStaff: 'Marketing staff',
29
- operationStaff: 'Operations staff',
30
- otherStaff: 'Other professional staff'
31
- },
32
- purposes: {
33
- findSolution: 'Looking for suitable products to solve data, marketing, and other issues',
34
- compareProducts: 'Comparing other products, want to learn more',
35
- other: 'Other'
36
- }
37
- }
@@ -1,37 +0,0 @@
1
- export default {
2
- loginPage: {
3
- accountLoginNologo:'营销云',
4
- accountLogin: '联蔚营销云',
5
- rememberMe: '保持登录状态',
6
- forgetPassword: '忘记密码',
7
- signIn: '账号验证',
8
- userPlaceholder: '用户名 / 手机 / 邮箱',
9
- userError: '请输入用户名',
10
- PWPlaceholder: '请输入密码',
11
- PWError: '请输入密码',
12
- mobileError: '请输入手机号码',
13
- trialRequest: '申请试用',
14
- enterTitle: '请输入您的称谓',
15
- enterPhone: '请输入手机号',
16
- correctPhone: '请输入正确的手机号格式',
17
- enterCompany: '请输入您的公司名称',
18
- selectPosition: '请选择您的职位',
19
- selectPurpose: '请选择您的用途',
20
- noAccount: '还没有账号 ?',
21
- applySuccess: '您已申请试用,请注意查收短信提示。',
22
- loginSuccess: '登录成功'
23
- },
24
- positions: {
25
- techStaff: '技术人员',
26
- businessStaff: '业务人员',
27
- researchStaff: '研发人员',
28
- marketingStaff: '市场人员',
29
- operationStaff: '运营人员',
30
- otherStaff: '其他专业人员'
31
- },
32
- purposes: {
33
- findSolution: '寻找合适的产品来解决数据,营销等问题',
34
- compareProducts: '正在对比其他产品,想了解',
35
- other: '其他'
36
- }
37
- }
@@ -1,113 +0,0 @@
1
- <template>
2
- <div>
3
- <el-date-picker
4
- :type="item.type || 'date'"
5
- :disabled="item.disabled"
6
- :format="item.format || 'YYYY-MM-DD'"
7
- :value-format="item.valueFormat"
8
- :placeholder="item.placeholder || $t('lwSearch.please_select')"
9
- :range-separator="item.rangeSeparator || $t('lwSearch.monthRange.rangeSeparator')"
10
- :start-placeholder="item.startPlaceholder || $t('lwSearch.monthRange.startPlaceholder')"
11
- :end-placeholder="item.endPlaceholder || $t('lwSearch.monthRange.endPlaceholder')"
12
- clearable
13
- v-model="value"
14
- :disabled-date="disabledDate"
15
- style="width: 100%"
16
- >
17
- </el-date-picker>
18
- </div>
19
- </template>
20
-
21
- <script>
22
- import { computed, reactive, toRefs, watch } from 'vue'
23
-
24
- export default {
25
- emits: ["update:modelValue", "change"],
26
- name: "Date",
27
- props: {
28
- disabled: { // 是否禁止操作
29
- type: Boolean,
30
- default() {
31
- return false;
32
- }
33
- },
34
- modelValue: { // 绑定的结果
35
- default() {
36
- return "";
37
- }
38
- },
39
- item: { // 配置项
40
- type: Object,
41
- default() {
42
- return {};
43
- }
44
- },
45
- disabledDate: { // 禁止日期
46
- type: Function,
47
- default() {
48
- return null;
49
- }
50
- },
51
- propValueFormat: { // 格式化日期
52
- type: String,
53
- default() {
54
- return null;
55
- }
56
- },
57
- },
58
- setup(props, context) {
59
- const state = reactive({});
60
-
61
- // 最新的结果推送到父组件
62
- // watch(
63
- // () => props.modelValue,
64
- // (newVal, prevVal) => {
65
- // context.emit("update:modelValue", newVal);
66
- // context.emit("change", newVal);
67
- // },
68
- // { deep: true, immediate: true }
69
- // );
70
-
71
- const valueFormat = computed(() => {
72
- if (props.propValueFormat) {
73
- return props.propValueFormat;
74
- }
75
- if (props.item.valueFormat) {
76
- return props.item.valueFormat;
77
- }
78
- if (props.item.dateSection) {
79
- return "YYYY-MM-DD 00:00:00";
80
- }
81
- if (props.item.withZero) {
82
- return "YYYY-MM-DD 00:00:00";
83
- }
84
- if (props.item.withLast) {
85
- return "YYYY-MM-DD 23:59:59";
86
- }
87
- return "YYYY-MM-DD";
88
- });
89
-
90
- const value = computed({
91
- get() {
92
- return props.modelValue;
93
- },
94
- set(value) {
95
- context.emit('update:modelValue', value);
96
- context.emit('change', value);
97
- },
98
- });
99
-
100
- // 禁止选择日期
101
- const disabledDate = (date) => {
102
- return date.getTime() < Date.now();
103
- };
104
-
105
- return {
106
- ...toRefs(state),
107
- valueFormat,
108
- value
109
- };
110
- },
111
- };
112
- </script>
113
-