yc-ui2 0.2.2-beta2 → 0.2.2-beta3
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +1 -1
- package/.env +0 -7
- package/babel.config.js +0 -5
- package/jsconfig.json +0 -19
- package/public/favicon.ico +0 -0
- package/public/index.html +0 -20
- package/src/App.vue +0 -70
- package/src/api/customerService.js +0 -56
- package/src/assets/ca/ca-bg.png +0 -0
- package/src/assets/ca/caBg.png +0 -0
- package/src/assets/customerService/admin.jpg +0 -0
- package/src/assets/customerService/chatTop.png +0 -0
- package/src/assets/customerService/ellipticalWenh.png +0 -0
- package/src/assets/customerService/enlarge.png +0 -0
- package/src/assets/customerService/personal.jpg +0 -0
- package/src/assets/customerService/personal1.jpg +0 -0
- package/src/assets/customerService/personal2.jpg +0 -0
- package/src/assets/slideVerify/1.jpg +0 -0
- package/src/assets/slideVerify/2.jpg +0 -0
- package/src/assets/slideVerify/3.jpg +0 -0
- package/src/assets/slideVerify/4.jpg +0 -0
- package/src/assets/slideVerify/5.jpg +0 -0
- package/src/assets/slideVerify/6.jpg +0 -0
- package/src/assets/slideVerify/7.jpg +0 -0
- package/src/assets/slideVerify/8.jpg +0 -0
- package/src/components/YcCA/index.vue +0 -536
- package/src/components/YcCustomerService/chat.vue +0 -337
- package/src/components/YcCustomerService/chatMixin.js +0 -128
- package/src/components/YcCustomerService/index.vue +0 -272
- package/src/components/YcQuestion/index.vue +0 -535
- package/src/components/YcSlideVerify/index.vue +0 -104
- package/src/main.js +0 -19
- package/src/packages/index.js +0 -29
- package/src/router/index.js +0 -20
- package/src/utils/auth.js +0 -6
- package/src/utils/mTokenPlugin/base64.js +0 -148
- package/src/utils/mTokenPlugin/base64_backups.js +0 -146
- package/src/utils/mTokenPlugin/hunca_mToken_core.js +0 -1447
- package/src/utils/mTokenPlugin/hunca_mToken_core2.js +0 -1455
- package/src/utils/mTokenPlugin/hunca_mToken_core_backups.js +0 -1425
- package/src/utils/mTokenPlugin/mToken.js +0 -3211
- package/src/utils/mTokenPlugin/mToken_backups.js +0 -3202
- package/src/utils/mTokenPluginBeijin/formateTime.js +0 -10
- package/src/utils/mTokenPluginBeijin/xtxasyn.js +0 -1156
- package/src/utils/request.js +0 -50
- package/src/views/question.vue +0 -32
- package/vue.config.js +0 -41
@@ -1,535 +0,0 @@
|
|
1
|
-
<template>
|
2
|
-
<div class="YcQuestion">
|
3
|
-
<div class="chatPage">
|
4
|
-
<header
|
5
|
-
style="
|
6
|
-
background: url(/cloud-img/customerService/chatTop.png) center
|
7
|
-
no-repeat cover;
|
8
|
-
background-size: cover;
|
9
|
-
"
|
10
|
-
>
|
11
|
-
<div>
|
12
|
-
<h3>{{ title }}</h3>
|
13
|
-
<span>Problem Help</span>
|
14
|
-
</div>
|
15
|
-
<p>{{ commit }}</p>
|
16
|
-
</header>
|
17
|
-
<div class="main">
|
18
|
-
<div>
|
19
|
-
<main ref="main">
|
20
|
-
<p>今天{{ currData }}</p>
|
21
|
-
<div
|
22
|
-
v-for="(item, index) in messagelist"
|
23
|
-
:key="index"
|
24
|
-
:class="['message', item.id]"
|
25
|
-
>
|
26
|
-
<img
|
27
|
-
class="avatar"
|
28
|
-
:src="require(`assets/customerService/${item.id}.jpg`)"
|
29
|
-
/>
|
30
|
-
<div class="content" :data-before="`${title}【${id}号为您服务】`">
|
31
|
-
<span
|
32
|
-
v-for="({ msg, id, answerType }, index) in item.msg"
|
33
|
-
:key="index"
|
34
|
-
v-html="
|
35
|
-
(item.msg.length > 1 ? 1 + index + '. ' : ' ') +
|
36
|
-
msg +
|
37
|
-
(answerType ? `《${answerType}》` : '')
|
38
|
-
"
|
39
|
-
:class="item.msg.length > 1 ? 'href' : ''"
|
40
|
-
@click="item.msg.length > 1 && regularClick(msg, id)"
|
41
|
-
></span>
|
42
|
-
<div
|
43
|
-
class="based"
|
44
|
-
v-if="item.based"
|
45
|
-
@click.prevent="handExpand(item)"
|
46
|
-
>
|
47
|
-
<span>依据</span
|
48
|
-
><span :class="{ 'is-active': item.isActive }"
|
49
|
-
>{{ item.based }}<i class="el-icon-d-arrow-right"></i
|
50
|
-
></span>
|
51
|
-
</div>
|
52
|
-
</div>
|
53
|
-
</div>
|
54
|
-
</main>
|
55
|
-
<footer>
|
56
|
-
<el-input
|
57
|
-
type="textarea"
|
58
|
-
maxlength="500"
|
59
|
-
:autosize="{ minRows: 6, maxRows: 6 }"
|
60
|
-
autofocus="true"
|
61
|
-
resize="none"
|
62
|
-
placeholder="请输入你要咨询的问题"
|
63
|
-
v-model="textareaValue"
|
64
|
-
@keyup.enter.native="carriageReturn"
|
65
|
-
>
|
66
|
-
</el-input>
|
67
|
-
<el-button
|
68
|
-
type="primary"
|
69
|
-
:disabled="!textareaValue"
|
70
|
-
:style="
|
71
|
-
!textareaValue
|
72
|
-
? 'background-color: #F7F7F9;color: #FF575F;border-color: transparent;'
|
73
|
-
: ''
|
74
|
-
"
|
75
|
-
@click="send"
|
76
|
-
>发送</el-button
|
77
|
-
>
|
78
|
-
</footer>
|
79
|
-
</div>
|
80
|
-
<aside>
|
81
|
-
<el-collapse v-model="activeNames" accordion>
|
82
|
-
<el-collapse-item
|
83
|
-
v-for="{
|
84
|
-
discourseVoList,
|
85
|
-
answerTypeId,
|
86
|
-
answerType,
|
87
|
-
} in questionsList"
|
88
|
-
:key="answerTypeId"
|
89
|
-
:name="answerTypeId"
|
90
|
-
>
|
91
|
-
<template slot="title">
|
92
|
-
<img
|
93
|
-
:src="require(`assets/customerService/ellipticalWenh.png`)"
|
94
|
-
/>{{ answerType }}
|
95
|
-
</template>
|
96
|
-
<div
|
97
|
-
v-for="{ problem, problemId } in discourseVoList"
|
98
|
-
:key="problemId"
|
99
|
-
v-html="problem"
|
100
|
-
@click="regularClick(problem, problemId)"
|
101
|
-
></div>
|
102
|
-
</el-collapse-item>
|
103
|
-
</el-collapse>
|
104
|
-
</aside>
|
105
|
-
</div>
|
106
|
-
</div>
|
107
|
-
</div>
|
108
|
-
</template>
|
109
|
-
<script>
|
110
|
-
import { getProblemTypeAndProblem } from "api/customerService";
|
111
|
-
import chatMixin from "comp/YcCustomerService/chatMixin";
|
112
|
-
export default {
|
113
|
-
name: "YcQuestion",
|
114
|
-
mixins: [chatMixin],
|
115
|
-
props: {
|
116
|
-
tokenName: String,
|
117
|
-
},
|
118
|
-
data() {
|
119
|
-
return {
|
120
|
-
activeNames: [1],
|
121
|
-
questionsList: [],
|
122
|
-
};
|
123
|
-
},
|
124
|
-
computed: {
|
125
|
-
currData() {
|
126
|
-
const currData = new Date();
|
127
|
-
return `${currData.getHours()}:${currData.getMinutes()}`;
|
128
|
-
},
|
129
|
-
// questionsList() {
|
130
|
-
// return this.questions.reduce((prev, curr) => {
|
131
|
-
// // eslint-disable-next-line no-prototype-builtins
|
132
|
-
// if (prev.hasOwnProperty(curr.type)) {
|
133
|
-
// prev[curr.type].push(curr.faq)
|
134
|
-
// } else {
|
135
|
-
// prev[curr.type] = [curr.faq]
|
136
|
-
// }
|
137
|
-
// return prev
|
138
|
-
// }, {})
|
139
|
-
// },
|
140
|
-
},
|
141
|
-
watch: {
|
142
|
-
id(newVal) {
|
143
|
-
this.getProblemTypeAndProblem(newVal);
|
144
|
-
},
|
145
|
-
},
|
146
|
-
created() {
|
147
|
-
sessionStorage.setItem(process.env.VUE_APP_TOKEN_NAME, this.tokenName);
|
148
|
-
this.getProblemTypeAndProblem(this.id);
|
149
|
-
},
|
150
|
-
methods: {
|
151
|
-
getProblemTypeAndProblem(id) {
|
152
|
-
if (id)
|
153
|
-
getProblemTypeAndProblem(id).then(({ data }) => {
|
154
|
-
this.questionsList = data;
|
155
|
-
});
|
156
|
-
},
|
157
|
-
},
|
158
|
-
};
|
159
|
-
</script>
|
160
|
-
<style lang="scss" scoped>
|
161
|
-
.YcQuestion {
|
162
|
-
// min-width: auto;
|
163
|
-
// overflow: hidden;
|
164
|
-
// height: 100vh;
|
165
|
-
::v-deep .chatPage {
|
166
|
-
background-color: #ffffff;
|
167
|
-
|
168
|
-
> header {
|
169
|
-
height: 8vw;
|
170
|
-
display: flex;
|
171
|
-
justify-content: flex-start;
|
172
|
-
align-items: center;
|
173
|
-
gap: 5vw;
|
174
|
-
padding-left: 8vw;
|
175
|
-
// background: url("~assets/customerService/chatTop.png");
|
176
|
-
// background-position: center center;
|
177
|
-
// background-repeat: no-repeat;
|
178
|
-
// background-size: cover;
|
179
|
-
|
180
|
-
> div {
|
181
|
-
display: flex;
|
182
|
-
flex-direction: column;
|
183
|
-
justify-content: center;
|
184
|
-
align-items: center;
|
185
|
-
|
186
|
-
// flex-direction: row-reverse;
|
187
|
-
h3 {
|
188
|
-
height: 1vw;
|
189
|
-
margin-top: 0px;
|
190
|
-
font-size: 2.125rem;
|
191
|
-
font-weight: bold;
|
192
|
-
color: #191a2c;
|
193
|
-
font-family: Source Han Sans CN-Bold, Source Han Sans CN;
|
194
|
-
}
|
195
|
-
|
196
|
-
span {
|
197
|
-
font-size: 1rem;
|
198
|
-
font-family: LXGW New Clear Gothic-Regular, LXGW New Clear Gothic;
|
199
|
-
font-weight: 400;
|
200
|
-
color: #666;
|
201
|
-
}
|
202
|
-
}
|
203
|
-
|
204
|
-
p {
|
205
|
-
font-size: 1rem;
|
206
|
-
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
|
207
|
-
font-weight: 400;
|
208
|
-
color: #2e2f42;
|
209
|
-
}
|
210
|
-
}
|
211
|
-
|
212
|
-
.main {
|
213
|
-
display: flex;
|
214
|
-
|
215
|
-
> div {
|
216
|
-
width: 74vw;
|
217
|
-
position: relative;
|
218
|
-
|
219
|
-
> main {
|
220
|
-
height: 62vh;
|
221
|
-
overflow-y: auto;
|
222
|
-
padding-bottom: 2vw;
|
223
|
-
background-color: #f7f7f9;
|
224
|
-
|
225
|
-
// 滚动条宽度
|
226
|
-
&::-webkit-scrollbar {
|
227
|
-
width: 6px;
|
228
|
-
}
|
229
|
-
|
230
|
-
// 滚动条轨道
|
231
|
-
&::-webkit-scrollbar-track {
|
232
|
-
background: rgb(239, 239, 239);
|
233
|
-
border-radius: 2px;
|
234
|
-
}
|
235
|
-
|
236
|
-
// 小滑块
|
237
|
-
&::-webkit-scrollbar-thumb {
|
238
|
-
background: #ff8879;
|
239
|
-
border-radius: 10px;
|
240
|
-
}
|
241
|
-
|
242
|
-
&::-webkit-scrollbar-thumb:hover {
|
243
|
-
background: #ff755d;
|
244
|
-
}
|
245
|
-
|
246
|
-
> p {
|
247
|
-
text-align: center;
|
248
|
-
font-size: 0.875rem;
|
249
|
-
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
|
250
|
-
font-weight: 400;
|
251
|
-
color: #909399;
|
252
|
-
}
|
253
|
-
|
254
|
-
.message {
|
255
|
-
display: flex;
|
256
|
-
gap: 15px;
|
257
|
-
margin: 1.5vw 1.5vw 0px 1.5vw;
|
258
|
-
opacity: 0;
|
259
|
-
|
260
|
-
.avatar {
|
261
|
-
width: 2.5vw;
|
262
|
-
height: 2.5vw;
|
263
|
-
min-width: 35px;
|
264
|
-
min-height: 35px;
|
265
|
-
border-radius: 50%;
|
266
|
-
transition: all 0.3s linear;
|
267
|
-
&:focus,
|
268
|
-
&:hover {
|
269
|
-
transform: scale(1.2, 1.2) rotate(15deg);
|
270
|
-
}
|
271
|
-
}
|
272
|
-
|
273
|
-
.content {
|
274
|
-
width: fit-content;
|
275
|
-
max-width: 50vw;
|
276
|
-
font-weight: 400;
|
277
|
-
font-size: 1rem;
|
278
|
-
color: #4c4c4d;
|
279
|
-
padding: 10px;
|
280
|
-
border-radius: 10px;
|
281
|
-
position: relative;
|
282
|
-
background-color: #ffffff;
|
283
|
-
|
284
|
-
.href {
|
285
|
-
cursor: pointer;
|
286
|
-
display: block;
|
287
|
-
color: #ff575f;
|
288
|
-
|
289
|
-
&:not(:last-child) {
|
290
|
-
margin-bottom: 1.5rem;
|
291
|
-
}
|
292
|
-
|
293
|
-
&:hover {
|
294
|
-
text-decoration: underline;
|
295
|
-
}
|
296
|
-
}
|
297
|
-
|
298
|
-
> .based {
|
299
|
-
cursor: pointer;
|
300
|
-
font-size: 1rem;
|
301
|
-
font-weight: 400;
|
302
|
-
color: #909399;
|
303
|
-
display: flex;
|
304
|
-
align-items: flex-start;
|
305
|
-
justify-content: flex-start;
|
306
|
-
border-top: 1px solid #ebebed;
|
307
|
-
padding-top: 0.625rem;
|
308
|
-
margin-top: 0.625rem;
|
309
|
-
gap: 0.625rem;
|
310
|
-
|
311
|
-
& > span:first-child {
|
312
|
-
white-space: nowrap;
|
313
|
-
color: #4c4c4d;
|
314
|
-
border-radius: 18px;
|
315
|
-
background-color: #eeeef0;
|
316
|
-
padding: 0.1875rem 0.625rem;
|
317
|
-
margin-top: -0.1875rem;
|
318
|
-
}
|
319
|
-
|
320
|
-
& > span:last-child {
|
321
|
-
width: 100%;
|
322
|
-
position: relative;
|
323
|
-
display: inline-block;
|
324
|
-
overflow: hidden;
|
325
|
-
white-space: nowrap;
|
326
|
-
text-overflow: ellipsis;
|
327
|
-
padding-right: 12px;
|
328
|
-
|
329
|
-
.el-icon-d-arrow-right {
|
330
|
-
position: absolute;
|
331
|
-
right: 0px;
|
332
|
-
bottom: 0px;
|
333
|
-
transform: rotate(90deg);
|
334
|
-
transition: all 0.35s linear;
|
335
|
-
}
|
336
|
-
&.is-active {
|
337
|
-
overflow: visible;
|
338
|
-
white-space: normal;
|
339
|
-
.el-icon-d-arrow-right {
|
340
|
-
transform: rotate(270deg);
|
341
|
-
}
|
342
|
-
}
|
343
|
-
|
344
|
-
&:hover {
|
345
|
-
color: #ff575f;
|
346
|
-
}
|
347
|
-
}
|
348
|
-
}
|
349
|
-
}
|
350
|
-
|
351
|
-
&.admin {
|
352
|
-
animation: animation01 0.3s linear 1.5s forwards;
|
353
|
-
|
354
|
-
.content {
|
355
|
-
margin-top: 20px;
|
356
|
-
|
357
|
-
&::before {
|
358
|
-
content: "";
|
359
|
-
position: absolute;
|
360
|
-
top: 2px;
|
361
|
-
left: -10px;
|
362
|
-
transform: rotate(-45deg);
|
363
|
-
border-width: 10px;
|
364
|
-
border-style: solid;
|
365
|
-
border-color: transparent transparent transparent #fff;
|
366
|
-
}
|
367
|
-
|
368
|
-
&::after {
|
369
|
-
content: attr(data-before);
|
370
|
-
width: 200px;
|
371
|
-
font-size: 0.875rem;
|
372
|
-
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
|
373
|
-
font-weight: 500;
|
374
|
-
color: #8b8c8f;
|
375
|
-
position: absolute;
|
376
|
-
left: 0px;
|
377
|
-
top: -20px;
|
378
|
-
}
|
379
|
-
}
|
380
|
-
}
|
381
|
-
|
382
|
-
&.personal {
|
383
|
-
animation: animation01 0.3s linear 0.3s forwards;
|
384
|
-
flex-direction: row-reverse;
|
385
|
-
|
386
|
-
.content::after {
|
387
|
-
content: "";
|
388
|
-
position: absolute;
|
389
|
-
top: 2px;
|
390
|
-
right: -10px;
|
391
|
-
transform: rotate(-45deg);
|
392
|
-
border-width: 10px;
|
393
|
-
border-style: solid;
|
394
|
-
border-color: transparent transparent #ffffff transparent;
|
395
|
-
}
|
396
|
-
}
|
397
|
-
|
398
|
-
@keyframes animation01 {
|
399
|
-
0% {
|
400
|
-
transform: translateY(20px);
|
401
|
-
opacity: 0;
|
402
|
-
}
|
403
|
-
|
404
|
-
100% {
|
405
|
-
transform: translateY(0px);
|
406
|
-
opacity: 1;
|
407
|
-
}
|
408
|
-
}
|
409
|
-
}
|
410
|
-
}
|
411
|
-
|
412
|
-
footer {
|
413
|
-
height: 30vh;
|
414
|
-
border: 1px solid #e7e7ea;
|
415
|
-
|
416
|
-
> .el-textarea {
|
417
|
-
border-color: transparent;
|
418
|
-
|
419
|
-
textarea {
|
420
|
-
overflow-y: hidden;
|
421
|
-
// padding-right: 65px;
|
422
|
-
font-weight: 400;
|
423
|
-
color: #19191a;
|
424
|
-
font-size: 1rem;
|
425
|
-
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
|
426
|
-
}
|
427
|
-
|
428
|
-
textarea,
|
429
|
-
textarea:focus {
|
430
|
-
border-color: transparent;
|
431
|
-
}
|
432
|
-
}
|
433
|
-
|
434
|
-
> .el-button {
|
435
|
-
float: right;
|
436
|
-
// position: absolute;
|
437
|
-
// bottom: 40px;
|
438
|
-
// right: 40px;
|
439
|
-
z-index: 1;
|
440
|
-
font-size: 0.875rem;
|
441
|
-
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
|
442
|
-
font-weight: 400;
|
443
|
-
border-radius: 4px;
|
444
|
-
margin-right: 2vw;
|
445
|
-
width: 5vw;
|
446
|
-
min-width: 92px;
|
447
|
-
}
|
448
|
-
}
|
449
|
-
}
|
450
|
-
|
451
|
-
aside {
|
452
|
-
width: 26vw;
|
453
|
-
height: calc(100vh - 8vw);
|
454
|
-
padding: 1vw;
|
455
|
-
overflow-y: auto;
|
456
|
-
background-color: #ffffff;
|
457
|
-
|
458
|
-
.el-collapse-item__header {
|
459
|
-
color: #373a3c;
|
460
|
-
font-size: 1.5rem;
|
461
|
-
font-weight: 500;
|
462
|
-
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
|
463
|
-
padding: 2rem;
|
464
|
-
background-color: #f00;
|
465
|
-
background: linear-gradient(#ffdad4, #ffa9a3);
|
466
|
-
|
467
|
-
&.is-active {
|
468
|
-
color: #ffffff;
|
469
|
-
background: linear-gradient(#ff897a, #ff645a);
|
470
|
-
|
471
|
-
i {
|
472
|
-
color: #ffffff;
|
473
|
-
}
|
474
|
-
}
|
475
|
-
|
476
|
-
img {
|
477
|
-
width: 2.25rem;
|
478
|
-
height: 2.25rem;
|
479
|
-
float: left;
|
480
|
-
margin-left: -0.5rem;
|
481
|
-
margin-right: 0.5rem;
|
482
|
-
}
|
483
|
-
|
484
|
-
i {
|
485
|
-
font-size: 2rem;
|
486
|
-
color: #ff575f;
|
487
|
-
font-weight: 900;
|
488
|
-
}
|
489
|
-
}
|
490
|
-
|
491
|
-
.el-collapse-item__content {
|
492
|
-
font-size: 1rem;
|
493
|
-
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
|
494
|
-
font-weight: 400;
|
495
|
-
padding: 20px 20px 20px 40px;
|
496
|
-
color: #000000;
|
497
|
-
background-color: #f7f7f9;
|
498
|
-
|
499
|
-
> div {
|
500
|
-
position: relative;
|
501
|
-
margin-top: 1rem;
|
502
|
-
cursor: pointer;
|
503
|
-
transition: all 0.3s linear;
|
504
|
-
|
505
|
-
&:first-child {
|
506
|
-
margin-top: 0px;
|
507
|
-
}
|
508
|
-
|
509
|
-
&::before {
|
510
|
-
content: "";
|
511
|
-
position: absolute;
|
512
|
-
top: 5px;
|
513
|
-
left: -15px;
|
514
|
-
// transform: rotate(-45deg);
|
515
|
-
// float: left;
|
516
|
-
border-width: 10px;
|
517
|
-
border-style: solid;
|
518
|
-
border-color: transparent transparent transparent #ffa9a3;
|
519
|
-
}
|
520
|
-
|
521
|
-
&:hover {
|
522
|
-
color: #ff575f;
|
523
|
-
transform: translate(0.5rem);
|
524
|
-
|
525
|
-
&::before {
|
526
|
-
border-color: transparent transparent transparent #ff575f;
|
527
|
-
}
|
528
|
-
}
|
529
|
-
}
|
530
|
-
}
|
531
|
-
}
|
532
|
-
}
|
533
|
-
}
|
534
|
-
}
|
535
|
-
</style>
|
@@ -1,104 +0,0 @@
|
|
1
|
-
<template>
|
2
|
-
<el-dialog
|
3
|
-
:title="title"
|
4
|
-
:visible="isShow"
|
5
|
-
width="350px"
|
6
|
-
:append-to-body="true"
|
7
|
-
@close="handleClose"
|
8
|
-
>
|
9
|
-
<slide-verify
|
10
|
-
ref="slideblock"
|
11
|
-
:l="42"
|
12
|
-
:r="10"
|
13
|
-
:w="310"
|
14
|
-
:h="155"
|
15
|
-
:imgs="imgs"
|
16
|
-
:accuracy="accuracy"
|
17
|
-
:slider-text="sliderText"
|
18
|
-
@success="onSuccess"
|
19
|
-
@fail="onFail"
|
20
|
-
@again="onAgain"
|
21
|
-
@refresh="onRefresh"
|
22
|
-
@fulfilled="onFulfilled"
|
23
|
-
></slide-verify>
|
24
|
-
</el-dialog>
|
25
|
-
</template>
|
26
|
-
|
27
|
-
<script>
|
28
|
-
import SlideVerify from "vue-monoplasty-slide-verify/src/lib/slide-verify";
|
29
|
-
export default {
|
30
|
-
name: "YcSlideVerify",
|
31
|
-
components: {
|
32
|
-
SlideVerify,
|
33
|
-
},
|
34
|
-
props: {
|
35
|
-
title: {
|
36
|
-
type: String,
|
37
|
-
default: "滑动验证",
|
38
|
-
},
|
39
|
-
isShow: {
|
40
|
-
type: Boolean,
|
41
|
-
default: true,
|
42
|
-
},
|
43
|
-
},
|
44
|
-
data() {
|
45
|
-
return {
|
46
|
-
accuracy: 5,
|
47
|
-
sliderText: "拖动完成上方拼图",
|
48
|
-
countDownNum: 120,
|
49
|
-
};
|
50
|
-
},
|
51
|
-
computed: {
|
52
|
-
imgs() {
|
53
|
-
const list = [];
|
54
|
-
for (let i = 1; i < 9; i++) {
|
55
|
-
list.push(`/cloud-img/${i}.jpg`);
|
56
|
-
}
|
57
|
-
return list;
|
58
|
-
},
|
59
|
-
},
|
60
|
-
watch: {
|
61
|
-
isShow(newVal) {
|
62
|
-
// 这里第三方引用,ref没有渲染完成,reset报错,还不能用?号
|
63
|
-
newVal &&
|
64
|
-
this.$refs.slideblock &&
|
65
|
-
this.$refs.slideblock.reset &&
|
66
|
-
this.$refs.slideblock.reset();
|
67
|
-
},
|
68
|
-
},
|
69
|
-
created() {},
|
70
|
-
methods: {
|
71
|
-
onSuccess() {
|
72
|
-
this.$emit("success");
|
73
|
-
this.$emit("update:isShow", false);
|
74
|
-
},
|
75
|
-
onFail() {},
|
76
|
-
onAgain() {},
|
77
|
-
onRefresh() {},
|
78
|
-
onFulfilled() {},
|
79
|
-
handleClose() {
|
80
|
-
this.$emit("update:isShow", false);
|
81
|
-
this.$emit("close");
|
82
|
-
},
|
83
|
-
},
|
84
|
-
};
|
85
|
-
</script>
|
86
|
-
<style lang="scss" scoped>
|
87
|
-
.el-dialog__wrapper {
|
88
|
-
display: flex;
|
89
|
-
justify-content: center;
|
90
|
-
align-items: center;
|
91
|
-
}
|
92
|
-
::v-deep .el-dialog {
|
93
|
-
margin-top: 0 !important;
|
94
|
-
border-radius: 8px;
|
95
|
-
}
|
96
|
-
::v-deep .el-dialog__header {
|
97
|
-
background-color: #f2f6fc;
|
98
|
-
border-radius: 8px 8px 0 0;
|
99
|
-
}
|
100
|
-
.el-dialog__body {
|
101
|
-
display: flex;
|
102
|
-
justify-content: center;
|
103
|
-
}
|
104
|
-
</style>
|
package/src/main.js
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
import "core-js"; // IE
|
2
|
-
// import "current-script-polyfill"; // IE
|
3
|
-
import Vue from "vue";
|
4
|
-
import App from "./App.vue";
|
5
|
-
import router from "./router";
|
6
|
-
|
7
|
-
// import SlideVerify from "vue-monoplasty-slide-verify"
|
8
|
-
import ElementUI from "element-ui";
|
9
|
-
import "element-ui/lib/theme-chalk/index.css";
|
10
|
-
|
11
|
-
Vue.config.productionTip = false;
|
12
|
-
|
13
|
-
// Vue.use(SlideVerify)
|
14
|
-
Vue.use(ElementUI);
|
15
|
-
|
16
|
-
new Vue({
|
17
|
-
render: (h) => h(App),
|
18
|
-
router,
|
19
|
-
}).$mount("#yc-ui2");
|
package/src/packages/index.js
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
import YcSlideVerify from 'comp/YcSlideVerify'
|
2
|
-
import YcCustomerService from 'comp/YcCustomerService'
|
3
|
-
import YcQuestion from 'comp/YcQuestion'
|
4
|
-
import YcCA from 'comp/YcCA'
|
5
|
-
|
6
|
-
|
7
|
-
const components = [
|
8
|
-
YcSlideVerify,
|
9
|
-
YcCustomerService,
|
10
|
-
YcQuestion,
|
11
|
-
YcCA
|
12
|
-
]
|
13
|
-
// 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册
|
14
|
-
const install = function (Vue) {
|
15
|
-
// 遍历注册全局组件
|
16
|
-
components.forEach(component => {
|
17
|
-
Vue.component(component.name, component)
|
18
|
-
})
|
19
|
-
|
20
|
-
// 判断是否是直接引入文件,如果是,就不用调用 Vue.use()
|
21
|
-
if (typeof window !== 'undefined' && window.Vue) {
|
22
|
-
install(window.Vue)
|
23
|
-
}
|
24
|
-
}
|
25
|
-
|
26
|
-
// 导出的对象必须具有 install,才能被 Vue.use() 方法安装
|
27
|
-
export default {
|
28
|
-
install
|
29
|
-
}
|
package/src/router/index.js
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
import Vue from "vue"
|
2
|
-
import VueRouter from "vue-router"
|
3
|
-
|
4
|
-
Vue.use(VueRouter)
|
5
|
-
|
6
|
-
const routes = [
|
7
|
-
{
|
8
|
-
path: "/question",
|
9
|
-
component: (resolve) => require(['views/question.vue'], resolve),
|
10
|
-
hidden: true,
|
11
|
-
},
|
12
|
-
]
|
13
|
-
|
14
|
-
const router = new VueRouter({
|
15
|
-
routes,
|
16
|
-
mode: "history", // 去掉url中的#
|
17
|
-
scrollBehavior: () => ({ y: 0 })
|
18
|
-
})
|
19
|
-
|
20
|
-
export default router
|