Commit 7d6833f2c774220822ef403b9237fcbb434547aa

Authored by 范牧
1 parent c300654f9c
Exists in master

地址列表

... ... @@ -0,0 +1,5 @@
  1 +/node_modules/
  2 +/config/
  3 +/dist/
  4 +/*.js
  5 +/*.json
0 6 \ No newline at end of file
... ...
... ... @@ -0,0 +1,30 @@
  1 +module.exports = {
  2 + "env": {
  3 + "browser": true,
  4 + "es6": true
  5 + },
  6 + "extends": [
  7 + 'standard',
  8 + "eslint:recommended",
  9 + "plugin:vue/essential",
  10 + "plugin:@typescript-eslint/eslint-recommended",
  11 + ],
  12 + "globals": {
  13 + "Atomics": "readonly",
  14 + "SharedArrayBuffer": "readonly",
  15 + "uni": true,
  16 + "module": true
  17 + },
  18 + "parserOptions": {
  19 + "ecmaVersion": 11,
  20 + "parser": "@typescript-eslint/parser",
  21 + "sourceType": "module"
  22 + },
  23 + "plugins": [
  24 + "vue",
  25 + "@typescript-eslint"
  26 + ],
  27 + "rules": {
  28 + quotes: ['error', 'single'],
  29 + }
  30 +};
... ...
package-lock.json
... ... @@ -1493,6 +1493,12 @@
1493 1493 "integrity": "sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA=",
1494 1494 "dev": true
1495 1495 },
  1496 + "@types/eslint-visitor-keys": {
  1497 + "version": "1.0.0",
  1498 + "resolved": "https://registry.npm.taobao.org/@types/eslint-visitor-keys/download/@types/eslint-visitor-keys-1.0.0.tgz",
  1499 + "integrity": "sha1-HuMNeVRMqE1o1LPNsK9PIFZj3S0=",
  1500 + "dev": true
  1501 + },
1496 1502 "@types/events": {
1497 1503 "version": "3.0.0",
1498 1504 "resolved": "https://registry.npm.taobao.org/@types/events/download/@types/events-3.0.0.tgz?cache=0&sync_timestamp=1580843133282&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fevents%2Fdownload%2F%40types%2Fevents-3.0.0.tgz",
... ... @@ -1518,6 +1524,12 @@
1518 1524 "@types/node": "*"
1519 1525 }
1520 1526 },
  1527 + "@types/json-schema": {
  1528 + "version": "7.0.4",
  1529 + "resolved": "https://registry.npm.taobao.org/@types/json-schema/download/@types/json-schema-7.0.4.tgz?cache=0&sync_timestamp=1588200662880&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fjson-schema%2Fdownload%2F%40types%2Fjson-schema-7.0.4.tgz",
  1530 + "integrity": "sha1-OP1z3f2bVaux4bLtV4y1W9e30zk=",
  1531 + "dev": true
  1532 + },
1521 1533 "@types/minimatch": {
1522 1534 "version": "3.0.3",
1523 1535 "resolved": "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.3.tgz",
... ... @@ -1547,6 +1559,104 @@
1547 1559 "integrity": "sha1-knmXNCu59KUYWobmV5oKGK/DOwo=",
1548 1560 "dev": true
1549 1561 },
  1562 + "@typescript-eslint/eslint-plugin": {
  1563 + "version": "3.0.0",
  1564 + "resolved": "https://registry.npm.taobao.org/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-3.0.0.tgz?cache=0&sync_timestamp=1590102419751&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40typescript-eslint%2Feslint-plugin%2Fdownload%2F%40typescript-eslint%2Feslint-plugin-3.0.0.tgz",
  1565 + "integrity": "sha1-Avjsa1zoFL2oDfwiRj8Qi+0faZs=",
  1566 + "dev": true,
  1567 + "requires": {
  1568 + "@typescript-eslint/experimental-utils": "3.0.0",
  1569 + "functional-red-black-tree": "^1.0.1",
  1570 + "regexpp": "^3.0.0",
  1571 + "semver": "^7.3.2",
  1572 + "tsutils": "^3.17.1"
  1573 + },
  1574 + "dependencies": {
  1575 + "semver": {
  1576 + "version": "7.3.2",
  1577 + "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.3.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.3.2.tgz",
  1578 + "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=",
  1579 + "dev": true
  1580 + },
  1581 + "tsutils": {
  1582 + "version": "3.17.1",
  1583 + "resolved": "https://registry.npm.taobao.org/tsutils/download/tsutils-3.17.1.tgz",
  1584 + "integrity": "sha1-7XGZF/EcoN7lhicrKsSeAVot11k=",
  1585 + "dev": true,
  1586 + "requires": {
  1587 + "tslib": "^1.8.1"
  1588 + }
  1589 + }
  1590 + }
  1591 + },
  1592 + "@typescript-eslint/experimental-utils": {
  1593 + "version": "3.0.0",
  1594 + "resolved": "https://registry.npm.taobao.org/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-3.0.0.tgz?cache=0&sync_timestamp=1590102416205&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40typescript-eslint%2Fexperimental-utils%2Fdownload%2F%40typescript-eslint%2Fexperimental-utils-3.0.0.tgz",
  1595 + "integrity": "sha1-Hd9T7rYayOqpp3BycieQrE9kHAM=",
  1596 + "dev": true,
  1597 + "requires": {
  1598 + "@types/json-schema": "^7.0.3",
  1599 + "@typescript-eslint/typescript-estree": "3.0.0",
  1600 + "eslint-scope": "^5.0.0",
  1601 + "eslint-utils": "^2.0.0"
  1602 + },
  1603 + "dependencies": {
  1604 + "eslint-scope": {
  1605 + "version": "5.0.0",
  1606 + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.0.0.tgz",
  1607 + "integrity": "sha1-6HyIh8c+jR7ITxylkWRcNYv8j7k=",
  1608 + "dev": true,
  1609 + "requires": {
  1610 + "esrecurse": "^4.1.0",
  1611 + "estraverse": "^4.1.1"
  1612 + }
  1613 + }
  1614 + }
  1615 + },
  1616 + "@typescript-eslint/parser": {
  1617 + "version": "3.0.0",
  1618 + "resolved": "https://registry.npm.taobao.org/@typescript-eslint/parser/download/@typescript-eslint/parser-3.0.0.tgz?cache=0&sync_timestamp=1590102418147&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40typescript-eslint%2Fparser%2Fdownload%2F%40typescript-eslint%2Fparser-3.0.0.tgz",
  1619 + "integrity": "sha1-/p/fGKEVXALAQiDBRQajIMtsaUQ=",
  1620 + "dev": true,
  1621 + "requires": {
  1622 + "@types/eslint-visitor-keys": "^1.0.0",
  1623 + "@typescript-eslint/experimental-utils": "3.0.0",
  1624 + "@typescript-eslint/typescript-estree": "3.0.0",
  1625 + "eslint-visitor-keys": "^1.1.0"
  1626 + }
  1627 + },
  1628 + "@typescript-eslint/typescript-estree": {
  1629 + "version": "3.0.0",
  1630 + "resolved": "https://registry.npm.taobao.org/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-3.0.0.tgz",
  1631 + "integrity": "sha1-+kDht2zP+IATC+BU2cOY6WAEv0I=",
  1632 + "dev": true,
  1633 + "requires": {
  1634 + "debug": "^4.1.1",
  1635 + "eslint-visitor-keys": "^1.1.0",
  1636 + "glob": "^7.1.6",
  1637 + "is-glob": "^4.0.1",
  1638 + "lodash": "^4.17.15",
  1639 + "semver": "^7.3.2",
  1640 + "tsutils": "^3.17.1"
  1641 + },
  1642 + "dependencies": {
  1643 + "semver": {
  1644 + "version": "7.3.2",
  1645 + "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.3.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.3.2.tgz",
  1646 + "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=",
  1647 + "dev": true
  1648 + },
  1649 + "tsutils": {
  1650 + "version": "3.17.1",
  1651 + "resolved": "https://registry.npm.taobao.org/tsutils/download/tsutils-3.17.1.tgz",
  1652 + "integrity": "sha1-7XGZF/EcoN7lhicrKsSeAVot11k=",
  1653 + "dev": true,
  1654 + "requires": {
  1655 + "tslib": "^1.8.1"
  1656 + }
  1657 + }
  1658 + }
  1659 + },
1550 1660 "@vue/babel-helper-vue-jsx-merge-props": {
1551 1661 "version": "1.0.0",
1552 1662 "resolved": "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.0.0.tgz",
... ... @@ -2047,6 +2157,12 @@
2047 2157 "indexes-of": "^1.0.1",
2048 2158 "uniq": "^1.0.1"
2049 2159 }
  2160 + },
  2161 + "prettier": {
  2162 + "version": "1.19.1",
  2163 + "resolved": "https://registry.npm.taobao.org/prettier/download/prettier-1.19.1.tgz",
  2164 + "integrity": "sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=",
  2165 + "optional": true
2050 2166 }
2051 2167 }
2052 2168 },
... ... @@ -2258,6 +2374,12 @@
2258 2374 "integrity": "sha1-Po2KmUfQWZoXltECJddDL0pKz14=",
2259 2375 "dev": true
2260 2376 },
  2377 + "acorn-jsx": {
  2378 + "version": "5.2.0",
  2379 + "resolved": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.2.0.tgz",
  2380 + "integrity": "sha1-TGYGkXPW/daO2FI5/CViJhgrLr4=",
  2381 + "dev": true
  2382 + },
2261 2383 "acorn-walk": {
2262 2384 "version": "7.1.1",
2263 2385 "resolved": "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-7.1.1.tgz",
... ... @@ -2348,6 +2470,23 @@
2348 2470 "integrity": "sha1-46PaS/uubIapwoViXeEkojQCb78=",
2349 2471 "dev": true
2350 2472 },
  2473 + "ansi-escapes": {
  2474 + "version": "4.3.1",
  2475 + "resolved": "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-4.3.1.tgz?cache=0&sync_timestamp=1583072845985&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-escapes%2Fdownload%2Fansi-escapes-4.3.1.tgz",
  2476 + "integrity": "sha1-pcR8xDGB8fOP/XB2g3cA05VSKmE=",
  2477 + "dev": true,
  2478 + "requires": {
  2479 + "type-fest": "^0.11.0"
  2480 + },
  2481 + "dependencies": {
  2482 + "type-fest": {
  2483 + "version": "0.11.0",
  2484 + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.11.0.tgz",
  2485 + "integrity": "sha1-l6vwhyMQ/tiKXEZrJWgVdhReM/E=",
  2486 + "dev": true
  2487 + }
  2488 + }
  2489 + },
2351 2490 "ansi-html": {
2352 2491 "version": "0.0.7",
2353 2492 "resolved": "http://registry.npm.taobao.org/ansi-html/download/ansi-html-0.0.7.tgz",
... ... @@ -2449,6 +2588,17 @@
2449 2588 "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
2450 2589 "dev": true
2451 2590 },
  2591 + "array-includes": {
  2592 + "version": "3.1.1",
  2593 + "resolved": "https://registry.npm.taobao.org/array-includes/download/array-includes-3.1.1.tgz",
  2594 + "integrity": "sha1-zdZ+aFK9+cEhVGB4ZzIlXtJFk0g=",
  2595 + "dev": true,
  2596 + "requires": {
  2597 + "define-properties": "^1.1.3",
  2598 + "es-abstract": "^1.17.0",
  2599 + "is-string": "^1.0.5"
  2600 + }
  2601 + },
2452 2602 "array-union": {
2453 2603 "version": "1.0.2",
2454 2604 "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz",
... ... @@ -2469,6 +2619,16 @@
2469 2619 "resolved": "http://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz",
2470 2620 "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
2471 2621 },
  2622 + "array.prototype.flat": {
  2623 + "version": "1.2.3",
  2624 + "resolved": "https://registry.npm.taobao.org/array.prototype.flat/download/array.prototype.flat-1.2.3.tgz?cache=0&sync_timestamp=1576170698154&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray.prototype.flat%2Fdownload%2Farray.prototype.flat-1.2.3.tgz",
  2625 + "integrity": "sha1-DegrQmsDGNv9uUAInjiwQ9N/bHs=",
  2626 + "dev": true,
  2627 + "requires": {
  2628 + "define-properties": "^1.1.3",
  2629 + "es-abstract": "^1.17.0-next.1"
  2630 + }
  2631 + },
2472 2632 "arraybuffer.slice": {
2473 2633 "version": "0.0.7",
2474 2634 "resolved": "https://registry.npm.taobao.org/arraybuffer.slice/download/arraybuffer.slice-0.0.7.tgz",
... ... @@ -2526,6 +2686,12 @@
2526 2686 "resolved": "http://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz",
2527 2687 "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
2528 2688 },
  2689 + "astral-regex": {
  2690 + "version": "1.0.0",
  2691 + "resolved": "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz",
  2692 + "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=",
  2693 + "dev": true
  2694 + },
2529 2695 "async": {
2530 2696 "version": "2.6.3",
2531 2697 "resolved": "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz",
... ... @@ -3360,6 +3526,12 @@
3360 3526 }
3361 3527 }
3362 3528 },
  3529 + "chardet": {
  3530 + "version": "0.7.0",
  3531 + "resolved": "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz?cache=0&sync_timestamp=1588894059283&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchardet%2Fdownload%2Fchardet-0.7.0.tgz",
  3532 + "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=",
  3533 + "dev": true
  3534 + },
3363 3535 "charenc": {
3364 3536 "version": "0.0.2",
3365 3537 "resolved": "http://registry.npm.taobao.org/charenc/download/charenc-0.0.2.tgz",
... ... @@ -3540,6 +3712,12 @@
3540 3712 "integrity": "sha1-BjIjmktapMlYYQFCw0u3plH8jfU=",
3541 3713 "dev": true
3542 3714 },
  3715 + "cli-width": {
  3716 + "version": "2.2.1",
  3717 + "resolved": "https://registry.npm.taobao.org/cli-width/download/cli-width-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-width%2Fdownload%2Fcli-width-2.2.1.tgz",
  3718 + "integrity": "sha1-sEM9C06chH7xiGik7xb9X8gnHEg=",
  3719 + "dev": true
  3720 + },
3543 3721 "clipboardy": {
3544 3722 "version": "2.3.0",
3545 3723 "resolved": "https://registry.npm.taobao.org/clipboardy/download/clipboardy-2.3.0.tgz",
... ... @@ -3807,6 +3985,12 @@
3807 3985 "resolved": "http://registry.npm.taobao.org/constants-browserify/download/constants-browserify-1.0.0.tgz",
3808 3986 "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U="
3809 3987 },
  3988 + "contains-path": {
  3989 + "version": "0.1.0",
  3990 + "resolved": "https://registry.npm.taobao.org/contains-path/download/contains-path-0.1.0.tgz",
  3991 + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
  3992 + "dev": true
  3993 + },
3810 3994 "content-disposition": {
3811 3995 "version": "0.5.3",
3812 3996 "resolved": "http://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz",
... ... @@ -4668,6 +4852,16 @@
4668 4852 "buffer-indexof": "^1.0.0"
4669 4853 }
4670 4854 },
  4855 + "doctrine": {
  4856 + "version": "1.5.0",
  4857 + "resolved": "https://registry.npm.taobao.org/doctrine/download/doctrine-1.5.0.tgz",
  4858 + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
  4859 + "dev": true,
  4860 + "requires": {
  4861 + "esutils": "^2.0.2",
  4862 + "isarray": "^1.0.0"
  4863 + }
  4864 + },
4671 4865 "dom-converter": {
4672 4866 "version": "0.2.0",
4673 4867 "resolved": "http://registry.npm.taobao.org/dom-converter/download/dom-converter-0.2.0.tgz",
... ... @@ -5025,6 +5219,618 @@
5025 5219 "source-map": "~0.6.1"
5026 5220 }
5027 5221 },
  5222 + "eslint": {
  5223 + "version": "7.0.0",
  5224 + "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-7.0.0.tgz?cache=0&sync_timestamp=1589251748946&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-7.0.0.tgz",
  5225 + "integrity": "sha1-w139BKQ3IRC9eMaajXmGQnORmgg=",
  5226 + "dev": true,
  5227 + "requires": {
  5228 + "@babel/code-frame": "^7.0.0",
  5229 + "ajv": "^6.10.0",
  5230 + "chalk": "^4.0.0",
  5231 + "cross-spawn": "^7.0.2",
  5232 + "debug": "^4.0.1",
  5233 + "doctrine": "^3.0.0",
  5234 + "eslint-scope": "^5.0.0",
  5235 + "eslint-utils": "^2.0.0",
  5236 + "eslint-visitor-keys": "^1.1.0",
  5237 + "espree": "^7.0.0",
  5238 + "esquery": "^1.2.0",
  5239 + "esutils": "^2.0.2",
  5240 + "file-entry-cache": "^5.0.1",
  5241 + "functional-red-black-tree": "^1.0.1",
  5242 + "glob-parent": "^5.0.0",
  5243 + "globals": "^12.1.0",
  5244 + "ignore": "^4.0.6",
  5245 + "import-fresh": "^3.0.0",
  5246 + "imurmurhash": "^0.1.4",
  5247 + "inquirer": "^7.0.0",
  5248 + "is-glob": "^4.0.0",
  5249 + "js-yaml": "^3.13.1",
  5250 + "json-stable-stringify-without-jsonify": "^1.0.1",
  5251 + "levn": "^0.4.1",
  5252 + "lodash": "^4.17.14",
  5253 + "minimatch": "^3.0.4",
  5254 + "natural-compare": "^1.4.0",
  5255 + "optionator": "^0.9.1",
  5256 + "progress": "^2.0.0",
  5257 + "regexpp": "^3.1.0",
  5258 + "semver": "^7.2.1",
  5259 + "strip-ansi": "^6.0.0",
  5260 + "strip-json-comments": "^3.1.0",
  5261 + "table": "^5.2.3",
  5262 + "text-table": "^0.2.0",
  5263 + "v8-compile-cache": "^2.0.3"
  5264 + },
  5265 + "dependencies": {
  5266 + "acorn": {
  5267 + "version": "7.2.0",
  5268 + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.2.0.tgz?cache=0&sync_timestamp=1589008014473&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.2.0.tgz",
  5269 + "integrity": "sha1-F+p+QNfIZA/1SmlMiJwm8xcE7/4=",
  5270 + "dev": true
  5271 + },
  5272 + "ansi-styles": {
  5273 + "version": "4.2.1",
  5274 + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.2.1.tgz",
  5275 + "integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k=",
  5276 + "dev": true,
  5277 + "requires": {
  5278 + "@types/color-name": "^1.1.1",
  5279 + "color-convert": "^2.0.1"
  5280 + }
  5281 + },
  5282 + "chalk": {
  5283 + "version": "4.0.0",
  5284 + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.0.0.tgz?cache=0&sync_timestamp=1585815759944&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-4.0.0.tgz",
  5285 + "integrity": "sha1-bpgIHtLRf6q2FetSrGbsH+YgnnI=",
  5286 + "dev": true,
  5287 + "requires": {
  5288 + "ansi-styles": "^4.1.0",
  5289 + "supports-color": "^7.1.0"
  5290 + }
  5291 + },
  5292 + "color-convert": {
  5293 + "version": "2.0.1",
  5294 + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
  5295 + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
  5296 + "dev": true,
  5297 + "requires": {
  5298 + "color-name": "~1.1.4"
  5299 + }
  5300 + },
  5301 + "color-name": {
  5302 + "version": "1.1.4",
  5303 + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
  5304 + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
  5305 + "dev": true
  5306 + },
  5307 + "cross-spawn": {
  5308 + "version": "7.0.2",
  5309 + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-7.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-7.0.2.tgz",
  5310 + "integrity": "sha1-0Nfc+nTokRXHYZ9PchqU4f23FtY=",
  5311 + "dev": true,
  5312 + "requires": {
  5313 + "path-key": "^3.1.0",
  5314 + "shebang-command": "^2.0.0",
  5315 + "which": "^2.0.1"
  5316 + }
  5317 + },
  5318 + "doctrine": {
  5319 + "version": "3.0.0",
  5320 + "resolved": "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz",
  5321 + "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=",
  5322 + "dev": true,
  5323 + "requires": {
  5324 + "esutils": "^2.0.2"
  5325 + }
  5326 + },
  5327 + "eslint-scope": {
  5328 + "version": "5.0.0",
  5329 + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.0.0.tgz",
  5330 + "integrity": "sha1-6HyIh8c+jR7ITxylkWRcNYv8j7k=",
  5331 + "dev": true,
  5332 + "requires": {
  5333 + "esrecurse": "^4.1.0",
  5334 + "estraverse": "^4.1.1"
  5335 + }
  5336 + },
  5337 + "espree": {
  5338 + "version": "7.0.0",
  5339 + "resolved": "https://registry.npm.taobao.org/espree/download/espree-7.0.0.tgz?cache=0&sync_timestamp=1588886720119&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-7.0.0.tgz",
  5340 + "integrity": "sha1-inpg8hjmnxIKhC3CTFqIqndIp04=",
  5341 + "dev": true,
  5342 + "requires": {
  5343 + "acorn": "^7.1.1",
  5344 + "acorn-jsx": "^5.2.0",
  5345 + "eslint-visitor-keys": "^1.1.0"
  5346 + }
  5347 + },
  5348 + "glob-parent": {
  5349 + "version": "5.1.1",
  5350 + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.1.tgz?cache=0&sync_timestamp=1584835847541&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob-parent%2Fdownload%2Fglob-parent-5.1.1.tgz",
  5351 + "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=",
  5352 + "dev": true,
  5353 + "requires": {
  5354 + "is-glob": "^4.0.1"
  5355 + }
  5356 + },
  5357 + "globals": {
  5358 + "version": "12.4.0",
  5359 + "resolved": "https://registry.npm.taobao.org/globals/download/globals-12.4.0.tgz?cache=0&sync_timestamp=1586675819799&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobals%2Fdownload%2Fglobals-12.4.0.tgz",
  5360 + "integrity": "sha1-oYgTV2pBsAokqX5/gVkYwuGZJfg=",
  5361 + "dev": true,
  5362 + "requires": {
  5363 + "type-fest": "^0.8.1"
  5364 + }
  5365 + },
  5366 + "has-flag": {
  5367 + "version": "4.0.0",
  5368 + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
  5369 + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
  5370 + "dev": true
  5371 + },
  5372 + "ignore": {
  5373 + "version": "4.0.6",
  5374 + "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz",
  5375 + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=",
  5376 + "dev": true
  5377 + },
  5378 + "import-fresh": {
  5379 + "version": "3.2.1",
  5380 + "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.2.1.tgz",
  5381 + "integrity": "sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY=",
  5382 + "dev": true,
  5383 + "requires": {
  5384 + "parent-module": "^1.0.0",
  5385 + "resolve-from": "^4.0.0"
  5386 + }
  5387 + },
  5388 + "levn": {
  5389 + "version": "0.4.1",
  5390 + "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.4.1.tgz",
  5391 + "integrity": "sha1-rkViwAdHO5MqYgDUAyaN0v/8at4=",
  5392 + "dev": true,
  5393 + "requires": {
  5394 + "prelude-ls": "^1.2.1",
  5395 + "type-check": "~0.4.0"
  5396 + }
  5397 + },
  5398 + "optionator": {
  5399 + "version": "0.9.1",
  5400 + "resolved": "https://registry.npm.taobao.org/optionator/download/optionator-0.9.1.tgz",
  5401 + "integrity": "sha1-TyNqY3Pa4FZqbUPhMmZ09QwpFJk=",
  5402 + "dev": true,
  5403 + "requires": {
  5404 + "deep-is": "^0.1.3",
  5405 + "fast-levenshtein": "^2.0.6",
  5406 + "levn": "^0.4.1",
  5407 + "prelude-ls": "^1.2.1",
  5408 + "type-check": "^0.4.0",
  5409 + "word-wrap": "^1.2.3"
  5410 + }
  5411 + },
  5412 + "path-key": {
  5413 + "version": "3.1.1",
  5414 + "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-3.1.1.tgz",
  5415 + "integrity": "sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=",
  5416 + "dev": true
  5417 + },
  5418 + "prelude-ls": {
  5419 + "version": "1.2.1",
  5420 + "resolved": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.2.1.tgz",
  5421 + "integrity": "sha1-3rxkidem5rDnYRiIzsiAM30xY5Y=",
  5422 + "dev": true
  5423 + },
  5424 + "resolve-from": {
  5425 + "version": "4.0.0",
  5426 + "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz",
  5427 + "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=",
  5428 + "dev": true
  5429 + },
  5430 + "semver": {
  5431 + "version": "7.3.2",
  5432 + "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.3.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.3.2.tgz",
  5433 + "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=",
  5434 + "dev": true
  5435 + },
  5436 + "shebang-command": {
  5437 + "version": "2.0.0",
  5438 + "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fshebang-command%2Fdownload%2Fshebang-command-2.0.0.tgz",
  5439 + "integrity": "sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=",
  5440 + "dev": true,
  5441 + "requires": {
  5442 + "shebang-regex": "^3.0.0"
  5443 + }
  5444 + },
  5445 + "shebang-regex": {
  5446 + "version": "3.0.0",
  5447 + "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-3.0.0.tgz",
  5448 + "integrity": "sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=",
  5449 + "dev": true
  5450 + },
  5451 + "strip-json-comments": {
  5452 + "version": "3.1.0",
  5453 + "resolved": "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.1.0.tgz?cache=0&sync_timestamp=1586160317146&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-3.1.0.tgz",
  5454 + "integrity": "sha1-djjTFCISns9EV0QACfugP5+awYA=",
  5455 + "dev": true
  5456 + },
  5457 + "supports-color": {
  5458 + "version": "7.1.0",
  5459 + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.1.0.tgz?cache=0&sync_timestamp=1569557271992&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.1.0.tgz",
  5460 + "integrity": "sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E=",
  5461 + "dev": true,
  5462 + "requires": {
  5463 + "has-flag": "^4.0.0"
  5464 + }
  5465 + },
  5466 + "type-check": {
  5467 + "version": "0.4.0",
  5468 + "resolved": "https://registry.npm.taobao.org/type-check/download/type-check-0.4.0.tgz",
  5469 + "integrity": "sha1-B7ggO/pwVsBlcFDjzNLDdzC6uPE=",
  5470 + "dev": true,
  5471 + "requires": {
  5472 + "prelude-ls": "^1.2.1"
  5473 + }
  5474 + },
  5475 + "type-fest": {
  5476 + "version": "0.8.1",
  5477 + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.8.1.tgz",
  5478 + "integrity": "sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=",
  5479 + "dev": true
  5480 + },
  5481 + "which": {
  5482 + "version": "2.0.2",
  5483 + "resolved": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz",
  5484 + "integrity": "sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=",
  5485 + "dev": true,
  5486 + "requires": {
  5487 + "isexe": "^2.0.0"
  5488 + }
  5489 + }
  5490 + }
  5491 + },
  5492 + "eslint-config-prettier": {
  5493 + "version": "6.11.0",
  5494 + "resolved": "https://registry.npm.taobao.org/eslint-config-prettier/download/eslint-config-prettier-6.11.0.tgz",
  5495 + "integrity": "sha1-9tIjjBKQ0ByFmotcH301KgsNqLE=",
  5496 + "dev": true,
  5497 + "requires": {
  5498 + "get-stdin": "^6.0.0"
  5499 + },
  5500 + "dependencies": {
  5501 + "get-stdin": {
  5502 + "version": "6.0.0",
  5503 + "resolved": "https://registry.npm.taobao.org/get-stdin/download/get-stdin-6.0.0.tgz",
  5504 + "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=",
  5505 + "dev": true
  5506 + }
  5507 + }
  5508 + },
  5509 + "eslint-config-standard": {
  5510 + "version": "14.1.1",
  5511 + "resolved": "https://registry.npm.taobao.org/eslint-config-standard/download/eslint-config-standard-14.1.1.tgz",
  5512 + "integrity": "sha1-gwqOROeu995nRkl5rQa0BgJsVuo=",
  5513 + "dev": true
  5514 + },
  5515 + "eslint-import-resolver-node": {
  5516 + "version": "0.3.3",
  5517 + "resolved": "https://registry.npm.taobao.org/eslint-import-resolver-node/download/eslint-import-resolver-node-0.3.3.tgz?cache=0&sync_timestamp=1578726660361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-import-resolver-node%2Fdownload%2Feslint-import-resolver-node-0.3.3.tgz",
  5518 + "integrity": "sha1-26pStrKBa1C8ZxGvdUIt6AjphAQ=",
  5519 + "dev": true,
  5520 + "requires": {
  5521 + "debug": "^2.6.9",
  5522 + "resolve": "^1.13.1"
  5523 + },
  5524 + "dependencies": {
  5525 + "debug": {
  5526 + "version": "2.6.9",
  5527 + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
  5528 + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
  5529 + "dev": true,
  5530 + "requires": {
  5531 + "ms": "2.0.0"
  5532 + }
  5533 + },
  5534 + "ms": {
  5535 + "version": "2.0.0",
  5536 + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1575472461218&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
  5537 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
  5538 + "dev": true
  5539 + }
  5540 + }
  5541 + },
  5542 + "eslint-module-utils": {
  5543 + "version": "2.6.0",
  5544 + "resolved": "https://registry.npm.taobao.org/eslint-module-utils/download/eslint-module-utils-2.6.0.tgz",
  5545 + "integrity": "sha1-V569CU9Wr3eX0ZyYZsnJSGYpv6Y=",
  5546 + "dev": true,
  5547 + "requires": {
  5548 + "debug": "^2.6.9",
  5549 + "pkg-dir": "^2.0.0"
  5550 + },
  5551 + "dependencies": {
  5552 + "debug": {
  5553 + "version": "2.6.9",
  5554 + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
  5555 + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
  5556 + "dev": true,
  5557 + "requires": {
  5558 + "ms": "2.0.0"
  5559 + }
  5560 + },
  5561 + "find-up": {
  5562 + "version": "2.1.0",
  5563 + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz",
  5564 + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
  5565 + "dev": true,
  5566 + "requires": {
  5567 + "locate-path": "^2.0.0"
  5568 + }
  5569 + },
  5570 + "locate-path": {
  5571 + "version": "2.0.0",
  5572 + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz",
  5573 + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
  5574 + "dev": true,
  5575 + "requires": {
  5576 + "p-locate": "^2.0.0",
  5577 + "path-exists": "^3.0.0"
  5578 + }
  5579 + },
  5580 + "ms": {
  5581 + "version": "2.0.0",
  5582 + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1575472461218&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
  5583 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
  5584 + "dev": true
  5585 + },
  5586 + "p-limit": {
  5587 + "version": "1.3.0",
  5588 + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz",
  5589 + "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=",
  5590 + "dev": true,
  5591 + "requires": {
  5592 + "p-try": "^1.0.0"
  5593 + }
  5594 + },
  5595 + "p-locate": {
  5596 + "version": "2.0.0",
  5597 + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz",
  5598 + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
  5599 + "dev": true,
  5600 + "requires": {
  5601 + "p-limit": "^1.1.0"
  5602 + }
  5603 + },
  5604 + "p-try": {
  5605 + "version": "1.0.0",
  5606 + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz",
  5607 + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
  5608 + "dev": true
  5609 + },
  5610 + "pkg-dir": {
  5611 + "version": "2.0.0",
  5612 + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-2.0.0.tgz",
  5613 + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
  5614 + "dev": true,
  5615 + "requires": {
  5616 + "find-up": "^2.1.0"
  5617 + }
  5618 + }
  5619 + }
  5620 + },
  5621 + "eslint-plugin-es": {
  5622 + "version": "3.0.1",
  5623 + "resolved": "https://registry.npm.taobao.org/eslint-plugin-es/download/eslint-plugin-es-3.0.1.tgz",
  5624 + "integrity": "sha1-dafN/czdwFiZNK7rOEF18iHFeJM=",
  5625 + "dev": true,
  5626 + "requires": {
  5627 + "eslint-utils": "^2.0.0",
  5628 + "regexpp": "^3.0.0"
  5629 + }
  5630 + },
  5631 + "eslint-plugin-import": {
  5632 + "version": "2.20.2",
  5633 + "resolved": "https://registry.npm.taobao.org/eslint-plugin-import/download/eslint-plugin-import-2.20.2.tgz?cache=0&sync_timestamp=1585455691029&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-import%2Fdownload%2Feslint-plugin-import-2.20.2.tgz",
  5634 + "integrity": "sha1-kfw4B84Ivkg3FBJyyLmQc5BuWI0=",
  5635 + "dev": true,
  5636 + "requires": {
  5637 + "array-includes": "^3.0.3",
  5638 + "array.prototype.flat": "^1.2.1",
  5639 + "contains-path": "^0.1.0",
  5640 + "debug": "^2.6.9",
  5641 + "doctrine": "1.5.0",
  5642 + "eslint-import-resolver-node": "^0.3.2",
  5643 + "eslint-module-utils": "^2.4.1",
  5644 + "has": "^1.0.3",
  5645 + "minimatch": "^3.0.4",
  5646 + "object.values": "^1.1.0",
  5647 + "read-pkg-up": "^2.0.0",
  5648 + "resolve": "^1.12.0"
  5649 + },
  5650 + "dependencies": {
  5651 + "debug": {
  5652 + "version": "2.6.9",
  5653 + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
  5654 + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
  5655 + "dev": true,
  5656 + "requires": {
  5657 + "ms": "2.0.0"
  5658 + }
  5659 + },
  5660 + "find-up": {
  5661 + "version": "2.1.0",
  5662 + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz",
  5663 + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
  5664 + "dev": true,
  5665 + "requires": {
  5666 + "locate-path": "^2.0.0"
  5667 + }
  5668 + },
  5669 + "load-json-file": {
  5670 + "version": "2.0.0",
  5671 + "resolved": "https://registry.npm.taobao.org/load-json-file/download/load-json-file-2.0.0.tgz",
  5672 + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
  5673 + "dev": true,
  5674 + "requires": {
  5675 + "graceful-fs": "^4.1.2",
  5676 + "parse-json": "^2.2.0",
  5677 + "pify": "^2.0.0",
  5678 + "strip-bom": "^3.0.0"
  5679 + }
  5680 + },
  5681 + "locate-path": {
  5682 + "version": "2.0.0",
  5683 + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz",
  5684 + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
  5685 + "dev": true,
  5686 + "requires": {
  5687 + "p-locate": "^2.0.0",
  5688 + "path-exists": "^3.0.0"
  5689 + }
  5690 + },
  5691 + "ms": {
  5692 + "version": "2.0.0",
  5693 + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1575472461218&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
  5694 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
  5695 + "dev": true
  5696 + },
  5697 + "p-limit": {
  5698 + "version": "1.3.0",
  5699 + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz",
  5700 + "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=",
  5701 + "dev": true,
  5702 + "requires": {
  5703 + "p-try": "^1.0.0"
  5704 + }
  5705 + },
  5706 + "p-locate": {
  5707 + "version": "2.0.0",
  5708 + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz",
  5709 + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
  5710 + "dev": true,
  5711 + "requires": {
  5712 + "p-limit": "^1.1.0"
  5713 + }
  5714 + },
  5715 + "p-try": {
  5716 + "version": "1.0.0",
  5717 + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz",
  5718 + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
  5719 + "dev": true
  5720 + },
  5721 + "parse-json": {
  5722 + "version": "2.2.0",
  5723 + "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz",
  5724 + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
  5725 + "dev": true,
  5726 + "requires": {
  5727 + "error-ex": "^1.2.0"
  5728 + }
  5729 + },
  5730 + "path-type": {
  5731 + "version": "2.0.0",
  5732 + "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-2.0.0.tgz",
  5733 + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
  5734 + "dev": true,
  5735 + "requires": {
  5736 + "pify": "^2.0.0"
  5737 + }
  5738 + },
  5739 + "pify": {
  5740 + "version": "2.3.0",
  5741 + "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz?cache=0&sync_timestamp=1581697613983&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-2.3.0.tgz",
  5742 + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
  5743 + "dev": true
  5744 + },
  5745 + "read-pkg": {
  5746 + "version": "2.0.0",
  5747 + "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-2.0.0.tgz",
  5748 + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
  5749 + "dev": true,
  5750 + "requires": {
  5751 + "load-json-file": "^2.0.0",
  5752 + "normalize-package-data": "^2.3.2",
  5753 + "path-type": "^2.0.0"
  5754 + }
  5755 + },
  5756 + "read-pkg-up": {
  5757 + "version": "2.0.0",
  5758 + "resolved": "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-2.0.0.tgz?cache=0&sync_timestamp=1575620685999&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fread-pkg-up%2Fdownload%2Fread-pkg-up-2.0.0.tgz",
  5759 + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
  5760 + "dev": true,
  5761 + "requires": {
  5762 + "find-up": "^2.0.0",
  5763 + "read-pkg": "^2.0.0"
  5764 + }
  5765 + },
  5766 + "strip-bom": {
  5767 + "version": "3.0.0",
  5768 + "resolved": "https://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz",
  5769 + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
  5770 + "dev": true
  5771 + }
  5772 + }
  5773 + },
  5774 + "eslint-plugin-node": {
  5775 + "version": "11.1.0",
  5776 + "resolved": "https://registry.npm.taobao.org/eslint-plugin-node/download/eslint-plugin-node-11.1.0.tgz",
  5777 + "integrity": "sha1-yVVEQW7kraJnQKMEdO78VALcZx0=",
  5778 + "dev": true,
  5779 + "requires": {
  5780 + "eslint-plugin-es": "^3.0.0",
  5781 + "eslint-utils": "^2.0.0",
  5782 + "ignore": "^5.1.1",
  5783 + "minimatch": "^3.0.4",
  5784 + "resolve": "^1.10.1",
  5785 + "semver": "^6.1.0"
  5786 + },
  5787 + "dependencies": {
  5788 + "ignore": {
  5789 + "version": "5.1.4",
  5790 + "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-5.1.4.tgz",
  5791 + "integrity": "sha1-hLez2+ZFUrbvDsqZ9nQ9vsbZet8=",
  5792 + "dev": true
  5793 + },
  5794 + "semver": {
  5795 + "version": "6.3.0",
  5796 + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz",
  5797 + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=",
  5798 + "dev": true
  5799 + }
  5800 + }
  5801 + },
  5802 + "eslint-plugin-prettier": {
  5803 + "version": "3.1.3",
  5804 + "resolved": "https://registry.npm.taobao.org/eslint-plugin-prettier/download/eslint-plugin-prettier-3.1.3.tgz?cache=0&sync_timestamp=1586740919303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-prettier%2Fdownload%2Feslint-plugin-prettier-3.1.3.tgz",
  5805 + "integrity": "sha1-rhFqD8DlmP2uSHQ6RDCQPeW05so=",
  5806 + "dev": true,
  5807 + "requires": {
  5808 + "prettier-linter-helpers": "^1.0.0"
  5809 + }
  5810 + },
  5811 + "eslint-plugin-promise": {
  5812 + "version": "4.2.1",
  5813 + "resolved": "https://registry.npm.taobao.org/eslint-plugin-promise/download/eslint-plugin-promise-4.2.1.tgz",
  5814 + "integrity": "sha1-hF/YsiYK2PglZMEiL85ErXHZQYo=",
  5815 + "dev": true
  5816 + },
  5817 + "eslint-plugin-standard": {
  5818 + "version": "4.0.1",
  5819 + "resolved": "https://registry.npm.taobao.org/eslint-plugin-standard/download/eslint-plugin-standard-4.0.1.tgz",
  5820 + "integrity": "sha1-/wUZ9/+v8RT3bRvXw5lu7w9uILQ=",
  5821 + "dev": true
  5822 + },
  5823 + "eslint-plugin-vue": {
  5824 + "version": "6.2.2",
  5825 + "resolved": "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-6.2.2.tgz",
  5826 + "integrity": "sha1-J/7NmjokeJsPER7N1UCp5WGY4P4=",
  5827 + "dev": true,
  5828 + "requires": {
  5829 + "natural-compare": "^1.4.0",
  5830 + "semver": "^5.6.0",
  5831 + "vue-eslint-parser": "^7.0.0"
  5832 + }
  5833 + },
5028 5834 "eslint-scope": {
5029 5835 "version": "4.0.3",
5030 5836 "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz",
... ... @@ -5034,16 +5840,61 @@
5034 5840 "estraverse": "^4.1.1"
5035 5841 }
5036 5842 },
  5843 + "eslint-utils": {
  5844 + "version": "2.0.0",
  5845 + "resolved": "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-2.0.0.tgz?cache=0&sync_timestamp=1577351142754&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-utils%2Fdownload%2Feslint-utils-2.0.0.tgz",
  5846 + "integrity": "sha1-e+HMcPJ6cqds0UqmmLyr7WiQ4c0=",
  5847 + "dev": true,
  5848 + "requires": {
  5849 + "eslint-visitor-keys": "^1.1.0"
  5850 + }
  5851 + },
5037 5852 "eslint-visitor-keys": {
5038 5853 "version": "1.1.0",
5039 5854 "resolved": "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz",
5040 5855 "integrity": "sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI="
5041 5856 },
  5857 + "espree": {
  5858 + "version": "6.2.1",
  5859 + "resolved": "https://registry.npm.taobao.org/espree/download/espree-6.2.1.tgz?cache=0&sync_timestamp=1588886720119&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-6.2.1.tgz",
  5860 + "integrity": "sha1-d/xy4f10SiBSwg84pbV1gy6Cc0o=",
  5861 + "dev": true,
  5862 + "requires": {
  5863 + "acorn": "^7.1.1",
  5864 + "acorn-jsx": "^5.2.0",
  5865 + "eslint-visitor-keys": "^1.1.0"
  5866 + },
  5867 + "dependencies": {
  5868 + "acorn": {
  5869 + "version": "7.2.0",
  5870 + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.2.0.tgz?cache=0&sync_timestamp=1589008014473&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.2.0.tgz",
  5871 + "integrity": "sha1-F+p+QNfIZA/1SmlMiJwm8xcE7/4=",
  5872 + "dev": true
  5873 + }
  5874 + }
  5875 + },
5042 5876 "esprima": {
5043 5877 "version": "4.0.1",
5044 5878 "resolved": "http://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz",
5045 5879 "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE="
5046 5880 },
  5881 + "esquery": {
  5882 + "version": "1.3.1",
  5883 + "resolved": "https://registry.npm.taobao.org/esquery/download/esquery-1.3.1.tgz",
  5884 + "integrity": "sha1-t4tYKKqOIU4p+3TE1bdS4cAz2lc=",
  5885 + "dev": true,
  5886 + "requires": {
  5887 + "estraverse": "^5.1.0"
  5888 + },
  5889 + "dependencies": {
  5890 + "estraverse": {
  5891 + "version": "5.1.0",
  5892 + "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.1.0.tgz?cache=0&sync_timestamp=1586968717941&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-5.1.0.tgz",
  5893 + "integrity": "sha1-N0MJ05/ZNa5QDnuS6Ka0xyDllkI=",
  5894 + "dev": true
  5895 + }
  5896 + }
  5897 + },
5047 5898 "esrecurse": {
5048 5899 "version": "4.2.1",
5049 5900 "resolved": "http://registry.npm.taobao.org/esrecurse/download/esrecurse-4.2.1.tgz",
... ... @@ -5248,6 +6099,17 @@
5248 6099 }
5249 6100 }
5250 6101 },
  6102 + "external-editor": {
  6103 + "version": "3.1.0",
  6104 + "resolved": "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz",
  6105 + "integrity": "sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=",
  6106 + "dev": true,
  6107 + "requires": {
  6108 + "chardet": "^0.7.0",
  6109 + "iconv-lite": "^0.4.24",
  6110 + "tmp": "^0.0.33"
  6111 + }
  6112 + },
5251 6113 "extglob": {
5252 6114 "version": "2.0.4",
5253 6115 "resolved": "http://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz",
... ... @@ -5317,6 +6179,12 @@
5317 6179 "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.1.tgz",
5318 6180 "integrity": "sha1-VFFFB3xQFJHjOxXsQIwpQ3bpSuQ="
5319 6181 },
  6182 + "fast-diff": {
  6183 + "version": "1.2.0",
  6184 + "resolved": "https://registry.npm.taobao.org/fast-diff/download/fast-diff-1.2.0.tgz",
  6185 + "integrity": "sha1-c+4RmC2Gyq95WYKNUZz+kn+sXwM=",
  6186 + "dev": true
  6187 + },
5320 6188 "fast-glob": {
5321 6189 "version": "2.2.7",
5322 6190 "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz?cache=0&sync_timestamp=1582318370324&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-2.2.7.tgz",
... ... @@ -5355,6 +6223,24 @@
5355 6223 "resolved": "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.2.tgz",
5356 6224 "integrity": "sha1-tO7oFIq7Adzx0aw0Nn1Z4S+mHW4="
5357 6225 },
  6226 + "figures": {
  6227 + "version": "3.2.0",
  6228 + "resolved": "https://registry.npm.taobao.org/figures/download/figures-3.2.0.tgz",
  6229 + "integrity": "sha1-YlwYvSk8YE3EqN2y/r8MiDQXRq8=",
  6230 + "dev": true,
  6231 + "requires": {
  6232 + "escape-string-regexp": "^1.0.5"
  6233 + }
  6234 + },
  6235 + "file-entry-cache": {
  6236 + "version": "5.0.1",
  6237 + "resolved": "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz",
  6238 + "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=",
  6239 + "dev": true,
  6240 + "requires": {
  6241 + "flat-cache": "^2.0.1"
  6242 + }
  6243 + },
5358 6244 "file-loader": {
5359 6245 "version": "4.3.0",
5360 6246 "resolved": "https://registry.npm.taobao.org/file-loader/download/file-loader-4.3.0.tgz",
... ... @@ -5460,6 +6346,34 @@
5460 6346 "locate-path": "^3.0.0"
5461 6347 }
5462 6348 },
  6349 + "flat-cache": {
  6350 + "version": "2.0.1",
  6351 + "resolved": "https://registry.npm.taobao.org/flat-cache/download/flat-cache-2.0.1.tgz",
  6352 + "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=",
  6353 + "dev": true,
  6354 + "requires": {
  6355 + "flatted": "^2.0.0",
  6356 + "rimraf": "2.6.3",
  6357 + "write": "1.0.3"
  6358 + },
  6359 + "dependencies": {
  6360 + "rimraf": {
  6361 + "version": "2.6.3",
  6362 + "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz?cache=0&sync_timestamp=1581229948248&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frimraf%2Fdownload%2Frimraf-2.6.3.tgz",
  6363 + "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=",
  6364 + "dev": true,
  6365 + "requires": {
  6366 + "glob": "^7.1.3"
  6367 + }
  6368 + }
  6369 + }
  6370 + },
  6371 + "flatted": {
  6372 + "version": "2.0.2",
  6373 + "resolved": "https://registry.npm.taobao.org/flatted/download/flatted-2.0.2.tgz",
  6374 + "integrity": "sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=",
  6375 + "dev": true
  6376 + },
5463 6377 "flush-write-stream": {
5464 6378 "version": "1.1.1",
5465 6379 "resolved": "http://registry.npm.taobao.org/flush-write-stream/download/flush-write-stream-1.1.1.tgz",
... ... @@ -6208,6 +7122,12 @@
6208 7122 "resolved": "http://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz",
6209 7123 "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0="
6210 7124 },
  7125 + "functional-red-black-tree": {
  7126 + "version": "1.0.1",
  7127 + "resolved": "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz",
  7128 + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
  7129 + "dev": true
  7130 + },
6211 7131 "gauge": {
6212 7132 "version": "2.7.4",
6213 7133 "resolved": "https://registry.npm.taobao.org/gauge/download/gauge-2.7.4.tgz",
... ... @@ -6956,6 +7876,130 @@
6956 7876 "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=",
6957 7877 "dev": true
6958 7878 },
  7879 + "inquirer": {
  7880 + "version": "7.1.0",
  7881 + "resolved": "https://registry.npm.taobao.org/inquirer/download/inquirer-7.1.0.tgz",
  7882 + "integrity": "sha1-EpigGFmIPhfHJkuChwrhA0+S3Sk=",
  7883 + "dev": true,
  7884 + "requires": {
  7885 + "ansi-escapes": "^4.2.1",
  7886 + "chalk": "^3.0.0",
  7887 + "cli-cursor": "^3.1.0",
  7888 + "cli-width": "^2.0.0",
  7889 + "external-editor": "^3.0.3",
  7890 + "figures": "^3.0.0",
  7891 + "lodash": "^4.17.15",
  7892 + "mute-stream": "0.0.8",
  7893 + "run-async": "^2.4.0",
  7894 + "rxjs": "^6.5.3",
  7895 + "string-width": "^4.1.0",
  7896 + "strip-ansi": "^6.0.0",
  7897 + "through": "^2.3.6"
  7898 + },
  7899 + "dependencies": {
  7900 + "ansi-styles": {
  7901 + "version": "4.2.1",
  7902 + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.2.1.tgz",
  7903 + "integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k=",
  7904 + "dev": true,
  7905 + "requires": {
  7906 + "@types/color-name": "^1.1.1",
  7907 + "color-convert": "^2.0.1"
  7908 + }
  7909 + },
  7910 + "chalk": {
  7911 + "version": "3.0.0",
  7912 + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-3.0.0.tgz?cache=0&sync_timestamp=1585815759944&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-3.0.0.tgz",
  7913 + "integrity": "sha1-P3PCv1JlkfV0zEksUeJFY0n4ROQ=",
  7914 + "dev": true,
  7915 + "requires": {
  7916 + "ansi-styles": "^4.1.0",
  7917 + "supports-color": "^7.1.0"
  7918 + }
  7919 + },
  7920 + "cli-cursor": {
  7921 + "version": "3.1.0",
  7922 + "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-3.1.0.tgz",
  7923 + "integrity": "sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=",
  7924 + "dev": true,
  7925 + "requires": {
  7926 + "restore-cursor": "^3.1.0"
  7927 + }
  7928 + },
  7929 + "color-convert": {
  7930 + "version": "2.0.1",
  7931 + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
  7932 + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
  7933 + "dev": true,
  7934 + "requires": {
  7935 + "color-name": "~1.1.4"
  7936 + }
  7937 + },
  7938 + "color-name": {
  7939 + "version": "1.1.4",
  7940 + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
  7941 + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
  7942 + "dev": true
  7943 + },
  7944 + "has-flag": {
  7945 + "version": "4.0.0",
  7946 + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
  7947 + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
  7948 + "dev": true
  7949 + },
  7950 + "is-fullwidth-code-point": {
  7951 + "version": "3.0.0",
  7952 + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz",
  7953 + "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=",
  7954 + "dev": true
  7955 + },
  7956 + "mimic-fn": {
  7957 + "version": "2.1.0",
  7958 + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz",
  7959 + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=",
  7960 + "dev": true
  7961 + },
  7962 + "onetime": {
  7963 + "version": "5.1.0",
  7964 + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.0.tgz",
  7965 + "integrity": "sha1-//DzyRYX/mK7UBiWNumayKbfe+U=",
  7966 + "dev": true,
  7967 + "requires": {
  7968 + "mimic-fn": "^2.1.0"
  7969 + }
  7970 + },
  7971 + "restore-cursor": {
  7972 + "version": "3.1.0",
  7973 + "resolved": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-3.1.0.tgz",
  7974 + "integrity": "sha1-OfZ8VLOnpYzqUjbZXPADQjljH34=",
  7975 + "dev": true,
  7976 + "requires": {
  7977 + "onetime": "^5.1.0",
  7978 + "signal-exit": "^3.0.2"
  7979 + }
  7980 + },
  7981 + "string-width": {
  7982 + "version": "4.2.0",
  7983 + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-4.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-4.2.0.tgz",
  7984 + "integrity": "sha1-lSGCxGzHssMT0VluYjmSvRY7crU=",
  7985 + "dev": true,
  7986 + "requires": {
  7987 + "emoji-regex": "^8.0.0",
  7988 + "is-fullwidth-code-point": "^3.0.0",
  7989 + "strip-ansi": "^6.0.0"
  7990 + }
  7991 + },
  7992 + "supports-color": {
  7993 + "version": "7.1.0",
  7994 + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.1.0.tgz?cache=0&sync_timestamp=1569557271992&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.1.0.tgz",
  7995 + "integrity": "sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E=",
  7996 + "dev": true,
  7997 + "requires": {
  7998 + "has-flag": "^4.0.0"
  7999 + }
  8000 + }
  8001 + }
  8002 + },
6959 8003 "internal-ip": {
6960 8004 "version": "4.3.0",
6961 8005 "resolved": "https://registry.npm.taobao.org/internal-ip/download/internal-ip-4.3.0.tgz?cache=0&sync_timestamp=1584010513586&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finternal-ip%2Fdownload%2Finternal-ip-4.3.0.tgz",
... ... @@ -7263,6 +8307,12 @@
7263 8307 "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
7264 8308 "dev": true
7265 8309 },
  8310 + "is-string": {
  8311 + "version": "1.0.5",
  8312 + "resolved": "https://registry.npm.taobao.org/is-string/download/is-string-1.0.5.tgz?cache=0&sync_timestamp=1576731545458&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-string%2Fdownload%2Fis-string-1.0.5.tgz",
  8313 + "integrity": "sha1-QEk+0ZjvP/R3uMf5L2ROyCpc06Y=",
  8314 + "dev": true
  8315 + },
7266 8316 "is-svg": {
7267 8317 "version": "3.0.0",
7268 8318 "resolved": "https://registry.npm.taobao.org/is-svg/download/is-svg-3.0.0.tgz",
... ... @@ -7416,6 +8466,12 @@
7416 8466 "resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz",
7417 8467 "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA="
7418 8468 },
  8469 + "json-stable-stringify-without-jsonify": {
  8470 + "version": "1.0.1",
  8471 + "resolved": "https://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz",
  8472 + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
  8473 + "dev": true
  8474 + },
7419 8475 "json-stringify-safe": {
7420 8476 "version": "5.0.1",
7421 8477 "resolved": "http://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz",
... ... @@ -8292,6 +9348,12 @@
8292 9348 "integrity": "sha1-ieeKnSB9ePJ5mx6Vdkolv3GigyI=",
8293 9349 "dev": true
8294 9350 },
  9351 + "mute-stream": {
  9352 + "version": "0.0.8",
  9353 + "resolved": "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.8.tgz",
  9354 + "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=",
  9355 + "dev": true
  9356 + },
8295 9357 "mz": {
8296 9358 "version": "2.7.0",
8297 9359 "resolved": "http://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz",
... ... @@ -8325,6 +9387,12 @@
8325 9387 "to-regex": "^3.0.1"
8326 9388 }
8327 9389 },
  9390 + "natural-compare": {
  9391 + "version": "1.4.0",
  9392 + "resolved": "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz",
  9393 + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
  9394 + "dev": true
  9395 + },
8328 9396 "negotiator": {
8329 9397 "version": "0.6.2",
8330 9398 "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz",
... ... @@ -8943,6 +10011,23 @@
8943 10011 "no-case": "^2.2.0"
8944 10012 }
8945 10013 },
  10014 + "parent-module": {
  10015 + "version": "1.0.1",
  10016 + "resolved": "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz",
  10017 + "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=",
  10018 + "dev": true,
  10019 + "requires": {
  10020 + "callsites": "^3.0.0"
  10021 + },
  10022 + "dependencies": {
  10023 + "callsites": {
  10024 + "version": "3.1.0",
  10025 + "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz",
  10026 + "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=",
  10027 + "dev": true
  10028 + }
  10029 + }
  10030 + },
8946 10031 "parse-asn1": {
8947 10032 "version": "5.1.5",
8948 10033 "resolved": "https://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.5.tgz",
... ... @@ -9764,10 +10849,19 @@
9764 10849 "dev": true
9765 10850 },
9766 10851 "prettier": {
9767   - "version": "1.19.1",
9768   - "resolved": "https://registry.npm.taobao.org/prettier/download/prettier-1.19.1.tgz",
9769   - "integrity": "sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=",
9770   - "optional": true
  10852 + "version": "2.0.5",
  10853 + "resolved": "https://registry.npm.taobao.org/prettier/download/prettier-2.0.5.tgz",
  10854 + "integrity": "sha1-1tVigkVSQ/L5LMFxZpLAiqMVItQ=",
  10855 + "dev": true
  10856 + },
  10857 + "prettier-linter-helpers": {
  10858 + "version": "1.0.0",
  10859 + "resolved": "https://registry.npm.taobao.org/prettier-linter-helpers/download/prettier-linter-helpers-1.0.0.tgz",
  10860 + "integrity": "sha1-0j1B/hN1ZG3i0BBNNFSjAIgCz3s=",
  10861 + "dev": true,
  10862 + "requires": {
  10863 + "fast-diff": "^1.1.2"
  10864 + }
9771 10865 },
9772 10866 "pretty-error": {
9773 10867 "version": "2.1.1",
... ... @@ -9794,6 +10888,12 @@
9794 10888 "resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz",
9795 10889 "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I="
9796 10890 },
  10891 + "progress": {
  10892 + "version": "2.0.3",
  10893 + "resolved": "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz",
  10894 + "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=",
  10895 + "dev": true
  10896 + },
9797 10897 "promise-inflight": {
9798 10898 "version": "1.0.1",
9799 10899 "resolved": "http://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz",
... ... @@ -10161,6 +11261,12 @@
10161 11261 "es-abstract": "^1.17.0-next.1"
10162 11262 }
10163 11263 },
  11264 + "regexpp": {
  11265 + "version": "3.1.0",
  11266 + "resolved": "https://registry.npm.taobao.org/regexpp/download/regexpp-3.1.0.tgz",
  11267 + "integrity": "sha1-IG0K0KVkjP+9uK5GQ489xRyfeOI=",
  11268 + "dev": true
  11269 + },
10164 11270 "regexpu-core": {
10165 11271 "version": "4.7.0",
10166 11272 "resolved": "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-4.7.0.tgz",
... ... @@ -10476,6 +11582,12 @@
10476 11582 "inherits": "^2.0.1"
10477 11583 }
10478 11584 },
  11585 + "run-async": {
  11586 + "version": "2.4.1",
  11587 + "resolved": "https://registry.npm.taobao.org/run-async/download/run-async-2.4.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frun-async%2Fdownload%2Frun-async-2.4.1.tgz",
  11588 + "integrity": "sha1-hEDsz5nqPnC9QJ1JqriOEMGJpFU=",
  11589 + "dev": true
  11590 + },
10479 11591 "run-queue": {
10480 11592 "version": "1.0.3",
10481 11593 "resolved": "http://registry.npm.taobao.org/run-queue/download/run-queue-1.0.3.tgz",
... ... @@ -10484,6 +11596,15 @@
10484 11596 "aproba": "^1.1.1"
10485 11597 }
10486 11598 },
  11599 + "rxjs": {
  11600 + "version": "6.5.5",
  11601 + "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.5.tgz",
  11602 + "integrity": "sha1-xciE4wlMjP7jG/J+uH5UzPyH+ew=",
  11603 + "dev": true,
  11604 + "requires": {
  11605 + "tslib": "^1.9.0"
  11606 + }
  11607 + },
10487 11608 "safe-area-insets": {
10488 11609 "version": "1.4.1",
10489 11610 "resolved": "https://registry.npm.taobao.org/safe-area-insets/download/safe-area-insets-1.4.1.tgz",
... ... @@ -11015,6 +12136,17 @@
11015 12136 "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
11016 12137 "dev": true
11017 12138 },
  12139 + "slice-ansi": {
  12140 + "version": "2.1.0",
  12141 + "resolved": "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-2.1.0.tgz",
  12142 + "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=",
  12143 + "dev": true,
  12144 + "requires": {
  12145 + "ansi-styles": "^3.2.0",
  12146 + "astral-regex": "^1.0.0",
  12147 + "is-fullwidth-code-point": "^2.0.0"
  12148 + }
  12149 + },
11018 12150 "snapdragon": {
11019 12151 "version": "0.8.2",
11020 12152 "resolved": "http://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz",
... ... @@ -11732,6 +12864,46 @@
11732 12864 "util.promisify": "~1.0.0"
11733 12865 }
11734 12866 },
  12867 + "table": {
  12868 + "version": "5.4.6",
  12869 + "resolved": "https://registry.npm.taobao.org/table/download/table-5.4.6.tgz",
  12870 + "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=",
  12871 + "dev": true,
  12872 + "requires": {
  12873 + "ajv": "^6.10.2",
  12874 + "lodash": "^4.17.14",
  12875 + "slice-ansi": "^2.1.0",
  12876 + "string-width": "^3.0.0"
  12877 + },
  12878 + "dependencies": {
  12879 + "emoji-regex": {
  12880 + "version": "7.0.3",
  12881 + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz",
  12882 + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=",
  12883 + "dev": true
  12884 + },
  12885 + "string-width": {
  12886 + "version": "3.1.0",
  12887 + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-3.1.0.tgz",
  12888 + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=",
  12889 + "dev": true,
  12890 + "requires": {
  12891 + "emoji-regex": "^7.0.1",
  12892 + "is-fullwidth-code-point": "^2.0.0",
  12893 + "strip-ansi": "^5.1.0"
  12894 + }
  12895 + },
  12896 + "strip-ansi": {
  12897 + "version": "5.2.0",
  12898 + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz",
  12899 + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
  12900 + "dev": true,
  12901 + "requires": {
  12902 + "ansi-regex": "^4.1.0"
  12903 + }
  12904 + }
  12905 + }
  12906 + },
11735 12907 "tapable": {
11736 12908 "version": "1.1.3",
11737 12909 "resolved": "https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz",
... ... @@ -11774,6 +12946,12 @@
11774 12946 "worker-farm": "^1.7.0"
11775 12947 }
11776 12948 },
  12949 + "text-table": {
  12950 + "version": "0.2.0",
  12951 + "resolved": "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz",
  12952 + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
  12953 + "dev": true
  12954 + },
11777 12955 "thenify": {
11778 12956 "version": "3.3.0",
11779 12957 "resolved": "http://registry.npm.taobao.org/thenify/download/thenify-3.3.0.tgz",
... ... @@ -11801,6 +12979,12 @@
11801 12979 "neo-async": "^2.6.0"
11802 12980 }
11803 12981 },
  12982 + "through": {
  12983 + "version": "2.3.8",
  12984 + "resolved": "https://registry.npm.taobao.org/through/download/through-2.3.8.tgz",
  12985 + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
  12986 + "dev": true
  12987 + },
11804 12988 "through2": {
11805 12989 "version": "2.0.5",
11806 12990 "resolved": "http://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz",
... ... @@ -11830,6 +13014,15 @@
11830 13014 "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
11831 13015 "dev": true
11832 13016 },
  13017 + "tmp": {
  13018 + "version": "0.0.33",
  13019 + "resolved": "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz?cache=0&sync_timestamp=1588178820677&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftmp%2Fdownload%2Ftmp-0.0.33.tgz",
  13020 + "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=",
  13021 + "dev": true,
  13022 + "requires": {
  13023 + "os-tmpdir": "~1.0.2"
  13024 + }
  13025 + },
11833 13026 "to-array": {
11834 13027 "version": "0.1.4",
11835 13028 "resolved": "https://registry.npm.taobao.org/to-array/download/to-array-0.1.4.tgz",
... ... @@ -12358,6 +13551,12 @@
12358 13551 "resolved": "https://registry.npm.taobao.org/uuid/download/uuid-3.4.0.tgz?cache=0&sync_timestamp=1585684408543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuuid%2Fdownload%2Fuuid-3.4.0.tgz",
12359 13552 "integrity": "sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4="
12360 13553 },
  13554 + "v8-compile-cache": {
  13555 + "version": "2.1.0",
  13556 + "resolved": "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.1.0.tgz",
  13557 + "integrity": "sha1-4U3jezGm0ZT1aQ1n78Tn9vxqsw4=",
  13558 + "dev": true
  13559 + },
12361 13560 "validate-npm-package-license": {
12362 13561 "version": "3.0.4",
12363 13562 "resolved": "http://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz",
... ... @@ -12404,6 +13603,32 @@
12404 13603 "resolved": "https://registry.npm.taobao.org/vue-class-component/download/vue-class-component-6.3.2.tgz",
12405 13604 "integrity": "sha1-5gN+hNHfKvO95PRV5Qyhue7AK+Y="
12406 13605 },
  13606 + "vue-eslint-parser": {
  13607 + "version": "7.1.0",
  13608 + "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-7.1.0.tgz?cache=0&sync_timestamp=1589539313907&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-eslint-parser%2Fdownload%2Fvue-eslint-parser-7.1.0.tgz",
  13609 + "integrity": "sha1-nNvMgj5lawh1B6GRFzK4Z6wQHoM=",
  13610 + "dev": true,
  13611 + "requires": {
  13612 + "debug": "^4.1.1",
  13613 + "eslint-scope": "^5.0.0",
  13614 + "eslint-visitor-keys": "^1.1.0",
  13615 + "espree": "^6.2.1",
  13616 + "esquery": "^1.0.1",
  13617 + "lodash": "^4.17.15"
  13618 + },
  13619 + "dependencies": {
  13620 + "eslint-scope": {
  13621 + "version": "5.0.0",
  13622 + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.0.0.tgz",
  13623 + "integrity": "sha1-6HyIh8c+jR7ITxylkWRcNYv8j7k=",
  13624 + "dev": true,
  13625 + "requires": {
  13626 + "esrecurse": "^4.1.0",
  13627 + "estraverse": "^4.1.1"
  13628 + }
  13629 + }
  13630 + }
  13631 + },
12407 13632 "vue-hot-reload-api": {
12408 13633 "version": "2.3.4",
12409 13634 "resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz",
... ... @@ -12912,6 +14137,15 @@
12912 14137 "resolved": "http://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz",
12913 14138 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
12914 14139 },
  14140 + "write": {
  14141 + "version": "1.0.3",
  14142 + "resolved": "https://registry.npm.taobao.org/write/download/write-1.0.3.tgz",
  14143 + "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=",
  14144 + "dev": true,
  14145 + "requires": {
  14146 + "mkdirp": "^0.5.1"
  14147 + }
  14148 + },
12915 14149 "ws": {
12916 14150 "version": "6.2.1",
12917 14151 "resolved": "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz?cache=0&sync_timestamp=1587811730960&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-6.2.1.tgz",
... ...
... ... @@ -60,13 +60,25 @@
60 60 "@dcloudio/vue-cli-plugin-uni-optimize": "^2.0.0-26920200424005",
61 61 "@dcloudio/webpack-uni-mp-loader": "^2.0.0-26920200424005",
62 62 "@dcloudio/webpack-uni-pages-loader": "^2.0.0-26920200424005",
  63 + "@typescript-eslint/eslint-plugin": "^3.0.0",
  64 + "@typescript-eslint/parser": "^3.0.0",
63 65 "@vue/cli-plugin-babel": "~4.3.0",
64 66 "@vue/cli-plugin-typescript": "*",
65 67 "@vue/cli-service": "~4.3.0",
66 68 "babel-plugin-import": "^1.11.0",
67 69 "cross-env": "^7.0.2",
  70 + "eslint": "^7.0.0",
  71 + "eslint-config-prettier": "^6.11.0",
  72 + "eslint-config-standard": "^14.1.1",
  73 + "eslint-plugin-import": "^2.20.2",
  74 + "eslint-plugin-node": "^11.1.0",
  75 + "eslint-plugin-prettier": "^3.1.3",
  76 + "eslint-plugin-promise": "^4.2.1",
  77 + "eslint-plugin-standard": "^4.0.1",
  78 + "eslint-plugin-vue": "^6.2.2",
68 79 "node-sass": "^4.14.0",
69 80 "postcss-comment": "^2.0.0",
  81 + "prettier": "^2.0.5",
70 82 "sass-loader": "^8.0.2",
71 83 "typescript": "^3.0.0",
72 84 "vue-template-compiler": "^2.6.11"
... ...
src/components/CommodityCard/CommodityCard.vue
1 1 <template>
2   - <view class="card" @tap="toGoods(goods.id,goods.goodType)">
3   - <image mode="widthFix" :src="goods.imgurl" ></image>
4   - <view class="name">{{goods.name}}</view>
5   - <view class="info">
6   - <view class="priceBox">
7   - <view class="price">{{goods.price}}</view>
8   - <view class="originCost">
9   - {{goods.rsSon.Max_Price}}
10   - </view>
11   - </view>
12   - <view class="trade_num">{{goods.trade_num}}人购买</view>
13   - </view>
14   - </view>
  2 + <view
  3 + class="card"
  4 + @tap="toGoods(goods.id,goods.goodType)"
  5 + >
  6 + <image
  7 + mode="widthFix"
  8 + :src="goods.imgurl"
  9 + ></image>
  10 + <view class="name">{{goods.name}}</view>
  11 + <view class="info">
  12 + <view class="priceBox">
  13 + <view class="price">{{goods.price}}</view>
  14 + <view class="originCost">
  15 + {{goods.rsSon.Max_Price}}
  16 + </view>
  17 + </view>
  18 + <view class="trade_num">{{goods.trade_num}}人购买</view>
  19 + </view>
  20 + </view>
15 21 </template>
16 22  
17 23 <script>
18   - export default {
19   - props: {
20   - /**
21   - * 商品数据
22   - */
23   - goods: {
24   - id: Number,
25   - imgurl: String,
26   - name: String,
27   - rsSon:Object,
28   - originCost:String,
29   - price: String,
30   - trade_num:String,
31   - goodType:String,
32   - }
33   -
34   - },
35   - created() {
36   - // console.log(this.goods)
37   - },
38   - data() {
39   - return {
40   -
41   - };
42   - },
43   - methods:{
44   - toGoods(id,type){
45   - uni.navigateTo({
46   - url: `../frameDetail/frameDetail?oderId=`+id,
47   - success: res => {},
48   - fail: () => {},
49   - complete: () => {}
50   - });
51   - console.log('toGoods =====> id:'+id +"======>type:"+type)
52   - switch(type){
53   - case 1:
54   - uni.navigateTo({
55   - url: `../frameDetail/frameDetail?oderId=`+id+`&goodType=`+type,
56   - success: res => {},
57   - fail: () => {},
58   - complete: () => {}
59   - });
60   - break;
61   - case 2:
62   - uni.navigateTo({
63   - url: `../frameDetail/frameDetail?oderId=`+id+`&goodType=`+type,
64   - success: res => {},
65   - fail: () => {},
66   - complete: () => {}
67   - });
68   - break;
69   - case 3:
70   - uni.navigateTo({
71   - url: `../frameDetail/frameDetail?oderId=`+id+`&goodType=`+type,
72   - success: res => {},
73   - fail: () => {},
74   - complete: () => {}
75   - });
76   - break;
77   - case 4:
78   - uni.navigateTo({
79   - url: `../frameDetail/frameDetail?oderId=`+id+`&goodType=`+type,
80   - success: res => {},
81   - fail: () => {},
82   - complete: () => {}
83   - });
84   - break;
85   - default :
86   - break
87   - }
88   - }
89   - }
90   - }
  24 +export default {
  25 + props: {
  26 + /**
  27 + * 商品数据
  28 + */
  29 + goods: {
  30 + id: Number,
  31 + imgurl: String,
  32 + name: String,
  33 + rsSon: Object,
  34 + originCost: String,
  35 + price: String,
  36 + trade_num: String,
  37 + goodType: String
  38 + }
  39 +
  40 + },
  41 + created () {
  42 + // console.log(this.goods)
  43 + },
  44 + data () {
  45 + return {
  46 +
  47 + }
  48 + },
  49 + methods: {
  50 + toGoods (id, type) {
  51 + console.log('---', '../frameDetail/frameDetail?oderId=' + id)
  52 + uni.navigateTo({
  53 + url: '../frameDetail/frameDetail?oderId=' + id,
  54 + success: res => {},
  55 + fail: () => {},
  56 + complete: () => {}
  57 + })
  58 + console.log('toGoods =====> id:' + id + '======>type:' + type)
  59 + switch (type) {
  60 + case 1:
  61 + uni.navigateTo({
  62 + url: '../frameDetail/frameDetail?oderId=' + id + '&goodType=' + type,
  63 + success: res => {},
  64 + fail: () => {},
  65 + complete: () => {}
  66 + })
  67 + break
  68 + case 2:
  69 + uni.navigateTo({
  70 + url: '../frameDetail/frameDetail?oderId=' + id + '&goodType=' + type,
  71 + success: res => {},
  72 + fail: () => {},
  73 + complete: () => {}
  74 + })
  75 + break
  76 + case 3:
  77 + uni.navigateTo({
  78 + url: '../frameDetail/frameDetail?oderId=' + id + '&goodType=' + type,
  79 + success: res => {},
  80 + fail: () => {},
  81 + complete: () => {}
  82 + })
  83 + break
  84 + case 4:
  85 + uni.navigateTo({
  86 + url: '../frameDetail/frameDetail?oderId=' + id + '&goodType=' + type,
  87 + success: res => {},
  88 + fail: () => {},
  89 + complete: () => {}
  90 + })
  91 + break
  92 + default :
  93 + break
  94 + }
  95 + }
  96 + }
  97 +}
