vue-ulejftransfer 0.0.0
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.
- package/README.md +29 -0
- package/index.html +23 -0
- package/index.js +12 -0
- package/package.json +39 -0
- package/src/App.vue +449 -0
- package/src/api/index.js +82 -0
- package/src/assets/icon-avatar.png +0 -0
- package/src/assets/icon-back-rights.png +0 -0
- package/src/assets/icon-back.png +0 -0
- package/src/assets/icon-camera.png +0 -0
- package/src/assets/icon-close-1.png +0 -0
- package/src/assets/icon-close.png +0 -0
- package/src/assets/icon-remove.png +0 -0
- package/src/assets/icon-selected-a.png +0 -0
- package/src/assets/icon-selected.png +0 -0
- package/src/components/transfer.css +1 -0
- package/src/components/transfer.less +85 -0
- package/src/components/transfer.vue +80 -0
- package/src/main.js +46 -0
- package/src/utils/index.js +324 -0
- package/webpack.config.js +84 -0
package/README.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# ulejftransfer
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
> This is for internal use only.
|
|
5
|
+
|
|
6
|
+
## Build Setup
|
|
7
|
+
|
|
8
|
+
``` bash
|
|
9
|
+
# install dependencies
|
|
10
|
+
npm install vue-ulejftransfer
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## params
|
|
14
|
+
| param | type | description |
|
|
15
|
+
| --- | --- | --- |
|
|
16
|
+
| `isUleBack` | `Boolean` | show display/hide goback enterance page |
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## functions
|
|
20
|
+
#2026.04.07 New
|
|
21
|
+
|
|
22
|
+
# serve with hot reload at localhost:8080
|
|
23
|
+
npm run dev
|
|
24
|
+
|
|
25
|
+
# build for production with minification
|
|
26
|
+
npm run build
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
For detailed explanation on how things work, consult the [docs for vue-loader](http://vuejs.github.io/vue-loader).
|
package/index.html
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<html >
|
|
2
|
+
<head>
|
|
3
|
+
<meta charset="UTF-8">
|
|
4
|
+
<title></title>
|
|
5
|
+
<meta content="" name="keywords">
|
|
6
|
+
<meta content="" name="description">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover">
|
|
8
|
+
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
|
9
|
+
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
|
|
10
|
+
<meta content="h5.100qu.net" name="author">
|
|
11
|
+
<meta content="yes" name="apple-mobile-web-app-capable">
|
|
12
|
+
<meta content="black" name="apple-mobile-web-app-status-bar-style">
|
|
13
|
+
<meta content="telephone=no" name="format-detection">
|
|
14
|
+
<meta content="no-cache, no-store, must-revalidate" http-equiv="Cache-Control">
|
|
15
|
+
<meta content="no-cache" http-equiv="Pragma">
|
|
16
|
+
<meta content="-1" http-equiv="Expires">
|
|
17
|
+
<meta content="0" http-equiv="Expires">
|
|
18
|
+
</head>
|
|
19
|
+
<body>
|
|
20
|
+
<div id="app"></div>
|
|
21
|
+
<script src="/dist/ulejftransfer.js"></script>
|
|
22
|
+
</body>
|
|
23
|
+
</html>
|
package/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import transfer from './src/components/transfer'
|
|
2
|
+
|
|
3
|
+
// 这一步判断window.Vue是否存在,因为直接引用vue.min.js, 它会把Vue绑到Window上,我们直接引用打包好的js才能正常跑起来。
|
|
4
|
+
if (typeof window !== 'undefined' && window.Vue) {
|
|
5
|
+
window.Vue.component('ulejftransfer', transfer)
|
|
6
|
+
}
|
|
7
|
+
//这样就可以使用Vue.use进行全局安装了。
|
|
8
|
+
transfer.install = function(Vue){
|
|
9
|
+
Vue.component(transfer.name, transfer)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export default transfer
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "vue-ulejftransfer",
|
|
3
|
+
"description": "This is for internal use only.",
|
|
4
|
+
"version": "0.0.0",
|
|
5
|
+
"author": "cy",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"private": false,
|
|
8
|
+
"main": "./dist/ulejftransfer.js",
|
|
9
|
+
"scripts": {
|
|
10
|
+
"dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
|
|
11
|
+
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"axios": "^0.18.0",
|
|
15
|
+
"vue": "^2.5.11",
|
|
16
|
+
"wc-messagebox": "^1.10.1",
|
|
17
|
+
"less": "^3.9.0",
|
|
18
|
+
"less-loader": "^4.1.0",
|
|
19
|
+
"vuex": "^3.1.0"
|
|
20
|
+
},
|
|
21
|
+
"browserslist": [
|
|
22
|
+
"> 1%",
|
|
23
|
+
"last 2 versions",
|
|
24
|
+
"not ie <= 8"
|
|
25
|
+
],
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"babel-core": "^6.26.0",
|
|
28
|
+
"babel-loader": "^7.1.2",
|
|
29
|
+
"babel-preset-env": "^1.6.0",
|
|
30
|
+
"babel-preset-stage-3": "^6.24.1",
|
|
31
|
+
"cross-env": "^5.0.5",
|
|
32
|
+
"css-loader": "^0.28.7",
|
|
33
|
+
"file-loader": "^1.1.4",
|
|
34
|
+
"vue-loader": "^13.0.5",
|
|
35
|
+
"vue-template-compiler": "^2.4.4",
|
|
36
|
+
"webpack": "^3.6.0",
|
|
37
|
+
"webpack-dev-server": "^2.9.1"
|
|
38
|
+
}
|
|
39
|
+
}
|
package/src/App.vue
ADDED
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div id="app">
|
|
3
|
+
<button id="btn" @click="apply">页面跳转提示</button>
|
|
4
|
+
|
|
5
|
+
</div>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script>
|
|
9
|
+
import transfer from './components/transfer.vue'
|
|
10
|
+
export default {
|
|
11
|
+
name: 'app',
|
|
12
|
+
components:{transfer},
|
|
13
|
+
data () {
|
|
14
|
+
return {
|
|
15
|
+
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
methods:{
|
|
19
|
+
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<style lang="less">
|
|
25
|
+
#app {
|
|
26
|
+
font-family: 'Avenir', Helvetica, Arial, sans-serif;
|
|
27
|
+
-webkit-font-smoothing: antialiased;
|
|
28
|
+
-moz-osx-font-smoothing: grayscale;
|
|
29
|
+
text-align: center;
|
|
30
|
+
color: #2c3e50;
|
|
31
|
+
margin-top: 60px;
|
|
32
|
+
width: 18.75rem;
|
|
33
|
+
#btn{
|
|
34
|
+
width: 12rem;
|
|
35
|
+
height: 2rem;
|
|
36
|
+
font-size: 14px;
|
|
37
|
+
border-radius: 4px;
|
|
38
|
+
background-color: #42b983;
|
|
39
|
+
color: #fff;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
a {
|
|
45
|
+
color: #42b983;
|
|
46
|
+
}
|
|
47
|
+
/*---------basic settings----------*/
|
|
48
|
+
a,
|
|
49
|
+
a:active,
|
|
50
|
+
input,
|
|
51
|
+
button,
|
|
52
|
+
select,
|
|
53
|
+
map area,
|
|
54
|
+
textarea {
|
|
55
|
+
outline: 0;
|
|
56
|
+
color: #333;
|
|
57
|
+
cursor: pointer;
|
|
58
|
+
font-family: "Microsoft YaHei", Arial, Helvetica, sans-serif;
|
|
59
|
+
appearance: none;
|
|
60
|
+
}
|
|
61
|
+
.main{
|
|
62
|
+
text-align: left;
|
|
63
|
+
}
|
|
64
|
+
table.Ptable{
|
|
65
|
+
font-size: .6rem;
|
|
66
|
+
border-collapse:collapse;
|
|
67
|
+
border-spacing:0;
|
|
68
|
+
border-left:1px solid #ccc;
|
|
69
|
+
border-top:1px solid #ccc;
|
|
70
|
+
}
|
|
71
|
+
table.Ptable th,table.Ptable td{
|
|
72
|
+
border-right:1px solid #ccc;
|
|
73
|
+
border-bottom:1px solid #ccc;
|
|
74
|
+
padding:.3rem;
|
|
75
|
+
}
|
|
76
|
+
table.Ptable th{
|
|
77
|
+
font-weight:bold;
|
|
78
|
+
background:#eaeaea;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
table th img,table img{
|
|
82
|
+
max-width: 100%;
|
|
83
|
+
height: auto;
|
|
84
|
+
}
|
|
85
|
+
.fl {
|
|
86
|
+
float: left;
|
|
87
|
+
}
|
|
88
|
+
.fr {
|
|
89
|
+
float: right;
|
|
90
|
+
}
|
|
91
|
+
.viewport,
|
|
92
|
+
html body {
|
|
93
|
+
min-width: 320px;
|
|
94
|
+
}
|
|
95
|
+
.bounce-enter-active {
|
|
96
|
+
animation: bounce-in .3s;
|
|
97
|
+
}
|
|
98
|
+
.bounce-leave-active {
|
|
99
|
+
animation: bounce-in .3s reverse;
|
|
100
|
+
}
|
|
101
|
+
@keyframes bounce-in {
|
|
102
|
+
0% {
|
|
103
|
+
transform: scale(0);
|
|
104
|
+
}
|
|
105
|
+
100% {
|
|
106
|
+
transform: scale(1);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
* {
|
|
110
|
+
tap-highlight-color: transparent;
|
|
111
|
+
-webkit-tap-highlight-color: transparent;
|
|
112
|
+
-ms-tap-highlight-color: transparent;
|
|
113
|
+
-moz-box-sizing: border-box;
|
|
114
|
+
-webkit-box-sizing: border-box;
|
|
115
|
+
box-sizing: border-box;
|
|
116
|
+
padding: 0;
|
|
117
|
+
margin: 0;
|
|
118
|
+
}
|
|
119
|
+
article,
|
|
120
|
+
aside,
|
|
121
|
+
details,
|
|
122
|
+
figcaption,
|
|
123
|
+
figure,
|
|
124
|
+
footer,
|
|
125
|
+
header,
|
|
126
|
+
hgroup,
|
|
127
|
+
main,
|
|
128
|
+
nav,
|
|
129
|
+
section,
|
|
130
|
+
summary {
|
|
131
|
+
display: block;
|
|
132
|
+
}
|
|
133
|
+
html {
|
|
134
|
+
font-size: 20px;
|
|
135
|
+
color: #666;
|
|
136
|
+
font-family: "Microsoft YaHei", Arial, Helvetica, sans-serif;
|
|
137
|
+
}
|
|
138
|
+
html body {
|
|
139
|
+
height: 100%;
|
|
140
|
+
font-size: .55rem;
|
|
141
|
+
overflow-x: hidden;
|
|
142
|
+
-webkit-overflow-scrolling: touch;
|
|
143
|
+
background: #fff;
|
|
144
|
+
max-width: 750px;
|
|
145
|
+
margin: 0 auto;
|
|
146
|
+
}
|
|
147
|
+
audio,
|
|
148
|
+
canvas,
|
|
149
|
+
progress,
|
|
150
|
+
video {
|
|
151
|
+
display: inline-block;
|
|
152
|
+
vertical-align: baseline;
|
|
153
|
+
}
|
|
154
|
+
img {
|
|
155
|
+
border: none;
|
|
156
|
+
vertical-align: middle;
|
|
157
|
+
max-width: 100%;
|
|
158
|
+
height: auto;
|
|
159
|
+
}
|
|
160
|
+
.descimg{
|
|
161
|
+
width: 18.75rem;
|
|
162
|
+
height: auto;
|
|
163
|
+
}
|
|
164
|
+
.descimg img{
|
|
165
|
+
width: 18.75rem;
|
|
166
|
+
height: auto;
|
|
167
|
+
max-width: none;
|
|
168
|
+
}
|
|
169
|
+
a {
|
|
170
|
+
text-decoration: none;
|
|
171
|
+
-webkit-tap-highlight-color: transparent;
|
|
172
|
+
}
|
|
173
|
+
.clearfix {
|
|
174
|
+
zoom: 1;
|
|
175
|
+
}
|
|
176
|
+
.clearfix:after {
|
|
177
|
+
content: '';
|
|
178
|
+
display: table;
|
|
179
|
+
clear: both;
|
|
180
|
+
}
|
|
181
|
+
em,
|
|
182
|
+
b {
|
|
183
|
+
font-style: normal;
|
|
184
|
+
font-weight: normal;
|
|
185
|
+
}
|
|
186
|
+
input[type=button],
|
|
187
|
+
input[type=submit],
|
|
188
|
+
input[type=reset] {
|
|
189
|
+
-webkit-appearance: none;
|
|
190
|
+
border-radius: 0;
|
|
191
|
+
}
|
|
192
|
+
input::-webkit-inner-spin-button,
|
|
193
|
+
input::-webkit-outer-spin-button {
|
|
194
|
+
-webkit-appearance: none!important;
|
|
195
|
+
margin: 0;
|
|
196
|
+
}
|
|
197
|
+
.viewport,
|
|
198
|
+
.clear:after {
|
|
199
|
+
content: "";
|
|
200
|
+
clear: both;
|
|
201
|
+
display: table;
|
|
202
|
+
}
|
|
203
|
+
input::-moz-placeholder,
|
|
204
|
+
textarea::-moz-placeholder {
|
|
205
|
+
color: #ccc;
|
|
206
|
+
}
|
|
207
|
+
input:-ms-input-placeholder,
|
|
208
|
+
textarea:-ms-input-placeholder {
|
|
209
|
+
color: #ccc;
|
|
210
|
+
}
|
|
211
|
+
ul {
|
|
212
|
+
list-style-type: none;
|
|
213
|
+
}
|
|
214
|
+
.flex-column {
|
|
215
|
+
display: -webkit-box;
|
|
216
|
+
-webkit-box-orient: vertical;
|
|
217
|
+
display: flex;
|
|
218
|
+
flex-flow: column;
|
|
219
|
+
height: 100%;
|
|
220
|
+
position: absolute;
|
|
221
|
+
top: 0;
|
|
222
|
+
left: 0;
|
|
223
|
+
right: 0;
|
|
224
|
+
bottom: 0;
|
|
225
|
+
}
|
|
226
|
+
.flex-row {
|
|
227
|
+
display: -webkit-flex;
|
|
228
|
+
display: flex;
|
|
229
|
+
}
|
|
230
|
+
.flex {
|
|
231
|
+
-webkit-flex: 1;
|
|
232
|
+
flex: 1;
|
|
233
|
+
}
|
|
234
|
+
.after {
|
|
235
|
+
position: relative;
|
|
236
|
+
&:after {
|
|
237
|
+
content: "";
|
|
238
|
+
border-bottom: 1px solid #dbdbdb;
|
|
239
|
+
width: 100%;
|
|
240
|
+
position: absolute;
|
|
241
|
+
bottom: 0;
|
|
242
|
+
left: 0;
|
|
243
|
+
-webkit-transform: scaleY(0.5);
|
|
244
|
+
transform: scaleY(0.5);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
.before {
|
|
248
|
+
position: relative;
|
|
249
|
+
&:after {
|
|
250
|
+
content: "";
|
|
251
|
+
border-top: 1px solid #ccc;
|
|
252
|
+
width: 100%;
|
|
253
|
+
position: absolute;
|
|
254
|
+
top: 0;
|
|
255
|
+
left: 0;
|
|
256
|
+
-webkit-transform: scaleY(0.5);
|
|
257
|
+
transform: scaleY(0.5);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.footer {
|
|
262
|
+
z-index: 99;
|
|
263
|
+
width: 18.75rem;
|
|
264
|
+
position: fixed;
|
|
265
|
+
bottom: 0;
|
|
266
|
+
left: 50%;
|
|
267
|
+
margin-left: -9.375rem;
|
|
268
|
+
height: 2.4rem;
|
|
269
|
+
box-shadow: 0 -0.05rem 0.05rem #dbdbdb;
|
|
270
|
+
background-color: #fff;
|
|
271
|
+
}
|
|
272
|
+
.footer.noshadow {
|
|
273
|
+
box-shadow: 0 0 0 transparent;
|
|
274
|
+
}
|
|
275
|
+
.footer.noshadow:before {
|
|
276
|
+
width: 100%;
|
|
277
|
+
top: 0;
|
|
278
|
+
border-top: .05rem solid #ECECED;
|
|
279
|
+
position: absolute;
|
|
280
|
+
left: 0;
|
|
281
|
+
content: "";
|
|
282
|
+
}
|
|
283
|
+
.footer .flex a {
|
|
284
|
+
display: block;
|
|
285
|
+
text-align: center;
|
|
286
|
+
padding: .2rem;
|
|
287
|
+
height: 2.4rem;
|
|
288
|
+
}
|
|
289
|
+
.footer .flex a img {
|
|
290
|
+
width: 1.2rem;
|
|
291
|
+
}
|
|
292
|
+
.footer .flex a span {
|
|
293
|
+
display: block;
|
|
294
|
+
font-size: .6rem;
|
|
295
|
+
text-align: center;
|
|
296
|
+
width: 100%;
|
|
297
|
+
line-height: .8rem;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
#bqmask,
|
|
301
|
+
.bq-mask {
|
|
302
|
+
position: fixed;
|
|
303
|
+
z-index: 999;
|
|
304
|
+
width: 100%;
|
|
305
|
+
height: 100%;
|
|
306
|
+
background-color: #000;
|
|
307
|
+
opacity: .45;
|
|
308
|
+
top: 0;
|
|
309
|
+
left: 0;
|
|
310
|
+
}
|
|
311
|
+
.bq-mask {
|
|
312
|
+
display: none;
|
|
313
|
+
height: 100%;
|
|
314
|
+
}
|
|
315
|
+
.hide {
|
|
316
|
+
display: none;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
@-webkit-keyframes loading {
|
|
320
|
+
from {
|
|
321
|
+
-webkit-transform: rotate(0deg) translateZ(0);
|
|
322
|
+
}
|
|
323
|
+
to {
|
|
324
|
+
-webkit-transform: rotate(360deg) translateZ(0);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
input, button {
|
|
328
|
+
background-color: transparent;
|
|
329
|
+
border: 0;
|
|
330
|
+
}
|
|
331
|
+
.spaceline{
|
|
332
|
+
height: .5rem;
|
|
333
|
+
width: 100%;
|
|
334
|
+
background:rgba(241,241,241,1);
|
|
335
|
+
}
|
|
336
|
+
.after {
|
|
337
|
+
position: relative;
|
|
338
|
+
&:after {
|
|
339
|
+
content: "";
|
|
340
|
+
border-bottom: 1px solid #dbdbdb;
|
|
341
|
+
width: 100%;
|
|
342
|
+
position: absolute;
|
|
343
|
+
bottom: 0;
|
|
344
|
+
left: 0;
|
|
345
|
+
-webkit-transform: scaleY(0.5);
|
|
346
|
+
transform: scaleY(0.5);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
.nomore{
|
|
350
|
+
line-height: 2.2rem;
|
|
351
|
+
}
|
|
352
|
+
.slide-enter-active {
|
|
353
|
+
animation-name: slideInUp;
|
|
354
|
+
animation-duration: 0.2s;
|
|
355
|
+
animation-fill-mode: both;
|
|
356
|
+
}
|
|
357
|
+
.slide-leave-active {
|
|
358
|
+
animation-name: slideOutDown;
|
|
359
|
+
animation-duration: 0.2s;
|
|
360
|
+
animation-fill-mode: both;
|
|
361
|
+
}
|
|
362
|
+
@keyframes slideInUp {
|
|
363
|
+
0% {
|
|
364
|
+
transform: translate3d(0, 100%, 0);
|
|
365
|
+
visibility: visible;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
to {
|
|
369
|
+
transform: translateZ(0);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
@keyframes slideOutDown {
|
|
373
|
+
0% {
|
|
374
|
+
transform: translateZ(0);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
to {
|
|
378
|
+
visibility: hidden;
|
|
379
|
+
transform: translate3d(0, 100%, 0);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
.slidetoleft-enter-active {
|
|
383
|
+
animation-name: slideInLeft;
|
|
384
|
+
animation-duration: 0.2s;
|
|
385
|
+
animation-fill-mode: both;
|
|
386
|
+
}
|
|
387
|
+
.slidetoleft-leave-active {
|
|
388
|
+
animation-name: slideOutLeft;
|
|
389
|
+
animation-duration: 0.2s;
|
|
390
|
+
animation-fill-mode: both;
|
|
391
|
+
}
|
|
392
|
+
@keyframes slideInLeft {
|
|
393
|
+
from {
|
|
394
|
+
opacity: 0;
|
|
395
|
+
-webkit-transform: translate(16rem,0);
|
|
396
|
+
transform: translate(16rem,0);
|
|
397
|
+
}
|
|
398
|
+
to {
|
|
399
|
+
opacity:1;
|
|
400
|
+
-webkit-transform: translate(0,0);
|
|
401
|
+
transform: translate(0,0);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
@keyframes slideOutLeft {
|
|
405
|
+
from {
|
|
406
|
+
opacity: 1;
|
|
407
|
+
-webkit-transform: translate(0,0);
|
|
408
|
+
transform: translate(0,0);
|
|
409
|
+
}
|
|
410
|
+
to {
|
|
411
|
+
opacity:0;
|
|
412
|
+
-webkit-transform: translate(16rem,0);
|
|
413
|
+
transform: translate(16rem,0);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
.delay-leave-active {
|
|
417
|
+
-webkit-animation-delay: 0.2s;
|
|
418
|
+
-moz-animation-delay: 0.2s;
|
|
419
|
+
-o-animation-delay: 0.2s;
|
|
420
|
+
animation-delay: 0.2s;
|
|
421
|
+
}
|
|
422
|
+
.fade-enter-active {
|
|
423
|
+
animation:fadeIn .2s;
|
|
424
|
+
}
|
|
425
|
+
.fade-leave-active {
|
|
426
|
+
animation: fadeOut .2s;
|
|
427
|
+
}
|
|
428
|
+
@keyframes fadeIn {
|
|
429
|
+
0% {opacity: 0}
|
|
430
|
+
50% {opacity: .5}
|
|
431
|
+
100% {opacity: 1}
|
|
432
|
+
}
|
|
433
|
+
@-webkit-keyframes fadeIn {
|
|
434
|
+
0% {opacity: 0}
|
|
435
|
+
50% {opacity: .5}
|
|
436
|
+
100% {opacity: 1}
|
|
437
|
+
}
|
|
438
|
+
@keyframes fadeOut {
|
|
439
|
+
0% {opacity: 1}
|
|
440
|
+
50% {opacity: .5}
|
|
441
|
+
100% {opacity: 0}
|
|
442
|
+
}
|
|
443
|
+
@-webkit-keyframes fadeOut {
|
|
444
|
+
0% {opacity: 1}
|
|
445
|
+
50% {opacity: .5}
|
|
446
|
+
100% {opacity: 0}
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
</style>
|
package/src/api/index.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Created by Chelsea on 2024/07/01.
|
|
3
|
+
*/
|
|
4
|
+
// 引用axios
|
|
5
|
+
let axios = require('axios')
|
|
6
|
+
|
|
7
|
+
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
|
|
8
|
+
// 自定义判断元素类型JS
|
|
9
|
+
|
|
10
|
+
const getCookieTr = (name=>{
|
|
11
|
+
let arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
|
|
12
|
+
if (arr = document.cookie.match(reg)) {
|
|
13
|
+
// return true;
|
|
14
|
+
return (arr[2]);
|
|
15
|
+
} else {
|
|
16
|
+
return ""
|
|
17
|
+
}
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
function apiAxiosRe (method, url, params, success, failure) {
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
let baseURL = (url.indexOf("http")>=0) ? "" : root
|
|
24
|
+
|
|
25
|
+
let config = {}
|
|
26
|
+
config = {
|
|
27
|
+
method: method,
|
|
28
|
+
url: url,
|
|
29
|
+
data: method === 'POST' || method === 'PUT' ? params : null,
|
|
30
|
+
params: method === 'GET' || method === 'DELETE' ? params : null,
|
|
31
|
+
baseURL: baseURL,
|
|
32
|
+
withCredentials: true,
|
|
33
|
+
headers: {
|
|
34
|
+
'Authorization': unescape(getCookieTr("mtoken")),
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
axios(config)
|
|
39
|
+
.then(function (res) {
|
|
40
|
+
if (res.status == 200 && res.data !=null) {
|
|
41
|
+
if (success) {
|
|
42
|
+
success(res.data)
|
|
43
|
+
}
|
|
44
|
+
} else {
|
|
45
|
+
console.log("api error 0:",res)
|
|
46
|
+
}
|
|
47
|
+
})
|
|
48
|
+
.catch( (err)=> {
|
|
49
|
+
|
|
50
|
+
if(err.response&&err.response.status===302){
|
|
51
|
+
success({retCode:'020001'})
|
|
52
|
+
return
|
|
53
|
+
}
|
|
54
|
+
if(failure){
|
|
55
|
+
console.log("api error 1:" ,err)
|
|
56
|
+
failure(err)
|
|
57
|
+
}else{
|
|
58
|
+
console.log("api error 2: ",url)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// 返回在vue模板中的调用接口
|
|
66
|
+
export default {
|
|
67
|
+
get: function (url, params, success, failure) {
|
|
68
|
+
return apiAxiosRe('GET', url, params, success, failure)
|
|
69
|
+
},
|
|
70
|
+
post: function (url, params, success, failure) {
|
|
71
|
+
return apiAxiosRe('POST', url, params, success, failure)
|
|
72
|
+
},
|
|
73
|
+
postpay: function (url, params, success, failure) {
|
|
74
|
+
return apiAxiosRe('POST',apiBase().payroot+url, params, success, failure)
|
|
75
|
+
},
|
|
76
|
+
put: function (url, params, success, failure) {
|
|
77
|
+
return apiAxiosRe('PUT', url, params, success, failure)
|
|
78
|
+
},
|
|
79
|
+
delete: function (url, params, success, failure) {
|
|
80
|
+
return apiAxiosRe('DELETE', url, params, success, failure)
|
|
81
|
+
}
|
|
82
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0}.flex-row{display:-webkit-flex;display:flex}.flex{-webkit-flex:1;flex:1}.after{position:relative}.after:after{content:"";border-bottom:1px solid #dbdbdb;width:100%;position:absolute;bottom:0;left:0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.before{position:relative}.before:after{content:"";border-top:1px solid #dbdbdb;width:100%;position:absolute;top:0;left:0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.transferPage{position:fixed;top:0;left:50%;touch-action:none;cursor:pointer;width:18.75rem;height:100%;z-index:2000;margin-left:-9.375rem;background-color:#FBFBFB;padding:.8rem .6rem}.transferPage .box{padding:1rem .6rem 3.2rem .6rem}.transferPage .box .path{text-align:center}.transferPage .box .path .info img{width:2.8rem;height:2.8rem;border-radius:50%}.transferPage .box .path .info span{display:inline-block;width:100%;margin-top:.6rem;line-height:.9rem;font-weight:400;font-size:14px;color:#666666}.transferPage .box .path .info span+span{margin-top:.2rem;font-weight:500;font-size:16px;color:#333333;line-height:1rem}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
* {
|
|
2
|
+
-webkit-box-sizing: border-box;
|
|
3
|
+
box-sizing: border-box;
|
|
4
|
+
padding: 0;
|
|
5
|
+
margin: 0;
|
|
6
|
+
}
|
|
7
|
+
.flex-row {
|
|
8
|
+
display: -webkit-flex;
|
|
9
|
+
display: flex;
|
|
10
|
+
}
|
|
11
|
+
.flex {
|
|
12
|
+
-webkit-flex: 1;
|
|
13
|
+
flex: 1;
|
|
14
|
+
}
|
|
15
|
+
.after {
|
|
16
|
+
position: relative;
|
|
17
|
+
&:after {
|
|
18
|
+
content: "";
|
|
19
|
+
border-bottom: 1px solid #dbdbdb;
|
|
20
|
+
width: 100%;
|
|
21
|
+
position: absolute;
|
|
22
|
+
bottom: 0;
|
|
23
|
+
left: 0;
|
|
24
|
+
-webkit-transform: scaleY(0.5);
|
|
25
|
+
transform: scaleY(0.5);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.before {
|
|
30
|
+
position: relative;
|
|
31
|
+
&:after {
|
|
32
|
+
content: "";
|
|
33
|
+
border-top: 1px solid #dbdbdb;
|
|
34
|
+
width: 100%;
|
|
35
|
+
position: absolute;
|
|
36
|
+
top: 0;
|
|
37
|
+
left: 0;
|
|
38
|
+
-webkit-transform: scaleY(0.5);
|
|
39
|
+
transform: scaleY(0.5);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
.transferPage{
|
|
45
|
+
position: fixed;
|
|
46
|
+
top: 0;
|
|
47
|
+
left: 50%;
|
|
48
|
+
touch-action: none;
|
|
49
|
+
cursor: pointer;
|
|
50
|
+
width: 18.75rem;
|
|
51
|
+
height: 100%;
|
|
52
|
+
z-index: 2000;
|
|
53
|
+
margin-left: -9.375rem;
|
|
54
|
+
background-color: #FBFBFB;
|
|
55
|
+
padding: .8rem .6rem;
|
|
56
|
+
.box{
|
|
57
|
+
padding: 1rem .6rem 3.2rem .6rem;
|
|
58
|
+
.path{
|
|
59
|
+
text-align: center;
|
|
60
|
+
.info{
|
|
61
|
+
img{
|
|
62
|
+
width: 2.8rem;
|
|
63
|
+
height: 2.8rem;
|
|
64
|
+
border-radius: 50%;
|
|
65
|
+
}
|
|
66
|
+
span{
|
|
67
|
+
display: inline-block;
|
|
68
|
+
width: 100%;
|
|
69
|
+
margin-top: .6rem;
|
|
70
|
+
line-height: .9rem;
|
|
71
|
+
font-weight: 400;
|
|
72
|
+
font-size: 14px;
|
|
73
|
+
color: #666666;
|
|
74
|
+
+span{
|
|
75
|
+
margin-top: .2rem;
|
|
76
|
+
font-weight: 500;
|
|
77
|
+
font-size: 16px;
|
|
78
|
+
color: #333333;
|
|
79
|
+
line-height: 1rem;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="transferPage">
|
|
3
|
+
<div class="box">
|
|
4
|
+
<div class="path flex-row">
|
|
5
|
+
<div class="from info flex">
|
|
6
|
+
<img :src="fromImg"/>
|
|
7
|
+
<span>即将离开</span>
|
|
8
|
+
<span>{{ fromName }}</span>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="gap">
|
|
11
|
+
<s></s>
|
|
12
|
+
<s></s>
|
|
13
|
+
<s></s>
|
|
14
|
+
</div>
|
|
15
|
+
<div class="to info flex">
|
|
16
|
+
<img :src="toImg"/>
|
|
17
|
+
<span>前往</span>
|
|
18
|
+
<span>{{ toName }}</span>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="content">
|
|
22
|
+
<span v-html="content"></span>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="tips">
|
|
25
|
+
<img v-if="checked" src="../assets/icon-selected-a.png"/>
|
|
26
|
+
<img v-else src="../assets/icon-selected.png"/>
|
|
27
|
+
<span>{{ days }}天内不再提示</span>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
</template>
|
|
32
|
+
|
|
33
|
+
<script>
|
|
34
|
+
|
|
35
|
+
export default {
|
|
36
|
+
name: 'ulejftransfer',
|
|
37
|
+
props: {
|
|
38
|
+
transferId : {
|
|
39
|
+
type: String,
|
|
40
|
+
default: ''
|
|
41
|
+
},
|
|
42
|
+
jumpUrl:{
|
|
43
|
+
type: String,
|
|
44
|
+
default: ''
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
data(){
|
|
48
|
+
return{
|
|
49
|
+
fromImg: 'https://oss.sdycsdyc.cn/admin/0daa0a5bdacb4fd78e70592ba6ea3872k97oen.png',
|
|
50
|
+
fromName: '邮乐金服',
|
|
51
|
+
toImg: 'https://oss.sdycsdyc.cn/admin/0daa0a5bdacb4fd78e70592ba6ea3872k97oen.png',
|
|
52
|
+
toName: '苹果商城',
|
|
53
|
+
content: '客户使用该服务即与苹果商城直接发生法律关系,如客户对本服务相关事宜有任何疑问或争议,均由苹果商城负责处理解决,邮乐金服不提供任何形式的担保和承诺。客服电话:025-93829(工作日9:00-18:00)',
|
|
54
|
+
days: 30,
|
|
55
|
+
checked: false
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
created(){
|
|
60
|
+
|
|
61
|
+
document.title = '页面跳转提示'
|
|
62
|
+
|
|
63
|
+
},
|
|
64
|
+
mounted(){
|
|
65
|
+
|
|
66
|
+
},
|
|
67
|
+
methods:{
|
|
68
|
+
|
|
69
|
+
},
|
|
70
|
+
activated(){
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
</script>
|
|
76
|
+
|
|
77
|
+
<style lang="less" scoped>
|
|
78
|
+
@import url(transfer.less);
|
|
79
|
+
|
|
80
|
+
</style>
|
package/src/main.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import Vue from 'vue'
|
|
2
|
+
import App from './App.vue'
|
|
3
|
+
|
|
4
|
+
// 引入api
|
|
5
|
+
// import api from './api/index.js'
|
|
6
|
+
// Vue.prototype.$api = api
|
|
7
|
+
|
|
8
|
+
// 引入公共方法
|
|
9
|
+
import utils from './utils/index.js'
|
|
10
|
+
Vue.prototype.$utils = utils
|
|
11
|
+
|
|
12
|
+
// 引入共同提示弹窗
|
|
13
|
+
import {Alert, Confirm, Toast} from 'wc-messagebox'
|
|
14
|
+
Vue.use(Alert, {})
|
|
15
|
+
Vue.use(Confirm, {})
|
|
16
|
+
Vue.use(Toast, {})
|
|
17
|
+
|
|
18
|
+
new Vue({
|
|
19
|
+
el: '#app',
|
|
20
|
+
render: h => h(App)
|
|
21
|
+
})
|
|
22
|
+
/*
|
|
23
|
+
* Created by cy on 2016/9/21
|
|
24
|
+
* please don't make any updates unless you know what you are doing
|
|
25
|
+
* the following codes will flexible all kind of devices whose width are between 320px and 750px
|
|
26
|
+
*/
|
|
27
|
+
//mobile width and meta settings
|
|
28
|
+
let settingREM = function(){
|
|
29
|
+
//let dpr, rem, scale;
|
|
30
|
+
let docEl = document.documentElement;
|
|
31
|
+
let fontEl = document.createElement('style');
|
|
32
|
+
//let metaEl = document.querySelector('meta[name="viewport"]');
|
|
33
|
+
//dpr = window.devicePixelRatio || 1;
|
|
34
|
+
//scale = 1 / dpr;
|
|
35
|
+
//rem = docEl.clientWidth * dpr / 10;
|
|
36
|
+
docEl.firstElementChild.appendChild(fontEl);
|
|
37
|
+
if(docEl.clientWidth<=750){
|
|
38
|
+
fontEl.innerHTML = 'html{font-size:' + docEl.clientWidth/375*20 + 'px!important;}';
|
|
39
|
+
}else{
|
|
40
|
+
fontEl.innerHTML = 'html{font-size:' + 40 + 'px!important;}';
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
settingREM();
|
|
44
|
+
window.onresize=function(){
|
|
45
|
+
setTimeout(settingREM,100);
|
|
46
|
+
}
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Created by Chelsea on 2018/4/9.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
top:0,
|
|
7
|
+
/***滑动限制***/
|
|
8
|
+
stop(){
|
|
9
|
+
let mo=function(e){e.preventDefault();};
|
|
10
|
+
this.top = document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop
|
|
11
|
+
document.body.style.top = -this.top
|
|
12
|
+
document.body.style.position = "fixed"
|
|
13
|
+
// document.body.style.left = '50%'
|
|
14
|
+
// document.body.style.transform = 'translateX(-50%)'
|
|
15
|
+
// document.addEventListener("touchmove",mo,false);//禁止页面滑动
|
|
16
|
+
},
|
|
17
|
+
/***取消滑动限制***/
|
|
18
|
+
move(){
|
|
19
|
+
let mo=function(e){e.preventDefault();}
|
|
20
|
+
document.body.style.position = ""
|
|
21
|
+
document.body.style.top = ''
|
|
22
|
+
// document.body.style.left = ''
|
|
23
|
+
// document.body.style.transform = ''
|
|
24
|
+
window.scrollTo(0, this.top);
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
getCookie(name) {
|
|
28
|
+
let arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
|
|
29
|
+
if (arr = document.cookie.match(reg)) {
|
|
30
|
+
// return true;
|
|
31
|
+
return (arr[2]);
|
|
32
|
+
} else {
|
|
33
|
+
return ""
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
delCookie (name) {
|
|
37
|
+
let exp = new Date();
|
|
38
|
+
exp.setTime(exp.getTime() - 1);
|
|
39
|
+
let cval = this.getCookie(name);
|
|
40
|
+
if (cval != null)
|
|
41
|
+
document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
|
|
42
|
+
},
|
|
43
|
+
getSec(s){
|
|
44
|
+
if(s<=0){
|
|
45
|
+
return -60*60*24*1000
|
|
46
|
+
}else{
|
|
47
|
+
if(s.length==1) s='d'+s
|
|
48
|
+
let str1=s.substring(1,s.length)*1;
|
|
49
|
+
let str2=s.substring(0,1);
|
|
50
|
+
if (str2=="s"){
|
|
51
|
+
return str1*1000;
|
|
52
|
+
}else if (str2=="h"){
|
|
53
|
+
return str1*60*60*1000;
|
|
54
|
+
}else if (str2=="d"){
|
|
55
|
+
return str1*24*60*60*1000;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
},
|
|
60
|
+
setCookie (name, value, expiredays) {
|
|
61
|
+
let exdate = new Date(),strSec = this.getSec(expiredays)
|
|
62
|
+
exdate.setTime(exdate.getTime() + strSec*1)
|
|
63
|
+
document.cookie = name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString())+ "; domain=" + GetCookieDomain() + "; path=/";
|
|
64
|
+
},
|
|
65
|
+
isSpecialBQkey(){
|
|
66
|
+
return (this.getCookie('bqkey')=='hd'||this.getCookie('bqkey')=='sb')?true:false
|
|
67
|
+
},
|
|
68
|
+
isSpecialBQkeyNoSB(){
|
|
69
|
+
return (this.getCookie('bqkey')=='hd')?true:false
|
|
70
|
+
},
|
|
71
|
+
//判断是否登录
|
|
72
|
+
chkLogin(that){
|
|
73
|
+
// console.log(that.$route.fullPath)
|
|
74
|
+
if(that.$utils.isNull(this.getCookie('mtoken'))){
|
|
75
|
+
that.$utils.goLogin(that)
|
|
76
|
+
return false
|
|
77
|
+
}else{
|
|
78
|
+
return true
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
isWeiXin(){
|
|
83
|
+
//window.navigator.userAgent属性包含了浏览器类型、版本、操作系统类型、浏览器引擎类型等信息,这个属性可以用来判断浏览器类型
|
|
84
|
+
let ua = window.navigator.userAgent.toLowerCase();
|
|
85
|
+
//通过正则表达式匹配ua中是否含有MicroMessenger字符串
|
|
86
|
+
if(ua.match(/MicroMessenger/i) == 'micromessenger'){
|
|
87
|
+
return true;
|
|
88
|
+
}else{
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
|
|
93
|
+
//判断是否为空
|
|
94
|
+
isNull(arg1) {
|
|
95
|
+
return !arg1 && arg1 !== 0 && typeof arg1 !== "boolean" ? true : false;
|
|
96
|
+
},
|
|
97
|
+
// 判断数值
|
|
98
|
+
checkNum(data) {
|
|
99
|
+
let regNum = /^[0-9]*$/;
|
|
100
|
+
return regNum.test(data);
|
|
101
|
+
},
|
|
102
|
+
// 判断身份证
|
|
103
|
+
checkIDcard(data){
|
|
104
|
+
let regNum = /^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X|x)?$/ // /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
|
|
105
|
+
return regNum.test(data);
|
|
106
|
+
},
|
|
107
|
+
//判断数值
|
|
108
|
+
checkMoney(data){
|
|
109
|
+
let regNum = /^\d+(\.\d{1,2})?$/;
|
|
110
|
+
return regNum.test(data);
|
|
111
|
+
},
|
|
112
|
+
toUpper(str){
|
|
113
|
+
if(this.isNull(str)) {
|
|
114
|
+
return ""
|
|
115
|
+
}else{
|
|
116
|
+
return str.toUpperCase()
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
//换算已售数量
|
|
120
|
+
calSale(sold){
|
|
121
|
+
let sales=0
|
|
122
|
+
if (sold < 10000) {
|
|
123
|
+
sales = sold;
|
|
124
|
+
} else if (sold < 99000) {
|
|
125
|
+
sales = this.keepADecimal(sold / 10000);
|
|
126
|
+
sales = sales + "万";
|
|
127
|
+
} else {
|
|
128
|
+
sales = '9.9万+';
|
|
129
|
+
}
|
|
130
|
+
return sales
|
|
131
|
+
},
|
|
132
|
+
keepADecimal(oldvalue) {
|
|
133
|
+
let match = /^(\d+(\.\d)?)(\d*)$/;
|
|
134
|
+
let test = match.test(oldvalue);
|
|
135
|
+
let newvalue = RegExp.$1;
|
|
136
|
+
if (newvalue.indexOf(".") > 0) {
|
|
137
|
+
let arr = newvalue.split(".");
|
|
138
|
+
if (arr[1] == "0") {
|
|
139
|
+
newvalue = arr[0];
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return newvalue;
|
|
143
|
+
},
|
|
144
|
+
// 判断手机号码
|
|
145
|
+
checkPhoneNum(data) {
|
|
146
|
+
let regNum = /^1\d{10}$/;
|
|
147
|
+
// let regNum = /^([0-9]\d{0,10})$/; // 小于等于11位数字都可以过
|
|
148
|
+
return regNum.test(data);
|
|
149
|
+
},
|
|
150
|
+
checkEmail(eMail){
|
|
151
|
+
if (eMail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
|
|
152
|
+
return true;
|
|
153
|
+
else
|
|
154
|
+
return false;
|
|
155
|
+
},
|
|
156
|
+
contains(arr,id){
|
|
157
|
+
for(let i in arr) {
|
|
158
|
+
if (arr[i] == id) return true;
|
|
159
|
+
}
|
|
160
|
+
return false;
|
|
161
|
+
},
|
|
162
|
+
getQueryString(name){
|
|
163
|
+
let reg = new RegExp("(^|&)"+name+"=([^&]*)(&|$)");
|
|
164
|
+
let result = window.location.href.substr(1).match(reg);
|
|
165
|
+
return result?decodeURIComponent(result[2]):null;
|
|
166
|
+
},
|
|
167
|
+
getUrlKey(name){
|
|
168
|
+
return decodeURIComponent((new RegExp('[?|&]'+name+'='+'([^&;]+?)(&|#|;|$)').exec(location.href)||[,""])[1].replace(/\+/g,'%20'))||null;
|
|
169
|
+
},
|
|
170
|
+
setUploadFileName (fileName) {
|
|
171
|
+
let timestamp = new Date().getTime();
|
|
172
|
+
let pos = fileName.lastIndexOf(".");
|
|
173
|
+
let lastname = fileName.substring(pos, fileName.length);
|
|
174
|
+
return timestamp + lastname;
|
|
175
|
+
},
|
|
176
|
+
convertBase64UrlToBlob (urlData){
|
|
177
|
+
let bytes=window.atob(urlData.split(',')[1]); //去掉url的头,并转换为byte
|
|
178
|
+
//处理异常,将ascii码小于0的转换为大于0
|
|
179
|
+
let ab = new ArrayBuffer(bytes.length);
|
|
180
|
+
let ia = new Uint8Array(ab);
|
|
181
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
182
|
+
ia[i] = bytes.charCodeAt(i);
|
|
183
|
+
}
|
|
184
|
+
return new Blob( [ab] , {type : 'image/png'});
|
|
185
|
+
},
|
|
186
|
+
timestampToTime (timestamp) {
|
|
187
|
+
let date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
|
|
188
|
+
let Y = date.getFullYear() + '/';
|
|
189
|
+
let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '/';
|
|
190
|
+
let D = (date.getDate()<10 ? '0'+date.getDate():date.getDate()) + ' ';
|
|
191
|
+
let h = (date.getHours()>9?date.getHours():('0'+date.getHours())) + ':';//date.getHours() + ':';
|
|
192
|
+
let m = (date.getMinutes()>9?date.getMinutes():('0'+date.getMinutes())) + ':';
|
|
193
|
+
let s = (date.getSeconds()>9?date.getSeconds():('0'+date.getSeconds()));//date.getSeconds();
|
|
194
|
+
return Y+M+D+h+m+s;
|
|
195
|
+
},
|
|
196
|
+
checkUrl(){
|
|
197
|
+
//let paths = window.location.href.split('#')
|
|
198
|
+
//paths[1] = paths[1] || '/'
|
|
199
|
+
//// 老式的#!分隔跳转
|
|
200
|
+
//if (paths[0].charAt(paths[0].length - 1) !== '?') {
|
|
201
|
+
// paths[0] = `${paths[0]}?`
|
|
202
|
+
//}
|
|
203
|
+
//if (paths[1].charAt(0) === '!') {
|
|
204
|
+
// paths[1] = paths[1].substr(1)
|
|
205
|
+
//}
|
|
206
|
+
//let url = `${paths[0]}#${paths[1]}`
|
|
207
|
+
//localStorage.setItem("rurl",url)
|
|
208
|
+
//if (window.location.href !== url) {
|
|
209
|
+
// window.location.href = url
|
|
210
|
+
//}
|
|
211
|
+
},
|
|
212
|
+
getNaturalWH(src){
|
|
213
|
+
// 获取图片比例系数
|
|
214
|
+
let img = new Image();
|
|
215
|
+
img.src = src;
|
|
216
|
+
if(img.complete){
|
|
217
|
+
return img.width/img.height
|
|
218
|
+
}else{
|
|
219
|
+
img.onload = function(){
|
|
220
|
+
return img.width/img.height
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
dateFormat (date, fmt) {
|
|
225
|
+
let o = {
|
|
226
|
+
"M+": date.getMonth() + 1,
|
|
227
|
+
"d+": date.getDate()
|
|
228
|
+
};
|
|
229
|
+
if(/(y+)/.test(fmt))
|
|
230
|
+
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
|
|
231
|
+
for(let k in o)
|
|
232
|
+
if(new RegExp("(" + k + ")").test(fmt))
|
|
233
|
+
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
|
|
234
|
+
return fmt;
|
|
235
|
+
},
|
|
236
|
+
formatDateTime(timeStamp) {
|
|
237
|
+
let date = new Date();
|
|
238
|
+
date.setTime(timeStamp);
|
|
239
|
+
let y = date.getFullYear();
|
|
240
|
+
let m = date.getMonth() + 1;
|
|
241
|
+
m = m < 10 ? ('0' + m) : m;
|
|
242
|
+
let d = date.getDate();
|
|
243
|
+
d = d < 10 ? ('0' + d) : d;
|
|
244
|
+
let h = date.getHours();
|
|
245
|
+
h = h < 10 ? ('0' + h) : h;
|
|
246
|
+
let minute = date.getMinutes();
|
|
247
|
+
let second = date.getSeconds();
|
|
248
|
+
minute = minute < 10 ? ('0' + minute) : minute;
|
|
249
|
+
second = second < 10 ? ('0' + second) : second;
|
|
250
|
+
return y + '年' + m + '月' + d+'日'//+h+':'+minute+':'+second;
|
|
251
|
+
},
|
|
252
|
+
formatDateTime1(timeStamp) {
|
|
253
|
+
let date = new Date();
|
|
254
|
+
date.setTime(timeStamp);
|
|
255
|
+
let y = date.getFullYear();
|
|
256
|
+
let m = date.getMonth() + 1;
|
|
257
|
+
m = m < 10 ? ('0' + m) : m;
|
|
258
|
+
let d = date.getDate();
|
|
259
|
+
d = d < 10 ? ('0' + d) : d;
|
|
260
|
+
let h = date.getHours();
|
|
261
|
+
h = h < 10 ? ('0' + h) : h;
|
|
262
|
+
let minute = date.getMinutes();
|
|
263
|
+
let second = date.getSeconds();
|
|
264
|
+
minute = minute < 10 ? ('0' + minute) : minute;
|
|
265
|
+
second = second < 10 ? ('0' + second) : second;
|
|
266
|
+
return y + '年' + m + '月' + d+'日<br>'+h+':'+minute+':'+second;
|
|
267
|
+
},
|
|
268
|
+
timeFn (d1,d2) {//di作为一个变量传进来
|
|
269
|
+
//如果时间格式是正确的,那下面这一步转化时间格式就可以不用了
|
|
270
|
+
let dateBegin = new Date(d1.replace(/-/g, "/"));//将-转化为/,使用new Date
|
|
271
|
+
let dateEnd = new Date(d2.replace(/-/g, "/"));//获取当前时间
|
|
272
|
+
let dateDiff = dateEnd.getTime() - dateBegin.getTime();//时间差的毫秒数
|
|
273
|
+
// let dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000));//计算出相差天数
|
|
274
|
+
// let leave1=dateDiff%(24*3600*1000) //计算天数后剩余的毫秒数
|
|
275
|
+
// let hours=Math.floor(leave1/(3600*1000))//计算出小时数
|
|
276
|
+
// //计算相差分钟数
|
|
277
|
+
// let leave2=leave1%(3600*1000) //计算小时数后剩余的毫秒数
|
|
278
|
+
// let minutes=Math.floor(leave2/(60*1000))//计算相差分钟数
|
|
279
|
+
// //计算相差秒数
|
|
280
|
+
// let leave3=leave2%(60*1000) //计算分钟数后剩余的毫秒数
|
|
281
|
+
// let seconds=Math.round(leave3/1000)
|
|
282
|
+
return dateDiff/1000
|
|
283
|
+
// console.log(" 相差 "+dayDiff+"天 "+hours+"小时 "+minutes+" 分钟"+seconds+" 秒")
|
|
284
|
+
// console.log(dateDiff+"时间差的毫秒数",dayDiff+"计算出相差天数",leave1+"计算天数后剩余的毫秒数"
|
|
285
|
+
// ,hours+"计算出小时数",minutes+"计算相差分钟数",seconds+"计算相差秒数");
|
|
286
|
+
},
|
|
287
|
+
guid () {
|
|
288
|
+
function S4() {
|
|
289
|
+
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
|
|
290
|
+
}
|
|
291
|
+
return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
|
|
292
|
+
},
|
|
293
|
+
checkiPhone () {
|
|
294
|
+
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
|
|
295
|
+
return true
|
|
296
|
+
}else{
|
|
297
|
+
return false
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
encrypt(publicKey,plainTxt){
|
|
301
|
+
// 实例化一个RSA对象
|
|
302
|
+
const rsaInstance = new JSEncrypt();
|
|
303
|
+
|
|
304
|
+
// 设置公钥和私钥
|
|
305
|
+
rsaInstance.setPublicKey(publicKey);
|
|
306
|
+
|
|
307
|
+
// 加密字符串
|
|
308
|
+
const encrypted = rsaInstance.encrypt(plainTxt);
|
|
309
|
+
|
|
310
|
+
console.log("加密后的密文:", encrypted);
|
|
311
|
+
|
|
312
|
+
// // 解密密文
|
|
313
|
+
// const decrypted = rsaInstance.decrypt(encrypted);
|
|
314
|
+
|
|
315
|
+
// console.log("解密后的明文:", decrypted);
|
|
316
|
+
return encrypted
|
|
317
|
+
},
|
|
318
|
+
|
|
319
|
+
sleep (delay){
|
|
320
|
+
return new Promise(resolve => setTimeout(resolve, delay));
|
|
321
|
+
},
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
var path = require('path')
|
|
2
|
+
var webpack = require('webpack')
|
|
3
|
+
const NODE_ENV = process.env.NODE_ENV
|
|
4
|
+
|
|
5
|
+
module.exports = {
|
|
6
|
+
// entry: './src/main.js',
|
|
7
|
+
entry: './index.js',
|
|
8
|
+
output: {
|
|
9
|
+
path: path.resolve(__dirname, './dist'),//NODE_ENV == 'development' ? './src/main.js':
|
|
10
|
+
publicPath: '/dist/',
|
|
11
|
+
filename: 'ulejftransfer.js',
|
|
12
|
+
library: 'ulejftransfer',
|
|
13
|
+
libraryTarget: 'umd',
|
|
14
|
+
umdNamedDefine: true
|
|
15
|
+
},
|
|
16
|
+
module: {
|
|
17
|
+
rules: [
|
|
18
|
+
{
|
|
19
|
+
test: /\.css$/,
|
|
20
|
+
use: [
|
|
21
|
+
'vue-style-loader',
|
|
22
|
+
'css-loader'
|
|
23
|
+
],
|
|
24
|
+
}, {
|
|
25
|
+
test: /\.vue$/,
|
|
26
|
+
loader: 'vue-loader',
|
|
27
|
+
options: {
|
|
28
|
+
loaders: {
|
|
29
|
+
}
|
|
30
|
+
// other vue-loader options go here
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
test: /\.js$/,
|
|
35
|
+
loader: 'babel-loader',
|
|
36
|
+
exclude: /node_modules/
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
test: /\.(png|jpg|gif|svg)$/,
|
|
40
|
+
loader: 'file-loader',
|
|
41
|
+
options: {
|
|
42
|
+
name: '[name].[ext]?[hash]'
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
resolve: {
|
|
48
|
+
alias: {
|
|
49
|
+
'vue$': 'vue/dist/vue.esm.js'
|
|
50
|
+
},
|
|
51
|
+
extensions: ['*', '.js', '.vue', '.json']
|
|
52
|
+
},
|
|
53
|
+
devServer: {
|
|
54
|
+
historyApiFallback: true,
|
|
55
|
+
noInfo: true,
|
|
56
|
+
overlay: true
|
|
57
|
+
},
|
|
58
|
+
performance: {
|
|
59
|
+
hints: false
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (process.env.NODE_ENV === 'production') {
|
|
64
|
+
module.exports.devtool = '#source-map'
|
|
65
|
+
// http://vue-loader.vuejs.org/en/workflow/production.html
|
|
66
|
+
module.exports.plugins = (module.exports.plugins || []).concat([
|
|
67
|
+
new webpack.DefinePlugin({
|
|
68
|
+
'process.env': {
|
|
69
|
+
NODE_ENV: '"production"'
|
|
70
|
+
}
|
|
71
|
+
}),
|
|
72
|
+
new webpack.optimize.UglifyJsPlugin({
|
|
73
|
+
sourceMap: true,
|
|
74
|
+
compress: {
|
|
75
|
+
warnings: false
|
|
76
|
+
}
|
|
77
|
+
}),
|
|
78
|
+
new webpack.LoaderOptionsPlugin({
|
|
79
|
+
minimize: true
|
|
80
|
+
})
|
|
81
|
+
])
|
|
82
|
+
}else{
|
|
83
|
+
module.exports.devtool = '#eval-source-map'
|
|
84
|
+
}
|