9 Commits 883f84cccc ... 1e43a5e0c4

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

+ 38 - 68
package-lock.json

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

+ 18 - 16
public/index.html

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

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

@@ -88,8 +88,9 @@ export default {
88 88
   },
89 89
   watch: {
90 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 94
       this.menu.forEach((item, index) => {
94 95
         if (patname == item.path) {
95 96
           this.nowIndex = index

+ 3 - 0
src/main.js

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

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

@@ -12,7 +12,8 @@
12 12
         </div>
13 13
       </div>
14 14
       <div class="user-record">
15
-        <div class="fraction">
15
+        <div class="fraction"
16
+             @click="isPore=true">
16 17
           <div class="title">肌肤得分</div>
17 18
           <div class="num">{{userInfo.score}}分</div>
18 19
         </div>
@@ -82,7 +83,7 @@
82 83
       </div>
83 84
       <div class="project">
84 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 87
           <div class="add-project"
87 88
                @click="addProject">添加</div>
88 89
         </div>
@@ -116,25 +117,51 @@
116 117
            v-if="!isChange">
117 118
         <div class="cost-title">
118 119
           <div>预约费用</div>
119
-          <div>¥399</div>
120
+          <div>¥{{reservationPrice}}</div>
120 121
         </div>
121 122
         <div class="cost-coupon-list">
122
-          <div class="coupon">
123
+          <div class="coupon"
124
+               @click="onCoupon">
123 125
             <div class="coupon-tips">
124 126
               <div class="coupon-icon"><img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/couponIcon.png"
125 127
                      alt=""></div>
126 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 131
             </div>
129 132
             <div class="on-icon">></div>
130 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 156
           </div>
157
+
158
+
159
+
160
+
161
+
135 162
         </div>
136 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 165
         </div>
139 166
       </div>
140 167
       <div class="payment"
@@ -147,35 +174,43 @@
147 174
              @click="isCoupun=false"><img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/delete.png"
148 175
                alt=""></div>
149 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 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 189
               <div v-else
156 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 193
               </div>
160 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 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 200
             </div>
166 201
             <div class="bottom">
167
-              <div class="coupon-notes">
202
+              <div class="coupon-notes"
203
+                   @click="isOver=!isOver">
168 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 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 209
                        alt=""></div>
175 210
               </div>
176 211
             </div>
177
-          </div>
178
-        </div>
212
+          </li>
213
+        </ul>
179 214
       </div>
180 215
     </mine-pupop>
181 216
     <!-- 选择项目 -->
@@ -225,19 +260,45 @@
225 260
         <div class="ts-content">
226 261
           <ul class="ts-table">
227 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 266
               <div>{{item.text}}</div>
230 267
               <div>{{item.ts}}</div>
231 268
             </li>
232 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 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 302
       </div>
242 303
     </mine-pupop>
243 304
     <!-- 皮肤状态 -->
@@ -253,17 +314,18 @@
253 314
                 :key="index">
254 315
               <div class="pore-top">
255 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 320
                 </div>
259 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 325
                 </div>
264 326
               </div>
265 327
               <div class="pore-bottom min-size">
266
-                {{'皮肤状态一般,污物阻塞导致,油脂分泌旺盛,皮肤状态一般,污物阻塞导致,油脂分泌旺盛皮肤状态一般,污物阻塞导致,油脂分泌旺盛,皮肤状态一般,污物阻塞导致,油脂分泌旺盛油脂分泌旺盛油脂分泌旺盛旺…' |ellipsis(85)}}
328
+                {{item.suggest | ellipsis(85)}}
267 329
               </div>
268 330
             </li>
269 331
           </ul>
@@ -281,6 +343,8 @@ export default {
281 343
   components: { minePupop },
282 344
   data () {
283 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 348
       select: 'https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/select.png',
285 349
       unSelect: 'https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/unSelect.png',
286 350
       userInfo: {
@@ -295,75 +359,12 @@ export default {
295 359
       //升级包列表
296 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 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 369
       poreList: [
369 370
         {
@@ -382,15 +383,17 @@ export default {
382 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 392
       timesInfo: '',
393
+      reservationPrice: 0,//预约费用
392 394
       projectInfo: '',
393 395
       productsInfo: '',
396
+      timeIndexText: "",//当前选择的时间
394 397
       weekInfo: '',
395 398
       programmeIndex: '',
396 399
       remarks: '',
@@ -402,6 +405,20 @@ export default {
402 405
       id: 0,//订单id
403 406
       isChange: false,//项目是否有改变
404 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 424
   computed: {
@@ -417,6 +434,9 @@ export default {
417 434
         this.remarks = res.data.remark
418 435
         this.programmeList = res.data.scheme_list
419 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 442
     getProjectList () {
@@ -470,6 +490,7 @@ export default {
470 490
                   e.price = Number(e.price) + Number(item.price)
471 491
                   this.isProject = false
472 492
                   this.isEditProject = false
493
+                  this.calculationPrice()
473 494
                 }
474 495
               })
475 496
             }
@@ -521,14 +542,335 @@ export default {
521 542
         this.order_data.project_list.push(projectInfo)
522 543
         this.isChange = true
523 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 874
     onOperation (index) {
533 875
       if (this.programmeList[index].onSelect) {
534 876
         this.$set(this.programmeList[index], 'onSelect', !this.programmeList[index].onSelect)
@@ -1006,10 +1348,27 @@ export default {
1006 1348
       overflow: scroll;
1007 1349
       .coupon-info {
1008 1350
         width: 345px;
1351
+        margin-bottom: 20px;
1009 1352
         padding: 20px 14px 10px 14px;
1010 1353
         position: relative;
1011 1354
         background: #fff4e6;
1012 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 1372
         .top {
1014 1373
           display: flex;
1015 1374
           justify-content: space-between;
@@ -1043,6 +1402,13 @@ export default {
1043 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 1412
           .coupon-tip {
1047 1413
             .tips-title {
1048 1414
               font-size: 16px;
@@ -1143,7 +1509,7 @@ export default {
1143 1509
   }
1144 1510
   .ts-block {
1145 1511
     width: 540px;
1146
-    height: 400px;
1512
+    height: 420px;
1147 1513
     background: #ffffff;
1148 1514
     border-radius: 8px;
1149 1515
     position: relative;
@@ -1178,15 +1544,32 @@ export default {
1178 1544
         li {
1179 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 1563
       .ts-boty {
1183 1564
         margin-top: 10px;
1565
+        margin-left: -19px;
1184 1566
         display: flex;
1185
-        justify-content: space-between;
1567
+        justify-content: unset;
1186 1568
         flex-wrap: wrap;
1187 1569
         li {
1188 1570
           margin-top: 10px;
1189 1571
           width: 68px;
1572
+          margin-left: 19px;
1190 1573
           height: 30px;
1191 1574
           line-height: 30px;
1192 1575
           text-align: center;
@@ -1197,11 +1580,18 @@ export default {
1197 1580
           font-weight: 400;
1198 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 1591
     .ts-button {
1203 1592
       position: absolute;
1204 1593
       bottom: 42px;
1594
+      padding: 0;
1205 1595
       left: 50%;
1206 1596
       transform: translateX(-50%);
1207 1597
       width: 176px;

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

@@ -1,30 +1,90 @@
1 1
 <template>
2 2
   <div class="mine">
3 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 6
     </div>
7 7
   </div>
8 8
 </template>
9 9
 
10 10
 <script>
11
+import QRCode from 'qrcodejs2'
12
+import api from '../../server/home'
11 13
 export default {
12 14
   components: {},
13 15
   data () {
14
-    return {};
16
+    return {
17
+      qrcode_string: '',
18
+      ticket: '',
19
+      checkCodeInterval: null,
20
+      checkCodeTimeout: null,
21
+    };
15 22
   },
16 23
   computed: {},
17 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 74
   created () {
75
+    this.getAuthCode()
22 76
 
23 77
   },
24 78
 
25 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 90
 </script>

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

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

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

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

+ 6 - 6
src/router/index.js

@@ -7,10 +7,10 @@ import login from "./map/login";
7 7
 Vue.use(Router)
8 8
 
9 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 22
   children: [
23 23
     { path: '/home', component: Home },
24 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 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 40
     { path: '/customerMan/projectOrder', component: projectOrder },
29 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 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 57
     { path: '/storeDetection', component: StoreDetection },
34 58
     { path: '/coupon', component: Coupon },
35 59
 

+ 18 - 0
src/server/home.js

@@ -42,6 +42,24 @@ export default class Home {
42 42
   static getProducts (parms) {
43 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 65
   static getOrderList (parms) {

+ 12 - 0
src/server/urls.js

@@ -21,6 +21,18 @@ export default {
21 21
   getProjectList: '/v2/pad/project/list',
22 22
   //获取升级包
23 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 38
    *  by ListKer

+ 35 - 35
vue.config.js

@@ -3,40 +3,40 @@
3 3
 const MiniCssExtractPlugin = require('mini-css-extract-plugin');
4 4
 
5 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
 }