91 98 </script>
92 99  
93 100 <style lang="scss">
94   - image{
95   - width: 100%;
96   - height: 120rpx;
97   - }
98   - .name{
99   - width: 92%;
100   - height: 54rpx;
101   - padding: 5px 4%;
102   - display: -webkit-box;
103   - -webkit-box-orient: vertical;
104   - -webkit-line-clamp: 2;
105   - text-align: justify;
106   - overflow: hidden;
107   - font-size: 24rpx;
108   - color: #333333;
109   - }
110   - .info{
111   - display: flex;
112   - justify-content: space-between;
113   - align-items: center;
114   - width: 92%;
115   - padding: 5px 4% 5px 4%;
116   - .priceBox{
117   - display: flex;
118   - justify-content: space-between;
119   - align-items: center;
120   - .price{
121   - color: #EB5D3B;
122   - font-size: 28rpx;
123   - font-weight: 600;
124   - margin-right: 10rpx;
125   - }
126   - .originCost{
127   - text-decoration:line-through;
128   - color: #999999;
129   - font-size: 20rpx;
130   - }
131   -
132   - }
133   - .trade_num{
134   - color: #999999;
135   - font-size: 20rpx;
136   - }
137   - }
138   -</style>
139 101 \ No newline at end of file
  102 +image {
  103 + width: 100%;
  104 + height: 120rpx;
  105 +}
  106 +.name {
  107 + width: 92%;
  108 + height: 54rpx;
  109 + padding: 5px 4%;
  110 + display: -webkit-box;
  111 + -webkit-box-orient: vertical;
  112 + -webkit-line-clamp: 2;
  113 + text-align: justify;
  114 + overflow: hidden;
  115 + font-size: 24rpx;
  116 + color: #333333;
  117 +}
  118 +.info {
  119 + display: flex;
  120 + justify-content: space-between;
  121 + align-items: center;
  122 + width: 92%;
  123 + padding: 5px 4% 5px 4%;
  124 + .priceBox {
  125 + display: flex;
  126 + justify-content: space-between;
  127 + align-items: center;
  128 + .price {
  129 + color: #eb5d3b;
  130 + font-size: 28rpx;
  131 + font-weight: 600;
  132 + margin-right: 10rpx;
  133 + }
  134 + .originCost {
  135 + text-decoration: line-through;
  136 + color: #999999;
  137 + font-size: 20rpx;
  138 + }
  139 + }
  140 + .trade_num {
  141 + color: #999999;
  142 + font-size: 20rpx;
  143 + }
  144 +}
  145 +</style>
