9 Commits 883f84cccc ... 1e43a5e0c4

Author SHA1 Message Date
  listKer 1e43a5e0c4 feat: 选择优惠券 2 years ago
  黎海 43bed341c9 feat: 处理客户管理列表报错 2 years ago
  黎海 e47f1edb38 feat: 添加赶回按钮控制 2 years ago
  黎海 0cf3495b98 feat: 。。 2 years ago
  黎海 3aa8797295 feat: 。。 2 years ago
  黎海 2d1d682454 feat: .. 2 years ago
  黎海 042f1750de Merge branch 'hlg/20220512' of http://code.qutaovip.com/lihai/pad_spa into lihai 2 years ago
  黎海 b44f5eed45 feat: 配置服务器 2 years ago
  黎海 27a0b9c74c Merge branch 'hlg/20220512' of http://code.qutaovip.com/lihai/pad_spa into lihai 2 years ago

+ 38 - 68
package-lock.json

@@ -11,7 +11,10 @@
11
         "axios": "^0.27.2",
11
         "axios": "^0.27.2",
12
         "crypto-js": "^3.1.9-1",
12
         "crypto-js": "^3.1.9-1",
13
         "element-ui": "^2.8.2",
13
         "element-ui": "^2.8.2",
14
+        "js-cookie": "^3.0.1",
15
+        "qrcodejs2": "0.0.2",
14
         "vue": "^2.6.6",
16
         "vue": "^2.6.6",
17
+        "vue-infinite-scroll": "^2.0.2",
15
         "vue-router": "^3.0.1",
18
         "vue-router": "^3.0.1",
16
         "vuex": "^3.0.1"
19
         "vuex": "^3.0.1"
17
       },
20
       },
@@ -8692,7 +8695,7 @@
8692
     },
8695
     },
8693
     "node_modules/fsevents/node_modules/ansi-regex": {
8696
     "node_modules/fsevents/node_modules/ansi-regex": {
8694
       "version": "2.1.1",
8697
       "version": "2.1.1",
8695
-      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
8698
+      "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
8696
       "dev": true,
8699
       "dev": true,
8697
       "inBundle": true,
8700
       "inBundle": true,
8698
       "optional": true,
8701
       "optional": true,
@@ -8720,7 +8723,7 @@
8720
     },
8723
     },
8721
     "node_modules/fsevents/node_modules/balanced-match": {
8724
     "node_modules/fsevents/node_modules/balanced-match": {
8722
       "version": "1.0.0",
8725
       "version": "1.0.0",
8723
-      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
8726
+      "integrity": "sha512-9Y0g0Q8rmSt+H33DfKv7FOc3v+iRI+o1lbzt8jGcIosYW37IIW/2XVYq5NPdmaD5NQ59Nk26Kl/vZbwW9Fr8vg==",
8724
       "dev": true,
8727
       "dev": true,
8725
       "inBundle": true,
8728
       "inBundle": true,
8726
       "optional": true
8729
       "optional": true
@@ -12681,6 +12684,14 @@
12681
         "js-beautify": "js/bin/js-beautify.js"
12684
         "js-beautify": "js/bin/js-beautify.js"
12682
       }
12685
       }
12683
     },
12686
     },
12687
+    "node_modules/js-cookie": {
12688
+      "version": "3.0.1",
12689
+      "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz",
12690
+      "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==",
12691
+      "engines": {
12692
+        "node": ">=12"
12693
+      }
12694
+    },
12684
     "node_modules/js-levenshtein": {
12695
     "node_modules/js-levenshtein": {
12685
       "version": "1.1.6",
12696
       "version": "1.1.6",
12686
       "resolved": "https://registry.npm.taobao.org/js-levenshtein/download/js-levenshtein-1.1.6.tgz",
12697
       "resolved": "https://registry.npm.taobao.org/js-levenshtein/download/js-levenshtein-1.1.6.tgz",
@@ -16144,6 +16155,11 @@
16144
         "teleport": ">=0.2.0"
16155
         "teleport": ">=0.2.0"
16145
       }
16156
       }
16146
     },
16157
     },
16158
+    "node_modules/qrcodejs2": {
16159
+      "version": "0.0.2",
16160
+      "resolved": "https://registry.npmjs.org/qrcodejs2/-/qrcodejs2-0.0.2.tgz",
16161
+      "integrity": "sha1-Rlr+Xjnxn6zsuTLBH3oYYQkUauE="
16162
+    },
16147
     "node_modules/qs": {
16163
     "node_modules/qs": {
16148
       "version": "6.5.2",
16164
       "version": "6.5.2",
16149
       "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
16165
       "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
@@ -19304,6 +19320,11 @@
19304
       "integrity": "sha1-J1b0bLMlgFTF9HI96K5+hzAqHM8=",
19320
       "integrity": "sha1-J1b0bLMlgFTF9HI96K5+hzAqHM8=",
19305
       "dev": true
19321
       "dev": true
19306
     },
19322
     },
