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 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>
@@ -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
+ }