... ...
src/components/SimpleAddress/SimpleAddress.vue
1 1 <template>
2   - <view class="simple-address" v-if="showPopup" @touchmove.stop.prevent="clear">
3   - <!-- 遮罩层 -->
4   - <view
5   - class="simple-address-mask"
6   - @touchmove.stop.prevent="clear"
7   - v-if="maskClick"
8   - :class="[ani + '-mask', animation ? 'mask-ani' : '']"
9   - :style="{
10   - 'background-color': maskBgColor
11   - }"
12   - @tap="hideMask(true)"
13   - ></view>
  2 + <view
  3 + class="simple-address"
  4 + v-if="showPopup"
  5 + @touchmove.stop.prevent="clear"
  6 + >
  7 + <!-- 遮罩层 -->
  8 + <view
  9 + class="simple-address-mask"
  10 + @touchmove.stop.prevent="clear"
  11 + v-if="maskClick"
  12 + :class="[ani + '-mask', animation ? 'mask-ani' : '']"
  13 + :style="{
  14 + 'background-color': maskBgColor
  15 + }"
  16 + @tap="hideMask(true)"
  17 + ></view>
14 18  
15   - <view class="simple-address-content simple-address--fixed" :class="[type, ani + '-content', animation ? 'content-ani' : '']">
16   - <view class="simple-address__header">
17   - <view class="simple-address__header-btn-box" @click="pickerCancel">
18   - <text class="simple-address__header-text" :style="{ color: cancelColor, fontSize: btnFontSize }">取消</text>
19   - </view>
20   - <view class="simple-address__header-btn-box" @click="pickerConfirm">
21   - <text class="simple-address__header-text" :style="{ color: confirmColor || themeColor, fontSize: btnFontSize }">确定</text>
22   - </view>
23   - </view>
24   - <view class="simple-address__box">
25   - <picker-view indicator-style="height: 70rpx;" class="simple-address-view" :value="pickerValue" @change="pickerChange">
26   - <picker-view-column>
27   - <!-- #ifndef APP-NVUE -->
28   - <view class="picker-item" :style="{ fontSize: fontSize }" v-for="(item, index) in provinceDataList" :key="index">{{ item.label }}</view>
29   - <!-- #endif -->
30   - <!-- #ifdef APP-NVUE -->
31   - <text class="picker-item" :style="{ fontSize: fontSize }" v-for="(item, index) in provinceDataList" :key="index">{{ item.label }}</text>
32   - <!-- #endif -->
33   - </picker-view-column>
34   - <picker-view-column>
35   - <!-- #ifndef APP-NVUE -->
36   - <view class="picker-item" :style="{ fontSize: fontSize }" v-for="(item, index) in cityDataList" :key="index">{{ item.label }}</view>
37   - <!-- #endif -->
38   - <!-- #ifdef APP-NVUE -->
39   - <text class="picker-item" :style="{ fontSize: fontSize }" v-for="(item, index) in cityDataList" :key="index">{{ item.label }}</text>
40   - <!-- #endif -->
41   - </picker-view-column>
42   - <picker-view-column>
43   - <!-- #ifndef APP-NVUE -->
44   - <view class="picker-item" :style="{ fontSize: fontSize }" v-for="(item, index) in areaDataList" :key="index">{{ item.label }}</view>
45   - <!-- #endif -->
46   - <!-- #ifdef APP-NVUE -->
47   - <text class="picker-item" :style="{ fontSize: fontSize }" v-for="(item, index) in areaDataList" :key="index">{{ item.label }}</text>
48   - <!-- #endif -->
49   - </picker-view-column>
50   - </picker-view>
51   - </view>
52   - </view>
53   - </view>
  19 + <view
  20 + class="simple-address-content simple-address--fixed"
  21 + :class="[type, ani + '-content', animation ? 'content-ani' : '']"
  22 + >
  23 + <view class="simple-address__header">
  24 + <view
  25 + class="simple-address__header-btn-box"
  26 + @click="pickerCancel"
  27 + >
  28 + <text
  29 + class="simple-address__header-text"
  30 + :style="{ color: cancelColor, fontSize: btnFontSize }"
  31 + >取消</text>
  32 + </view>
  33 + <view
  34 + class="simple-address__header-btn-box"
  35 + @click="pickerConfirm"
  36 + >
  37 + <text
  38 + class="simple-address__header-text"
  39 + :style="{ color: confirmColor || themeColor, fontSize: btnFontSize }"
  40 + >确定</text>
  41 + </view>
  42 + </view>
  43 + <view class="simple-address__box">
  44 + <picker-view
  45 + indicator-style="height: 70rpx;"
  46 + class="simple-address-view"
  47 + :value="pickerValue"
  48 + @change="pickerChange"
  49 + >
  50 + <picker-view-column>
  51 + <!-- #ifndef APP-NVUE -->
  52 + <view
  53 + class="picker-item"
  54 + :style="{ fontSize: fontSize }"
  55 + v-for="(item, index) in provinceDataList"
  56 + :key="index"
  57 + >{{ item.label }}</view>
  58 + <!-- #endif -->
  59 + <!-- #ifdef APP-NVUE -->
  60 + <text
  61 + class="picker-item"
  62 + :style="{ fontSize: fontSize }"
  63 + v-for="(item, index) in provinceDataList"
  64 + :key="index"
  65 + >{{ item.label }}</text>
  66 + <!-- #endif -->
  67 + </picker-view-column>
  68 + <picker-view-column>
  69 + <!-- #ifndef APP-NVUE -->
  70 + <view
  71 + class="picker-item"
  72 + :style="{ fontSize: fontSize }"
  73 + v-for="(item, index) in cityDataList"
  74 + :key="index"
  75 + >{{ item.label }}</view>
  76 + <!-- #endif -->
  77 + <!-- #ifdef APP-NVUE -->
  78 + <text
  79 + class="picker-item"
  80 + :style="{ fontSize: fontSize }"
  81 + v-for="(item, index) in cityDataList"
  82 + :key="index"
  83 + >{{ item.label }}</text>
  84 + <!-- #endif -->
  85 + </picker-view-column>
  86 + <picker-view-column>
  87 + <!-- #ifndef APP-NVUE -->
  88 + <view
  89 + class="picker-item"
  90 + :style="{ fontSize: fontSize }"
  91 + v-for="(item, index) in areaDataList"
  92 + :key="index"
  93 + >{{ item.label }}</view>
  94 + <!-- #endif -->
  95 + <!-- #ifdef APP-NVUE -->
  96 + <text
  97 + class="picker-item"
  98 + :style="{ fontSize: fontSize }"
  99 + v-for="(item, index) in areaDataList"
  100 + :key="index"
  101 + >{{ item.label }}</text>
  102 + <!-- #endif -->
  103 + </picker-view-column>
  104 + </picker-view>
  105 + </view>
  106 + </view>
  107 + </view>