19323
+    "node_modules/vue-infinite-scroll": {
19324
+      "version": "2.0.2",
19325
+      "resolved": "https://registry.npmjs.org/vue-infinite-scroll/-/vue-infinite-scroll-2.0.2.tgz",
19326
+      "integrity": "sha512-n+YghR059YmciANGJh9SsNWRi1YZEBVlODtmnb/12zI+4R72QZSWd+EuZ5mW6auEo/yaJXgxzwsuhvALVnm73A=="
19327
+    },
19307
     "node_modules/vue-jest": {
19328
     "node_modules/vue-jest": {
19308
       "version": "3.0.4",
19329
       "version": "3.0.4",
19309
       "resolved": "https://registry.npm.taobao.org/vue-jest/download/vue-jest-3.0.4.tgz",
19330
       "resolved": "https://registry.npm.taobao.org/vue-jest/download/vue-jest-3.0.4.tgz",
@@ -28311,28 +28332,24 @@
28311
       "dependencies": {
28332
       "dependencies": {
28312
         "abbrev": {
28333
         "abbrev": {
28313
           "version": "1.1.1",
28334
           "version": "1.1.1",
28314
-          "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
28315
           "bundled": true,
28335
           "bundled": true,
28316
           "dev": true,
28336
           "dev": true,
28317
           "optional": true
28337
           "optional": true
28318
         },
28338
         },
28319
         "ansi-regex": {
28339
         "ansi-regex": {
28320
           "version": "2.1.1",
28340
           "version": "2.1.1",
28321
-          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
28322
           "bundled": true,
28341
           "bundled": true,
28323
           "dev": true,
28342
           "dev": true,
28324
           "optional": true
28343
           "optional": true
28325
         },
28344
         },
28326
         "aproba": {
28345
         "aproba": {
28327
           "version": "1.2.0",
28346
           "version": "1.2.0",
28328
-          "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
28329
           "bundled": true,
28347
           "bundled": true,
28330
           "dev": true,
28348
           "dev": true,
28331
           "optional": true
28349
           "optional": true
28332
         },
28350
         },
28333
         "are-we-there-yet": {
28351
         "are-we-there-yet": {
28334
           "version": "1.1.5",
28352
           "version": "1.1.5",
28335
-          "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
28336
           "bundled": true,
28353
           "bundled": true,
28337
           "dev": true,
28354
           "dev": true,
28338
           "optional": true,
28355
           "optional": true,
@@ -28343,14 +28360,12 @@
28343
         },
28360
         },
28344
         "balanced-match": {
28361
         "balanced-match": {
28345
           "version": "1.0.0",
28362
           "version": "1.0.0",
28346
-          "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
28347
           "bundled": true,
28363
           "bundled": true,
28348
           "dev": true,
28364
           "dev": true,
28349
           "optional": true
28365
           "optional": true
28350
         },
28366
         },
28351
         "brace-expansion": {
28367
         "brace-expansion": {
28352
           "version": "1.1.11",
28368
           "version": "1.1.11",
28353
-          "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
28354
           "bundled": true,
28369
           "bundled": true,
28355
           "dev": true,
28370
           "dev": true,
28356
           "optional": true,
28371
           "optional": true,
@@ -28361,42 +28376,36 @@
28361
         },
28376
         },
28362
         "chownr": {
28377
         "chownr": {
28363
           "version": "1.1.1",
28378
           "version": "1.1.1",
28364
-          "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==",
28365
           "bundled": true,
28379
           "bundled": true,
28366
           "dev": true,
28380
           "dev": true,
28367
           "optional": true
28381
           "optional": true
28368
         },
28382
         },
28369
         "code-point-at": {
28383
         "code-point-at": {
28370
           "version": "1.1.0",
28384
           "version": "1.1.0",
28371
-          "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
28372
           "bundled": true,
28385
           "bundled": true,
28373
           "dev": true,
28386
           "dev": true,
28374
           "optional": true
28387
           "optional": true
28375
         },
28388
         },
28376
         "concat-map": {
28389
         "concat-map": {
28377
           "version": "0.0.1",
28390
           "version": "0.0.1",
28378
-          "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
28379
           "bundled": true,
28391
           "bundled": true,
28380
           "dev": true,
28392
           "dev": true,
28381
           "optional": true
28393
           "optional": true
28382
         },
28394
         },
28383
         "console-control-strings": {
28395
         "console-control-strings": {
28384
           "version": "1.1.0",
28396
           "version": "1.1.0",
28385
-          "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
28386
           "bundled": true,
28397
           "bundled": true,
28387
           "dev": true,
28398
           "dev": true,
28388
           "optional": true
28399
           "optional": true
28389
         },
28400
         },
28390
         "core-util-is": {
28401
         "core-util-is": {
28391
           "version": "1.0.2",
28402
           "version": "1.0.2",
28392
-          "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
28393
           "bundled": true,
28403
           "bundled": true,
28394
           "dev": true,
28404
           "dev": true,
28395
           "optional": true
28405
           "optional": true
28396
         },
28406
         },
28397
         "debug": {
28407
         "debug": {
28398
           "version": "4.1.1",
28408
           "version": "4.1.1",
28399
-          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
28400
           "bundled": true,
28409
           "bundled": true,
28401
           "dev": true,
28410
           "dev": true,
28402
           "optional": true,
28411
           "optional": true,
@@ -28406,28 +28415,24 @@
28406
         },
28415
         },
28407
         "deep-extend": {
28416
         "deep-extend": {
28408
           "version": "0.6.0",
28417
           "version": "0.6.0",
28409
-          "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
28410
           "bundled": true,
28418
           "bundled": true,
28411
           "dev": true,
28419
           "dev": true,
28412
           "optional": true
28420
           "optional": true
28413
         },
28421
         },
28414
         "delegates": {
28422
         "delegates": {
28415
           "version": "1.0.0",
28423
           "version": "1.0.0",
28416
-          "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
28417
           "bundled": true,
28424
           "bundled": true,
28418
           "dev": true,
28425
           "dev": true,
28419
           "optional": true
28426
           "optional": true
28420
         },
28427
         },
28421
         "detect-libc": {
28428
         "detect-libc": {
28422
           "version": "1.0.3",
28429
           "version": "1.0.3",
28423
-          "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
28424
           "bundled": true,
28430
           "bundled": true,
28425
           "dev": true,
28431
           "dev": true,
28426
           "optional": true
28432
           "optional": true
28427
         },
28433
         },
28428
         "fs-minipass": {
28434
         "fs-minipass": {
28429
           "version": "1.2.5",
28435
           "version": "1.2.5",
28430
-          "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
28431
           "bundled": true,
28436
           "bundled": true,
28432
           "dev": true,
28437
           "dev": true,
28433
           "optional": true,
28438
           "optional": true,
@@ -28437,14 +28442,12 @@
28437
         },
28442
         },
28438
         "fs.realpath": {
28443
         "fs.realpath": {
28439
           "version": "1.0.0",
28444
           "version": "1.0.0",
28440
-          "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
28441
           "bundled": true,
28445
           "bundled": true,
28442
           "dev": true,
28446
           "dev": true,
28443
           "optional": true
28447
           "optional": true
28444
         },
28448
         },
28445
         "gauge": {
28449
         "gauge": {
28446
           "version": "2.7.4",
28450
           "version": "2.7.4",
28447
-          "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
28448
           "bundled": true,
28451
           "bundled": true,
28449
           "dev": true,
28452
           "dev": true,
28450
           "optional": true,
28453
           "optional": true,
@@ -28461,7 +28464,6 @@
28461
         },
28464
         },
28462
         "glob": {
28465
         "glob": {
28463
           "version": "7.1.3",
28466
           "version": "7.1.3",
28464
-          "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
28465
           "bundled": true,
28467
           "bundled": true,
28466
           "dev": true,
28468
           "dev": true,
28467
           "optional": true,
28469
           "optional": true,
@@ -28476,14 +28478,12 @@
28476
         },
28478
         },
28477
         "has-unicode": {
28479
         "has-unicode": {
28478
           "version": "2.0.1",
28480
           "version": "2.0.1",
28479
-          "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
28480
           "bundled": true,
28481
           "bundled": true,
28481
           "dev": true,
28482
           "dev": true,
28482
           "optional": true
28483
           "optional": true
28483
         },
28484
         },
28484
         "iconv-lite": {
28485
         "iconv-lite": {
28485
           "version": "0.4.24",
28486
           "version": "0.4.24",
28486
-          "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
28487
           "bundled": true,
28487
           "bundled": true,
28488
           "dev": true,
28488
           "dev": true,
28489
           "optional": true,
28489
           "optional": true,
@@ -28493,7 +28493,6 @@
28493
         },
28493
         },
28494
         "ignore-walk": {
28494
         "ignore-walk": {
28495
           "version": "3.0.1",
28495
           "version": "3.0.1",
28496
-          "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
28497
           "bundled": true,
28496
           "bundled": true,
28498
           "dev": true,
28497
           "dev": true,
28499
           "optional": true,
28498
           "optional": true,
@@ -28503,7 +28502,6 @@
28503
         },
28502
         },
28504
         "inflight": {
28503
         "inflight": {
28505
           "version": "1.0.6",
28504
           "version": "1.0.6",
28506
-          "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
28507
           "bundled": true,
28505
           "bundled": true,
28508
           "dev": true,
28506
           "dev": true,
28509
           "optional": true,
28507
           "optional": true,
@@ -28514,21 +28512,18 @@
28514
         },
28512
         },
28515
         "inherits": {
28513
         "inherits": {
28516
           "version": "2.0.3",
28514
           "version": "2.0.3",
28517
-          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
28518
           "bundled": true,
28515
           "bundled": true,
28519
           "dev": true,
28516
           "dev": true,
28520
           "optional": true
28517
           "optional": true
28521
         },
28518
         },
28522
         "ini": {
28519
         "ini": {
28523
           "version": "1.3.5",
28520
           "version": "1.3.5",
28524
-          "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
28525
           "bundled": true,
28521
           "bundled": true,
28526
           "dev": true,
28522
           "dev": true,
28527
           "optional": true
28523
           "optional": true
28528
         },
28524
         },
28529
         "is-fullwidth-code-point": {
28525
         "is-fullwidth-code-point": {
28530
           "version": "1.0.0",
28526
           "version": "1.0.0",
28531
-          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
28532
           "bundled": true,
28527
           "bundled": true,
28533
           "dev": true,
28528
           "dev": true,
28534
           "optional": true,
28529
           "optional": true,
@@ -28538,14 +28533,12 @@
28538
         },
28533
         },
28539
         "isarray": {
28534
         "isarray": {
28540
           "version": "1.0.0",
28535
           "version": "1.0.0",
28541
-          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
28542
           "bundled": true,
28536
           "bundled": true,
28543
           "dev": true,
28537
           "dev": true,
28544
           "optional": true
28538
           "optional": true
28545
         },
28539
         },
28546
         "minimatch": {
28540
         "minimatch": {
28547
           "version": "3.0.4",
28541
           "version": "3.0.4",
28548
-          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
28549
           "bundled": true,
28542
           "bundled": true,
28550
           "dev": true,
28543
           "dev": true,
28551
           "optional": true,
28544
           "optional": true,
@@ -28555,14 +28548,12 @@
28555
         },
28548
         },
28556
         "minimist": {
28549
         "minimist": {
28557
           "version": "0.0.8",
28550
           "version": "0.0.8",
28558
-          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
28559
           "bundled": true,
28551
           "bundled": true,
28560
           "dev": true,
28552
           "dev": true,
28561
           "optional": true
28553
           "optional": true
28562
         },
28554
         },
28563
         "minipass": {
28555
         "minipass": {
28564
           "version": "2.3.5",
28556
           "version": "2.3.5",
28565
-          "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
28566
           "bundled": true,
28557
           "bundled": true,
28567
           "dev": true,
28558
           "dev": true,
28568
           "optional": true,
28559
           "optional": true,
@@ -28573,7 +28564,6 @@
28573
         },
28564
         },
28574
         "minizlib": {
28565
         "minizlib": {
28575
           "version": "1.2.1",
28566
           "version": "1.2.1",
28576
-          "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==",
28577
           "bundled": true,
28567
           "bundled": true,
28578
           "dev": true,
28568
           "dev": true,
28579
           "optional": true,
28569
           "optional": true,
@@ -28583,7 +28573,6 @@
28583
         },
28573
         },
28584
         "mkdirp": {
28574
         "mkdirp": {
28585
           "version": "0.5.1",
28575
           "version": "0.5.1",
28586
-          "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
28587
           "bundled": true,
28576
           "bundled": true,
28588
           "dev": true,
28577
           "dev": true,
28589
           "optional": true,
28578
           "optional": true,
@@ -28593,14 +28582,12 @@
28593
         },
28582
         },
28594
         "ms": {
28583
         "ms": {
28595
           "version": "2.1.1",
28584
           "version": "2.1.1",
28596
-          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
28597
           "bundled": true,
28585
           "bundled": true,
28598
           "dev": true,
28586
           "dev": true,
28599
           "optional": true
28587
           "optional": true
28600
         },
28588
         },
28601
         "needle": {
28589
         "needle": {
28602
           "version": "2.3.0",
28590
           "version": "2.3.0",
28603
-          "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==",
28604
           "bundled": true,
28591
           "bundled": true,
28605
           "dev": true,
28592
           "dev": true,
28606
           "optional": true,
28593
           "optional": true,
@@ -28612,7 +28599,6 @@
28612
         },
28599
         },
28613
         "node-pre-gyp": {
28600
         "node-pre-gyp": {
28614
           "version": "0.12.0",
28601
           "version": "0.12.0",
28615
-          "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==",
28616
           "bundled": true,
28602
           "bundled": true,
28617
           "dev": true,
28603
           "dev": true,
28618
           "optional": true,
28604
           "optional": true,
@@ -28631,7 +28617,6 @@
28631
         },
28617
         },
28632
         "nopt": {
28618
         "nopt": {
28633
           "version": "4.0.1",
28619
           "version": "4.0.1",
28634
-          "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
28635
           "bundled": true,
28620
           "bundled": true,
28636
           "dev": true,
28621
           "dev": true,
28637
           "optional": true,
28622
           "optional": true,
@@ -28642,14 +28627,12 @@
28642
         },
28627
         },
28643
         "npm-bundled": {
28628
         "npm-bundled": {
28644
           "version": "1.0.6",
28629
           "version": "1.0.6",
28645
-          "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==",
28646
           "bundled": true,
28630
           "bundled": true,
28647
           "dev": true,
28631
           "dev": true,
28648
           "optional": true
28632
           "optional": true
28649
         },
28633
         },
28650
         "npm-packlist": {
28634
         "npm-packlist": {
28651
           "version": "1.4.1",
28635
           "version": "1.4.1",
28652
-          "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==",
28653
           "bundled": true,
28636
           "bundled": true,
28654
           "dev": true,
28637
           "dev": true,
28655
           "optional": true,
28638
           "optional": true,
@@ -28660,7 +28643,6 @@
28660
         },
28643
         },
28661
         "npmlog": {
28644
         "npmlog": {
28662
           "version": "4.1.2",
28645
           "version": "4.1.2",
28663
-          "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
28664
           "bundled": true,
28646
           "bundled": true,
28665
           "dev": true,
28647
           "dev": true,
28666
           "optional": true,
28648
           "optional": true,
@@ -28673,21 +28655,18 @@
28673
         },
28655
         },
28674
         "number-is-nan": {
28656
         "number-is-nan": {
28675
           "version": "1.0.1",
28657
           "version": "1.0.1",
28676
-          "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
28677
           "bundled": true,
28658
           "bundled": true,
28678
           "dev": true,
28659
           "dev": true,
28679
           "optional": true
28660
           "optional": true
28680
         },
28661
         },
28681
         "object-assign": {
28662
         "object-assign": {
28682
           "version": "4.1.1",
28663
           "version": "4.1.1",
28683
-          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
28684
           "bundled": true,
28664
           "bundled": true,
28685
           "dev": true,
28665
           "dev": true,
28686
           "optional": true
28666
           "optional": true
28687
         },
28667
         },
28688
         "once": {
28668
         "once": {
28689
           "version": "1.4.0",
28669
           "version": "1.4.0",
28690
-          "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
28691
           "bundled": true,
28670
           "bundled": true,
28692
           "dev": true,
28671
           "dev": true,
28693
           "optional": true,
28672
           "optional": true,
@@ -28697,21 +28676,18 @@
28697
         },
28676
         },
28698
         "os-homedir": {
28677
         "os-homedir": {
28699
           "version": "1.0.2",
28678
           "version": "1.0.2",
28700
-          "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
28701
           "bundled": true,
28679
           "bundled": true,
28702
           "dev": true,
28680
           "dev": true,
28703
           "optional": true
28681
           "optional": true
28704
         },
28682
         },
28705
         "os-tmpdir": {
28683
         "os-tmpdir": {
28706
           "version": "1.0.2",
28684
           "version": "1.0.2",
28707
-          "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
28708
           "bundled": true,
28685
           "bundled": true,
28709
           "dev": true,
28686
           "dev": true,
28710
           "optional": true
28687
           "optional": true
28711
         },
28688
         },
28712
         "osenv": {
28689
         "osenv": {
28713
           "version": "0.1.5",
28690
           "version": "0.1.5",
28714
-          "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
28715
           "bundled": true,
28691
           "bundled": true,
28716
           "dev": true,
28692
           "dev": true,
28717
           "optional": true,
28693
           "optional": true,
@@ -28722,21 +28698,18 @@
28722
         },
28698
         },
28723
         "path-is-absolute": {
28699
         "path-is-absolute": {
28724
           "version": "1.0.1",
28700
           "version": "1.0.1",
28725
-          "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
28726
           "bundled": true,
28701
           "bundled": true,
28727
           "dev": true,
28702
           "dev": true,
28728
           "optional": true
28703
           "optional": true
28729
         },
28704
         },
28730
         "process-nextick-args": {
28705
         "process-nextick-args": {
28731
           "version": "2.0.0",
28706
           "version": "2.0.0",
28732
-          "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
28733
           "bundled": true,
28707
           "bundled": true,
28734
           "dev": true,
28708
           "dev": true,
28735
           "optional": true
28709
           "optional": true
28736
         },
28710
         },
28737
         "rc": {
28711
         "rc": {
28738
           "version": "1.2.8",
28712
           "version": "1.2.8",
28739
-          "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
28740
           "bundled": true,
28713
           "bundled": true,
28741
           "dev": true,
28714
           "dev": true,
28742
           "optional": true,
28715
           "optional": true,
@@ -28749,7 +28722,6 @@
28749
           "dependencies": {
28722
           "dependencies": {
28750
             "minimist": {
28723
             "minimist": {
28751
               "version": "1.2.0",
28724
               "version": "1.2.0",
28752
-              "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
28753
               "bundled": true,
28725
               "bundled": true,
28754
               "dev": true,
28726
               "dev": true,
28755
               "optional": true
28727
               "optional": true
@@ -28758,7 +28730,6 @@
28758
         },
28730
         },
28759
         "readable-stream": {
28731
         "readable-stream": {
28760
           "version": "2.3.6",
28732
           "version": "2.3.6",
28761
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
28762
           "bundled": true,
28733
           "bundled": true,
28763
           "dev": true,
28734
           "dev": true,
28764
           "optional": true,
28735
           "optional": true,
@@ -28774,7 +28745,6 @@
28774
         },
28745
         },
28775
         "rimraf": {
28746
         "rimraf": {
28776
           "version": "2.6.3",
28747
           "version": "2.6.3",
28777
-          "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
28778
           "bundled": true,
28748
           "bundled": true,
28779
           "dev": true,
28749
           "dev": true,
28780
           "optional": true,
28750
           "optional": true,
@@ -28784,49 +28754,42 @@
28784
         },
28754
         },
28785
         "safe-buffer": {
28755
         "safe-buffer": {
28786
           "version": "5.1.2",
28756
           "version": "5.1.2",
28787
-          "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
28788
           "bundled": true,
28757
           "bundled": true,
28789
           "dev": true,
28758
           "dev": true,
28790
           "optional": true
28759
           "optional": true
28791
         },
28760
         },
28792
         "safer-buffer": {
28761
         "safer-buffer": {
28793
           "version": "2.1.2",
28762
           "version": "2.1.2",
28794
-          "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
28795
           "bundled": true,
28763
           "bundled": true,
28796
           "dev": true,
28764
           "dev": true,
28797
           "optional": true
28765
           "optional": true
28798
         },
28766
         },
28799
         "sax": {
28767
         "sax": {
28800
           "version": "1.2.4",
28768
           "version": "1.2.4",
28801
-          "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
28802
           "bundled": true,
28769
           "bundled": true,
28803
           "dev": true,
28770
           "dev": true,
28804
           "optional": true
28771
           "optional": true
28805
         },
28772
         },
28806
         "semver": {
28773
         "semver": {
28807
           "version": "5.7.0",
28774
           "version": "5.7.0",
28808
-          "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
28809
           "bundled": true,
28775
           "bundled": true,
28810
           "dev": true,
28776
           "dev": true,
28811
           "optional": true
28777
           "optional": true
28812
         },
28778
         },
28813
         "set-blocking": {
28779
         "set-blocking": {
28814
           "version": "2.0.0",
28780
           "version": "2.0.0",
28815
-          "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
28816
           "bundled": true,
28781
           "bundled": true,
28817
           "dev": true,
28782
           "dev": true,
28818
           "optional": true
28783
           "optional": true
28819
         },
28784
         },
28820
         "signal-exit": {
28785
         "signal-exit": {
28821
           "version": "3.0.2",
28786
           "version": "3.0.2",
28822
-          "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
28823
           "bundled": true,
28787
           "bundled": true,
28824
           "dev": true,
28788
           "dev": true,
28825
           "optional": true
28789
           "optional": true
28826
         },
28790
         },
28827
         "string_decoder": {
28791
         "string_decoder": {
28828
           "version": "1.1.1",
28792
           "version": "1.1.1",
28829
-          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
28830
           "bundled": true,
28793
           "bundled": true,
28831
           "dev": true,
28794
           "dev": true,
28832
           "optional": true,
28795
           "optional": true,
@@ -28836,7 +28799,6 @@
28836
         },
28799
         },
28837
         "string-width": {
28800
         "string-width": {
28838
           "version": "1.0.2",
28801
           "version": "1.0.2",
28839
-          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
28840
           "bundled": true,
28802
           "bundled": true,
28841
           "dev": true,
28803
           "dev": true,
28842
           "optional": true,
28804
           "optional": true,
@@ -28848,7 +28810,6 @@
28848
         },
28810
         },
28849
         "strip-ansi": {
28811
         "strip-ansi": {
28850
           "version": "3.0.1",
28812
           "version": "3.0.1",
28851
-          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
28852
           "bundled": true,
28813
           "bundled": true,
28853
           "dev": true,
28814
           "dev": true,
28854
           "optional": true,
28815
           "optional": true,
@@ -28858,14 +28819,12 @@
28858
         },
28819
         },
28859
         "strip-json-comments": {
28820
         "strip-json-comments": {
28860
           "version": "2.0.1",
28821
           "version": "2.0.1",
28861
-          "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
28862
           "bundled": true,
28822
           "bundled": true,
28863
           "dev": true,
28823
           "dev": true,
28864
           "optional": true
28824
           "optional": true
28865
         },
28825
         },
28866
         "tar": {
28826
         "tar": {
28867
           "version": "4.4.8",
28827
           "version": "4.4.8",
28868
-          "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==",
28869
           "bundled": true,
28828
           "bundled": true,
28870
           "dev": true,
28829
           "dev": true,
28871
           "optional": true,
28830
           "optional": true,
@@ -28881,14 +28840,12 @@
28881
         },
28840
         },
28882
         "util-deprecate": {
28841
         "util-deprecate": {
28883
           "version": "1.0.2",
28842
           "version": "1.0.2",
28884
-          "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
28885
           "bundled": true,
28843
           "bundled": true,
28886
           "dev": true,
28844
           "dev": true,
28887
           "optional": true
28845
           "optional": true
28888
         },
28846
         },
28889
         "wide-align": {
28847
         "wide-align": {
28890
           "version": "1.1.3",
28848
           "version": "1.1.3",
28891
-          "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
28892
           "bundled": true,
28849
           "bundled": true,
28893
           "dev": true,
28850
           "dev": true,
28894
           "optional": true,
28851
           "optional": true,
@@ -28898,14 +28855,12 @@
28898
         },
28855
         },
28899
         "wrappy": {
28856
         "wrappy": {
28900
           "version": "1.0.2",
28857
           "version": "1.0.2",
28901
-          "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
28902
           "bundled": true,
28858
           "bundled": true,
28903
           "dev": true,
28859
           "dev": true,
28904
           "optional": true
28860
           "optional": true
28905
         },
28861
         },
28906
         "yallist": {
28862
         "yallist": {
28907
           "version": "3.0.3",
28863
           "version": "3.0.3",
28908
-          "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
28909
           "bundled": true,
28864
           "bundled": true,
28910
           "dev": true,
28865
           "dev": true,
28911
           "optional": true
28866
           "optional": true
@@ -31626,6 +31581,11 @@
31626
         "nopt": "~4.0.1"
31581
         "nopt": "~4.0.1"
31627
       }
31582
       }
31628
     },
31583
     },
31584
+    "js-cookie": {
31585
+      "version": "3.0.1",
31586
+      "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz",
31587
+      "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw=="
31588
+    },
31629
     "js-levenshtein": {
31589
     "js-levenshtein": {
31630
       "version": "1.1.6",
31590
       "version": "1.1.6",
31631
       "resolved": "https://registry.npm.taobao.org/js-levenshtein/download/js-levenshtein-1.1.6.tgz",
31591
       "resolved": "https://registry.npm.taobao.org/js-levenshtein/download/js-levenshtein-1.1.6.tgz",
@@ -34457,6 +34417,11 @@
34457
       "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=",
34417
       "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=",
34458
       "dev": true
34418
       "dev": true
34459
     },
34419
     },
34420
+    "qrcodejs2": {
34421
+      "version": "0.0.2",
34422
+      "resolved": "https://registry.npmjs.org/qrcodejs2/-/qrcodejs2-0.0.2.tgz",
34423
+      "integrity": "sha1-Rlr+Xjnxn6zsuTLBH3oYYQkUauE="
34424
+    },
34460
     "qs": {
34425
     "qs": {
34461
       "version": "6.5.2",
34426
       "version": "6.5.2",
34462
       "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
34427
       "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
@@ -37076,6 +37041,11 @@
37076
       "integrity": "sha1-J1b0bLMlgFTF9HI96K5+hzAqHM8=",
37041
       "integrity": "sha1-J1b0bLMlgFTF9HI96K5+hzAqHM8=",
37077
       "dev": true
37042
       "dev": true
37078
     },
37043
     },
37044
+    "vue-infinite-scroll": {
37045
+      "version": "2.0.2",
37046
+      "resolved": "https://registry.npmjs.org/vue-infinite-scroll/-/vue-infinite-scroll-2.0.2.tgz",
37047
+      "integrity": "sha512-n+YghR059YmciANGJh9SsNWRi1YZEBVlODtmnb/12zI+4R72QZSWd+EuZ5mW6auEo/yaJXgxzwsuhvALVnm73A=="
37048
+    },
37079
     "vue-jest": {
37049
     "vue-jest": {
37080
       "version": "3.0.4",
37050
       "version": "3.0.4",
37081
       "resolved": "https://registry.npm.taobao.org/vue-jest/download/vue-jest-3.0.4.tgz",
37051
       "resolved": "https://registry.npm.taobao.org/vue-jest/download/vue-jest-3.0.4.tgz",

+ 2 - 0
package.json

@@ -15,7 +15,9 @@
15
     "crypto-js": "^3.1.9-1",
15
     "crypto-js": "^3.1.9-1",
16
     "element-ui": "^2.8.2",
16
     "element-ui": "^2.8.2",
17
     "js-cookie": "^3.0.1",
17
     "js-cookie": "^3.0.1",
18
+    "qrcodejs2": "0.0.2",
18
     "vue": "^2.6.6",
19
     "vue": "^2.6.6",
20
+    "vue-infinite-scroll": "^2.0.2",
19
     "vue-router": "^3.0.1",
21
     "vue-router": "^3.0.1",
20
     "vuex": "^3.0.1"
22
     "vuex": "^3.0.1"
21
   },
23
   },

+ 18 - 16
public/index.html

@@ -1,18 +1,20 @@
1
 <!DOCTYPE html>
1
 <!DOCTYPE html>
2
 <html lang="en">
2
 <html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
-    <meta name="viewport" content="width=device-width,initial-scale=1.0">
7
-    <title>玖哩仪器操作平台</title>
8
-  </head>
9
-  <body>
10
-    <noscript>
11
-      <strong>您的浏览器版本较低,请升级最新版浏览器</strong>
12
-    </noscript>
13
-    <div id="app"></div>
14
-    <script src="https://ydcommon.51yund.com/vue/axios.min.js"></script>
15
-    <script src="https://ydcommon.51yund.com/vue/yd_collect2.js"></script>
16
-    <!-- built files will be auto injected -->
17
-  </body>
18
-</html>
3
+
4
+<head>
5
+  <meta charset="utf-8">
6
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
7
+  <meta name="viewport" content="width=device-width,initial-scale=1.0">
8
+  <title>玖哩仪器操作平台</title>
9
+</head>
10
+
11
+<body>
12
+  <noscript>
13
+    <strong>您的浏览器版本较低,请升级最新版浏览器</strong>
14
+  </noscript>
15
+  <div id="app"></div>
16
+  <script src="https://ydcommon.51yund.com/vue/axios.min.js"></script>
17
+  <!-- built files will be auto injected -->
18
+</body>
19
+
20
+</html>

+ 1 - 1
src/common/utils.js

@@ -25,7 +25,7 @@ const utils = {
25
     }
25
     }
26
     return fmt;
26
     return fmt;
27
   },
27
   },
28
- 
28
+
29
 
29
 
30
 }
30
 }
31
 
31
 

+ 6 - 1
src/components/common/layout/layout.vue

@@ -2,7 +2,8 @@
2
   <div class="layout">
2
   <div class="layout">
3
     <div class="menu-wrapper">
3
     <div class="menu-wrapper">
4
       <left-menu :isCollapse='isFold'
4
       <left-menu :isCollapse='isFold'
5
-                 @changeMenu="changeMenu"></left-menu>
5
+                 @changeMenu="changeMenu"
6
+                 @changeIsBack="changeIsBack"></left-menu>
6
     </div>
7
     </div>
7
     <div class="content">
8
     <div class="content">
8
       <header :style="menuIndex==0?'justify-content: space-between;':''">
9
       <header :style="menuIndex==0?'justify-content: space-between;':''">
@@ -41,6 +42,7 @@
41
 import leftMenu from './leftMenu'
42
 import leftMenu from './leftMenu'
42
 import api from '@/server/home'
43
 import api from '@/server/home'
43
 
44
 
45
+
44
 export default {
46
 export default {
45
   data () {
47
   data () {
46
     return {
48
     return {
@@ -76,6 +78,9 @@ export default {
76
     changeMenu (index) {
78
     changeMenu (index) {
77
       this.menuIndex = index
79
       this.menuIndex = index
78
     },
80
     },
81
+    changeIsBack (isback) {
82
+      this.isback = isback
83
+    },
79
     goBack () {
84
     goBack () {
80
       this.$router.back()
85
       this.$router.back()
81
     }
86
     }

+ 3 - 2
src/components/common/layout/leftMenu.vue

@@ -88,8 +88,9 @@ export default {
88
   },
88
   },
89
   watch: {
89
   watch: {
90
     $route (to, from) {
90
     $route (to, from) {
91
-      let patname = `/${window.location.pathname.split('/')[1]}`
92
-      console.log(patname, 'patname');
91
+      let patname = `/${window.location.hash.split('/')[1]}`
92
+      console.log(patname, 'patname', to);
93
+      this.$emit('changeIsBack', to.meta.isback)
93
       this.menu.forEach((item, index) => {
94
       this.menu.forEach((item, index) => {
94
         if (patname == item.path) {
95
         if (patname == item.path) {
95
           this.nowIndex = index
96
           this.nowIndex = index

+ 3 - 0
src/main.js

@@ -7,6 +7,7 @@ import ElementUI from 'element-ui'
7
 import 'element-ui/lib/theme-chalk/index.css'
7
 import 'element-ui/lib/theme-chalk/index.css'
8
 import auth from './common/auth'
8
 import auth from './common/auth'
9
 import { injectGlobal } from './common/'
9
 import { injectGlobal } from './common/'
10
+import infiniteScroll from "vue-infinite-scroll";
10
 import './style/reset.less'
11
 import './style/reset.less'
11
 import './style/common.less'
12
 import './style/common.less'
12
 import './assets/font/iconfont.css'
13
 import './assets/font/iconfont.css'
@@ -14,6 +15,8 @@ import './style/index.less'
14
 import './filters/filter'
15
 import './filters/filter'
15
 //全局注入
16
 //全局注入
16
 Vue.use(ElementUI)
17
 Vue.use(ElementUI)
18
+Vue.use(infiniteScroll);
19
+
17
 injectGlobal()
20
 injectGlobal()
18
 
21
 
19
 window.globalVue = "";
22
 window.globalVue = "";

+ 508 - 118
src/pages/confirmOrder/details/index.vue

@@ -12,7 +12,8 @@
12
         </div>
12
         </div>
13
       </div>
13
       </div>
14
       <div class="user-record">
14
       <div class="user-record">
15
-        <div class="fraction">
15
+        <div class="fraction"
16
+             @click="isPore=true">
16
           <div class="title">肌肤得分</div>
17
           <div class="title">肌肤得分</div>
17
           <div class="num">{{userInfo.score}}分</div>
18
           <div class="num">{{userInfo.score}}分</div>
18
         </div>
19
         </div>
@@ -82,7 +83,7 @@
82
       </div>
83
       </div>
83
       <div class="project">
84
       <div class="project">
84
         <div class="project-title">
85
         <div class="project-title">
85
-          <div>共<span>{{order_data.project_list.length}}个</span>项目</div>
86
+          <div>共<span>{{order_data.project_list?order_data.project_list.length:0}}个</span>项目</div>
86
           <div class="add-project"
87
           <div class="add-project"
87
                @click="addProject">添加</div>
88
                @click="addProject">添加</div>
88
         </div>
89
         </div>
@@ -116,25 +117,51 @@
116
            v-if="!isChange">
117
            v-if="!isChange">
117
         <div class="cost-title">
118
         <div class="cost-title">
118
           <div>预约费用</div>
119
           <div>预约费用</div>
119
-          <div>¥399</div>
120
+          <div>¥{{reservationPrice}}</div>
120
         </div>
121
         </div>
121
         <div class="cost-coupon-list">
122
         <div class="cost-coupon-list">
122
-          <div class="coupon">
123
+          <div class="coupon"
124
+               @click="onCoupon">
123
             <div class="coupon-tips">
125
             <div class="coupon-tips">
124
               <div class="coupon-icon"><img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/couponIcon.png"
126
               <div class="coupon-icon"><img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/couponIcon.png"
125
                      alt=""></div>
127
                      alt=""></div>
126
               <div class="coupon-title">优惠卷</div>
128
               <div class="coupon-title">优惠卷</div>
127
-              <div class="coupon-tip">已选推荐优惠</div>
129
+              <div class="coupon-tip"
130
+                   v-if="order_data.coupon_list&&order_data.coupon_list.length>0">已选推荐优惠</div>
128
             </div>
131
             </div>
129
             <div class="on-icon">></div>
132
             <div class="on-icon">></div>
130
           </div>
133
           </div>
131
-          <div class="coupon-ps">
132
-            <div>【敏感维稳】多元修护加乘维稳</div>
133
-            <div class="cou-price">-¥100</div>
134
+
135
+
136
+          <!-- <div v-if="order_data.coupon_list&&order_data.coupon_list.length>0">
137
+            <div class="coupon-ps"
138
+                 v-for="item,index in order_data.coupon_list"
139
+                 :key="index">
140
+              <div>{{item.coupon_name}}</div>
141
+              <div class="cou-price">-¥{{price}}</div>
142
+            </div>
143
+          </div> -->
144
+
145
+          <div v-if="1==1">
146
+            <div class="coupon-ps"
147
+                 v-for="item,index in isSelectCoup"
148
+                 :key="index">
149
+              <div>{{item.coupon_name}}</div>
150
+      <div class="cou-price" v-if="item.type==4?true:false">抵扣{{item.projectName}}</div>
151
+      <div class="cou-price" v-if="item.type==3?true:false">抵扣全部项目(除升级包)</div>
152
+      <div class="cou-price" v-if="item.type==2?true:false">¥{{item.price}}</div>
153
+      <div class="cou-price" v-if="item.type==1?true:false">¥{{item.price}}</div>
154
+                    <!-- <div class="cou-price">-¥{{price}}</div> -->
155
+            </div>
134
           </div>
156
           </div>
157
+
158
+
159
+
160
+
161
+
135
         </div>
162
         </div>
136
         <div class="over-price">
163
         <div class="over-price">
137
-          合计: <span class="price-num"><span class="min-size">¥</span>399<span class="min-size">.00</span></span>
164
+          合计: <span class="price-num"><span class="min-size">¥</span>{{showMoney}}<span class="min-size"></span></span>
138
         </div>
165
         </div>
139
       </div>
166
       </div>
140
       <div class="payment"
167
       <div class="payment"
@@ -147,35 +174,43 @@
147
              @click="isCoupun=false"><img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/delete.png"
174
              @click="isCoupun=false"><img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/delete.png"
148
                alt=""></div>
175
                alt=""></div>
149
         <div class="coupon-pupop-title">选择优惠券</div>
176
         <div class="coupon-pupop-title">选择优惠券</div>
150
-        <div class="coupon-lists">
151
-          <div class="coupon-info">
177
+        <ul class="coupon-lists">
178
+          <li class="coupon-info"
179
+              v-for="item,index in couponList"
180
+              :key="index">
181
+  <!-- 1: '抵扣券',
182
+      2: '满减券',
183
+      3: '全额减免券',
184
+      4: '项目卡券' -->
185
+            <div class="coupon-tips-text">{{item.type==1?'抵扣券':item.type==2?'满减券':item.type==3?'全额减免券':'项目卡券'}}</div>
152
             <div class="top">
186
             <div class="top">
153
-              <div v-if="false"
154
-                   class="all-free">全免</div>
187
+              <div v-if="item.type==3"
188
+                   class="discount-over">全免</div>
155
               <div v-else
189
               <div v-else
156
                    class="discount">
190
                    class="discount">
157
-                <div class="price-num"><span class="size">¥</span>10<span class="size">.00</span></div>
158
-                <div class="price-tips">满100元可用</div>
191
+                <div class="price-num"><span class="size">¥</span>{{item.price}}</div>
192
+                <div class="price-tips">{{item.full_price}}</div>
159
               </div>
193
               </div>
160
               <div class="coupon-tip">
194
               <div class="coupon-tip">
161
-                <div class="tips-title">仅限指定商品使用</div>
162
-                <div class="tips-ts">有效期至2022.02.07</div>
195
+                <div class="tips-title">{{item.coupon_name}}</div>
196
+                <div class="tips-ts">有效期至{{item.ex_time}}</div>
163
               </div>
197
               </div>
164
-              <div class="choice-icon"><img :src="select"></div>
198
+              <div class="choice-icon"
199
+                   @click="selectPupop(item,index)"><img :src="item.isSelect?select:unSelect"></div>
165
             </div>
200
             </div>
166
             <div class="bottom">
201
             <div class="bottom">
167
-              <div class="coupon-notes">
202
+              <div class="coupon-notes"
203
+                   @click="isOver=!isOver">
168
                 <div class="notes-text min-size">
204
                 <div class="notes-text min-size">
169
-                  <span v-if="!isOver">{{'优惠卷仅限试用项目优惠卷仅限试用项目优惠卷仅限项目优惠卷仅限试用项目优惠卷仅限试用项目优惠卷仅限项目优惠卷仅限试用项目优惠卷仅限试用项目优惠卷仅限项目' |ellipsis(20)}}</span>
170
-                  <span v-else>优惠卷仅限试用项目优惠卷仅限试用项目优惠卷仅限项目优惠卷仅限试用项目优惠卷仅限试用项目优惠卷仅限项目优惠卷仅限试用项目优惠卷仅限试用项目优惠卷仅限项目</span>
205
+                  <span v-if="!isOver">{{item.coupon_desc |ellipsis(20)}}</span>
206
+                  <span v-else>{{item.coupon_desc}}</span>
171
                 </div>
207
                 </div>
172
-                <div class="notes-icon"
173
-                     @click="isOver=!isOver"><img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/openNotes.png"
208
+                <div class="notes-icon"><img :src="isOver?open:unOpen"
174
                        alt=""></div>
209
                        alt=""></div>
175
               </div>
210
               </div>
176
             </div>
211
             </div>
177
-          </div>
178
-        </div>
212
+          </li>
213
+        </ul>
179
       </div>
214
       </div>
180
     </mine-pupop>
215
     </mine-pupop>
181
     <!-- 选择项目 -->
216
     <!-- 选择项目 -->
@@ -225,19 +260,45 @@
225
         <div class="ts-content">
260
         <div class="ts-content">
226
           <ul class="ts-table">
261
           <ul class="ts-table">
227
             <li v-for="item,index in tsTableList"
262
             <li v-for="item,index in tsTableList"
228
-                :key="index">
263
+                :key="index"
264
+                @click="changetsTable(index)"
265
+                :class="tsTableIndex==index?'ts-table-active':''">
229
               <div>{{item.text}}</div>
266
               <div>{{item.text}}</div>
230
               <div>{{item.ts}}</div>
267
               <div>{{item.ts}}</div>
231
             </li>
268
             </li>
232
           </ul>
269
           </ul>
233
-          <ul class="ts-boty">
234
-            <li v-for="item,index in tsBodyList"
235
-                :key="index">
236
-              <div>{{item.ts}}</div>
237
-            </li>
238
-          </ul>
270
+          <div v-if="tsBodyList.day">
271
+            <div class="time-slot">
272
+              <div class="day"
273
+                   @click="changeActive(1)"
274
+                   :style="active==1?'color: #333333;font-weight: 600;':''">{{ tsBodyList.day.name}}</div>
275
+              <div class="night"
276
+                   @click="changeActive(0)"
277
+                   :style="active==0?'color: #333333;font-weight: 600;':''">{{tsBodyList.night.name}}</div>
278
+            </div>
279
+            <ul class="ts-boty"
280
+                v-if="active==1">
281
+              <li v-for="item,index in tsBodyList.day.list"
282
+                  :key="index">
283
+                <div :style="item.status==0?'color: #D3D3D3;':''"
284
+                     @click="selectTime(item)"
285
+                     :class="timeIndexText==item.order_time?'time-active':''">{{item.order_time}}</div>
286
+              </li>
287
+            </ul>
288
+            <ul class="ts-boty"
289
+                v-else>
290
+              <li v-for="item,index in tsBodyList.night.list"
291
+                  :key="index">
292
+                <div :style="item.status==0?'color: #D3D3D3;':''"
293
+                     @click="selectTime(item)"
294
+                     :class="timeIndexText==item.order_time?'time-active':''">{{item.order_time}}</div>
295
+              </li>
296
+            </ul>
297
+          </div>
239
         </div>
298
         </div>
240
-        <div class="ts-button">确认</div>
299
+        <el-button class="ts-button"
300
+                   :style="this.timeIndexText.length == 0?'background: rgb(211, 211, 211);':''"
301
+                   @click="comfigTs">确认</el-button>
241
       </div>
302
       </div>
242
     </mine-pupop>
303
     </mine-pupop>
243
     <!-- 皮肤状态 -->
304
     <!-- 皮肤状态 -->
@@ -253,17 +314,18 @@
253
                 :key="index">
314
                 :key="index">
254
               <div class="pore-top">
315
               <div class="pore-top">
255
                 <div class="pore-title">
316
                 <div class="pore-title">
256
-                  <div>RGB毛孔:</div>
257
-                  <div class="pore-medium">粗大毛孔个数{{item.medium}}</div>
317
+                  <div>{{item.name}}</div>
318
+                  <div class="pore-medium"
319
+                       v-if="item.main_item">{{item.main_item.name}}{{item.main_item.num}}</div>
258
                 </div>
320
                 </div>
259
                 <div class="pore-over">
321
                 <div class="pore-over">
260
-                  <div class="min-size">粗大毛孔个数:{{item.medium}}个</div>
261
-                  <div class="min-size">中等毛孔个数:{{item.small}}个</div>
262
-                  <div class="min-size">细小毛孔个数:{{item.mini}}个</div>
322
+                  <div class="min-size"
323
+                       v-for="value,index in item.items"
324
+                       :key="index">{{value.name}}{{value.num}}个</div>
263
                 </div>
325
                 </div>
264
               </div>
326
               </div>
265
               <div class="pore-bottom min-size">
327
               <div class="pore-bottom min-size">
266
-                {{'皮肤状态一般,污物阻塞导致,油脂分泌旺盛,皮肤状态一般,污物阻塞导致,油脂分泌旺盛皮肤状态一般,污物阻塞导致,油脂分泌旺盛,皮肤状态一般,污物阻塞导致,油脂分泌旺盛油脂分泌旺盛油脂分泌旺盛旺…' |ellipsis(85)}}
328
+                {{item.suggest | ellipsis(85)}}
267
               </div>
329
               </div>
268
             </li>
330
             </li>
269
           </ul>
331
           </ul>
@@ -281,6 +343,8 @@ export default {
281
   components: { minePupop },
343
   components: { minePupop },
282
   data () {
344
   data () {
283
     return {
345
     return {
346
+      open: 'https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/openNotes.png',
347
+      unOpen: 'https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/upDate.png',
284
       select: 'https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/select.png',
348
       select: 'https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/select.png',
285
       unSelect: 'https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/unSelect.png',
349
       unSelect: 'https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/unSelect.png',
286
       userInfo: {
350
       userInfo: {
@@ -295,75 +359,12 @@ export default {
295
       //升级包列表
359
       //升级包列表
296
       productsList: [],
360
       productsList: [],
297
       //时间列表(头部)
361
       //时间列表(头部)
298
-      tsTableList: [
299
-        {
300
-          text: '今天',
301
-          ts: '10-27',
302
-        },
303
-        {
304
-          text: '今天',
305
-          ts: '10-27',
306
-        },
307
-        {
308
-          text: '今天',
309
-          ts: '10-27',
310
-        },
311
-        {
312
-          text: '今天',
313
-          ts: '10-27',
314
-        },
315
-        {
316
-          text: '今天',
317
-          ts: '10-27',
318
-        },
319
-        {
320
-          text: '今天',
321
-          ts: '10-27',
322
-        },
323
-        {
324
-          text: '今天',
325
-          ts: '10-27',
326
-        },
327
-      ],
362
+      tsTableList: [],
363
+      tsTableIndex: 0,
364
+      active: 1,
328
       //时间列表(body)
365
       //时间列表(body)
329
-      tsBodyList: [
330
-        {
331
-          id: 0,
332
-          ts: '10:00'
333
-        },
334
-        {
335
-          id: 0,
336
-          ts: '10:00'
337
-        },
338
-        {
339
-          id: 0,
340
-          ts: '10:00'
341
-        },
342
-        {
343
-          id: 0,
344
-          ts: '10:00'
345
-        },
346
-        {
347
-          id: 0,
348
-          ts: '10:00'
349
-        },
350
-        {
351
-          id: 0,
352
-          ts: '10:00'
353
-        },
354
-        {
355
-          id: 0,
356
-          ts: '10:00'
357
-        },
358
-        {
359
-          id: 0,
360
-          ts: '10:00'
361
-        },
362
-        {
363
-          id: 0,
364
-          ts: '10:00'
365
-        },
366
-      ],
366
+      tsBodyList: {
367
+      },
367
       //皮肤状态列表
368
       //皮肤状态列表
368
       poreList: [
369
       poreList: [
369
         {
370
         {
@@ -382,15 +383,17 @@ export default {
382
           mini: 242
383
           mini: 242
383
         }
384
         }
384
       ],
385
       ],
385
-
386
-      couponList: [
387
-        {
388
-
389
-        }
390
-      ],
386
+      //优惠券列表
387
+      couponList: [],
388
+      //已选择的优惠券
389
+      selectCouponList: [],
390
+      //已选择优惠券的id(同一个id只能选择一张优惠券)
391
+      selectCouponListId: [],
391
       timesInfo: '',
392
       timesInfo: '',
393
+      reservationPrice: 0,//预约费用
392
       projectInfo: '',
394
       projectInfo: '',
393
       productsInfo: '',
395
       productsInfo: '',
396
+      timeIndexText: "",//当前选择的时间
394
       weekInfo: '',
397
       weekInfo: '',
395
       programmeIndex: '',
398
       programmeIndex: '',
396
       remarks: '',
399
       remarks: '',
@@ -402,6 +405,20 @@ export default {
402
       id: 0,//订单id
405
       id: 0,//订单id
403
       isChange: false,//项目是否有改变
406
       isChange: false,//项目是否有改变
404
       isEditProject: false,//是否编辑项目
407
       isEditProject: false,//是否编辑项目
408
+      page: 1,
409
+      limit: 200,
410
+
411
+
412
+
413
+
414
+    needSelect: false,
415
+    coupSelectType: '',
416
+    productDiscount: '',
417
+    isSelectCoup: [], // 选择的优惠券
418
+    // 下面是支付的数据
419
+    showMoney: 0, // 价值总额
420
+    // showRuleText: 10086,
421
+
405
     };
422
     };
406
   },
423
   },
407
   computed: {
424
   computed: {
@@ -417,6 +434,9 @@ export default {
417
         this.remarks = res.data.remark
434
         this.remarks = res.data.remark
418
         this.programmeList = res.data.scheme_list
435
         this.programmeList = res.data.scheme_list
419
         this.order_data = res.data.order_data
436
         this.order_data = res.data.order_data
437
+        this.showMoney=res.data.order_data.price
438
+        this.poreList = res.data.detail_list
439
+        this.calculationPrice()
420
       })
440
       })
421
     },
441
     },
422
     getProjectList () {
442
     getProjectList () {
@@ -470,6 +490,7 @@ export default {
470
                   e.price = Number(e.price) + Number(item.price)
490
                   e.price = Number(e.price) + Number(item.price)
471
                   this.isProject = false
491
                   this.isProject = false
472
                   this.isEditProject = false
492
                   this.isEditProject = false
493
+                  this.calculationPrice()
473
                 }
494
                 }
474
               })
495
               })
475
             }
496
             }
@@ -521,14 +542,335 @@ export default {
521
         this.order_data.project_list.push(projectInfo)
542
         this.order_data.project_list.push(projectInfo)
522
         this.isChange = true
543
         this.isChange = true
523
         this.isProject = false
544
         this.isProject = false
545
+        this.calculationPrice()
524
       }
546
       }
525
     },
547
     },
548
+    //获取最近七天的时间
549
+    getWeekDate () {
550
+      //获取系统当前时间
551
+      let now = new Date();
552
+      let nowTime = now.getTime();
553
+      let oneDayTime = 24 * 60 * 60 * 1000;
554
+      let tsTableList = []
555
+      for (let i = 0; i < 7; i++) {
556
+        //显示周一
557
+        let ShowTime = nowTime + (i + 1) * oneDayTime;
558
+        //初始化日期时间
559
+        let myDate = new Date(ShowTime);
560
+        let year = myDate.getFullYear();
561
+        let month = myDate.getMonth() + 1;
562
+        let date = myDate.getDate();
563
+        console.log(year + "-" + month + "-" + date)
564
+        let str = "周" + "日一二三四五六".charAt(myDate.getDay());
565
+        let tsTableInfo = {}
566
+        tsTableInfo['text'] = i == 0 ? '今天' : i == 1 ? '明天' : str
567
+        tsTableInfo['ts'] = month + "-" + date
568
+        tsTableInfo['order_day'] = year + "-" + month + "-" + date
569
+        tsTableList.push(tsTableInfo)
570
+        console.log(str)
571
+      }
572
+      this.tsTableList = tsTableList
573
+    },
526
     //确定订单&支付
574
     //确定订单&支付
527
-    determine () { 
528
-      if (condition) {
529
-        
575
+    determine () {
576
+      if (this.isChange) {
577
+        this.getWeekDate()
578
+        this.getOrderTime()
579
+        this.order_time = ''
580
+        this.tsTableIndex = 0
581
+        this.isTs = true
582
+      } else {
583
+        debugger
530
       }
584
       }
531
     },
585
     },
586
+    //确定时间选择
587
+    comfigTs () {
588
+      if (this.timeIndexText.length == 0) return
589
+      let order_data = [], order_data_info = {}
590
+      this.order_data.project_list.forEach(item => {
591
+        order_data_info['id'] = item.id
592
+        if (item.product_ids != "") {
593
+          order_data_info['product_id'] = item.product_ids
594
+        }
595
+        order_data.push(order_data_info)
596
+      })
597
+      let params = {
598
+        id: this.id,
599
+        order_data: JSON.stringify(order_data),
600
+        order_day: this.tsTableList[this.tsTableIndex].order_day,
601
+        order_time: this.timeIndexText
602
+      }
603
+      api.setOrderUpdate(params).then(res => {
604
+        if (res.code == 200) {
605
+          this.getOrderInfo()
606
+          this.isTs = false
607
+          this.isChange = false
608
+        }
609
+      })
610
+    },
611
+    //计算预约费用
612
+    calculationPrice () {
613
+      this.order_data.project_list.forEach(res => {
614
+        this.reservationPrice += Number(res.price)
615
+      })
616
+    },
617
+    //获取订单优惠券
618
+    onCoupon () {
619
+
620
+      if(this.couponList.length>0){
621
+         this.isCoupun = true
622
+         return
623
+      }
624
+
625
+      let params = {
626
+        id: this.id,
627
+        page: this.page,
628
+        limit: this.limit
629
+      }
630
+      api.getOrderCoupon(params).then(res => {
631
+        this.couponList = [...this.couponList, ...res.data.list]
632
+        this.couponList.forEach(item => {
633
+          this.$set(item, 'isSelect', false)
634
+        })
635
+        this.page++
636
+        if (this.couponList.length < res.data.total) {
637
+          this.onCoupon()
638
+        }
639
+      })
640
+      console.log(this.couponList)
641
+      this.isCoupun = true
642
+    },
643
+
644
+
645
+    //数组包含关系
646
+    includes (arr1, arr2) {
647
+      return arr2.every(val => arr1.includes(val));
648
+    },
649
+    //选中优惠券
650
+    // selectPupop (item, index) {
651
+    //   this.couponList[index].Select = !this.couponList[index].Select
652
+    //   this.selectCouponList = this.couponList.filter(res => {
653
+    //     return res.Select == true
654
+    //   })
655
+    //   this.selectCouponList.forEach(res => {
656
+    //   })
657
+
658
+    // },
659
+
660
+
661
+// 不可以用的不显示,如果同时有项目劵、抵扣劵、满减劵,只能用一种类型,其他劵不显示
662
+// 1、针对单个项目,项目劵可以多选
663
+// 2、抵扣劵、满减劵针对的是整个订单,当用户已使用了单个项目劵时,抵扣劵、满减劵就不能使用
664
+// 3、优惠劵可以给多个项目抵扣,
665
+// 4、默认抵扣金额最高的
666
+// 5、优惠劵排序,到期时间倒叙
667
+
668
+
669
+/**
670
+   * 点击使用按钮、勾选按钮
671
+   */
672
+  selectPupop: function (item, index) {
673
+
674
+
675
+    let CouPonIndex = this.couponList
676
+
677
+    let selectIndex = index
678
+    let curreValue = !CouPonIndex[selectIndex].isSelect
679
+    let project_list = this.order_data.project_list //这里是项目列表
680
+
681
+    // 判断是否是不相同的项目券
682
+    if (this.couponList[selectIndex].type != 4) {
683
+      for (let i = 0; i < CouPonIndex.length; i++) {
684
+        CouPonIndex[i].isSelect = false
685
+      }
686
+      for (let i = 0; i < project_list.length; i++) {
687
+        project_list[i].cardId = ''
688
+      }
689
+
690
+    } else if (this.coupSelectType != 4) {
691
+      for (let i = 0; i < CouPonIndex.length; i++) {
692
+        CouPonIndex[i].isSelect = false
693
+      }
694
+      for (let i = 0; i < project_list.length; i++) {
695
+        project_list[i].cardId = ''
696
+      }
697
+    } else {
698
+      let numberSelect = 0
699
+      for (let i = 0; i < CouPonIndex.length; i++) {
700
+        if (CouPonIndex[i].isSelect) {
701
+          numberSelect = numberSelect + 1
702
+        }
703
+      }
704
+      console.log('numberSelect')
705
+      console.log(numberSelect)
706
+      if (numberSelect == this.order_data.project_list.length && curreValue) {
707
+            this.$message.error('最多选择' + this.order_data.project_list.length + '项目券!');
708
+        return
709
+      }
710
+    }
711
+    // 判断是否是取消选择项目券
712
+    CouPonIndex[selectIndex].isSelect = curreValue
713
+    if (!curreValue) {
714
+      for (let j = 0; j < project_list.length; j++) {
715
+        if (project_list[j].cardId && project_list[j].cardId == this.couponList[selectIndex].id) { // 如果是取消选择,那么也要取消绑定项目的id
716
+          project_list[j].cardId = ''
717
+        }
718
+      }
719
+      CouPonIndex[selectIndex].projectids = ''
720
+    }
721
+    let orderDetails1 = this.order_data
722
+    orderDetails1.project_list = project_list
723
+
724
+
725
+      this.order_data=orderDetails1
726
+      this.couponList=CouPonIndex
727
+      this.coupSelectType=this.couponList[selectIndex].type
728
+
729
+    console.log(this.order_data)
730
+    console.log(this.couponList)
731
+
732
+    this.selectCoup()
733
+
734
+  },
735
+
736
+// 选择项目进行绑定
737
+  selectCoup() {
738
+    let that = this
739
+    let isSelectCoups = []
740
+    for (let i = 0; i < this.couponList.length; i++) {
741
+      if (this.couponList[i].isSelect) {
742
+        let selectCoup = that.couponList[i]
743
+        isSelectCoups.push(selectCoup)
744
+      }
745
+    }
746
+      this.isSelectCoup=isSelectCoups
747
+    console.log(this.isSelectCoup)
748
+
749
+    // 抵扣顺序按照项目金额计算
750
+    that.theMoneyBest()
751
+  },
752
+
753
+  // 抵扣顺序按照项目金额计算
754
+  // 卡券,项目券数据包,id:订单项目ID,coupon_id:优惠券ID,如:[{"id":1220,coupon_id:199}]  
755
+  theMoneyBest() {
756
+    let that = this
757
+    let project_list = this.order_data.project_list //这里是项目列表
758
+    let isSelectCoup = this.isSelectCoup //这里选择了的卡券列表
759
+    let selectProjectList = [] // 适合的卡券列表
760
+    // let CouPonIndex = this.CouPonIndex // 卡券选择的Id
761
+    let productDiscount = this.couponList // 卡券列表
762
+    console.log(productDiscount)
763
+    // debugger
764
+    if (isSelectCoup[0].type == 4) {
765
+      for (let i = 0; i < isSelectCoup.length; i++) { // 首先遍历卡券
766
+        if (!isSelectCoup[i].projectids) { // 如果卡券没绑定项目
767
+          console.log('没绑定过!')
768
+
769
+          let selectIndexMoney = 0 // 初始值
770
+          let selectIndex = 111 // 初始金额
771
+          for (let j = 0; j < project_list.length; j++) { // 遍历项目
772
+            if (isSelectCoup[i].project_ids.indexOf(project_list[j].id) != -1 && !project_list[j].cardId) { // 如果卡券能够使用这个项目并且这个项目没有被绑定过
773
+              console.log('project_list[j].price')
774
+              console.log(project_list[j].price)
775
+              console.log(selectIndexMoney)
776
+              console.log(project_list[j].price > selectIndexMoney)
777
+              if (project_list[j].price * 1 > selectIndexMoney * 1) {
778
+                selectIndex = j
779
+                selectIndexMoney = project_list[j].price
780
+                console.log('--' + selectIndexMoney)
781
+              }
782
+              // selectProjectList.push(project_list[i])
783
+            }
784
+          }
785
+          if (selectIndex != 111) {
786
+            console.log('走了这里走了这里')
787
+            isSelectCoup[i].projectids = project_list[selectIndex].id
788
+            isSelectCoup[i].projectName = project_list[selectIndex].name
789
+            project_list[selectIndex].cardId = isSelectCoup[i].id
790
+          } else {
791
+            for (let k = 0; k < productDiscount.length; k++) {
792
+              if (productDiscount[k].id == isSelectCoup[i].id) {
793
+                // isSelectCoup.
794
+                productDiscount[k].isSelect = false
795
+                // isSelectCoup.splice(isSelectCoup.length-1,1);
796
+                this.$message.error('没有适合的项目!');
797
+              }
798
+            }
799
+          }
800
+
801
+        }
802
+      }
803
+      let orderDetails1 = this.order_data
804
+      orderDetails1.project_list = project_list
805
+        this.couponList= productDiscount
806
+        this.isSelectCoup= isSelectCoup
807
+        this.order_data= orderDetails1
808
+    }
809
+
810
+    this.calculateMoney() //计算总额
811
+  },
812
+
813
+  // 计算总额
814
+  calculateMoney() {
815
+    let that = this
816
+    let money = this.order_data.price
817
+    let isSelectCoup = this.isSelectCoup
818
+    let project_list = this.order_data.project_list //这里是项目列表
819
+
820
+    if (isSelectCoup.length == 0) {
821
+        this.showMoney=money.toFixed(2)
822
+      return
823
+    }
824
+
825
+    // 如果是项目
826
+    if (isSelectCoup[0].type == 4) {
827
+      for (let i = 0; i < project_list.length; i++) {
828
+        if (project_list[i].cardId) {
829
+          money = money - project_list[i].price
830
+        }
831
+      }
832
+        this.showMoney=money.toFixed(2)
833
+    } else if (isSelectCoup[0].type == 3) {
834
+      for (let i = 0; i < project_list.length; i++) {
835
+        money = money - project_list[i].price
836
+      }
837
+
838
+    } else {
839
+      money = money - isSelectCoup[0].price
840
+    }
841
+
842
+        this.showMoney=money.toFixed(2)
843
+
844
+
845
+  },
846
+
847
+
848
+    changeActive (e) {
849
+      this.active = e
850
+    },
851
+    selectTime (item) {
852
+      if (item.status == 0) return
853
+      this.timeIndexText = item.order_time
854
+    },
855
+    changetsTable (index) {
856
+      this.tsTableIndex = index
857
+      this.getOrderTime()
858
+    },
859
+    getOrderTime () {
860
+      let ids = '', idsList = []
861
+      this.order_data.project_list.forEach(res => {
862
+        idsList.push(res.id)
863
+      })
864
+      ids = idsList.toString()
865
+      let params = {
866
+        ids: ids,
867
+        order_day: this.tsTableList[this.tsTableIndex].order_day
868
+      }
869
+      api.getOrderTime(params).then(res => {
870
+        this.tsBodyList = res.data
871
+      })
872
+    },
873
+
532
     onOperation (index) {
874
     onOperation (index) {
533
       if (this.programmeList[index].onSelect) {
875
       if (this.programmeList[index].onSelect) {
534
         this.$set(this.programmeList[index], 'onSelect', !this.programmeList[index].onSelect)
876
         this.$set(this.programmeList[index], 'onSelect', !this.programmeList[index].onSelect)
@@ -1006,10 +1348,27 @@ export default {
1006
       overflow: scroll;
1348
       overflow: scroll;
1007
       .coupon-info {
1349
       .coupon-info {
1008
         width: 345px;
1350
         width: 345px;
1351
+        margin-bottom: 20px;
1009
         padding: 20px 14px 10px 14px;
1352
         padding: 20px 14px 10px 14px;
1010
         position: relative;
1353
         position: relative;
1011
         background: #fff4e6;
1354
         background: #fff4e6;
1012
         border-radius: 12px;
1355
         border-radius: 12px;
1356
+        .coupon-tips-text {
1357
+          position: absolute;
1358
+          left: 0;
1359
+          top: 0;
1360
+          padding: 0 8px;
1361
+          height: 18px;
1362
+          background: #875617;
1363
+          border-radius: 12px 0px 12px 0px;
1364
+          font-size: 12px;
1365
+          font-family: PingFangSC-Medium, PingFang SC;
1366
+          font-weight: 500;
1367
+          color: #ffffff;
1368
+          line-height: 18px;
1369
+          zoom: 0.83;
1370
+          text-align: center;
1371
+        }
1013
         .top {
1372
         .top {
1014
           display: flex;
1373
           display: flex;
1015
           justify-content: space-between;
1374
           justify-content: space-between;
@@ -1043,6 +1402,13 @@ export default {
1043
               line-height: 17px;
1402
               line-height: 17px;
1044
             }
1403
             }
1045
           }
1404
           }
1405
+          .discount-over {
1406
+            font-size: 22px;
1407
+            font-family: PingFangSC-Medium, PingFang SC;
1408
+            font-weight: 500;
1409
+            color: #ff3007;
1410
+            line-height: 30px;
1411
+          }
1046
           .coupon-tip {
1412
           .coupon-tip {
1047
             .tips-title {
1413
             .tips-title {
1048
               font-size: 16px;
1414
               font-size: 16px;
@@ -1143,7 +1509,7 @@ export default {
1143
   }
1509
   }
1144
   .ts-block {
1510
   .ts-block {
1145
     width: 540px;
1511
     width: 540px;
1146
-    height: 400px;
1512
+    height: 420px;
1147
     background: #ffffff;
1513
     background: #ffffff;
1148
     border-radius: 8px;
1514
     border-radius: 8px;
1149
     position: relative;
1515
     position: relative;
@@ -1178,15 +1544,32 @@ export default {
1178
         li {
1544
         li {
1179
           text-align: center;
1545
           text-align: center;
1180
         }
1546
         }
1547
+        .ts-table-active {
1548
+          color: #fa7d22;
1549
+          border-bottom: 4px solid #fa4622;
1550
+        }
1551
+      }
1552
+
1553
+      .time-slot {
1554
+        margin-top: 20px;
1555
+        display: flex;
1556
+        justify-content: space-between;
1557
+        font-size: 16px;
1558
+        font-family: PingFangSC-Regular, PingFang SC;
1559
+        font-weight: 400;
1560
+        color: #999999;
1561
+        line-height: 22px;
1181
       }
1562
       }
1182
       .ts-boty {
1563
       .ts-boty {
1183
         margin-top: 10px;
1564
         margin-top: 10px;
1565
+        margin-left: -19px;
1184
         display: flex;
1566
         display: flex;
1185
-        justify-content: space-between;
1567
+        justify-content: unset;
1186
         flex-wrap: wrap;
1568
         flex-wrap: wrap;
1187
         li {
1569
         li {
1188
           margin-top: 10px;
1570
           margin-top: 10px;
1189
           width: 68px;
1571
           width: 68px;
1572
+          margin-left: 19px;
1190
           height: 30px;
1573
           height: 30px;
1191
           line-height: 30px;
1574
           line-height: 30px;
1192
           text-align: center;
1575
           text-align: center;
@@ -1197,11 +1580,18 @@ export default {
1197
           font-weight: 400;
1580
           font-weight: 400;
1198
           color: #333333;
1581
           color: #333333;
1199
         }
1582
         }
1583
+        .time-active {
1584
+          background: #fff0e6;
1585
+          border: 1px solid #fa7d22;
1586
+          font-weight: 500;
1587
+          color: #fa7d22;
1588
+        }
1200
       }
1589
       }
1201
     }
1590
     }
1202
     .ts-button {
1591
     .ts-button {
1203
       position: absolute;
1592
       position: absolute;
1204
       bottom: 42px;
1593
       bottom: 42px;
1594
+      padding: 0;
1205
       left: 50%;
1595
       left: 50%;
1206
       transform: translateX(-50%);
1596
       transform: translateX(-50%);
1207
       width: 176px;
1597
       width: 176px;

+ 64 - 4
src/pages/confirmOrder/index.vue

@@ -1,30 +1,90 @@
1
 <template>
1
 <template>
2
   <div class="mine">
2
   <div class="mine">
3
     <div class="qr-code">
3
     <div class="qr-code">
4
-      <img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/orderQrCode.png"
5
-           alt="">
4
+      <div id="qrCode"
5
+           ref="qrCodeDiv"></div>
6
     </div>
6
     </div>
7
   </div>
7
   </div>
8
 </template>
8
 </template>
9
 
9
 
10
 <script>
10
 <script>
11
+import QRCode from 'qrcodejs2'
12
+import api from '../../server/home'
11
 export default {
13
 export default {
12
   components: {},
14
   components: {},
13
   data () {
15
   data () {
14
-    return {};
16
+    return {
17
+      qrcode_string: '',
18
+      ticket: '',
19
+      checkCodeInterval: null,
20
+      checkCodeTimeout: null,
21
+    };
15
   },
22
   },
16
   computed: {},
23
   computed: {},
17
   watch: {},
24
   watch: {},
18
 
25
 
19
-  methods: {},
26
+  methods: {
27
+    getAuthCode () {
28
+      api.getAuthCode().then(res => {
29
+        this.qrcode_string = res.data.qrcode_string
30
+        this.ticket = res.data.ticket
31
+        this.$nextTick(() => {
32
+          this.bindQRCode();
33
+          // this.checkCode()
34
+        })
35
+      })
36
+    },
37
+    checkCode () {
38
+      this.checkCodeInterval = setInterval(e => {
39
+        api.checkCode({ ticket: this.ticket }).then(res => {
40
+          if (res.data.status == 1) {
41
+            clearInterval(this.checkCodeInterval)
42
+          }
43
+        })
44
+      }, 1000)
45
+      //十分钟强制清除,防止页面崩溃
46
+      this.checkCodeTimeout = setTimeout(() => {
47
+        clearTimeout(this.checkCodeTimeout)
48
+      }, 600000)
49
+    },
50
+    getOrderByCode () {
51
+      api.getOrderByCode({ ticket: this.ticket }).then(res => {
52
+        if (res.code == 200) {
53
+          this.$router.push({
54
+            path: '/confirmOrder/details',
55
+            query: {
56
+              id: res.order_id
57
+            }
58
+          })
59
+        }
60
+      })
61
+    },
62
+    bindQRCode () {
63
+      new QRCode(this.$refs.qrCodeDiv, {
64
+        text: this.qrcode_string,
65
+        width: 200,
66
+        height: 200,
67
+        colorDark: "#333333", //二维码颜色
68
+        colorLight: "#ffffff", //二维码背景色
69
+        correctLevel: QRCode.CorrectLevel.L//容错率,L/M/H
70
+      })
71
+    }
72
+  },
20
 
73
 
21
   created () {
74
   created () {
75
+    this.getAuthCode()
22
 
76
 
23
   },
77
   },
24
 
78
 
25
   mounted () {
79
   mounted () {
26
 
80
 
27
   },
81
   },
82
+  destroyed () {
83
+    if (this.checkCodeInterval) {
84
+      clearInterval(this.checkCodeInterval)
85
+      clearTimeout(this.checkCodeTimeout)
86
+    }
87
+  }
28
 }
88
 }
29
 
89
 
30
 </script>
90
 </script>

+ 10 - 9
src/pages/customerMan/index.vue

@@ -73,7 +73,8 @@ export default {
73
       ],
73
       ],
74
       tableData: [],
74
       tableData: [],
75
       currentPage1: 1,
75
       currentPage1: 1,
76
-      multipleSelection: ''
76
+      multipleSelection: '',
77
+      total: 0
77
 
78
 
78
     };
79
     };
79
   },
80
   },
@@ -81,9 +82,9 @@ export default {
81
   watch: {},
82
   watch: {},
82
 
83
 
83
   methods: {
84
   methods: {
84
-    
85
-  // 获取订单列表
86
-    getUserList() {
85
+
86
+    // 获取订单列表
87
+    getUserList () {
87
       console.log("xxxxxxx");
88
       console.log("xxxxxxx");
88
       let params = {
89
       let params = {
89
         page: this.currentPage1,
90
         page: this.currentPage1,
@@ -97,17 +98,17 @@ export default {
97
         }
98
         }
98
       });
99
       });
99
     },
100
     },
100
-    
101
-    handleCurrentChange(e) {
101
+
102
+    handleCurrentChange (e) {
102
       this.currentPage1 = e;
103
       this.currentPage1 = e;
103
       this.getUserList();
104
       this.getUserList();
104
       console.log(e, "eeeeee");
105
       console.log(e, "eeeeee");
105
     },
106
     },
106
 
107
 
107
-    handleSizeChange(val) {
108
+    handleSizeChange (val) {
108
       console.log(`每页 ${val} 条`);
109
       console.log(`每页 ${val} 条`);
109
     },
110
     },
110
-    handleSelectionChange(row, column, event) {
111
+    handleSelectionChange (row, column, event) {
111
       this.$router.push({
112
       this.$router.push({
112
         path: '/customerMan/details',
113
         path: '/customerMan/details',
113
         query: {
114
         query: {
@@ -117,7 +118,7 @@ export default {
117
     }
118
     }
118
   },
119
   },
119
 
120
 
120
-  created() {
121
+  created () {
121
     this.getUserList();
122
     this.getUserList();
122
   },
123
   },
123
 
124
 

+ 3 - 1
src/pages/testSkin/details/index.vue

@@ -93,7 +93,9 @@
93
           <div class="add"
93
           <div class="add"
94
                @click="isPupop=true">新增</div>
94
                @click="isPupop=true">新增</div>
95
         </div>
95
         </div>
96
-        <div class=""></div>
96
+        <div class="">
97
+
98
+        </div>
97
       </div>
99
       </div>
98
       <div class="submit"
100
       <div class="submit"
99
            @click="onSubmit">保存</div>
101
            @click="onSubmit">保存</div>

+ 6 - 6
src/router/index.js

@@ -7,10 +7,10 @@ import login from "./map/login";
7
 Vue.use(Router)
7
 Vue.use(Router)
8
 
8
 
9
 export default new Router({
9
 export default new Router({
10
-    mode: 'history',
11
-    base: process.env.BASE_URL,
12
-    routes: [
13
-        home,
14
-        ...login
15
-    ]
10
+  mode: 'hash',
11
+  base: process.env.BASE_URL,
12
+  routes: [
13
+    home,
14
+    ...login
15
+  ]
16
 })
16
 })

+ 28 - 4
src/router/map/home.js

@@ -22,14 +22,38 @@ export default {
22
   children: [
22
   children: [
23
     { path: '/home', component: Home },
23
     { path: '/home', component: Home },
24
     { path: '/testSkin', component: TestSkin },
24
     { path: '/testSkin', component: TestSkin },
25
-    { path: '/testSkin/details', component: TestSkinDetails },
25
+    {
26
+      path: '/testSkin/details',
27
+      meta: {
28
+        isback: true,
29
+      },
30
+      component: TestSkinDetails
31
+    },
26
     { path: '/customerMan', component: CustomerMan },
32
     { path: '/customerMan', component: CustomerMan },
27
-    { path: '/customerMan/details', component: CustomerManDetails },
33
+    {
34
+      path: '/customerMan/details',
35
+      meta: {
36
+        isback: true,
37
+      },
38
+      component: CustomerManDetails
39
+    },
28
     { path: '/customerMan/projectOrder', component: projectOrder },
40
     { path: '/customerMan/projectOrder', component: projectOrder },
29
     { path: '/historicalOrder', component: HistoricalOrder },
41
     { path: '/historicalOrder', component: HistoricalOrder },
30
-    { path: '/historicalOrder/details', component: HistoricalOrderDetails },
42
+    {
43
+      path: '/historicalOrder/details',
44
+      meta: {
45
+        isback: true,
46
+      },
47
+      component: HistoricalOrderDetails
48
+    },
31
     { path: '/confirmOrder', component: ConfirmOrder },
49
     { path: '/confirmOrder', component: ConfirmOrder },
32
-    { path: '/confirmOrder/details', component: ConfirmOrderDetails },
50
+    {
51
+      path: '/confirmOrder/details',
52
+      meta: {
53
+        isback: true,
54
+      },
55
+      component: ConfirmOrderDetails
56
+    },
33
     { path: '/storeDetection', component: StoreDetection },
57
     { path: '/storeDetection', component: StoreDetection },
34
     { path: '/coupon', component: Coupon },
58
     { path: '/coupon', component: Coupon },
35
 
59
 

+ 18 - 0
src/server/home.js

@@ -42,6 +42,24 @@ export default class Home {
42
   static getProducts (parms) {
42
   static getProducts (parms) {
43
     return $http.get(url.getProducts, parms);
43
     return $http.get(url.getProducts, parms);
44
   }
44
   }
45
+  static getOrderTime (parms) {
46
+    return $http.get(url.getOrderTime, parms);
47
+  }
48
+  static setOrderUpdate (parms) {
49
+    return $http.post(url.setOrderUpdate, parms);
50
+  }
51
+  static getOrderCoupon (parms) {
52
+    return $http.get(url.getOrderCoupon, parms);
53
+  }
54
+  static getAuthCode (parms) {
55
+    return $http.get(url.getAuthCode, parms);
56
+  }
57
+  static checkCode (parms) {
58
+    return $http.get(url.checkCode, parms);
59
+  }
60
+  static getOrderByCode (parms) {
61
+    return $http.get(url.getOrderByCode, parms);
62
+  }
45
 
63
 
46
   // 获取历史订单
64
   // 获取历史订单
47
   static getOrderList (parms) {
65
   static getOrderList (parms) {

+ 12 - 0
src/server/urls.js

@@ -21,6 +21,18 @@ export default {
21
   getProjectList: '/v2/pad/project/list',
21
   getProjectList: '/v2/pad/project/list',
22
   //获取升级包
22
   //获取升级包
23
   getProducts: '/v2/pad/project/product',
23
   getProducts: '/v2/pad/project/product',
24
+  //获取当天的时间段
25
+  getOrderTime: '/v2/pad/order/order_time',
26
+  //保存、修改订单
27
+  setOrderUpdate: '/v2/pad/order/update',
28
+  //获取订单可用优惠券
29
+  getOrderCoupon: '/v2/pad/order/coupon',
30
+  //获取授权码
31
+  getAuthCode: '/v2/pad/order/get_auth_code',
32
+  //检查是否授权
33
+  checkCode: '/v2/pad/order/check_code',
34
+  //通过授权码获取未支付订单
35
+  getOrderByCode: '/v2/pad/order/get_order_by_code',
24
 
36
 
25
   /**
37
   /**
26
    *  by ListKer
38
    *  by ListKer

+ 35 - 35
vue.config.js

@@ -3,40 +3,40 @@
3
 const MiniCssExtractPlugin = require('mini-css-extract-plugin');
3
 const MiniCssExtractPlugin = require('mini-css-extract-plugin');
4
 
4
 
5
 module.exports = {
5
 module.exports = {
6
-    publicPath: process.env.env_config === 'prod' ? 'https://ydcommon.51yund.com/' : 
7
-    process.env.env_config === 'test' ? '/vapps/calory/' : '/', 
8
-    // 设置跨域
9
-    crossorigin: 'anonymous',
10
-    /**
11
-       * 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
12
-       *  map文件的作用在于:项目打包后,代码都是经过压缩加密的,如果运行时报错,输出的错误信息无法准确得知是哪里的代码报错。
13
-       *  有了map就可以像未加密的代码一样,准确的输出是哪一行哪一列有错。
14
-       * */
15
-    productionSourceMap: false,
16
-    transpileDependencies: ['swiper', 'dom7'],
17
- 
18
-    // 它支持webPack-dev-server的所有选项
19
-    devServer: {
20
-        host: "0.0.0.0",
21
-        port: 8083, // 端口号
22
-        https: false, // https:{type:Boolean}
23
-        open: true, //配置自动启动浏览器
24
-        proxy: '' // 配置跨域处理
25
-    },
26
-    configureWebpack: {
27
-        externals: {
28
-            'axios': "axios"
29
-        }
30
-        // 这是七牛找不到资源时的紧急处理方法,通过修改hash位数修改编译后的资源文件名
31
-        // output: { 
32
-        //     filename: `js/[name].[hash:6].js`,
33
-        //     chunkFilename: `js/[name].[hash:6].js`
34
-        // },
35
-        // plugins: [
36
-        //     new MiniCssExtractPlugin({
37
-        //         filename: `css/[name].[hash:6].css`,
38
-        //         chunkFilename: `css/[name].[hash:6].css`
39
-        //     })
40
-        // ]
6
+  publicPath: process.env.env_config === 'prod' ? 'https://h5-cms-vue.ijolijoli.com/dist' :
7
+    process.env.env_config === 'test' ? '/vapps/calory/' : '/dist/',
8
+  // 设置跨域
9
+  crossorigin: 'anonymous',
10
+  /**
11
+     * 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
12
+     *  map文件的作用在于:项目打包后,代码都是经过压缩加密的,如果运行时报错,输出的错误信息无法准确得知是哪里的代码报错。
13
+     *  有了map就可以像未加密的代码一样,准确的输出是哪一行哪一列有错。
14
+     * */
15
+  productionSourceMap: false,
16
+  transpileDependencies: ['swiper', 'dom7'],
17
+
18
+  // 它支持webPack-dev-server的所有选项
19
+  devServer: {
20
+    host: "0.0.0.0",
21
+    port: 8083, // 端口号
22
+    https: false, // https:{type:Boolean}
23
+    open: true, //配置自动启动浏览器
24
+    proxy: '' // 配置跨域处理
25
+  },
26
+  configureWebpack: {
27
+    externals: {
28
+      'axios': "axios"
41
     }
29
     }
30
+    // 这是七牛找不到资源时的紧急处理方法,通过修改hash位数修改编译后的资源文件名
31
+    // output: { 
32
+    //     filename: `js/[name].[hash:6].js`,
33
+    //     chunkFilename: `js/[name].[hash:6].js`
34
+    // },
35
+    // plugins: [
36
+    //     new MiniCssExtractPlugin({
37
+    //         filename: `css/[name].[hash:6].css`,
38
+    //         chunkFilename: `css/[name].[hash:6].css`
39
+    //     })
40
+    // ]
41
+  }
42
 }
42
 }