54 108 </template>
55 109  
56 110 <script>
... ... @@ -74,347 +128,346 @@
74 128 * @example <simple-address ref="simpleAddress" :pickerValueDefault="cityPickerValueDefault" @onConfirm="onConfirm" themeColor='#007AFF'></simple-address>
75 129 */
76 130  
77   -import provinceData from './cityData/province.js';
78   -import cityData from './cityData/city.js';
79   -import areaData from './cityData/area.js';
  131 +import provinceData from './cityData/province.js'
  132 +import cityData from './cityData/city.js'
  133 +import areaData from './cityData/area.js'
80 134 export default {
81   - name: 'simpleAddress',
82   - props: {
83   - mode: {
84   - // 地址类型
85   - // default 则代表老版本根据index索引获取数据
86   - //
87   - type: String,
88   - default: 'default'
89   - },
90   - // 开启动画
91   - animation: {
92   - type: Boolean,
93   - default: true
94   - },
95   - /* 弹出层类型,可选值;
96   - bottom:底部弹出层
97   - */
98   - type: {
99   - type: String,
100   - default: 'bottom'
101   - },
102   - // maskClick
103   - maskClick: {
104   - type: Boolean,
105   - default: true
106   - },
107   - show: {
108   - type: Boolean,
109   - default: true
110   - },
111   - maskBgColor: {
112   - type: String,
113   - default: 'rgba(0, 0, 0, 0.4)' //背景颜色 rgba(0, 0, 0, 0.4) 为空则调用 uni.scss
114   - },
115   - themeColor: {
116   - type: String,
117   - default: '' // 确认按钮颜色(向下兼容)
118   - },
119   - cancelColor: {
120   - type: String,
121   - default: '' // 取消按钮颜色
122   - },
123   - confirmColor: {
124   - type: String,
125   - default: '' // 确认按钮颜色
126   - },
127   - fontSize: {
128   - type: String,
129   - default: '28rpx' // picker-item字体大小
130   - },
131   - btnFontSize: {
132   - type: String,
133   - default: '' // 按钮的字体大小
134   - },
135   - /* 默认值 */
136   - pickerValueDefault: {
137   - type: Array,
138   - default() {
139   - return [0, 0, 0];
140   - }
141   - }
142   - },
143   - data() {
144   - return {
145   - ani: '',
146   - showPopup: false,
147   - pickerValue: [0, 0, 0],
148   - provinceDataList: [],
149   - cityDataList: [],
150   - areaDataList: []
151   - };
152   - },
153   - watch: {
154   - show(newValue) {
155   - if (newValue) {
156   - this.open();
157   - } else {
158   - this.close();
159   - }
160   - },
161   - pickerValueDefault() {
162   - this.init();
163   - }
164   - },
165   - created() {
166   - this.init();
167   - },
168   - methods: {
169   - init() {
170   - this.handPickValueDefault(); // 对 pickerValueDefault 做兼容处理
171   - this.provinceDataList = provinceData;
172   - this.cityDataList = cityData[this.pickerValueDefault[0]];
173   - this.areaDataList = areaData[this.pickerValueDefault[0]][this.pickerValueDefault[1]];
174   - this.pickerValue = this.pickerValueDefault;
175   - },
176   - handPickValueDefault() {
177   - if (this.pickerValueDefault !== [0, 0, 0]) {
178   - if (this.pickerValueDefault[0] > provinceData.length - 1) {
179   - this.pickerValueDefault[0] = provinceData.length - 1;
180   - }
181   - if (this.pickerValueDefault[1] > cityData[this.pickerValueDefault[0]].length - 1) {
182   - this.pickerValueDefault[1] = cityData[this.pickerValueDefault[0]].length - 1;
183   - }
184   - if (this.pickerValueDefault[2] > areaData[this.pickerValueDefault[0]][this.pickerValueDefault[1]].length - 1) {
185   - this.pickerValueDefault[2] = areaData[this.pickerValueDefault[0]][this.pickerValueDefault[1]].length - 1;
186   - }
187   - }
188   - },
189   - pickerChange(e) {
190   - let changePickerValue = e.detail.value;
191   - if (this.pickerValue[0] !== changePickerValue[0]) {
192   - // 第一级发生滚动
193   - this.cityDataList = cityData[changePickerValue[0]];
194   - this.areaDataList = areaData[changePickerValue[0]][0];
195   - changePickerValue[1] = 0;
196   - changePickerValue[2] = 0;
197   - } else if (this.pickerValue[1] !== changePickerValue[1]) {
198   - // 第二级滚动
199   - this.areaDataList = areaData[changePickerValue[0]][changePickerValue[1]];
200   - changePickerValue[2] = 0;
201   - }
202   - this.pickerValue = changePickerValue;
203   - this._$emit('onChange');
204   - },
205   - _$emit(emitName) {
206   - let pickObj = {
207   - label: this._getLabel(),
208   - value: this.pickerValue,
209   - cityCode: this._getCityCode(),
210   - areaCode: this._getAreaCode(),
211   - provinceCode: this._getProvinceCode(),
212   - labelArr: this._getLabel().split('-')
213   - };
214   - this.$emit(emitName, pickObj);
215   - },
216   - _getLabel() {
217   - let pcikerLabel =
218   - this.provinceDataList[this.pickerValue[0]].label + '-' + this.cityDataList[this.pickerValue[1]].label + '-' + this.areaDataList[this.pickerValue[2]].label;
219   - return pcikerLabel;
220   - },
221   - _getCityCode() {
222   - return this.cityDataList[this.pickerValue[1]].value;
223   - },
224   - _getProvinceCode() {
225   - return this.provinceDataList[this.pickerValue[0]].value;
226   - },
227   - _getAreaCode() {
228   - return this.areaDataList[this.pickerValue[2]].value;
229   - },
230   - queryIndex(params = [], type = 'value') {
231   - // params = [ 11 ,1101,110101 ];
232   - // 1.获取省份的index
233   - let provinceIndex = provinceData.findIndex(res => res[type] == params[0]);
234   - let cityIndex = cityData[provinceIndex].findIndex(res => res[type] == params[1]);
235   - let areaIndex = areaData[provinceIndex][cityIndex].findIndex(res => res[type] == params[2]);
236   - return {
237   - index: [provinceIndex, cityIndex, areaIndex],
238   - data: {
239   - province: provinceData[provinceIndex],
240   - city: cityData[provinceIndex][cityIndex],
241   - area: areaData[provinceIndex][cityIndex][areaIndex]
242   - }
243   - };
244   - },
245   - clear() {},
246   - hideMask() {
247   - this._$emit('onCancel');
248   - this.close();
249   - },
250   - pickerCancel() {
251   - this._$emit('onCancel');
252   - this.close();
253   - },
254   - pickerConfirm() {
255   - this._$emit('onConfirm');
256   - this.close();
257   - },
258   - open() {
259   - this.showPopup = true;
260   - this.$nextTick(() => {
261   - setTimeout(() => {
262   - this.ani = 'simple-' + this.type;
263   - }, 100);
264   - });
265   - },
266   - close(type) {
267   - if (!this.maskClick && type) return;
268   - this.ani = '';
269   - this.$nextTick(() => {
270   - setTimeout(() => {
271   - this.showPopup = false;
272   - }, 300);
273   - });
274   - }
275   - }
276   -};
  135 + name: 'simpleAddress',
  136 + props: {
  137 + mode: {
  138 + // 地址类型
  139 + // default 则代表老版本根据index索引获取数据
  140 + //
  141 + type: String,
  142 + default: 'default'
  143 + },
  144 + // 开启动画
  145 + animation: {
  146 + type: Boolean,
  147 + default: true
  148 + },
  149 + /* 弹出层类型,可选值;
  150 + *bottom:底部弹出层
  151 + */
  152 + type: {
  153 + type: String,
  154 + default: 'bottom'
  155 + },
  156 + // maskClick
  157 + maskClick: {
  158 + type: Boolean,
  159 + default: true
  160 + },
  161 + show: {
  162 + type: Boolean,
  163 + default: true
  164 + },
  165 + maskBgColor: {
  166 + type: String,
  167 + default: 'rgba(0, 0, 0, 0.4)' // 背景颜色 rgba(0, 0, 0, 0.4) 为空则调用 uni.scss
  168 + },
  169 + themeColor: {
  170 + type: String,
  171 + default: '' // 确认按钮颜色(向下兼容)
  172 + },
  173 + cancelColor: {
  174 + type: String,
  175 + default: '' // 取消按钮颜色
  176 + },
  177 + confirmColor: {
  178 + type: String,
  179 + default: '' // 确认按钮颜色
  180 + },
  181 + fontSize: {
  182 + type: String,
  183 + default: '28rpx' // picker-item字体大小
  184 + },
  185 + btnFontSize: {
  186 + type: String,
  187 + default: '' // 按钮的字体大小
  188 + },
  189 + /* 默认值 */
  190 + pickerValueDefault: {
  191 + type: Array,
  192 + default () {
  193 + return [0, 0, 0]
  194 + }
  195 + }
  196 + },
  197 + data () {
  198 + return {
  199 + ani: '',
  200 + showPopup: false,
  201 + pickerValue: [0, 0, 0],
  202 + provinceDataList: [],
  203 + cityDataList: [],
  204 + areaDataList: []
  205 + }
  206 + },
  207 + watch: {
  208 + show (newValue) {
  209 + if (newValue) {
  210 + this.open()
  211 + } else {
  212 + this.close()
  213 + }
  214 + },
  215 + pickerValueDefault () {
  216 + this.init()
  217 + }
  218 + },
  219 + created () {
  220 + this.init()
  221 + },
  222 + methods: {
  223 + init () {
  224 + this.handPickValueDefault() // 对 pickerValueDefault 做兼容处理
  225 + this.provinceDataList = provinceData
  226 + this.cityDataList = cityData[this.pickerValueDefault[0]]
  227 + this.areaDataList = areaData[this.pickerValueDefault[0]][this.pickerValueDefault[1]]
  228 + this.pickerValue = this.pickerValueDefault
  229 + },
  230 + handPickValueDefault () {
  231 + if (this.pickerValueDefault !== [0, 0, 0]) {
  232 + if (this.pickerValueDefault[0] > provinceData.length - 1) {
  233 + this.pickerValueDefault[0] = provinceData.length - 1
  234 + }
  235 + if (this.pickerValueDefault[1] > cityData[this.pickerValueDefault[0]].length - 1) {
  236 + this.pickerValueDefault[1] = cityData[this.pickerValueDefault[0]].length - 1
  237 + }
  238 + if (this.pickerValueDefault[2] > areaData[this.pickerValueDefault[0]][this.pickerValueDefault[1]].length - 1) {
  239 + this.pickerValueDefault[2] = areaData[this.pickerValueDefault[0]][this.pickerValueDefault[1]].length - 1
  240 + }
  241 + }
  242 + },
  243 + pickerChange (e) {
  244 + const changePickerValue = e.detail.value
  245 + if (this.pickerValue[0] !== changePickerValue[0]) {
  246 + // 第一级发生滚动
  247 + this.cityDataList = cityData[changePickerValue[0]]
  248 + this.areaDataList = areaData[changePickerValue[0]][0]
  249 + changePickerValue[1] = 0
  250 + changePickerValue[2] = 0
  251 + } else if (this.pickerValue[1] !== changePickerValue[1]) {
  252 + // 第二级滚动
  253 + this.areaDataList = areaData[changePickerValue[0]][changePickerValue[1]]
  254 + changePickerValue[2] = 0
  255 + }
  256 + this.pickerValue = changePickerValue
  257 + this._$emit('onChange')
  258 + },
  259 + _$emit (emitName) {
  260 + const pickObj = {
  261 + label: this._getLabel(),
  262 + value: this.pickerValue,
  263 + cityCode: this._getCityCode(),
  264 + areaCode: this._getAreaCode(),
  265 + provinceCode: this._getProvinceCode(),
  266 + labelArr: this._getLabel().split('-')
  267 + }
  268 + this.$emit(emitName, pickObj)
  269 + },
  270 + _getLabel () {
  271 + const pcikerLabel = this.provinceDataList[this.pickerValue[0]].label + '-' + this.cityDataList[this.pickerValue[1]].label + '-' + this.areaDataList[this.pickerValue[2]].label
  272 + return pcikerLabel
  273 + },
  274 + _getCityCode () {
  275 + return this.cityDataList[this.pickerValue[1]].value
  276 + },
  277 + _getProvinceCode () {
  278 + return this.provinceDataList[this.pickerValue[0]].value
  279 + },
  280 + _getAreaCode () {
  281 + return this.areaDataList[this.pickerValue[2]].value
  282 + },
  283 + queryIndex (params = [], type = 'value') {
  284 + // params = [ 11 ,1101,110101 ];
  285 + // 1.获取省份的index
  286 + const provinceIndex = provinceData.findIndex(res => res[type] === params[0])
  287 + const cityIndex = cityData[provinceIndex].findIndex(res => res[type] === params[1])
  288 + const areaIndex = areaData[provinceIndex][cityIndex].findIndex(res => res[type] === params[2])
  289 + return {
  290 + index: [provinceIndex, cityIndex, areaIndex],
  291 + data: {
  292 + province: provinceData[provinceIndex],
  293 + city: cityData[provinceIndex][cityIndex],
  294 + area: areaData[provinceIndex][cityIndex][areaIndex]
  295 + }
  296 + }
  297 + },
  298 + clear () {},
  299 + hideMask () {
  300 + this._$emit('onCancel')
  301 + this.close()
  302 + },
  303 + pickerCancel () {
  304 + this._$emit('onCancel')
  305 + this.close()
  306 + },
  307 + pickerConfirm () {
  308 + this._$emit('onConfirm')
  309 + this.close()
  310 + },
  311 + open () {
  312 + this.showPopup = true
  313 + this.$nextTick(() => {
  314 + setTimeout(() => {
  315 + this.ani = 'simple-' + this.type
  316 + }, 100)
  317 + })
  318 + },
  319 + close (type) {
  320 + if (!this.maskClick && type) return
  321 + this.ani = ''
  322 + this.$nextTick(() => {
  323 + setTimeout(() => {
  324 + this.showPopup = false
  325 + }, 300)
  326 + })
  327 + }
  328 + }
  329 +}
277 330 </script>
278 331  
279 332 <style lang="scss" scoped>
280 333 .simple-address {
281   - /* #ifndef APP-NVUE */
282   - display: flex;
283   - /* #endif */
284   - flex-direction: column;
  334 + /* #ifndef APP-NVUE */
  335 + display: flex;
  336 + /* #endif */
  337 + flex-direction: column;
285 338 }
286 339  
287 340 .simple-address-mask {
288   - position: fixed;
289   - bottom: 0;
290   - top: 0;
291   - left: 0;
292   - right: 0;
  341 + position: fixed;
  342 + bottom: 0;
  343 + top: 0;
  344 + left: 0;
  345 + right: 0;
293 346  
294   - transition-property: opacity;
295   - transition-duration: 0.3s;
296   - opacity: 0;
297   - /* #ifndef APP-NVUE */
298   - z-index: 99;
299   - /* #endif */
  347 + transition-property: opacity;
  348 + transition-duration: 0.3s;
  349 + opacity: 0;
  350 + /* #ifndef APP-NVUE */
  351 + z-index: 99;
  352 + /* #endif */
300 353 }
301 354  
302 355 .mask-ani {
303   - transition-property: opacity;
304   - transition-duration: 0.2s;
  356 + transition-property: opacity;
  357 + transition-duration: 0.2s;
305 358 }
306 359  
307 360 .simple-bottom-mask {
308   - opacity: 1;
  361 + opacity: 1;
309 362 }
310 363  
311 364 .simple-center-mask {
312   - opacity: 1;
  365 + opacity: 1;
313 366 }
314 367  
315 368 .simple-address--fixed {
316   - position: fixed;
317   - bottom: 0;
318   - left: 0;
319   - right: 0;
320   - transition-property: transform;
321   - transition-duration: 0.3s;
322   - transform: translateY(460rpx);
323   - /* #ifndef APP-NVUE */
324   - z-index: 99;
325   - /* #endif */
  369 + position: fixed;
  370 + bottom: 0;
  371 + left: 0;
  372 + right: 0;
  373 + transition-property: transform;
  374 + transition-duration: 0.3s;
  375 + transform: translateY(460rpx);
  376 + /* #ifndef APP-NVUE */
  377 + z-index: 99;
  378 + /* #endif */
326 379 }
327 380  
328 381 .simple-address-content {
329   - background-color: #ffffff;
  382 + background-color: #ffffff;
330 383 }
331 384  
332 385 .simple-content-bottom {
333   - bottom: 0;
334   - left: 0;
335   - right: 0;
336   - transform: translateY(500rpx);
  386 + bottom: 0;
  387 + left: 0;
  388 + right: 0;
  389 + transform: translateY(500rpx);
337 390 }
338 391  
339 392 .content-ani {
340   - transition-property: transform, opacity;
341   - transition-duration: 0.2s;
  393 + transition-property: transform, opacity;
  394 + transition-duration: 0.2s;
342 395 }
343 396  
344 397 .simple-bottom-content {
345   - transform: translateY(0);
  398 + transform: translateY(0);
346 399 }
347 400  
348 401 .simple-center-content {
349   - transform: scale(1);
350   - opacity: 1;
  402 + transform: scale(1);
  403 + opacity: 1;
351 404 }
352 405  
353 406 .simple-address__header {
354   - position: relative;
355   - /* #ifndef APP-NVUE */
356   - display: flex;
357   - /* #endif */
358   - flex-direction: row;
359   - flex-wrap: nowrap;
360   - justify-content: space-between;
361   - border-bottom-color: #f2f2f2;
362   - border-bottom-style: solid;
363   - border-bottom-width: 1rpx;
  407 + position: relative;
  408 + /* #ifndef APP-NVUE */
  409 + display: flex;
  410 + /* #endif */
  411 + flex-direction: row;
  412 + flex-wrap: nowrap;
  413 + justify-content: space-between;
  414 + border-bottom-color: #f2f2f2;
  415 + border-bottom-style: solid;
  416 + border-bottom-width: 1rpx;
364 417 }
365 418  
366 419 .simple-address--fixed-top {
367   - /* #ifndef APP-NVUE */
368   - display: flex;
369   - /* #endif */
370   - flex-direction: row;
371   - justify-content: space-between;
372   - border-top-color: $uni-border-color;
373   - border-top-style: solid;
374   - border-top-width: 1rpx;
  420 + /* #ifndef APP-NVUE */
  421 + display: flex;
  422 + /* #endif */
  423 + flex-direction: row;
  424 + justify-content: space-between;
  425 + border-top-color: $uni-border-color;
  426 + border-top-style: solid;
  427 + border-top-width: 1rpx;
375 428 }
376 429  
377 430 .simple-address__header-btn-box {
378   - /* #ifndef APP-NVUE */
379   - display: flex;
380   - /* #endif */
381   - flex-direction: row;
382   - align-items: center;
383   - justify-content: center;
384   - height: 70rpx;
  431 + /* #ifndef APP-NVUE */
  432 + display: flex;
  433 + /* #endif */
  434 + flex-direction: row;
  435 + align-items: center;
  436 + justify-content: center;
  437 + height: 70rpx;
385 438 }
386 439  
387 440 .simple-address__header-text {
388   - text-align: center;
389   - font-size: $uni-font-size-base;
390   - color: #1aad19;
391   - line-height: 70rpx;
392   - padding-left: 40rpx;
393   - padding-right: 40rpx;
  441 + text-align: center;
  442 + font-size: $uni-font-size-base;
  443 + color: #1aad19;
  444 + line-height: 70rpx;
  445 + padding-left: 40rpx;
  446 + padding-right: 40rpx;
394 447 }
395 448  
396 449 .simple-address__box {
397   - position: relative;
  450 + position: relative;
398 451 }
399 452  
400 453 .simple-address-view {
401   - position: relative;
402   - bottom: 0;
403   - left: 0;
404   - /* #ifndef APP-NVUE */
405   - width: 100%;
406   - /* #endif */
407   - /* #ifdef APP-NVUE */
408   - width: 750rpx;
409   - /* #endif */
410   - height: 408rpx;
411   - background-color: rgba(255, 255, 255, 1);
  454 + position: relative;
  455 + bottom: 0;
  456 + left: 0;
  457 + /* #ifndef APP-NVUE */
  458 + width: 100%;
  459 + /* #endif */
  460 + /* #ifdef APP-NVUE */
  461 + width: 750rpx;
  462 + /* #endif */
  463 + height: 408rpx;
  464 + background-color: rgba(255, 255, 255, 1);
412 465 }
413 466  
414 467 .picker-item {
415   - text-align: center;
416   - line-height: 70rpx;
417   - text-overflow: ellipsis;
418   - font-size: 28rpx;
  468 + text-align: center;
  469 + line-height: 70rpx;
  470 + text-overflow: ellipsis;
  471 + font-size: 28rpx;
419 472 }
420 473 </style>
... ...
... ... @@ -43,12 +43,18 @@
43 43 }
44 44 },
45 45 {
46   - "path" : "pages/addAddress/addAddress",
  46 + "path" : "pages/address/addAddress",
47 47 "style" : {
48 48 "navigationBarTitleText" : "新增地址"
49 49 }
50 50 },
51 51 {
  52 + "path" : "pages/address/addressList",
  53 + "style" : {
  54 + "navigationBarTitleText" : "地址管理"
  55 + }
  56 + },
  57 + {
52 58 "path" : "pages/confirmOrder/confirmOrder",
53 59 "style" : {
54 60 "navigationBarTitleText" : "确认订单"
... ... @@ -133,13 +139,24 @@
133 139 ]
134 140 },
135 141 "condition" : {
136   - //模式配置,仅开发期间生效
137   - "current" : 0, //当前激活的模式(list 的索引项)
  142 + "current" : 0,
138 143 "list" : [
139 144 {
140   - "name" : "", //模式名称
141   - "path" : "", //启动页面,必选
142   - "query" : "" //启动参数,在页面的onLoad函数里面得到
  145 + "name" : "首页",
  146 + "path" : "pages/index/index",
  147 + "query" : ""
  148 + }, {
  149 + "name" : "镜片、美瞳参数选购",
  150 + "path" : "pages/purchaseLenses/purchaseLenses",
  151 + "query" : ""
  152 + }, {
  153 + "name" : "新增地址",
  154 + "path" : "pages/address/addAddress",
  155 + "query" : ""
  156 + }, {
  157 + "name" : "地址管理",
  158 + "path" : "pages/address/addressList",
  159 + "query" : ""
143 160 }
144 161 ]
145 162 }
... ...
src/pages/addAddress/addAddress.vue
... ... @@ -1,111 +0,0 @@
1   -<template>
2   - <view class="wrap">
3   - <view class="content">
4   - <view class="item,name" >
5   - <text class="itemText">姓名</text>
6   - <input placeholder="收货人姓名(真实姓名)" placeholder-style="color:#B8B8B8"/>
7   - </view>
8   - <view class="item,phone">
9   - <text class="itemText">电话</text>
10   - <input placeholder="手机号" type="digit" placeholder-style="color:#B8B8B8"/>
11   - </view>
12   - <view class="item,area" >
13   - <text class="itemText">地区</text>
14   - <view class="btn" v-if="pickerText===''" @tap="openAddres">选择省/市/区</view>
15   - <view class="btn" v-else @tap="openAddres">{{pickerText}}</view>
16   - <simple-address ref="SimpleAddress" :pickerValueDefault="cityPickerValueDefault" @onConfirm="onConfirm" themeColor="#007AFF"></simple-address>
17   - </view>
18   - <view class="item,address" >
19   - <text class="itemText">详细地址</text>
20   - <input placeholder="街道、小区门牌等详细地址"/>
21   - </view>
22   - <view class="item,check" >
23   - <text class="itemText">设为默认地址</text>
24   - <switch checked="isDefalutAddress" color="#FF6B4A" style="transform:scale(0.6)" @change="changeDefalutAddress" />
25   - </view>
26   - <input />
27   - </view>
28   - <view class="button">保存并使用</view>
29   - </view>
30   -</template>
31   -
32   -<script>
33   - import SimpleAddress from '@/components/SimpleAddress/SimpleAddress.vue';
34   - export default {
35   - data() {
36   - return {
37   - cityPickerValueDefault: [0, 0, 1],
38   - pickerText: '',
39   - isDefalutAddress:true
40   -
41   - };
42   - },
43   - components: {
44   - SimpleAddress
45   - },
46   - methods: {
47   - openAddres() {
48   - this.cityPickerValueDefault = [0,0,1]
49   - this.$refs.SimpleAddress.open();
50   - },
51   - onConfirm(e) {
52   - this.pickerText = e.label;
53   - },
54   - changeDefalutAddress(e){
55   - this.isDefalutAddress = e.target.value
56   - }
57   - }
58   - }
59   -</script>
60   -
61   -<style lang="scss">
62   - .wrap{
63   - height: 100vh;
64   - background-color:#F2F2F2 ;
65   - font-family: PingFangSC-Regular;
66   - letter-spacing: -0.23px;
67   - padding-top: 19rpx;
68   - }
69   - .content{
70   - background-color: #FFFFFF;
71   - border-radius: 8px;
72   - border-radius: 8px;
73   - padding: 40rpx 56rpx;
74   - margin-left: 40rpx;
75   - width: 670rpx;
76   - box-sizing: border-box;
77   - .item{
78   - display: flex;
79   - justify-content: flex-start;
80   - font-size: 14px;
81   - align-items: center;
82   - height: 112rpx;
83   - border-bottom: 1rpx solid #E9E9E9;
84   - .itemText{
85   - width: 162rpx;
86   - font-family: PingFangSC-Regular;
87   - letter-spacing: -0.26px;
88   - }
89   - .btn{
90   - color: #333333 !important;
91   - }
92   - }
93   - .check{
94   - justify-content: space-between;
95   - }
96   - }
97   - .button{
98   - position: fixed;
99   - bottom: 0;
100   - left: 0;
101   - height: 112rpx;
102   - width: 100%;
103   - background: #FF6B4A;
104   - display: flex;
105   - justify-content: center;
106   - align-items: center;
107   - font-size: 16px;
108   - color: #FFFFFF;
109   - letter-spacing: -0.3px;
110   - }
111   -</style>
src/pages/address/addAddress.vue
... ... @@ -0,0 +1,256 @@
  1 +<template>
  2 + <form
  3 + class="wrap"
  4 + @submit="formSubmit"
  5 + @reset="formReset"
  6 + >
  7 + <view class="content">
  8 + <view class="item,name">
  9 + <text class="itemText">姓名</text>
  10 + <input
  11 + placeholder="收货人姓名(真实姓名)"
  12 + placeholder-style="color:#B8B8B8"
  13 + name="name"
  14 + :value="name"
  15 + />
  16 + </view>
  17 + <view class="item,phone">
  18 + <text class="itemText">电话</text>
  19 + <input
  20 + placeholder="手机号"
  21 + type="digit"
  22 + placeholder-style="color:#B8B8B8"
  23 + name="mobile"
  24 + v-model="mobile"
  25 + />
  26 + </view>
  27 + <view class="item,phone">
  28 + <text class="itemText">性别</text>
  29 + <picker
  30 + @change="bindPickerChange"
  31 + :value="index"
  32 + :range="sexArray"
  33 + name="sex"
  34 + >
  35 + <view class="uni-input">{{sexArray[sexIndex]}}</view>
  36 + </picker>
  37 + </view>
  38 + <view class="item,area">
  39 + <text class="itemText">地区</text>
  40 + <view
  41 + class="btn"
  42 + v-if="pickerText===''"
  43 + @tap="openAddres"
  44 + >选择省/市/区</view>
  45 + <view
  46 + class="btn"
  47 + v-else
  48 + @tap="openAddres"
  49 + >{{pickerText}}</view>
  50 + <simple-address
  51 + ref="SimpleAddress"
  52 + :pickerValueDefault="cityPickerValueDefault"
  53 + @onConfirm="onConfirm"
  54 + themeColor="#007AFF"
  55 + name="address"
  56 + ></simple-address>
  57 + </view>
  58 + <view class="item,address">
  59 + <text class="itemText">详细地址</text>
  60 + <input
  61 + placeholder="街道、小区门牌等详细地址"
  62 + name="addDetail"
  63 + :value="addDetial"
  64 + />
  65 + </view>
  66 + <view class="item,check">
  67 + <text class="itemText">设为默认地址</text>
  68 + <switch
  69 + :checked="isDefalutAddress"
  70 + color="#FF6B4A"
  71 + style="transform:scale(0.6)"
  72 + @change="changeDefalutAddress"
  73 + name="isDefault"
  74 + />
  75 + </view>
  76 + <input />
  77 + </view>
  78 + <button
  79 + form-type="submit"
  80 + class="button"
  81 + >保存并使用</button>
  82 + </form>
  83 +</template>
  84 +
  85 +<script>
  86 +import SimpleAddress from '@/components/SimpleAddress/SimpleAddress.vue'
  87 +import store from '@/store'
  88 +
  89 +export default {
  90 + data () {
  91 + return {
  92 + cityPickerValueDefault: [0, 0, 1],
  93 + pickerText: '',
  94 + isDefalutAddress: true,
  95 + sexArray: ['男', '女'],
  96 + sexIndex: 0,
  97 + flag: 0,
  98 + addId: undefined,
  99 + name: '',
  100 + mobile: '',
  101 + addDetial: '',
  102 + isDefault: 0
  103 + }
  104 + },
  105 + onLoad (option) {
  106 + const { addId } = option
  107 + if (addId) {
  108 + this.addId = addId
  109 + store.dispatch('address/details', {
  110 + add_id: addId
  111 + }).then(() => {
  112 + uni.setNavigationBarTitle({
  113 + title: '编辑地址'
  114 + })
  115 + const { name, mobile, sex, add_detail: addDetial, default: isDefault } = this.$store.state.address.details
  116 + console.log('---', this.$store.state.address.details)
  117 + const index = this.$refs.SimpleAddress.queryIndex(this.$store.state.address.details.address.split('-'), 'label')
  118 + this.cityPickerValueDefault = index.index
  119 + this.name = name
  120 + this.mobile = Number(mobile)
  121 + this.sexIndex = sex
  122 + this.addDetial = addDetial
  123 + this.isDefalutAddress = !!Number(isDefault)
  124 + console.log('this', this.cityPickerValueDefault)
  125 + })
  126 + }
  127 + },
  128 + components: {
  129 + SimpleAddress
  130 + },
  131 + methods: {
  132 + openAddres () {
  133 + this.cityPickerValueDefault = [0, 0, 1]
  134 + this.$refs.SimpleAddress.open()
  135 + },
  136 + onConfirm (e) {
  137 + this.pickerText = e.label
  138 + console.log('lll', e, this.pickerText)
  139 + },
  140 + changeDefalutAddress (e) {
  141 + this.isDefalutAddress = e.target.value
  142 + },
  143 + bindPickerChange (e) {
  144 + console.log('picker发送选择改变,携带值为', e.target.value)
  145 + this.sexIndex = e.target.value
  146 + },
  147 + formValidation (formdata) {
  148 + const { name, mobile, addDetail } = formdata
  149 + this.flag = false
  150 + if (name === '') {
  151 + uni.showModal({
  152 + content: '请输入姓名',
  153 + showCancel: false
  154 + })
  155 + return 0
  156 + }
  157 + if (!(/^1[3456789]\d{9}$/.test(mobile))) {
  158 + uni.showModal({
  159 + content: '请输入正确的手机号',
  160 + showCancel: false
  161 + })
  162 + return 0
  163 + }
  164 + if (this.pickerText === '') {
  165 + uni.showModal({
  166 + content: '请选择收货地区',
  167 + showCancel: false
  168 + })
  169 + return 0
  170 + }
  171 + if (addDetail === '') {
  172 + uni.showModal({
  173 + content: '请输入收货详细地址',
  174 + showCancel: false
  175 + })
  176 + return 0
  177 + }
  178 + this.flag = true
  179 + },
  180 + formSubmit (e) {
  181 + const formdata = e.detail.value
  182 + this.formValidation(formdata)
  183 +
  184 + const { name, mobile, addDetail, isDefault } = formdata
  185 + if (this.flag === true) {
  186 + const params = {
  187 + sex: this.sexIndex,
  188 + name,
  189 + address: this.pickerText,
  190 + mobile,
  191 + default: isDefault ? 1 : 0,
  192 + add_detail: addDetail,
  193 + longitude: 0,
  194 + latitude: 0
  195 + }
  196 + if (this.addId) {
  197 + params.add_id = this.addId
  198 + }
  199 + store.dispatch('address/edit', params)
  200 + }
  201 + }
  202 + }
  203 +}
  204 +</script>
  205 +
  206 +<style lang="scss">
  207 +.wrap {
  208 + height: 100vh;
  209 + background-color: #f2f2f2;
  210 + font-family: PingFangSC-Regular;
  211 + letter-spacing: -0.23px;
  212 + padding-top: 19rpx;
  213 +}
  214 +.content {
  215 + background-color: #ffffff;
  216 + border-radius: 8px;
  217 + border-radius: 8px;
  218 + padding: 40rpx 56rpx;
  219 + margin-left: 40rpx;
  220 + width: 670rpx;
  221 + box-sizing: border-box;
  222 + .item {
  223 + display: flex;
  224 + justify-content: flex-start;
  225 + font-size: 14px;
  226 + align-items: center;
  227 + height: 112rpx;
  228 + border-bottom: 1rpx solid #e9e9e9;
  229 + .itemText {
  230 + width: 162rpx;
  231 + font-family: PingFangSC-Regular;
  232 + letter-spacing: -0.26px;
  233 + }
  234 + .btn {
  235 + color: #333333 !important;
  236 + }
  237 + }
  238 + .check {
  239 + justify-content: space-between;
  240 + }
  241 +}
  242 +.button {
  243 + position: fixed;
  244 + bottom: 0;
  245 + left: 0;
  246 + height: 112rpx;
  247 + width: 100%;
  248 + background: #ff6b4a;
  249 + display: flex;
  250 + justify-content: center;
  251 + align-items: center;
  252 + font-size: 16px;
  253 + color: #ffffff;
  254 + letter-spacing: -0.3px;
  255 +}
  256 +</style>
... ...
src/pages/address/addressList.vue
... ... @@ -0,0 +1,168 @@
  1 +<template>
  2 + <view class="content">
  3 + <view
  4 + v-if="addressList.length !== 0"
  5 + class="list"
  6 + >
  7 + <view
  8 + v-for="(item, index) in addressList"
  9 + :key="index"
  10 + @tap="toEditAddress(item.add_id)"
  11 + class="order-user"
  12 + >
  13 + <view class="order-user-head">
  14 + <view class="name">
  15 + <view
  16 + v-if="item.default === '1'"
  17 + class="default"
  18 + ><text>默认</text></view>{{item.name}}
  19 + </view>
  20 + <text class="mobile">{{item.mobile}}</text>
  21 + </view>
  22 + <view class="order-user-body">
  23 + <image src="../../static/myorder-paying-location.png"></image>
  24 + <text class="address">{{item.address.replace(/[-]/g,' ')}}\n{{item.add_detail}}</text>
  25 + </view>
  26 + <image
  27 + v-if="item.default === '1'"
  28 + class="arrow"
  29 + src="../../static/right.png"
  30 + ></image>
  31 + <image
  32 + v-else
  33 + class="arrow pen"
  34 + src="../../static/icon-pen.png"
  35 + ></image>
  36 + </view>
  37 + </view>
  38 + <view
  39 + v-else
  40 + class="empty"
  41 + >
  42 + 暂无收货地址
  43 + </view>
  44 + <button class="add">新建收货地址</button>
  45 + </view>
  46 +</template>
  47 +
  48 +<script>
  49 +import store from '@/store'
  50 +export default {
  51 + data () {
  52 + return {}
  53 + },
  54 + computed: {
  55 + addressList () {
  56 + return this.$store.state.address.list
  57 + }
  58 + },
  59 + onLoad () {
  60 + store.dispatch('address/list')
  61 + },
  62 + methods: {
  63 + toEditAddress (addId) {
  64 + console.log('addId', addId)
  65 + uni.navigateTo({
  66 + url: `addAddress?addId=${addId}`,
  67 + fail: (error) => {
  68 + console.error('跳转出现错误', error)
  69 + }
  70 + })
  71 + }
  72 + }
  73 +}
  74 +</script>
  75 +
  76 +<style lang="scss">
  77 +.content {
  78 + min-height: 100vh;
  79 + background-color: #f2f2f2;
  80 + padding-top: 20rpx;
  81 + padding-bottom: 112rpx;
  82 + .order-user {
  83 + width: 670rpx;
  84 + height: 228rpx;
  85 + background: #ffffff;
  86 + border-radius: 14rpx;
  87 + margin: 0 auto;
  88 + margin-bottom: 20rpx;
  89 + position: relative;
  90 + .order-user-head {
  91 + display: flex;
  92 + height: 108rpx;
  93 + width: 100%;
  94 + align-items: center;
  95 + margin-left: 126rpx;
  96 + .name {
  97 + display: flex;
  98 + justify-content: space-between;
  99 + font-size: 14px;
  100 + color: #333333;
  101 + letter-spacing: -0.26px;
  102 + margin-right: 20rpx;
  103 + .default {
  104 + height: 40rpx;
  105 + width: 80rpx;
  106 + background-color: #4a90e2;
  107 + border-radius: 13px;
  108 + border-radius: 13px;
  109 + text-align: center;
  110 + margin-right: 20rpx;
  111 + text {
  112 + font-size: 12px;
  113 + color: #ffffff;
  114 + letter-spacing: -0.23px;
  115 + }
  116 + }
  117 + }
  118 + .mobile {
  119 + font-size: 14px;
  120 + color: #999999;
  121 + letter-spacing: -0.26px;
  122 + }
  123 + }
  124 + .order-user-body {
  125 + display: flex;
  126 + width: 100%;
  127 + image {
  128 + width: 24px;
  129 + height: 26px;
  130 + margin: 12rpx 32rpx 0 40rpx;
  131 + }
  132 + .address {
  133 + font-weight: bold;
  134 + font-size: 14px;
  135 + color: #333333;
  136 + letter-spacing: -0.26px;
  137 + }
  138 + }
  139 + .arrow {
  140 + width: 6px;
  141 + height: 12px;
  142 + position: absolute;
  143 + right: 40rpx;
  144 + bottom: 104rpx;
  145 + }
  146 + }
  147 + .empty {
  148 + color: #666;
  149 + font-size: 16px;
  150 + text-align: center;
  151 + padding-top: 30vh;
  152 + }
  153 + .add {
  154 + position: fixed;
  155 + bottom: 0;
  156 + left: 0;
  157 + height: 112rpx;
  158 + width: 100%;
  159 + background-color: #ff6b4a;
  160 + display: flex;
  161 + justify-content: center;
  162 + align-items: center;
  163 + font-size: 16px;
  164 + color: #ffffff;
  165 + letter-spacing: -0.3px;
  166 + }
  167 +}
  168 +</style>
... ...
src/pages/detailsChoiceArgs/compoents/MyCollapse.vue
... ... @@ -8,9 +8,7 @@
8 8 <view class="headRight" v-else @click="myCollapseChange(isOpen)" ></view>
9 9 </view>
10 10 <view class="body">
11   -
12 11 <block v-if="isOpen">
13   -
14 12 <view style="background-color: #FFFFFF;" class="funBox">
15 13 <block v-if="title==='镜片种类'">
16 14 <view class="noRange">
... ... @@ -30,12 +28,14 @@
30 28 <view class="range" v-for="(item) in funList" :key="item.key">{{item.range}}</view>
31 29 <view class="noRange">
32 30 <block v-for="(item) in funList" :key="item.key">
33   - <view v-bind:class="item.isChioce?'boxChoiced':'boxChoice'"
34   - @click="choice(item.key-1,item.isChioce)">{{item.name}}</view>
  31 + <view
  32 + v-bind:class="item.isChioce?'boxChoiced':'boxChoice'"
  33 + @click="choice(item.key ? item.key - 1 : item.mid, item.isChioce || item.checked)"
  34 + >{{item.name}}</view>
35 35 </block>
36 36 </view>
37 37  
38   - <view class="range" v-for="(item) in funList2" :key="item.key">{{item.range}}</view>
  38 + <view v-if="funList2.length !== 0" class="range" v-for="(item) in funList2" :key="item.key">{{item.range}}</view>
39 39 <view class="noRange" style="max-width: 624rpx">
40 40 <block v-for="(item,index) in funList2" :key="item.key">
41 41 <view v-bind:class="item.isChioce?'boxChoiced':'boxChoice'"
... ... @@ -92,8 +92,8 @@
92 92 "background-image: linear-gradient(180deg, #AEA096 1%, #5E3521 100%);",
93 93 "background-image: linear-gradient(180deg, #6F6864 1%, #352B26 100%);"
94 94 ],
95   - funList: this.funListProp,
96   - funList2: this.funList2Prop,
  95 + funList: this.funListProp.attr || this.funListProp,
  96 + funList2: this.funList2Prop || [],
97 97 funContent: this.funContentProp
98 98 };
99 99 },
... ... @@ -102,23 +102,21 @@
102 102 myCollapseChange(isopen){
103 103 this.isOpen = !isopen
104 104 },
105   - choice(index,isChoice){
106   - if(this.funList[index].type==="fun"){
  105 + choice(index,isChoice) {
  106 + if(this.funList[index].type==="fun") {
107 107 this.funList[index].isChioce = !isChoice
108   - if(!isChoice){
  108 + if(!isChoice) {
109 109 this.funContent[index] = this.funList[index].name
110   - }
111   - else{
  110 + } else {
112 111 this.funContent[index] = ''
113 112 }
114   - }
115   - else if(this.funList[index].type==="kind"){
  113 + } else if(this.funList[index].type==="kind") {
116 114 for(let i=0;i<this.funList.length;i++){
117 115 this.funList[i].isChioce = false
118 116 }
119 117 this.funList[index].isChioce = !isChoice
120 118 this.funContent[0]=this.funList[index].name
121   - }else {
  119 + } else {
122 120 for(let i=0;i<this.funList.length;i++){
123 121 this.funList[i].isChioce = false
124 122 }
... ... @@ -136,8 +134,7 @@
136 134 }
137 135 this.funList2[index].isChioce = !isChoice
138 136 this.funContent[1] = this.funList2[index].name
139   - }
140   - else{
  137 + } else {
141 138 for(let i=0;i<this.funList.length;i++){
142 139 this.funList[i].isChioce = false
143 140 }
... ...
src/pages/detailsChoiceArgs/detailsChoiceArgs.vue
... ... @@ -17,116 +17,126 @@
17 17 </view>
18 18 <view class="goods-data">
19 19 <view class="opCollapse">
20   - <view class="head">
  20 + <!-- <view class="head">
21 21 <view v-if="!opIsOpen">填写验光数据</view>
22 22 <view v-else></view>
23 23 <view class="headRighted" v-if="opIsOpen" @click="myCollapseChange(opIsOpen)"></view>
24 24 <view class="headRight" v-else @click="myCollapseChange(opIsOpen)" ></view>
25   - </view>
  25 + </view> -->
26 26 <view class="body">
27 27 <template v-if="opIsOpen">
28   -
29 28 <view class="goods-form">
30   - <text class="p1">填写验光数据</text>
31   - <text class="p2">没有验光数据?请到线下眼镜店验光哦~</text>
32   - <view class="picker" >
33   - <view class="picker-choice">
34   - <view class="choice-left">
35   - <text class="p11">{{pickerInfoList[0].nameC}}</text>
36   - <text class="p12">{{pickerInfoList[0].nameE}}</text>
37   - </view>
38   - <text class="p13">左&nbsp;&nbsp;&nbsp;(OD)</text>
39   - <text class="p14">{{pickerInfoList[0].nameArray1[pickerInfoList[0].nameIndex1]}}</text>
40   - <picker @change="bindPickerChange01" :value="pickerInfoList[0].nameIndex1" :range="pickerInfoList[0].nameArray1">
41   - <image src="../../static/detail-tabicon.png" ></image>
42   - </picker>
43   - <text class="p13">右&nbsp;&nbsp;&nbsp;(OS)</text>
44   - <text class="p14">{{pickerInfoList[0].nameArray2[pickerInfoList[0].nameIndex2]}}</text>
45   - <picker @change="bindPickerChange02" :value="pickerInfoList[0].nameIndex2" :range="pickerInfoList[0].nameArray2">
46   - <image src="../../static/detail-tabicon.png" ></image>
47   - </picker>
48   - </view>
49   - </view>
50   - <view class="picker" >
51   - <view class="picker-choice">
52   - <view class="choice-left">
53   - <text class="p11">{{pickerInfoList[1].nameC}}</text>
54   - <text class="p12">{{pickerInfoList[1].nameE}}</text>
55   - </view>
56   - <text class="p13">左&nbsp;&nbsp;&nbsp;(OD)</text>
57   - <text class="p14">{{pickerInfoList[1].nameArray1[pickerInfoList[1].nameIndex1]}}</text>
58   - <picker @change="bindPickerChange11" :value="pickerInfoList[1].nameIndex1" :range="pickerInfoList[1].nameArray1">
59   - <image src="../../static/detail-tabicon.png" ></image>
60   - </picker>
61   - <text class="p13">右&nbsp;&nbsp;&nbsp;(OS)</text>
62   - <text class="p14">{{pickerInfoList[1].nameArray2[pickerInfoList[1].nameIndex2]}}</text>
63   - <picker @change="bindPickerChange12" :value="pickerInfoList[1].nameIndex2" :range="pickerInfoList[1].nameArray2">
64   - <image src="../../static/detail-tabicon.png" ></image>
65   - </picker>
66   - </view>
67   - </view>
68   - <view class="picker" >
69   - <view class="picker-choice">
70   - <view class="choice-left">
71   - <text class="p11">{{pickerInfoList[2].nameC}}</text>
72   - <text class="p12">{{pickerInfoList[2].nameE}}</text>
73   - </view>
74   - <text class="p13">左&nbsp;&nbsp;&nbsp;(OD)</text>
75   - <text class="p14">{{pickerInfoList[2].nameArray1[pickerInfoList[2].nameIndex1]}}</text>
76   - <picker @change="bindPickerChange21" :value="pickerInfoList[2].nameIndex1" :range="pickerInfoList[2].nameArray1">
77   - <image src="../../static/detail-tabicon.png" ></image>
78   - </picker>
79   - <text class="p13">右&nbsp;&nbsp;&nbsp;(OS)</text>
80   - <text class="p14">{{pickerInfoList[2].nameArray2[pickerInfoList[2].nameIndex2]}}</text>
81   - <picker @change="bindPickerChange22" :value="pickerInfoList[2].nameIndex2" :range="pickerInfoList[2].nameArray2">
82   - <image src="../../static/detail-tabicon.png" ></image>
83   - </picker>
84   - </view>
85   - </view>
86   - <view class="picker" >
87   - <view class="picker-choice">
88   - <view class="choice-left">
89   - <text class="p11">{{pickerInfoList[3].nameC}}</text>
90   - <text class="p12">{{pickerInfoList[3].nameE}}</text>
91   - </view>
92   - <text class="p13">左&nbsp;&nbsp;&nbsp;(OD)</text>
93   - <text class="p14">{{pickerInfoList[3].nameArray1[pickerInfoList[3].nameIndex1]}}</text>
94   - <picker @change="bindPickerChange31" :value="pickerInfoList[3].nameIndex1" :range="pickerInfoList[3].nameArray1">
95   - <image src="../../static/detail-tabicon.png" ></image>
96   - </picker>
97   - <text class="p13">右&nbsp;&nbsp;&nbsp;(OS)</text>
98   - <text class="p14">{{pickerInfoList[3].nameArray2[pickerInfoList[3].nameIndex2]}}</text>
99   - <picker @change="bindPickerChange32" :value="pickerInfoList[3].nameIndex2" :range="pickerInfoList[3].nameArray2">
100   - <image src="../../static/detail-tabicon.png" ></image>
101   - </picker>
102   - </view>
103   - </view>
104   - <view class="picker" >
105   - <view class="picker-choice">
106   - <view class="choice-left">
107   - <text class="p11">{{pickerInfoList[4].nameC}}</text>
108   - </view>
109   - <text class="p13-date">年&nbsp;&nbsp;&nbsp;(Y)</text>
110   - <text class="p14" style="width: 34px;">{{pickerInfoList[4].nameArray1[pickerInfoList[4].nameIndex1]}}</text>
111   - <picker @change="bindPickerChange41" :value="pickerInfoList[4].nameIndex1" :range="pickerInfoList[4].nameArray1">
112   - <image src="../../static/detail-tabicon.png" ></image>
113   - </picker>
114   - <text class="p13-date">月&nbsp;&nbsp;&nbsp;(M)</text>
115   - <text class="p14" style="width: 30px;">{{pickerInfoList[4].nameArray2[pickerInfoList[4].nameIndex2]}}</text>
116   - <picker @change="bindPickerChange42" :value="pickerInfoList[4].nameIndex2" :range="pickerInfoList[4].nameArray2">
117   - <image src="../../static/detail-tabicon.png" ></image>
118   - </picker>
119   - <text class="p13-date">日&nbsp;&nbsp;&nbsp;(D)</text>
120   - <text class="p14" style="width: 30px;">{{pickerInfoList[4].nameArray3[pickerInfoList[4].nameIndex3]}}</text>
121   - <picker @change="bindPickerChange43" :value="pickerInfoList[4].nameIndex3" :range="pickerInfoList[4].nameArray3">
122   - <image src="../../static/detail-tabicon.png" ></image>
123   - </picker>
124   - </view>
125   - </view>
126   - <view class="confirm">
127   - <image :src="tablist.confirm ? tabicon[0] : tabicon[1]" @click="changeConfirm"></image>
128   - <text>确认以上输入信息来源于我的验光数据!</text>
129   - </view>
  29 + <view class="data-title">
  30 + <image src="../../static/icon-data.png" ></image>
  31 + <text class="p1">填写验光数据</text>
  32 + </view>
  33 + <text class="p2">没有验光数据?请到线下眼镜店验光哦~</text>
  34 + <view class="picker" >
  35 + <view class="picker-choice">
  36 + <view class="choice-left">
  37 + <text class="p11">验光单取名:</text>
  38 + </view>
  39 + <input class="choice-name uni-input" placeholder="下系" />
  40 + </view>
  41 + </view>
  42 + <view class="picker" >
  43 + <view class="picker-choice">
  44 + <view class="choice-left">
  45 + <text class="p11">{{pickerInfoList[0].nameC}}</text>
  46 + <text class="p12">{{pickerInfoList[0].nameE}}</text>
  47 + </view>
  48 + <text class="p13">左&nbsp;&nbsp;&nbsp;(OD)</text>
  49 + <text class="p14">{{pickerInfoList[0].nameArray1[pickerInfoList[0].nameIndex1]}}</text>
  50 + <picker @change="bindPickerChange01" :value="pickerInfoList[0].nameIndex1" :range="pickerInfoList[0].nameArray1">
  51 + <image src="../../static/detail-tabicon.png" ></image>
  52 + </picker>
  53 + <text class="p13">右&nbsp;&nbsp;&nbsp;(OS)</text>
  54 + <text class="p14">{{pickerInfoList[0].nameArray2[pickerInfoList[0].nameIndex2]}}</text>
  55 + <picker @change="bindPickerChange02" :value="pickerInfoList[0].nameIndex2" :range="pickerInfoList[0].nameArray2">
  56 + <image src="../../static/detail-tabicon.png" ></image>
  57 + </picker>
  58 + </view>
  59 + </view>
  60 + <view class="picker" >
  61 + <view class="picker-choice">
  62 + <view class="choice-left">
  63 + <text class="p11">{{pickerInfoList[1].nameC}}</text>
  64 + <text class="p12">{{pickerInfoList[1].nameE}}</text>
  65 + </view>
  66 + <text class="p13">左&nbsp;&nbsp;&nbsp;(OD)</text>
  67 + <text class="p14">{{pickerInfoList[1].nameArray1[pickerInfoList[1].nameIndex1]}}</text>
  68 + <picker @change="bindPickerChange11" :value="pickerInfoList[1].nameIndex1" :range="pickerInfoList[1].nameArray1">
  69 + <image src="../../static/detail-tabicon.png" ></image>
  70 + </picker>
  71 + <text class="p13">右&nbsp;&nbsp;&nbsp;(OS)</text>
  72 + <text class="p14">{{pickerInfoList[1].nameArray2[pickerInfoList[1].nameIndex2]}}</text>
  73 + <picker @change="bindPickerChange12" :value="pickerInfoList[1].nameIndex2" :range="pickerInfoList[1].nameArray2">
  74 + <image src="../../static/detail-tabicon.png" ></image>
  75 + </picker>
  76 + </view>
  77 + </view>
  78 + <view class="picker" >
  79 + <view class="picker-choice">
  80 + <view class="choice-left">
  81 + <text class="p11">{{pickerInfoList[2].nameC}}</text>
  82 + <text class="p12">{{pickerInfoList[2].nameE}}</text>
  83 + </view>
  84 + <text class="p13">左&nbsp;&nbsp;&nbsp;(OD)</text>
  85 + <text class="p14">{{pickerInfoList[2].nameArray1[pickerInfoList[2].nameIndex1]}}</text>
  86 + <picker @change="bindPickerChange21" :value="pickerInfoList[2].nameIndex1" :range="pickerInfoList[2].nameArray1">
  87 + <image src="../../static/detail-tabicon.png" ></image>
  88 + </picker>
  89 + <text class="p13">右&nbsp;&nbsp;&nbsp;(OS)</text>
  90 + <text class="p14">{{pickerInfoList[2].nameArray2[pickerInfoList[2].nameIndex2]}}</text>
  91 + <picker @change="bindPickerChange22" :value="pickerInfoList[2].nameIndex2" :range="pickerInfoList[2].nameArray2">
  92 + <image src="../../static/detail-tabicon.png" ></image>
  93 + </picker>
  94 + </view>
  95 + </view>
  96 + <view class="picker" >
  97 + <view class="picker-choice">
  98 + <view class="choice-left">
  99 + <text class="p11">{{pickerInfoList[3].nameC}}</text>
  100 + <text class="p12">{{pickerInfoList[3].nameE}}</text>
  101 + </view>
  102 + <text class="p13">左&nbsp;&nbsp;&nbsp;(OD)</text>
  103 + <text class="p14">{{pickerInfoList[3].nameArray1[pickerInfoList[3].nameIndex1]}}</text>
  104 + <picker @change="bindPickerChange31" :value="pickerInfoList[3].nameIndex1" :range="pickerInfoList[3].nameArray1">
  105 + <image src="../../static/detail-tabicon.png" ></image>
  106 + </picker>
  107 + <text class="p13">右&nbsp;&nbsp;&nbsp;(OS)</text>
  108 + <text class="p14">{{pickerInfoList[3].nameArray2[pickerInfoList[3].nameIndex2]}}</text>
  109 + <picker @change="bindPickerChange32" :value="pickerInfoList[3].nameIndex2" :range="pickerInfoList[3].nameArray2">
  110 + <image src="../../static/detail-tabicon.png" ></image>
  111 + </picker>
  112 + </view>
  113 + </view>
  114 + <view class="picker" >
  115 + <view class="picker-choice">
  116 + <view class="choice-left">
  117 + <text class="p11">{{pickerInfoList[4].nameC}}</text>
  118 + </view>
  119 + <text class="p13-date">年&nbsp;&nbsp;&nbsp;(Y)</text>
  120 + <text class="p14" style="width: 34px;">{{pickerInfoList[4].nameArray1[pickerInfoList[4].nameIndex1]}}</text>
  121 + <picker @change="bindPickerChange41" :value="pickerInfoList[4].nameIndex1" :range="pickerInfoList[4].nameArray1">
  122 + <image src="../../static/detail-tabicon.png" ></image>
  123 + </picker>
  124 + <text class="p13-date">月&nbsp;&nbsp;&nbsp;(M)</text>
  125 + <text class="p14" style="width: 30px;">{{pickerInfoList[4].nameArray2[pickerInfoList[4].nameIndex2]}}</text>
  126 + <picker @change="bindPickerChange42" :value="pickerInfoList[4].nameIndex2" :range="pickerInfoList[4].nameArray2">
  127 + <image src="../../static/detail-tabicon.png" ></image>
  128 + </picker>
  129 + <text class="p13-date">日&nbsp;&nbsp;&nbsp;(D)</text>
  130 + <text class="p14" style="width: 30px;">{{pickerInfoList[4].nameArray3[pickerInfoList[4].nameIndex3]}}</text>
  131 + <picker @change="bindPickerChange43" :value="pickerInfoList[4].nameIndex3" :range="pickerInfoList[4].nameArray3">
  132 + <image src="../../static/detail-tabicon.png" ></image>
  133 + </picker>
  134 + </view>
  135 + </view>
  136 + <view class="confirm">
  137 + <image :src="tablist.confirm ? tabicon[0] : tabicon[1]" @click="changeConfirm"></image>
  138 + <text>确认以上输入信息来源于我的验光数据!</text>
  139 + </view>
130 140 </view>
131 141  
132 142 </template>
... ... @@ -156,6 +166,16 @@
156 166 <MyCollapse :isOpenProps="kindIsOpen" :funListProp="kindList1" :funList2Prop="kindList2" :funContentProp="kindContent" title="镜片种类"></MyCollapse>
157 167 <MyCollapse :isOpenProps="maIsOpen" :funListProp="maList1" :funList2Prop="maList2" :funContentProp="maContent" title="材质选择"></MyCollapse>
158 168 <MyCollapse :isOpenProps="reIsOpen" :funListProp="reList1" :funList2Prop="reList2" :funContentProp="reContent" title="折射率"></MyCollapse>
  169 + <view
  170 + v-for="item in attrList"
  171 + :key="item.mid"
  172 + >
  173 + <MyCollapse
  174 + :funListProp="item"
  175 + :funContentProp="reContent"
  176 + :title="item.meta_name"
  177 + />
  178 + </view>
159 179 </view>
160 180 <view class="submit">立即结算</view>
161 181 </view>
... ... @@ -163,10 +183,12 @@
163 183  
164 184 <script>
165 185 import MyCollapse from './compoents/MyCollapse.vue'
  186 + import store from '@/store'
  187 +
166 188 export default {
167 189 components: {
168 190 MyCollapse
169   - },
  191 + },
170 192 data() {
171 193 return {
172 194 count:1,
... ... @@ -183,7 +205,6 @@
183 205 {"name":"抗疲劳","isChioce": false,"key":6,"type": "fun"},
184 206 ],
185 207 funContent:[],
186   -
187 208 // 镜片种类参数
188 209 kindIsOpen:true,
189 210 kindList1: [
... ... @@ -197,9 +218,9 @@
197 218 {"name":"JB234759","isChioce":false,key:6,"type": "kind"},
198 219 {"name":"JB234759","isChioce":false,key:7,"type": "kind"},
199 220 ],
200   - kindContent:[],
  221 + kindContent: [],
201 222 // 材质选择
202   - maIsOpen:true,
  223 + maIsOpen: true,
203 224 maList1: [
204 225 {"name":"树脂镜片","isChioce":false,key:1,"range":"0-300度","isRange":true},
205 226 {"name":"特殊镜片","isChioce":false,key:2},
... ... @@ -208,9 +229,9 @@
208 229 {"name":"玻璃镜片","isChioce":false,key:3,"range":"300-1000度","isRange":true},
209 230 {"name":"玻璃镜片","isChioce":false,key:4},
210 231 ],
211   - maContent:[],
  232 + maContent: [],
212 233 // 折射率参数
213   - reIsOpen:true,
  234 + reIsOpen: true,
214 235 reList1: [
215 236 {"name":"1.56(推荐)","isChioce":false,key:1,"range":"0-300度","isRange":true},
216 237 {"name":"1.60","isChioce":false,key:2},
... ... @@ -225,27 +246,37 @@
225 246 // 验光参数
226 247 opIsOpen:true,
227 248 tablist: {
228   - // read: true,
229   - // seeLong: false,
230   - confirm: false
  249 + // read: true,
  250 + // seeLong: false,
  251 + confirm: false
231 252 },
232 253 tabicon:['/static/detail-button.png','/static/detail-button-unselected.png'],
233   - // 度数相关数据
  254 + // 度数相关数据
234 255 pickerInfoList:[
235   - {nameC:"度数",nameE:"(SPH)",nameArray1:[1.5,2.5,3.5,4.5],nameIndex1:0,nameArray2:[1.5,2.5,3.5,4.5],nameIndex2:0,key:0},
236   - {nameC:"散光",nameE:"(CYL)",nameArray1:[1.5,2.5,3.5,4.5],nameIndex1:0,nameArray2:[1.5,2.5,3.5,4.5],nameIndex2:0,key:1},
237   - {nameC:"散光轴位",nameE:"(AXI)",nameArray1:[1.5,2.5,3.5,4.5],nameIndex1:0,nameArray2:[1.5,2.5,3.5,4.5],nameIndex2:0,key:2},
238   - {nameC:"双眼瞳距",nameE:"(PD)",nameArray1:[1.5,2.5,3.5,4.5],nameIndex1:0,nameArray2:[1.5,2.5,3.5,4.5],nameIndex2:0,key:3},
239   - {nameC:"验光日期",nameE:'',nameArray1:[2017,2018,2019,2020,2021],nameIndex1:0,nameArray2:[1,2,3,4,5,6,7],nameIndex2:0,nameArray3:[1,2,3,4,5,6],nameIndex3:0}
  256 + {nameC:"度数",nameE:"(SPH)",nameArray1:[1.5,2.5,3.5,4.5],nameIndex1:0,nameArray2:[1.5,2.5,3.5,4.5],nameIndex2:0,key:0},
  257 + {nameC:"散光",nameE:"(CYL)",nameArray1:[1.5,2.5,3.5,4.5],nameIndex1:0,nameArray2:[1.5,2.5,3.5,4.5],nameIndex2:0,key:1},
  258 + {nameC:"散光轴位",nameE:"(AXI)",nameArray1:[1.5,2.5,3.5,4.5],nameIndex1:0,nameArray2:[1.5,2.5,3.5,4.5],nameIndex2:0,key:2},
  259 + {nameC:"双眼瞳距",nameE:"(PD)",nameArray1:[1.5,2.5,3.5,4.5],nameIndex1:0,nameArray2:[1.5,2.5,3.5,4.5],nameIndex2:0,key:3},
  260 + {nameC:"验光日期",nameE:'',nameArray1:[2017,2018,2019,2020,2021],nameIndex1:0,nameArray2:[1,2,3,4,5,6,7],nameIndex2:0,nameArray3:[1,2,3,4,5,6],nameIndex3:0}
240 261 ],
241 262  
242 263 }
243 264 },
  265 + onLoad() {
  266 + store.dispatch('read/fetch', {
  267 + pid: 9,
  268 + })
  269 + },
  270 + computed: {
  271 + attrList() {
  272 + return this.$store.state.read.goodInfo.attrList;
  273 + }
  274 + },
244 275 methods: {
245 276 counter(isadd){
246 277 if(isadd){
247 278 this.count++
248   - }else{
  279 + } else {
249 280 this.count <= 1? this.disabled = true:this.count--
250 281 }
251 282 },
... ... @@ -254,45 +285,45 @@
254 285 this.opIsOpen = !isopen
255 286 },
256 287 changeConfirm() {
257   - this.tablist.confirm = !this.tablist.confirm
  288 + this.tablist.confirm = !this.tablist.confirm
258 289 },
259 290  
260 291 bindPickerChange01: function(e) {
261   - this.pickerInfoList[0].nameIndex1 = e.target.value
  292 + this.pickerInfoList[0].nameIndex1 = e.target.value
262 293 },
263 294 bindPickerChange02: function(e) {
264   - this.pickerInfoList[0].nameIndex2 = e.target.value
  295 + this.pickerInfoList[0].nameIndex2 = e.target.value
265 296 },
266 297  
267 298 bindPickerChange11: function(e) {
268   - this.pickerInfoList[1].nameIndex1 = e.target.value
  299 + this.pickerInfoList[1].nameIndex1 = e.target.value
269 300 },
270 301 bindPickerChange12: function(e) {
271   - this.pickerInfoList[1].nameIndex2 = e.target.value
  302 + this.pickerInfoList[1].nameIndex2 = e.target.value
272 303 },
273 304  
274 305 bindPickerChange21: function(e) {
275   - this.pickerInfoList[2].nameIndex1 = e.target.value
  306 + this.pickerInfoList[2].nameIndex1 = e.target.value
276 307 },
277 308 bindPickerChange22: function(e) {
278   - this.pickerInfoList[2].nameIndex2 = e.target.value
  309 + this.pickerInfoList[2].nameIndex2 = e.target.value
279 310 },
280 311  
281 312 bindPickerChange31: function(e) {
282   - this.pickerInfoList[3].nameIndex1 = e.target.value
  313 + this.pickerInfoList[3].nameIndex1 = e.target.value
283 314 },
284 315 bindPickerChange32: function(e) {
285   - this.pickerInfoList[3].nameIndex2 = e.target.value
  316 + this.pickerInfoList[3].nameIndex2 = e.target.value
286 317 },
287 318  
288 319 bindPickerChange41: function(e) {
289   - this.pickerInfoList[4].nameIndex1 = e.target.value
  320 + this.pickerInfoList[4].nameIndex1 = e.target.value
290 321 },
291 322 bindPickerChange42: function(e) {
292   - this.pickerInfoList[4].nameIndex2 = e.target.value
  323 + this.pickerInfoList[4].nameIndex2 = e.target.value
293 324 },
294 325 bindPickerChange43: function(e) {
295   - this.pickerInfoList[4].nameIndex3 = e.target.value
  326 + this.pickerInfoList[4].nameIndex3 = e.target.value
296 327 },
297 328 }
298 329 }
... ... @@ -306,7 +337,9 @@
306 337 flex-direction: column;
307 338 align-items: center;
308 339 }
309   -
  340 + .choice-name {
  341 + border-bottom: 1px solid #CFCFCF;
  342 + }
310 343 .goods-info{
311 344 width: 100%;
312 345 height: 272rpx;
... ... @@ -459,98 +492,97 @@
459 492 align-items: center;
460 493 justify-content: center;
461 494 background-color: #fff;
462   - width: 100%;
463   -
  495 + width: 100%;
464 496 .p1 {
465   - font-size: 16px;
466   - color: #333333;
467   - letter-spacing: -0.3px;
468   - text-align: justify;
469   - line-height: 24px;
470   - margin: 4px 0;
  497 + font-size: 16px;
  498 + color: #333333;
  499 + letter-spacing: -0.3px;
  500 + text-align: justify;
  501 + line-height: 24px;
  502 + margin: 4px 0;
471 503  
472   - }
473   - .p2 {
474   - font-size: 12px;
475   - color: #999999;
476   - letter-spacing: -0.23px;
477   - margin-bottom: 18rpx;
478   - }
479   - image{
480   - width: 28rpx;
481   - height: 26rpx;
482   - }
483   - .confirm {
484   - display: flex;
485   - align-items: center;
486   - font-size: 12px;
487   - color: #666666;
488   - letter-spacing: -0.23px;
489   - width: 684rpx;
490   - image{
491   - margin-right:25rpx;
492   - }
493   - }
494   - .picker{
495   - display: flex;
496   - flex-direction: column;
497   - justify-content: center;
498   - align-items: center;
499   - width: 100%;
500   - image{
501   - width: 10px;
502   - height: 10px;
503   - margin-right: 5px;
504   - }
505   - .picker-choice{
  504 + }
  505 + .p2 {
  506 + font-size: 12px;
  507 + color: #999999;
  508 + letter-spacing: -0.23px;
  509 + margin-bottom: 18rpx;
  510 + }
  511 + image{
  512 + width: 28rpx;
  513 + height: 26rpx;
  514 + }
  515 + .confirm {
  516 + display: flex;
  517 + align-items: center;
  518 + font-size: 12px;
  519 + color: #666666;
  520 + letter-spacing: -0.23px;
  521 + width: 684rpx;
  522 + image{
  523 + margin-right:25rpx;
  524 + }
  525 + }
  526 + .picker{
506 527 display: flex;
507   - width: 684rpx;
  528 + flex-direction: column;
  529 + justify-content: center;
508 530 align-items: center;
509   - margin-bottom: 40rpx;
510   - .choice-left{
511   - width: 210rpx;
512   - .p11 {
513   - font-size: 14px;
514   - color: #333333;
515   - letter-spacing: -0.26px;
516   - text-align: justify;
517   - line-height: 24px;
518   - // margin-right: 10px;
  531 + width: 100%;
  532 + image{
  533 + width: 10px;
  534 + height: 10px;
  535 + margin-right: 5px;
  536 + }
  537 + .picker-choice{
  538 + display: flex;
  539 + width: 684rpx;
  540 + align-items: center;
  541 + margin-bottom: 40rpx;
  542 + .choice-left{
  543 + width: 210rpx;
  544 + .p11 {
  545 + font-size: 14px;
  546 + color: #333333;
  547 + letter-spacing: -0.26px;
  548 + text-align: justify;
  549 + line-height: 24px;
  550 + // margin-right: 10px;
  551 + }
  552 + .p12 {
  553 + font-size: 10px;
  554 + color: #3F3F3F;
  555 + letter-spacing: -0.19px;
  556 + text-align: justify;
  557 + line-height: 24px;
  558 + }
  559 +
  560 +
519 561 }
520   - .p12 {
  562 + .p13 {
521 563 font-size: 10px;
522   - color: #3F3F3F;
  564 + color: #999999;
523 565 letter-spacing: -0.19px;
524   - text-align: justify;
525   - line-height: 24px;
  566 + margin-right: 10px;
526 567 }
527   -
528   -
529   - }
530   - .p13 {
531   - font-size: 10px;
532   - color: #999999;
533   - letter-spacing: -0.19px;
534   - margin-right: 10px;
535   - }
536   - .p13-date {
537   - font-size: 10px;
538   - color: #999999;
539   - letter-spacing: -0.19px;
540   - margin-right: 5px;
541   - }
542   - .p14 {
543   - font-size: 14px;
544   - color: #666666;
545   - letter-spacing: -0.26px;
546   - text-align: center;
547   - width: 124rpx;
548   - border-bottom: 1px solid #CFCFCF;
  568 + .p13-date {
  569 + font-size: 10px;
  570 + color: #999999;
  571 + letter-spacing: -0.19px;
  572 + margin-right: 5px;
  573 + }
  574 + .p14 {
  575 + font-size: 14px;
  576 + color: #666666;
  577 + letter-spacing: -0.26px;
  578 + text-align: center;
  579 + width: 124rpx;
  580 + border-bottom: 1px solid #CFCFCF;
  581 + }
  582 +
549 583 }
550   -
551 584 }
552 585 }
553   - }
554 586  
555 587 .submit{
556 588 width: 100%;
... ...
src/pages/index/index.vue
... ... @@ -149,7 +149,6 @@ export default {
149 149 }
150 150 },
151 151 onLoad() {
152   - console.log('onload')
153 152 store.dispatch('index/category');
154 153 // this.getList();
155 154 store.dispatch('index/list');
... ... @@ -181,7 +180,6 @@ export default {
181 180 searchKey(e) {
182 181 const { value: keyword } = e.detail;
183 182 this.keyWords = keyword;
184   - console.log('e', e, keyword);
185 183 store.dispatch('index/search', {
186 184 params: {},
187 185 keyword,
... ... @@ -189,16 +187,15 @@ export default {
189 187 },
190 188 //接收菜单结果
191 189 search(e) {
192   - console.log("修改菜单-----", e, this.categoryList);
193 190 const { on, value, index } = e;
194 191 let params = {}
195 192 if(on[0] === 1) {
  193 + // 若点击全部
196 194 this.searchText = '';
197 195 store.dispatch('index/list');
198 196 } else {
199 197 for(let i = 1; i<=on.length; i++){ // on[0]是全部
200 198 if(on[i] === 1) { // 若该选项被选中
201   - console.log('---', `${this.categoryList[i].value}`);
202 199 params[`${this.categoryList[i].value}`] = value[i][0];
203 200 }
204 201 }
... ...
src/pages/myOrderPaying/myOrderPaying.vue
1 1 <template>
2 2  
3   - <view class="content">
4   - <view class="order-hr"></view>
5   - <view class="order-time">
6   - <text>请在</text>
7   - <!-- <text class="p2"></text> -->
8   - <uni-countdown color="#EC5D3B" splitor-color="#EC5D3B" :show-day="false"
9   - :hour="0" :minute="59" :second="58" style="margin: 36rpx 20rpx 0 20rpx"></uni-countdown>
10   - <text>内完成付款</text>
11   - </view>
12   - <view class="order">
13   - <view class="order-user">
14   - <view class="order-user-head">
15   - <text class="p1">钱大大</text>
16   - <text class="p2">18823749843</text>
17   - </view>
18   - <view class="order-user-body">
19   - <image src="../../static/myorder-paying-location.png"></image>
20   - <text class="p3">四川省 德阳市 旌阳区\n黄河西路碧桂园3期 4单元 202</text>
21   - </view>
22   - </view>
23   - <view class="order-info">
24   - <view class="order-info-head">
25   - <image src="../../static/myorder-paying-pic.png"></image>
26   - <view class="order-info-head-r">
27   - <text class="p1">眼镜名称眼镜名称眼镜名称眼镜名称…</text>
28   - <view class="p2" style="margin: 0;">
29   - 规格:玫瑰金 / 钛合金 / 防日光防紫外线 / 超薄超轻
30   - <!-- <view class="arrow"></view> -->
31   - </view>
32   - <text class="p3"><span>¥180</span><span class="p4">X1</span></text>
33   - </view>
34   - </view>
35   -<!-- <view class="order-info-goodsnum">
  3 + <view class="content">
  4 + <view class="order-hr"></view>
  5 + <view class="order-time">
  6 + <text>请在</text>
  7 + <!-- <text class="p2"></text> -->
  8 + <uni-countdown
  9 + color="#EC5D3B"
  10 + splitor-color="#EC5D3B"
  11 + :show-day="false"
  12 + :hour="0"
  13 + :minute="59"
  14 + :second="58"
  15 + style="margin: 36rpx 20rpx 0 20rpx"
  16 + ></uni-countdown>
  17 + <text>内完成付款</text>
  18 + </view>
  19 + <view class="order">
  20 + <view class="order-user">
  21 + <view class="order-user-head">
  22 + <text class="p1">钱大大</text>
  23 + <text class="p2">18823749843</text>
  24 + </view>
  25 + <view class="order-user-body">
  26 + <image src="../../static/myorder-paying-location.png"></image>
  27 + <text class="p3">四川省 德阳市 旌阳区\n黄河西路碧桂园3期 4单元 202</text>
  28 + </view>
  29 + </view>
  30 + <view class="order-info">
  31 + <view class="order-info-head">
  32 + <image src="../../static/myorder-paying-pic.png"></image>
  33 + <view class="order-info-head-r">
  34 + <text class="p1">眼镜名称眼镜名称眼镜名称眼镜名称…</text>
  35 + <view
  36 + class="p2"
  37 + style="margin: 0;"
  38 + >
  39 + 规格:玫瑰金 / 钛合金 / 防日光防紫外线 / 超薄超轻
  40 + <!-- <view class="arrow"></view> -->
  41 + </view>
  42 + <text class="p3"><span>¥180</span><span class="p4">X1</span></text>
  43 + </view>
  44 + </view>
  45 + <!-- <view class="order-info-goodsnum">
36 46 <text>X1</text>
37 47 </view> -->
38   - <text class="order-info-freight">
39   - <text class="p1">运费</text>
40   - <text class="p2">0.00</text>
41   - </text>
42   - <text class="order-info-discount">
43   - <text class="p1">优惠</text>
44   - <text class="p2">-¥70.00</text>
45   - </text>
46   - <text class="order-info-price">
47   - <text class="p1">实付</text>
48   - <text class="p2">¥110</text>
49   - </text>
50   - <text class="order-info-num">
51   - <text>订单号:203486795859605849</text>
52   - </text>
53   - <text class="order-info-time">
54   - <text>下单时间:2020-10-22 14:32:42</text>
55   - </text>
56   - <view class="order-info-hr"></view>
57   - <view class="order-info-contact">
58   - <image src="../../static/myorder-paying-contact.png"></image>
59   - <text>联系客服</text>
60   - </view>
61   - </view>
62   - </view>
63   - <view class="order-confim">
64   - <button class="b1">取消订单</button>
65   - <button class="b2">立即支付</button>
66   - </view>
67   - </view>
  48 + <text class="order-info-freight">
  49 + <text class="p1">运费</text>
  50 + <text class="p2">0.00</text>
  51 + </text>
  52 + <text class="order-info-discount">
  53 + <text class="p1">优惠</text>
  54 + <text class="p2">-¥70.00</text>
  55 + </text>
  56 + <text class="order-info-price">
  57 + <text class="p1">实付</text>
  58 + <text class="p2">¥110</text>
  59 + </text>
  60 + <text class="order-info-num">
  61 + <text>订单号:203486795859605849</text>
  62 + </text>
  63 + <text class="order-info-time">
  64 + <text>下单时间:2020-10-22 14:32:42</text>
  65 + </text>
  66 + <view class="order-info-hr"></view>
  67 + <view class="order-info-contact">
  68 + <image src="../../static/myorder-paying-contact.png"></image>
  69 + <text>联系客服</text>
  70 + </view>
  71 + </view>
  72 + </view>
  73 + <view class="order-confim">
  74 + <button class="b1">取消订单</button>
  75 + <button class="b2">立即支付</button>
  76 + </view>
  77 + </view>
68 78 </template>
69 79  
70 80 <script>
71   - import UniCountdown from '../../components/UniCountdown/UniCountdown.vue'
72   - export default {
73   - components: {
74   - UniCountdown
75   - },
76   - data() {
77   - return {
78   - scrollHeight: false,
79   - }
80   - },
81   - methods: {
82   -
83   - }
84   - }
  81 +import UniCountdown from '../../components/UniCountdown/UniCountdown.vue'
  82 +export default {
  83 + components: {
  84 + UniCountdown
  85 + },
  86 + data () {
  87 + return {
  88 + scrollHeight: false
  89 + }
  90 + },
  91 + methods: {
  92 +
  93 + }
  94 +}
85 95 </script>
86 96  
87 97 <style lang="scss" scoped>
88   - .content{
89   - display: flex;
90   - flex-direction: column;
91   - justify-content: center;
92   - align-items: center;
93   - background-color: #f2f2f2;
94   - }
95   -
96   -
97   - .order {
98   - min-height: 1196rpx;
99   - margin-bottom: 112rpx;
100   - background: #F2F2F2;
101   - }
102   - .order-hr {
103   - width: 100%;
104   - height: 1px;
105   - background-color: #E9E9E9;
106   - }
107   - .order-time {
108   - width: 100%;
109   - height: 140rpx;
110   - background-color: #fff;
111   - display: flex;
112   - justify-content: center;
113   - text {
114   - // font-family: PingFangSC-Regular;
115   - margin-top: 48rpx;
116   - font-size: 14px;
117   - color: #333333;
118   - letter-spacing: -0.26px;
119   - }
120   - .p2 {
121   - // font-family: DINAlternate-Bold;
122   - margin: 42rpx 20rpx 0 20rpx;
123   - font-size: 18px;
124   - color: #EC5D3B;
125   - letter-spacing: -0.34px;
126   - }
127   - }
128   -
129   - .order-user {
130   - width: 670rpx;
131   - height: 228rpx;
132   - background: #FFFFFF;
133   - border-radius: 14rpx;
134   - margin: 0 auto;
135   - margin-top: 20rpx;
136   - margin-bottom: 20rpx;
137   - .order-user-head {
138   - display: flex;
139   - height: 108rpx;
140   - width: 100%;
141   - align-items: center;
142   - margin-left: 126rpx;
143   - .p1 {
144   - // font-family: PingFangSC-Regular;
145   - font-size: 14px;
146   - color: #333333;
147   - letter-spacing: -0.26px;
148   - margin-right: 20rpx;
149   - }
150   - .p2 {
151   - // font-family: PingFangSC-Regular;
152   - font-size: 14px;
153   - color: #999999;
154   - letter-spacing: -0.26px;
155   - }
156   - }
157   - .order-user-body {
158   - display: flex;
159   - width: 100%;
160   - image{
161   - width: 24px;
162   - height: 26px;
163   - margin: 12rpx 32rpx 0 40rpx;
164   - }
165   - .p3 {
166   - // font-family: PingFangSC-Semibold;
167   - font-size: 14px;
168   - color: #333333;
169   - letter-spacing: -0.26px;
170   - }
171   - }
172   - }
173   -
174   - .order-info {
175   - width: 670rpx;
176   - background-color: #fff;
177   - box-shadow: 0 0 20rpx 0 rgba(177,128,128,0.06);
178   - border-radius: 16rpx;
179   - margin: 0 auto;
180   - view{
181   - margin-left: 40rpx;
182   - }
183   - text{
184   - font-size: 14px;
185   - }
186   - .order-info-head {
187   - display: flex;
188   - padding-top: 40rpx;
189   - image{
190   - height: 188rpx;
191   - width: 188rpx;
192   - }
193   - .order-info-head-r{
194   - margin: 0;
195   - width: 368rpx;
196   - margin-left: 24rpx;
197   - // margin-top: 40rpx;
198   - text{
199   - display: block;
200   - }
201   - // .arrow{
202   - // width: 0;
203   - // height: 0;
204   - // border-left: 5px transparent;
205   - // border-right: 5px transparent;
206   - // border-top: 5px #979797;
207   - // border-bottom: 0 transparent;
208   - // border-style: solid;
209   - // position: relative;
210   - // // transform: scaleY(-1);
211   - // }
212   - // .arrow::after{
213   - // content: '';
214   - // position: absolute;
215   - // top: -6.5px;
216   - // left: -5px;
217   - // border-left: 5px transparent;
218   - // border-right: 5px transparent;
219   - // border-top: 5px #FFFFFF;
220   - // border-bottom: 0 transparent;
221   - // border-style: solid;
222   - // }
223   - .p1 {
224   - min-height: 40px;
225   - // font-family: PingFangSC-Regular;
226   - font-size: 14px;
227   - color: #333333;
228   - letter-spacing: -0.26px;
229   - line-height: 18px;
230   - // line-height: 20px;
231   - }
232   - .p2 {
233   - height: 34px;
234   - padding: 1px 0 3px 0;
235   - // font-family: PingFangSC-Regular;
236   - font-size: 12px;
237   - color: #999999;
238   - letter-spacing: -0.23px;
239   - }
240   - .p3 {
241   - height: 20px;
242   - // font-family: PingFangSC-Regular;
243   - font-size: 14px;
244   - color: #FF6B4A;
245   - letter-spacing: -0.26px;
246   - }
247   - .p4{
248   - font-size: 12px;
249   - color: #999999;
250   - letter-spacing: -0.23px;
251   - margin-left: 10px;
252   - }
253   - }
  98 +.content {
  99 + display: flex;
  100 + flex-direction: column;
  101 + justify-content: center;
  102 + align-items: center;
  103 + background-color: #f2f2f2;
  104 +}
  105 +
  106 +.order {
  107 + min-height: 1196rpx;
  108 + margin-bottom: 112rpx;
  109 + background: #f2f2f2;
  110 +}
  111 +.order-hr {
  112 + width: 100%;
  113 + height: 1px;
  114 + background-color: #e9e9e9;
  115 +}
  116 +.order-time {
  117 + width: 100%;
  118 + height: 140rpx;
  119 + background-color: #fff;
  120 + display: flex;
  121 + justify-content: center;
  122 + text {
  123 + // font-family: PingFangSC-Regular;
  124 + margin-top: 48rpx;
  125 + font-size: 14px;
  126 + color: #333333;
  127 + letter-spacing: -0.26px;
  128 + }
  129 + .p2 {
  130 + // font-family: DINAlternate-Bold;
  131 + margin: 42rpx 20rpx 0 20rpx;
  132 + font-size: 18px;
  133 + color: #ec5d3b;
  134 + letter-spacing: -0.34px;
  135 + }
  136 +}
  137 +
  138 +.order-user {
  139 + width: 670rpx;
  140 + height: 228rpx;
  141 + background: #ffffff;
  142 + border-radius: 14rpx;
  143 + margin: 0 auto;
  144 + margin-top: 20rpx;
  145 + margin-bottom: 20rpx;
  146 + .order-user-head {
  147 + display: flex;
  148 + height: 108rpx;
  149 + width: 100%;
  150 + align-items: center;
  151 + margin-left: 126rpx;
  152 + .p1 {
  153 + // font-family: PingFangSC-Regular;
  154 + font-size: 14px;
  155 + color: #333333;
  156 + letter-spacing: -0.26px;
  157 + margin-right: 20rpx;
  158 + }
  159 + .p2 {
  160 + // font-family: PingFangSC-Regular;
  161 + font-size: 14px;
  162 + color: #999999;
  163 + letter-spacing: -0.26px;
  164 + }
  165 + }
  166 + .order-user-body {
  167 + display: flex;
  168 + width: 100%;
  169 + image {
  170 + width: 24px;
  171 + height: 26px;
  172 + margin: 12rpx 32rpx 0 40rpx;
  173 + }
  174 + .p3 {
  175 + // font-family: PingFangSC-Semibold;
  176 + font-size: 14px;
  177 + color: #333333;
  178 + letter-spacing: -0.26px;
  179 + }
  180 + }
  181 +}
  182 +
  183 +.order-info {
  184 + width: 670rpx;
  185 + background-color: #fff;
  186 + box-shadow: 0 0 20rpx 0 rgba(177, 128, 128, 0.06);
  187 + border-radius: 16rpx;
  188 + margin: 0 auto;
  189 + view {
  190 + margin-left: 40rpx;
  191 + }
  192 + text {
  193 + font-size: 14px;
  194 + }
  195 + .order-info-head {
  196 + display: flex;
  197 + padding-top: 40rpx;
  198 + image {
  199 + height: 188rpx;
  200 + width: 188rpx;
  201 + }
  202 + .order-info-head-r {
  203 + margin: 0;
  204 + width: 368rpx;
  205 + margin-left: 24rpx;
  206 + // margin-top: 40rpx;
  207 + text {
  208 + display: block;
  209 + }
  210 + // .arrow{
  211 + // width: 0;
  212 + // height: 0;
  213 + // border-left: 5px transparent;
  214 + // border-right: 5px transparent;
  215 + // border-top: 5px #979797;
  216 + // border-bottom: 0 transparent;
  217 + // border-style: solid;
  218 + // position: relative;
  219 + // // transform: scaleY(-1);
  220 + // }
  221 + // .arrow::after{
  222 + // content: '';
  223 + // position: absolute;
  224 + // top: -6.5px;
  225 + // left: -5px;
  226 + // border-left: 5px transparent;
  227 + // border-right: 5px transparent;
  228 + // border-top: 5px #FFFFFF;
  229 + // border-bottom: 0 transparent;
  230 + // border-style: solid;
  231 + // }
  232 + .p1 {
  233 + min-height: 40px;
  234 + // font-family: PingFangSC-Regular;
  235 + font-size: 14px;
  236 + color: #333333;
  237 + letter-spacing: -0.26px;
  238 + line-height: 18px;
  239 + // line-height: 20px;
  240 + }
  241 + .p2 {
  242 + height: 34px;
  243 + padding: 1px 0 3px 0;
  244 + // font-family: PingFangSC-Regular;
  245 + font-size: 12px;
  246 + color: #999999;
  247 + letter-spacing: -0.23px;
  248 + }
  249 + .p3 {
  250 + height: 20px;
  251 + // font-family: PingFangSC-Regular;
  252 + font-size: 14px;
  253 + color: #ff6b4a;
  254 + letter-spacing: -0.26px;
  255 + }
  256 + .p4 {
  257 + font-size: 12px;
  258 + color: #999999;
  259 + letter-spacing: -0.23px;
  260 + margin-left: 10px;
  261 + }
  262 + }
  263 + }
  264 + // .order-info-goodsnum {
  265 + // display: flex;
  266 + // align-items: center;
  267 + // justify-content: flex-end;
  268 + // text {
  269 + // margin-right: 44rpx;
  270 + // // ont-family: PingFangSC-Regular;
  271 + // font-size: 12px;
  272 + // color: #999999;
  273 + // letter-spacing: -0.23px;
  274 + // }
  275 + // }
  276 + .order-info-freight {
  277 + display: block;
  278 + margin-left: 40rpx;
  279 + margin-top: 22rpx;
  280 + .p1 {
  281 + // font-family: PingFangSC-Regular;
  282 + font-size: 14px;
  283 + color: #333333;
  284 + letter-spacing: -0.26px;
  285 + line-height: 18px;
  286 + margin-right: 24px;
  287 + }
  288 + .p2 {
  289 + // font-family: PingFangSC-Regular;
  290 + font-size: 14px;
  291 + color: #ff6b4a;
  292 + letter-spacing: -0.26px;
  293 + }
  294 + }
  295 + .order-info-discount {
  296 + display: block;
  297 + margin-left: 40rpx;
  298 + margin-top: 24rpx;
  299 + .p1 {
  300 + // font-family: PingFangSC-Regular;
  301 + font-size: 14px;
  302 + color: #333333;
  303 + letter-spacing: -0.26px;
  304 + line-height: 18px;
  305 + margin-right: 24px;
  306 + }
  307 + .p2 {
  308 + // font-family: PingFangSC-Regular;
  309 + font-size: 14px;
  310 + color: #ff6b4a;
  311 + letter-spacing: -0.26px;
  312 + }
  313 + }
  314 + .order-info-price {
  315 + display: block;
  316 + margin-left: 40rpx;
  317 + margin-top: 24rpx;
  318 + .p1 {
  319 + // font-family: PingFangSC-Semibold;
  320 + font-size: 14px;
  321 + color: #333333;
  322 + letter-spacing: -0.26px;
  323 + line-height: 18px;
  324 + margin-right: 24px;
  325 + }
  326 + .p2 {
  327 + // font-family: PingFangSC-Semibold;
  328 + font-size: 14px;
  329 + color: #ff6b4a;
  330 + letter-spacing: -0.26px;
  331 + }
  332 + }
  333 + .order-info-num {
  334 + display: block;
  335 + margin-left: 40rpx;
  336 + margin-top: 44rpx;
  337 + text {
  338 + // font-family: PingFangSC-Regular;
  339 + font-size: 12px;
  340 + color: #999999;
  341 + letter-spacing: -0.23px;
  342 + }
  343 + }
  344 + .order-info-time {
  345 + display: block;
  346 + margin: 8rpx 0 48rpx 40rpx;
  347 + text {
  348 + // font-family: PingFangSC-Regular;
  349 + font-size: 12px;
  350 + color: #999999;
  351 + letter-spacing: -0.23px;
  352 + }
  353 + }
  354 + .order-info-hr {
  355 + width: 520rpx;
  356 + height: 1px;
  357 + background-color: #e9e9e9;
  358 + margin-bottom: 20rpx;
  359 + }
  360 + .order-info-contact {
  361 + display: flex;
  362 + padding-bottom: 28rpx;
  363 + image {
  364 + width: 19px;
  365 + height: 16px;
  366 + }
  367 + text {
  368 + // font-family: PingFangSC-Regular;
  369 + margin-left: 20rpx;
  370 + font-size: 14px;
  371 + color: #333333;
  372 + letter-spacing: -0.26px;
  373 + line-height: 18px;
  374 + }
  375 + }
  376 +}
254 377  
255   - }
256   - // .order-info-goodsnum {
257   - // display: flex;
258   - // align-items: center;
259   - // justify-content: flex-end;
260   - // text {
261   - // margin-right: 44rpx;
262   - // // ont-family: PingFangSC-Regular;
263   - // font-size: 12px;
264   - // color: #999999;
265   - // letter-spacing: -0.23px;
266   - // }
267   - // }
268   - .order-info-freight {
269   - display: block;
270   - margin-left: 40rpx;
271   - margin-top: 22rpx;
272   - .p1{
273   - // font-family: PingFangSC-Regular;
274   - font-size: 14px;
275   - color: #333333;
276   - letter-spacing: -0.26px;
277   - line-height: 18px;
278   - margin-right: 24px;
279   - }
280   - .p2 {
281   - // font-family: PingFangSC-Regular;
282   - font-size: 14px;
283   - color: #FF6B4A;
284   - letter-spacing: -0.26px;
285   - }
286   - }
287   - .order-info-discount {
288   - display: block;
289   - margin-left: 40rpx;
290   - margin-top: 24rpx;
291   - .p1 {
292   - // font-family: PingFangSC-Regular;
293   - font-size: 14px;
294   - color: #333333;
295   - letter-spacing: -0.26px;
296   - line-height: 18px;
297   - margin-right: 24px;
298   - }
299   - .p2 {
300   - // font-family: PingFangSC-Regular;
301   - font-size: 14px;
302   - color: #FF6B4A;
303   - letter-spacing: -0.26px;
304   - }
305   - }
306   - .order-info-price {
307   - display: block;
308   - margin-left: 40rpx;
309   - margin-top: 24rpx;
310   - .p1 {
311   - // font-family: PingFangSC-Semibold;
312   - font-size: 14px;
313   - color: #333333;
314   - letter-spacing: -0.26px;
315   - line-height: 18px;
316   - margin-right: 24px;
317   - }
318   - .p2 {
319   - // font-family: PingFangSC-Semibold;
320   - font-size: 14px;
321   - color: #FF6B4A;
322   - letter-spacing: -0.26px;
323   - }
324   - }
325   - .order-info-num{
326   - display: block;
327   - margin-left: 40rpx;
328   - margin-top: 44rpx;
329   - text{
330   - // font-family: PingFangSC-Regular;
331   - font-size: 12px;
332   - color: #999999;
333   - letter-spacing: -0.23px;
334   - }
335   - }
336   - .order-info-time {
337   - display: block;
338   - margin: 8rpx 0 48rpx 40rpx;
339   - text{
340   - // font-family: PingFangSC-Regular;
341   - font-size: 12px;
342   - color: #999999;
343   - letter-spacing: -0.23px;
344   - }
345   - }
346   - .order-info-hr{
347   - width: 520rpx;
348   - height: 1px;
349   - background-color: #E9E9E9;
350   - margin-bottom: 20rpx;
351   - }
352   - .order-info-contact {
353   - display: flex;
354   - padding-bottom: 28rpx;
355   - image{
356   - width: 19px;
357   - height: 16px;
358   - }
359   - text {
360   - // font-family: PingFangSC-Regular;
361   - margin-left: 20rpx;
362   - font-size: 14px;
363   - color: #333333;
364   - letter-spacing: -0.26px;
365   - line-height: 18px;
366   - }
367   - }
368   - }
369   -
370   - .order-confim {
371   - display: flex;
372   - align-items: center;
373   - z-index: 999;
374   - width: 100%;
375   - height: 112rpx;
376   - position: fixed;
377   - bottom: 0;
378   - background: #FFFFFF;
379   - button {
380   - width: 204rpx;
381   - height: 80rpx;
382   - border: 1px solid #FF6B4A;
383   - border-radius: 40rpx;
384   - font-size: 32rpx;
385   - letter-spacing: -0.3px;
386   - margin-right: 0;
387   - }
388   - .b1 {
389   - // font-family: PingFangSC-Regular;
390   - color: #FF6B4A;
391   -
392   - }
393   - .b2 {
394   - // font-family: PingFangSC-Regular;
395   - background-color: #FF6B4A;
396   - color: #FFFFFF;
397   - margin: 0 26rpx 0 20rpx;
398   - }
399   - }
400   -
  378 +.order-confim {
  379 + display: flex;
  380 + align-items: center;
  381 + z-index: 999;
  382 + width: 100%;
  383 + height: 112rpx;
  384 + position: fixed;
  385 + bottom: 0;
  386 + background: #ffffff;
  387 + button {
  388 + width: 204rpx;
  389 + height: 80rpx;
  390 + border: 1px solid #ff6b4a;
  391 + border-radius: 40rpx;
  392 + font-size: 32rpx;
  393 + letter-spacing: -0.3px;
  394 + margin-right: 0;
  395 + }
  396 + .b1 {
  397 + // font-family: PingFangSC-Regular;
  398 + color: #ff6b4a;
  399 + }
  400 + .b2 {
  401 + // font-family: PingFangSC-Regular;
  402 + background-color: #ff6b4a;
  403 + color: #ffffff;
  404 + margin: 0 26rpx 0 20rpx;
  405 + }
  406 +}
401 407 </style>
... ...
src/pages/purchaseLenses/purchaseLenses.vue
... ... @@ -18,61 +18,200 @@
18 18 </view>
19 19 </view>
20 20 </view>
  21 + <view class="goods-data">
  22 + <view class="opCollapse">
  23 + <view class="body">
  24 + <template v-if="opIsOpen">
  25 + <view class="goods-form">
  26 + <view class="data-title">
  27 + <image src="../../static/icon-data.png" ></image>
  28 + <text class="p1">填写验光数据</text>
  29 + </view>
  30 + <text class="p2">没有验光数据?请到线下眼镜店验光哦~</text>
  31 + <view class="picker" >
  32 + <view class="picker-choice">
  33 + <view class="choice-left">
  34 + <text class="p11">验光单取名:</text>
  35 + </view>
  36 + <input class="choice-name uni-input" placeholder="下系" />
  37 + </view>
  38 + </view>
  39 + <view class="picker" >
  40 + <view class="picker-choice">
  41 + <view class="choice-left">
  42 + <text class="p11">{{pickerInfoList[0].nameC}}</text>
  43 + <text class="p12">{{pickerInfoList[0].nameE}}</text>
  44 + </view>
  45 + <text class="p13">左&nbsp;&nbsp;&nbsp;(OD)</text>
  46 + <text class="p14">{{pickerInfoList[0].nameArray1[pickerInfoList[0].nameIndex1]}}</text>
  47 + <picker @change="bindPickerChange01" :value="pickerInfoList[0].nameIndex1" :range="pickerInfoList[0].nameArray1">
  48 + <image src="../../static/detail-tabicon.png" ></image>
  49 + </picker>
  50 + <text class="p13">右&nbsp;&nbsp;&nbsp;(OS)</text>
  51 + <text class="p14">{{pickerInfoList[0].nameArray2[pickerInfoList[0].nameIndex2]}}</text>
  52 + <picker @change="bindPickerChange02" :value="pickerInfoList[0].nameIndex2" :range="pickerInfoList[0].nameArray2">
  53 + <image src="../../static/detail-tabicon.png" ></image>
  54 + </picker>
  55 + </view>
  56 + </view>
  57 + <view class="picker" >
  58 + <view class="picker-choice">
  59 + <view class="choice-left">
  60 + <text class="p11">{{pickerInfoList[1].nameC}}</text>
  61 + <text class="p12">{{pickerInfoList[1].nameE}}</text>
  62 + </view>
  63 + <text class="p13">左&nbsp;&nbsp;&nbsp;(OD)</text>
  64 + <text class="p14">{{pickerInfoList[1].nameArray1[pickerInfoList[1].nameIndex1]}}</text>
  65 + <picker @change="bindPickerChange11" :value="pickerInfoList[1].nameIndex1" :range="pickerInfoList[1].nameArray1">
  66 + <image src="../../static/detail-tabicon.png" ></image>
  67 + </picker>
  68 + <text class="p13">右&nbsp;&nbsp;&nbsp;(OS)</text>
  69 + <text class="p14">{{pickerInfoList[1].nameArray2[pickerInfoList[1].nameIndex2]}}</text>
  70 + <picker @change="bindPickerChange12" :value="pickerInfoList[1].nameIndex2" :range="pickerInfoList[1].nameArray2">
  71 + <image src="../../static/detail-tabicon.png" ></image>
  72 + </picker>
  73 + </view>
  74 + </view>
  75 + <view class="picker" >
  76 + <view class="picker-choice">
  77 + <view class="choice-left">
  78 + <text class="p11">{{pickerInfoList[2].nameC}}</text>
  79 + <text class="p12">{{pickerInfoList[2].nameE}}</text>
  80 + </view>
  81 + <text class="p13">左&nbsp;&nbsp;&nbsp;(OD)</text>
  82 + <text class="p14">{{pickerInfoList[2].nameArray1[pickerInfoList[2].nameIndex1]}}</text>
  83 + <picker @change="bindPickerChange21" :value="pickerInfoList[2].nameIndex1" :range="pickerInfoList[2].nameArray1">
  84 + <image src="../../static/detail-tabicon.png" ></image>
  85 + </picker>
  86 + <text class="p13">右&nbsp;&nbsp;&nbsp;(OS)</text>
  87 + <text class="p14">{{pickerInfoList[2].nameArray2[pickerInfoList[2].nameIndex2]}}</text>
  88 + <picker @change="bindPickerChange22" :value="pickerInfoList[2].nameIndex2" :range="pickerInfoList[2].nameArray2">
  89 + <image src="../../static/detail-tabicon.png" ></image>
  90 + </picker>
  91 + </view>
  92 + </view>
  93 + <view class="picker" >
  94 + <view class="picker-choice">
  95 + <view class="choice-left">
  96 + <text class="p11">{{pickerInfoList[3].nameC}}</text>
  97 + <text class="p12">{{pickerInfoList[3].nameE}}</text>
  98 + </view>
  99 + <text class="p13">左&nbsp;&nbsp;&nbsp;(OD)</text>
  100 + <text class="p14">{{pickerInfoList[3].nameArray1[pickerInfoList[3].nameIndex1]}}</text>
  101 + <picker @change="bindPickerChange31" :value="pickerInfoList[3].nameIndex1" :range="pickerInfoList[3].nameArray1">
  102 + <image src="../../static/detail-tabicon.png" ></image>
  103 + </picker>
  104 + <text class="p13">右&nbsp;&nbsp;&nbsp;(OS)</text>
  105 + <text class="p14">{{pickerInfoList[3].nameArray2[pickerInfoList[3].nameIndex2]}}</text>
  106 + <picker @change="bindPickerChange32" :value="pickerInfoList[3].nameIndex2" :range="pickerInfoList[3].nameArray2">
  107 + <image src="../../static/detail-tabicon.png" ></image>
  108 + </picker>
  109 + </view>
  110 + </view>
  111 + <view class="picker" >
  112 + <view class="picker-choice">
  113 + <view class="choice-left">
  114 + <text class="p11">{{pickerInfoList[4].nameC}}</text>
  115 + </view>
  116 + <text class="p13-date">年&nbsp;&nbsp;&nbsp;(Y)</text>
  117 + <text class="p14" style="width: 34px;">{{pickerInfoList[4].nameArray1[pickerInfoList[4].nameIndex1]}}</text>
  118 + <picker @change="bindPickerChange41" :value="pickerInfoList[4].nameIndex1" :range="pickerInfoList[4].nameArray1">
  119 + <image src="../../static/detail-tabicon.png" ></image>
  120 + </picker>
  121 + <text class="p13-date">月&nbsp;&nbsp;&nbsp;(M)</text>
  122 + <text class="p14" style="width: 30px;">{{pickerInfoList[4].nameArray2[pickerInfoList[4].nameIndex2]}}</text>
  123 + <picker @change="bindPickerChange42" :value="pickerInfoList[4].nameIndex2" :range="pickerInfoList[4].nameArray2">
  124 + <image src="../../static/detail-tabicon.png" ></image>
  125 + </picker>
  126 + <text class="p13-date">日&nbsp;&nbsp;&nbsp;(D)</text>
  127 + <text class="p14" style="width: 30px;">{{pickerInfoList[4].nameArray3[pickerInfoList[4].nameIndex3]}}</text>
  128 + <picker @change="bindPickerChange43" :value="pickerInfoList[4].nameIndex3" :range="pickerInfoList[4].nameArray3">
  129 + <image src="../../static/detail-tabicon.png" ></image>
  130 + </picker>
  131 + </view>
  132 + </view>
  133 + <view class="confirm">
  134 + <image :src="tablist.confirm ? tabicon[0] : tabicon[1]" @click="changeConfirm"></image>
  135 + <text>确认以上输入信息来源于我的验光数据!</text>
  136 + </view>
  137 + </view>
  138 +
  139 + </template>
  140 + <template v-else>
  141 + <view v-for="item in pickerInfoList" :key="item.key" class="bodyBox">
  142 + <template v-if="item.nameC==='验光日期'">
  143 + <text class="names">{{item.nameC}}</text>
  144 + <text style="margin-right: 5px;">{{item.nameArray1[item.nameIndex1]}}年</text>
  145 + <text style="margin-right: 5px;">{{item.nameArray2[item.nameIndex2]}}月</text>
  146 + <text>{{item.nameArray3[item.nameIndex2]}}日</text>
  147 + </template>
  148 + <template v-else>
  149 + <template v-if="item.nameC==='度数'">
  150 + <text style="display: inline;">*</text>
  151 + </template>
  152 +
  153 + <text class="names">{{item.nameC}}</text>
  154 + <text style="margin-right: 10px;">左&nbsp;{{item.nameArray1[item.nameIndex1]}}</text>
  155 + <text>右&nbsp;{{item.nameArray2[item.nameIndex2]}}</text>
  156 + </template>
  157 + </view>
  158 + </template>
  159 + </view>
  160 + </view>
  161 + </view>
21 162 <view class="choose">
22 163 <view class="chooseItem_1 chooseItem">
23 164 <UniCollapse @change="change(1)" >
24   - <UniCollapseItem open=true title="款式挑选" showAnimation=false>
25   - <view class="chooseRes" v-show="!showChooseRes1">* {{chooseRes1}}</view>
26   - <view class="chooseItem_1_content">
27   - <view class="itemsWrap">
28   - <view class="item1"
29   - v-for="(item,index) in chooseItem1"
30   - :key="index"
31   - :style="item.style"
32   - :class="{ active1: current1 === index }"
33   - @click="onClickItem1(index)"
34   - ></view>
35   - </view>
36   - </view>
37   - </UniCollapseItem>
  165 + <UniCollapseItem open=true title="款式挑选" showAnimation=false>
  166 + <view class="chooseRes" v-show="show[1]">* {{chooseRes1}}</view>
  167 + <view class="chooseItem_1_content">
  168 + <view class="itemsWrap">
  169 + <view class="item1"
  170 + v-for="(item,index) in chooseItem1"
  171 + :key="index"
  172 + :style="item.style"
  173 + :class="{ active1: current1 === index }"
  174 + @click="onClickItem1(index)"
  175 + ></view>
  176 + </view>
  177 + </view>
  178 + </UniCollapseItem>
38 179 </UniCollapse>
39   - <view class="chooseRes" v-show="showChooseRes1">* {{chooseRes1}}</view>
  180 + <view class="chooseRes" v-show="show[1]">* {{chooseRes1}}</view>
40 181 </view>
41 182 <view class="chooseItem_2 chooseItem ">
42 183 <UniCollapse @change="change(2)" >
43   - <UniCollapseItem open=true title="直径" showAnimation=false>
44   - <!-- <view class="chooseRes" v-show="!showChooseRes2">* {{chooseRes2}}</view> -->
45   - <view class="chooseItem_1_content">
46   - <view class="itemsWrap">
47   - <view class="item2"
48   - v-for="(item,index) in chooseItem2"
49   - :key="index"
50   - :class="{ active2: current2 === index }"
51   - @click="onClickItem2(index)"
52   - >{{item.num}}</view>
53   - </view>
54   - </view>
55   - </UniCollapseItem>
  184 + <UniCollapseItem open=true title="直径" showAnimation=false>
  185 + <view class="chooseItem_1_content">
  186 + <view class="itemsWrap">
  187 + <view class="item2"
  188 + v-for="(item,index) in chooseItem2"
  189 + :key="index"
  190 + :class="{ active2: current2 === index }"
  191 + @click="onClickItem2(index)"
  192 + >{{item.num}}</view>
  193 + </view>
  194 + </view>
  195 + </UniCollapseItem>
56 196 </UniCollapse>
57   - <view class="chooseRes" v-show="showChooseRes2">* {{chooseRes2}}</view>
  197 + <view class="chooseRes" v-show="show[2]">* {{chooseRes2}}</view>
58 198 </view>
59 199 <view class="chooseItem_3 chooseItem">
60 200 <UniCollapse @change="change(3)" >
61   - <UniCollapseItem open=true title="度数" showAnimation=false>
62   - <!-- <view class="chooseRes" v-show="!showChooseRes3">* {{chooseRes3}}</view> -->
63   - <view class="chooseItem_1_content">
64   - <view class="itemsWrap">
65   - <view class="item2"
66   - v-for="(item,index) in chooseItem3"
67   - :key="index"
68   - :class="{ active2: current3 === index }"
69   - @click="onClickItem3(index)"
70   - >{{item}}</view>
71   - </view>
72   - </view>
73   - </UniCollapseItem>
  201 + <UniCollapseItem open=true title="度数" showAnimation=false>
  202 + <view class="chooseItem_1_content">
  203 + <view class="itemsWrap">
  204 + <view class="item2"
  205 + v-for="(item,index) in chooseItem3"
  206 + :key="index"
  207 + :class="{ active2: current3 === index }"
  208 + @click="onClickItem3(index)"
  209 + >{{item}}</view>
  210 + </view>
  211 + </view>
  212 + </UniCollapseItem>
74 213 </UniCollapse>
75   - <view class="chooseRes" v-show="showChooseRes3">* {{chooseRes3}}</view>
  214 + <view class="chooseRes" v-show="show[3]">* {{chooseRes3}}</view>
76 215 </view>
77 216 </view>
78 217 <view class="button" @click="toComfirmOrder">
... ... @@ -84,105 +223,110 @@
84 223 <script>
85 224 import UniCollapse from '@/components/UniCollapse/UniCollapse.vue'
86 225 import UniCollapseItem from '@/components/UniCollapseItem/UniCollapseItem.vue'
  226 + import store from '@/store'
  227 +
87 228 export default {
88   - components: {UniCollapse,UniCollapseItem},
  229 + components: {
  230 + UniCollapse,
  231 + UniCollapseItem,
  232 + },
89 233 data() {
90 234 return {
91   - count:1,
92   - maxCount:20,
93   - addDisabled:false,
94   - desDisabled:false,
95   - current1:0,
96   - current2:0,
97   - current3:0,
98   - showChooseRes1:false,
99   - showChooseRes2:false,
100   - showChooseRes3:false,
101   - chooseRes1:'Miss 黑二代【减龄自然】',
102   - chooseRes2:'14.0',
103   - chooseRes3:0,
104   - chooseItem1:[
105   - {style:"opacity: 0.7;background-image: radial-gradient(50% 148%, #ECEAEA 50%, #8D8C8C 100%);",describ:"Miss 黑1代【减龄自然】"},
106   - {style:"background-image: radial-gradient(50% 143%, #AEA8A8 45%, #624B3F 100%);",describ:"Miss 黑二代【防紫外线】"},
107   - {style:"background-image: radial-gradient(50% 148%, #FDF8F6 50%, #94380B 100%);",describ:"Miss 黑3代【防紫外线】"},
108   - {style:"background-image: radial-gradient(50% 148%, #FFFFFF 50%, #324A05 100%);",describ:"Miss 黑4代【防紫外线】"},
109   - {style:"background-image: radial-gradient(50% 143%, #AEA8A8 45%, #624B3F 100%);",describ:"Miss 黑5代【防紫外线】"},
110   - {style:"opacity: 0.7;background-image: radial-gradient(50% 150%, #F0EEE7 50%, #6F0838 100%);",describ:"Miss 黑6代【防紫外线】"},
111   - {style:"background-image: radial-gradient(50% 143%, #AEA8A8 45%, #370B4E 100%);",describ:"Miss 黑7代【防紫外线】"},
112   - {style:"background-image: radial-gradient(50% 148%, #FFFFFF 50%, #324A05 100%);",describ:"Miss 黑4代【防紫外线】"},
113   - {style:"background-image: radial-gradient(50% 143%, #AEA8A8 45%, #624B3F 100%);",describ:"Miss 黑5代【防紫外线】"},
114   - {style:"opacity: 0.7;background-image: radial-gradient(50% 150%, #F0EEE7 50%, #6F0838 100%);",describ:"Miss 黑6代【防紫外线】"},
115   - {style:"background-image: radial-gradient(50% 143%, #AEA8A8 45%, #370B4E 100%);",describ:"Miss 黑7代【防紫外线】"},
116   - {style:"background-image: radial-gradient(50% 148%, #FFFFFF 50%, #324A05 100%);",describ:"Miss 黑4代【防紫外线】"},
117   - {style:"background-image: radial-gradient(50% 143%, #AEA8A8 45%, #624B3F 100%);",describ:"Miss 黑5代【防紫外线】"},
118   - {style:"opacity: 0.7;background-image: radial-gradient(50% 150%, #F0EEE7 50%, #6F0838 100%);",describ:"Miss 黑6代【防紫外线】"},
119   - {style:"background-image: radial-gradient(50% 143%, #AEA8A8 45%, #370B4E 100%);",describ:"Miss 黑7代【防紫外线】"},
  235 + count: 1,
  236 + maxCount: 20,
  237 + opIsOpen: true,
  238 + addDisabled: false,
  239 + desDisabled: false,
  240 + current1: 0,
  241 + current2: 0,
  242 + current3: 0,
  243 + actice: [-1, -1, -1],
  244 + show: [0, 0, 0, 0],
  245 + chooseRes1:{
  246 + sku_name: 'Miss 黑二代【减龄自然】',
  247 + sk_id: '128',
  248 + },
  249 + chooseRes2: '14.0',
  250 + chooseRes3: 0,
  251 + chooseItem1: [
  252 + {style:"opacity: 0.7;background-image: radial-gradient(50% 148%, #ECEAEA 50%, #8D8C8C 100%);",describ:"Miss 黑1代【减龄自然】"},
  253 + {style:"background-image: radial-gradient(50% 143%, #AEA8A8 45%, #624B3F 100%);",describ:"Miss 黑二代【防紫外线】"},
  254 + {style:"background-image: radial-gradient(50% 148%, #FDF8F6 50%, #94380B 100%);",describ:"Miss 黑3代【防紫外线】"},
  255 + {style:"background-image: radial-gradient(50% 148%, #FFFFFF 50%, #324A05 100%);",describ:"Miss 黑4代【防紫外线】"},
  256 + {style:"background-image: radial-gradient(50% 143%, #AEA8A8 45%, #624B3F 100%);",describ:"Miss 黑5代【防紫外线】"},
  257 + {style:"opacity: 0.7;background-image: radial-gradient(50% 150%, #F0EEE7 50%, #6F0838 100%);",describ:"Miss 黑6代【防紫外线】"},
  258 + {style:"background-image: radial-gradient(50% 143%, #AEA8A8 45%, #370B4E 100%);",describ:"Miss 黑7代【防紫外线】"},
  259 + {style:"background-image: radial-gradient(50% 148%, #FFFFFF 50%, #324A05 100%);",describ:"Miss 黑4代【防紫外线】"},
  260 + {style:"background-image: radial-gradient(50% 143%, #AEA8A8 45%, #624B3F 100%);",describ:"Miss 黑5代【防紫外线】"},
  261 + {style:"opacity: 0.7;background-image: radial-gradient(50% 150%, #F0EEE7 50%, #6F0838 100%);",describ:"Miss 黑6代【防紫外线】"},
  262 + {style:"background-image: radial-gradient(50% 143%, #AEA8A8 45%, #370B4E 100%);",describ:"Miss 黑7代【防紫外线】"},
  263 + {style:"background-image: radial-gradient(50% 148%, #FFFFFF 50%, #324A05 100%);",describ:"Miss 黑4代【防紫外线】"},
  264 + {style:"background-image: radial-gradient(50% 143%, #AEA8A8 45%, #624B3F 100%);",describ:"Miss 黑5代【防紫外线】"},
  265 + {style:"opacity: 0.7;background-image: radial-gradient(50% 150%, #F0EEE7 50%, #6F0838 100%);",describ:"Miss 黑6代【防紫外线】"},
  266 + {style:"background-image: radial-gradient(50% 143%, #AEA8A8 45%, #370B4E 100%);",describ:"Miss 黑7代【防紫外线】"},
120 267 ],
121 268 chooseItem2:[
122   - {num:"14.0"},
123   - {num:"14.2"},
124   - {num:"14.4"},
125   - {num:"14.5"},
  269 + {num:"14.0"},
  270 + {num:"14.2"},
  271 + {num:"14.4"},
  272 + {num:"14.5"},
  273 + ],
  274 + chooseItem3:[0,100,125,150,175,200,225,250,275,300,325,350,375,400,425,450,470,500,525,550,575,600,1000],
  275 + // 度数相关数据
  276 + pickerInfoList:[
  277 + {nameC:"度数",nameE:"(SPH)",nameArray1:[1.5,2.5,3.5,4.5],nameIndex1:0,nameArray2:[1.5,2.5,3.5,4.5],nameIndex2:0,key:0},
  278 + {nameC:"散光",nameE:"(CYL)",nameArray1:[1.5,2.5,3.5,4.5],nameIndex1:0,nameArray2:[1.5,2.5,3.5,4.5],nameIndex2:0,key:1},
  279 + {nameC:"散光轴位",nameE:"(AXI)",nameArray1:[1.5,2.5,3.5,4.5],nameIndex1:0,nameArray2:[1.5,2.5,3.5,4.5],nameIndex2:0,key:2},
  280 + {nameC:"双眼瞳距",nameE:"(PD)",nameArray1:[1.5,2.5,3.5,4.5],nameIndex1:0,nameArray2:[1.5,2.5,3.5,4.5],nameIndex2:0,key:3},
  281 + {nameC:"验光日期",nameE:'',nameArray1:[2017,2018,2019,2020,2021],nameIndex1:0,nameArray2:[1,2,3,4,5,6,7],nameIndex2:0,nameArray3:[1,2,3,4,5,6],nameIndex3:0}
126 282 ],
127   - chooseItem3:[0,100,125,150,175,200,225,250,275,300,325,350,375,400,425,450,470,500,525,550,575,600,1000]
128 283 };
129 284 },
  285 + computed: {
  286 + attrList() {
  287 + return this.$store.state.read.goodInfo.attrList;
  288 + },
  289 + skuList() {
  290 + return this.$store.state.read.goodInfo.skuList;
  291 + },
  292 + },
  293 + onLoad() {
  294 + store.dispatch('read/fetch', {
  295 + pid: 9,
  296 + });
  297 + },
130 298 methods:{
131   - change(num){
132   - switch (num){
133   - case 1:
134   - if(this.showChooseRes1===true){
135   - this.showChooseRes1 = false
136   - }else{
137   - this.showChooseRes1 = true
138   - }
139   - break;
140   - case 2:
141   - if(this.showChooseRes2===true){
142   - this.showChooseRes2 = false
143   - }else{
144   - this.showChooseRes2 = true
145   - }
146   - break;
147   - case 3:
148   - if(this.showChooseRes3===true){
149   - this.showChooseRes3 = false
150   - }else{
151   - this.showChooseRes3 = true
152   - }
153   - break;
154   - default:
155   - break;
156   - }
  299 + change(num) {
  300 + this.show[num] = this.show[num] ? false : true;
157 301 },
158 302 onClickItem1(index) {
159   - if (this.current1 !== index) {
  303 + if (this.current1 !== index) {
160 304 this.current1 = index;
161 305 this.chooseRes1 =this.chooseItem1[index].describ
162   - }
  306 + }
163 307 },
164 308 onClickItem2(index) {
165   - if (this.current2 !== index) {
  309 + if (this.current2 !== index) {
166 310 this.current2 = index;
167 311 this.chooseRes2 =this.chooseItem2[index].num
168   - }
  312 + }
169 313 },
170 314 onClickItem3(index) {
171   - if (this.current3 !== index) {
  315 + if (this.current3 !== index) {
172 316 this.current3 = index;
173 317 this.chooseRes3 =this.chooseItem3[index]
174   - }
  318 + }
175 319 },
176 320 counter(isadd){
177   - if(isadd){
178   - this.count >= this.maxCount? this.addDisabled = true:this.count++;
179   - }else{
180   - this.count <= 1? this.desDisabled = true:this.count--;
  321 + if (isadd) {
  322 + this.count >= this.maxCount? this.addDisabled = true:this.count++;
  323 + } else {
  324 + this.count <= 1? this.desDisabled = true:this.count--;
181 325 }
182 326 },
183 327 toComfirmOrder(){
184 328 uni.navigateTo({
185   - url:'../confirmOrder/confirmOrder'
  329 + url:'../confirmOrder/confirmOrder'
186 330 })
187 331 }
188 332 }
... ... @@ -190,7 +334,7 @@
190 334 </script>
191 335  
192 336 <style lang="scss">
193   - .content{
  337 + .content {
194 338 min-height: 100vh;
195 339 background-color: #F2F2F2;
196 340 // padding-top: 20rpx;
... ... @@ -207,10 +351,10 @@
207 351 .imageWrap{
208 352 height: 188rpx;
209 353 width: 188rpx;
210   - margin-right: 28rpx;
  354 + margin-right: 28rpx;
211 355 image{
212   - height: 188rpx;
213   - width: 188rpx;
  356 + height: 188rpx;
  357 + width: 188rpx;
214 358 }
215 359 }
216 360 .infoRight{
... ... @@ -219,45 +363,212 @@
219 363 align-items: flex-start;
220 364 justify-content: space-between;
221 365 .goodName{
222   - font-size: 28rpx;
223   - color: #333333;
  366 + font-size: 28rpx;
  367 + color: #333333;
224 368 }
225 369 .remarks{
226   - font-size: 20rpx;
227   - color: #999999;
  370 + font-size: 20rpx;
  371 + color: #999999;
228 372 }
229 373 .priceBox{
230   - display: flex;
231   - justify-content: space-between;
232   - align-items: center;
233   - width: 100%;
234   - font-size: 14px;
235   - color: #999999;
236   - .price{
237   - color: #FF6B4A;
238   - font-size: 28rpx;
239   - }
240   - .counter{
241   - display: flex;
242   - flex-direction: row;
243   - justify-content: space-between;
244   - align-items: center;
245   - font-size: 28rpx;
246   - color: #333333;
247   - width: 122rpx;
248   - .btn{
249   - display: flex;
250   - justify-content: center;
251   - line-height: 32rpx;
252   - height: 32rpx;
253   - width: 32rpx;
254   - background-color: #F2F2F2;
255   - color: #CFCFCF;
256   - }
257   - }
258   - }
  374 + display: flex;
  375 + justify-content: space-between;
  376 + align-items: center;
  377 + width: 100%;
  378 + font-size: 14px;
  379 + color: #999999;
  380 + .price{
  381 + color: #FF6B4A;
  382 + font-size: 28rpx;
  383 + }
  384 + .counter{
  385 + display: flex;
  386 + flex-direction: row;
  387 + justify-content: space-between;
  388 + align-items: center;
  389 + font-size: 28rpx;
  390 + color: #333333;
  391 + width: 122rpx;
  392 + .btn{
  393 + display: flex;
  394 + justify-content: center;
  395 + line-height: 32rpx;
  396 + height: 32rpx;
  397 + width: 32rpx;
  398 + background-color: #F2F2F2;
  399 + color: #CFCFCF;
  400 + }
  401 + }
  402 + }
  403 + }
  404 + }
  405 + .goods-data{
  406 + width: 100%;
  407 + box-sizing: border-box;
  408 + padding: 37rpx 40rpx 0 40rpx;
  409 + background: #FFFFFF;
  410 + border-radius: 12rpx;
  411 + .opCollapse{
  412 + width: 100%;
  413 + padding-bottom: 28rpx;
  414 + margin-top: 7px;
  415 + border-bottom: 1px solid #E9E9E9;
  416 + .head{
  417 + display: flex;
  418 + justify-content: space-between;
  419 + height: 24px;
  420 + // font-family: PingFangSC-Medium;
  421 + font-size: 16px;
  422 + color: #333333;
  423 + letter-spacing: -0.3px;
  424 + text-align: justify;
  425 + line-height: 24px;
  426 + margin-bottom: 18rpx;
  427 + .headRighted{
  428 + width: 0;
  429 + height: 0;
  430 + border-left: 4px solid transparent;
  431 + border-right: 4px solid transparent;
  432 + border-bottom: 4px solid #CFCFCF;
  433 + transform: scaleY(-1);
  434 + margin-top: 10px;
  435 + }
  436 + .headMid{
  437 + // font-family: PingFangSC-Regular;
  438 + font-size: 10px;
  439 + color: #999999;
  440 + letter-spacing: -0.19px;
  441 + margin-left: -120rpx;
  442 + }
  443 + .headRight{
  444 + width: 0;
  445 + height: 0;
  446 + border-left: 4px solid transparent;
  447 + border-right: 4px solid transparent;
  448 + border-bottom: 4px solid #CFCFCF;
  449 + margin-top: 10px;
  450 + }
  451 + }
  452 + .body{
  453 + // font-family: PingFangSC-Regular;
  454 + font-size: 12px;
  455 + color: #666666;
  456 + letter-spacing: 0;
  457 + .bodyBox{
  458 + margin-top: 15px;
  459 + .names{
  460 + // font-family: PingFangSC-Regular;
  461 + font-size: 12px;
  462 + color: #151515;
  463 + letter-spacing: 0;
  464 + text-align: justify;
  465 + line-height: 17px;
  466 + margin-left: 5px;
  467 + margin-right: 10px;
  468 + }
  469 + text{
  470 + // font-family: PingFangSC-Regular;
  471 + font-size: 12px;
  472 + color: #666666;
  473 + letter-spacing: 0;
  474 + text-align: justify;
  475 + }
  476 + }
  477 + }
  478 + .goods-form {
  479 + display: flex;
  480 + flex-direction: column;
  481 + align-items: center;
  482 + justify-content: center;
  483 + background-color: #fff;
  484 + width: 100%;
  485 + .p1 {
  486 + font-size: 16px;
  487 + color: #333333;
  488 + letter-spacing: -0.3px;
  489 + text-align: justify;
  490 + line-height: 24px;
  491 + margin: 4px 0;
  492 + }
  493 + .p2 {
  494 + font-size: 12px;
  495 + color: #999999;
  496 + letter-spacing: -0.23px;
  497 + margin-bottom: 18rpx;
  498 + }
  499 + image{
  500 + width: 28rpx;
  501 + height: 26rpx;
  502 + }
  503 + .confirm {
  504 + display: flex;
  505 + align-items: center;
  506 + font-size: 12px;
  507 + color: #666666;
  508 + letter-spacing: -0.23px;
  509 + width: 684rpx;
  510 + image{
  511 + margin-right:25rpx;
  512 + }
  513 + }
  514 + .picker{
  515 + display: flex;
  516 + flex-direction: column;
  517 + justify-content: center;
  518 + align-items: center;
  519 + width: 100%;
  520 + image{
  521 + width: 10px;
  522 + height: 10px;
  523 + margin-right: 5px;
  524 + }
  525 + .picker-choice{
  526 + display: flex;
  527 + width: 684rpx;
  528 + align-items: center;
  529 + margin-bottom: 40rpx;
  530 + .choice-left{
  531 + width: 210rpx;
  532 + .p11 {
  533 + font-size: 14px;
  534 + color: #333333;
  535 + letter-spacing: -0.26px;
  536 + text-align: justify;
  537 + line-height: 24px;
  538 + }
  539 + .p12 {
  540 + font-size: 10px;
  541 + color: #3F3F3F;
  542 + letter-spacing: -0.19px;
  543 + text-align: justify;
  544 + line-height: 24px;
  545 + }
  546 + }
  547 + .p13 {
  548 + font-size: 10px;
  549 + color: #999999;
  550 + letter-spacing: -0.19px;
  551 + margin-right: 10px;
  552 + }
  553 + .p13-date {
  554 + font-size: 10px;
  555 + color: #999999;
  556 + letter-spacing: -0.19px;
  557 + margin-right: 5px;
  558 + }
  559 + .p14 {
  560 + font-size: 14px;
  561 + color: #666666;
  562 + letter-spacing: -0.26px;
  563 + text-align: center;
  564 + width: 124rpx;
  565 + border-bottom: 1px solid #CFCFCF;
  566 + }
  567 + }
  568 + }
259 569 }
260 570 }
  571 + }
261 572 .choose{
262 573 width: 100%;
263 574 background: #FFFFFF;
... ...
src/static/icon-data.png

1.01 KB

src/static/icon-pen.png

896 Bytes

src/store/modules/address.js
... ... @@ -0,0 +1,71 @@
  1 +import urlAlias from '../url'
  2 +import request from '../request'
  3 +
  4 +const { editAddress, addressList, getAddress } = urlAlias
  5 +
  6 +const state = { list: [], detail: {} }
  7 +
  8 +const mutations = {
  9 + LIST: (state, list) => {
  10 + state.list = list
  11 + },
  12 + DETAILS: (state, details) => {
  13 + state.details = details
  14 + }
  15 +}
  16 +
  17 +const actions = {
  18 + edit(mutations, param, success) {
  19 + request({
  20 + url: editAddress,
  21 + data: param,
  22 + success,
  23 + fail: () => {
  24 + uni.showModal({
  25 + content: '编辑失败',
  26 + showCancel: false
  27 + })
  28 + },
  29 + complete: (res) => {
  30 + console.log('complete status === > ', res)
  31 + }
  32 + })
  33 + },
  34 + list({ commit }) {
  35 + request({
  36 + url: addressList,
  37 + success: (res) => {
  38 + commit('LIST', res.data.data)
  39 + },
  40 + fail: () => {
  41 + uni.showModal({
  42 + content: '获取地址列表失败',
  43 + showCancel: false
  44 + })
  45 + }
  46 + })
  47 + },
  48 + details({ commit }, param, execute) {
  49 + return new Promise((resolve, reject) => request({
  50 + url: getAddress,
  51 + data: param,
  52 + success: (res) => {
  53 + commit('DETAILS', res.data.data)
  54 + resolve()
  55 + },
  56 + fail: () => {
  57 + uni.showModal({
  58 + content: '获取地址信息失败',
  59 + showCancel: false
  60 + })
  61 + }
  62 + }))
  63 + }
  64 +}
  65 +
  66 +export default {
  67 + namespaced: true,
  68 + state,
  69 + mutations,
  70 + actions
  71 +}
... ...
src/store/modules/cart.js
... ... @@ -16,7 +16,6 @@ const mutations = {
16 16  
17 17  
18 18 const actions = {
19   -
20 19 getCartList({ commit }, param) {
21 20 request({
22 21 url: cartList,
... ...
src/store/modules/read.js
... ... @@ -6,12 +6,13 @@
6 6 } = urlAlias;
7 7  
8 8 const state = {
9   - goodInfo: [],
  9 + goodInfo: {},
10 10 };
11 11  
12 12 const mutations = {
13 13 INIT: (state, goodInfo) => {
14 14 state.goodInfo = goodInfo;
  15 +
15 16 },
16 17 };
17 18  
... ... @@ -19,6 +20,7 @@ const actions = {
19 20 fetch({ commit }, param) {
20 21 request({
21 22 url: read,
  23 + data: param,
22 24 success: (res) => {
23 25 commit('INIT', res.data.data)
24 26 },
... ...
src/store/request.js
... ... @@ -18,6 +18,11 @@ export default async function request({
18 18 console.log("complete status === > ", res);
19 19 },
20 20 }) {
  21 + const uid = uni.getStorageSync('uid');
  22 + data = {
  23 + uid,
  24 + ...data,
  25 + };
21 26 uni
22 27 .request({
23 28 url: DOMAIN + url,
... ...
1 1 const urlAlias = {
2   - // 获取商品信息
3   - read: '/app/prod/read',
  2 + // 详情
  3 + read: '/app/prod/read', // 获取商品信息
4 4  
5 5 // 首页
6 6 shopList: '/app/prod/list', // 获取首页商品列表
... ... @@ -13,16 +13,21 @@ const urlAlias = {
13 13  
14 14 // 我的订单
15 15 orderList: '/app/order/list', // 获取订单列表
16   -
17   - // 购物车
18   - cartList: '/app/cart/list', // 获取购物车列表
19   -
20   - // 我的
21   - recommandList:'/app/prod/recommand', // 获取用户个性化推荐商品
22   -
  16 +
  17 + // 购物车
  18 + cartList: '/app/cart/list', // 获取购物车列表
  19 +
  20 + // 我的
  21 + recommandList: '/app/prod/recommand', // 获取用户个性化推荐商品
  22 +
23 23 // 镜框选购页
24   - detailStandardList: '/app/prod/read', //获取商品的详细信息
25   -
  24 + detailStandardList: '/app/prod/read', // 获取商品的详细信息
  25 +
  26 + // 地址管理
  27 + editAddress: '/app/address/edit_address', // 编辑地址
  28 + addressList: '/app/address/get_address_list', // 获取用户地址列表
  29 + getAddress: '/app/address/get_address_by_id' // 获取用户某一地址信息
  30 +
26 31 }
27 32  
28   -export default urlAlias;
  33 +export default urlAlias
... ...