first commit

pull/1/head
林华焜 4 years ago
parent c665f64213
commit 00931a9418

@ -1,3 +1,4 @@
> 1% > 1%
last 2 versions last 2 versions
not dead not dead

@ -1,5 +1,5 @@
module.exports = { module.exports = {
presets: [ presets: [
'@vue/cli-plugin-babel/preset' '@vue/cli-plugin-babel/preset'
] ],
} }

501
package-lock.json generated

@ -1010,7 +1010,6 @@
"version": "7.11.2", "version": "7.11.2",
"resolved": "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.11.2.tgz", "resolved": "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.11.2.tgz",
"integrity": "sha1-9UnBPHVMxAuHZEufqfCaapX+BzY=", "integrity": "sha1-9UnBPHVMxAuHZEufqfCaapX+BzY=",
"dev": true,
"requires": { "requires": {
"regenerator-runtime": "^0.13.4" "regenerator-runtime": "^0.13.4"
} }
@ -1054,6 +1053,83 @@
"to-fast-properties": "^2.0.0" "to-fast-properties": "^2.0.0"
} }
}, },
"@better-scroll/core": {
"version": "2.0.6",
"resolved": "https://registry.npm.taobao.org/@better-scroll/core/download/@better-scroll/core-2.0.6.tgz",
"integrity": "sha1-Md9HURP2jBWic+s60O9yWz8taOY=",
"requires": {
"@better-scroll/shared-utils": "^2.0.6"
}
},
"@better-scroll/mouse-wheel": {
"version": "2.0.6",
"resolved": "https://registry.npm.taobao.org/@better-scroll/mouse-wheel/download/@better-scroll/mouse-wheel-2.0.6.tgz",
"integrity": "sha1-MsKIKcPzNXJuWetHKhVYbd11M2w=",
"requires": {
"@better-scroll/core": "^2.0.6"
}
},
"@better-scroll/observe-dom": {
"version": "2.0.6",
"resolved": "https://registry.npm.taobao.org/@better-scroll/observe-dom/download/@better-scroll/observe-dom-2.0.6.tgz",
"integrity": "sha1-E3qsXj7YzWo4B8cKBKbZSdz88Cw=",
"requires": {
"@better-scroll/core": "^2.0.6"
}
},
"@better-scroll/pull-down": {
"version": "2.0.6",
"resolved": "https://registry.npm.taobao.org/@better-scroll/pull-down/download/@better-scroll/pull-down-2.0.6.tgz",
"integrity": "sha1-1GTLiPNZLrHlTZCZU+5MVqfNxbY=",
"requires": {
"@better-scroll/core": "^2.0.6"
}
},
"@better-scroll/pull-up": {
"version": "2.0.6",
"resolved": "https://registry.npm.taobao.org/@better-scroll/pull-up/download/@better-scroll/pull-up-2.0.6.tgz",
"integrity": "sha1-XleG1YmkZxT4PoxMBolAF0nf2Y8=",
"requires": {
"@better-scroll/core": "^2.0.6"
}
},
"@better-scroll/scroll-bar": {
"version": "2.0.6",
"resolved": "https://registry.npm.taobao.org/@better-scroll/scroll-bar/download/@better-scroll/scroll-bar-2.0.6.tgz",
"integrity": "sha1-bTgXR0SkZY8xyVkdhqK7yw9asrw=",
"requires": {
"@better-scroll/core": "^2.0.6"
}
},
"@better-scroll/shared-utils": {
"version": "2.0.6",
"resolved": "https://registry.npm.taobao.org/@better-scroll/shared-utils/download/@better-scroll/shared-utils-2.0.6.tgz",
"integrity": "sha1-4QUf7akL30SEWr9iIDTZ/FjgPzM="
},
"@better-scroll/slide": {
"version": "2.0.6",
"resolved": "https://registry.npm.taobao.org/@better-scroll/slide/download/@better-scroll/slide-2.0.6.tgz",
"integrity": "sha1-4ZkFp23tBNF7WlPQuhtPN8NOE4k=",
"requires": {
"@better-scroll/core": "^2.0.6"
}
},
"@better-scroll/wheel": {
"version": "2.0.6",
"resolved": "https://registry.npm.taobao.org/@better-scroll/wheel/download/@better-scroll/wheel-2.0.6.tgz",
"integrity": "sha1-PQNWD+/FRLdNxHSoUeWIDqB7dNI=",
"requires": {
"@better-scroll/core": "^2.0.6"
}
},
"@better-scroll/zoom": {
"version": "2.0.6",
"resolved": "https://registry.npm.taobao.org/@better-scroll/zoom/download/@better-scroll/zoom-2.0.6.tgz",
"integrity": "sha1-LubkGu6Zwefv0LFrSup7RvwDlzc=",
"requires": {
"@better-scroll/core": "^2.0.6"
}
},
"@hapi/address": { "@hapi/address": {
"version": "2.1.4", "version": "2.1.4",
"resolved": "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.1.4.tgz?cache=0&sync_timestamp=1593993805495&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Faddress%2Fdownload%2F%40hapi%2Faddress-2.1.4.tgz", "resolved": "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.1.4.tgz?cache=0&sync_timestamp=1593993805495&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Faddress%2Fdownload%2F%40hapi%2Faddress-2.1.4.tgz",
@ -1120,6 +1196,11 @@
"integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=", "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=",
"dev": true "dev": true
}, },
"@popperjs/core": {
"version": "2.6.0",
"resolved": "https://registry.npm.taobao.org/@popperjs/core/download/@popperjs/core-2.6.0.tgz",
"integrity": "sha1-8CIZWv38lC4IjuIQEoWh0xx9cn8="
},
"@soda/friendly-errors-webpack-plugin": { "@soda/friendly-errors-webpack-plugin": {
"version": "1.7.1", "version": "1.7.1",
"resolved": "https://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.7.1.tgz", "resolved": "https://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.7.1.tgz",
@ -1276,8 +1357,7 @@
"@types/json-schema": { "@types/json-schema": {
"version": "7.0.6", "version": "7.0.6",
"resolved": "https://registry.npm.taobao.org/@types/json-schema/download/@types/json-schema-7.0.6.tgz", "resolved": "https://registry.npm.taobao.org/@types/json-schema/download/@types/json-schema-7.0.6.tgz",
"integrity": "sha1-9MfsQ+gbMZqYFRFQMXCfJph4kfA=", "integrity": "sha1-9MfsQ+gbMZqYFRFQMXCfJph4kfA="
"dev": true
}, },
"@types/mime": { "@types/mime": {
"version": "2.0.3", "version": "2.0.3",
@ -1420,11 +1500,28 @@
} }
} }
}, },
"@vant/icons": {
"version": "1.5.0",
"resolved": "https://registry.npm.taobao.org/@vant/icons/download/@vant/icons-1.5.0.tgz?cache=0&sync_timestamp=1608190031674&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vant%2Ficons%2Fdownload%2F%40vant%2Ficons-1.5.0.tgz",
"integrity": "sha1-znii8FWhpAmRKbtsRNVFhPN0Dic="
},
"@vant/popperjs": {
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/@vant/popperjs/download/@vant/popperjs-1.0.2.tgz",
"integrity": "sha1-Ui1xZWI1Elo64I6ccBo7rm/YjXs=",
"requires": {
"@popperjs/core": "^2.5.4"
}
},
"@vant/touch-emulator": {
"version": "1.2.0",
"resolved": "https://registry.npm.taobao.org/@vant/touch-emulator/download/@vant/touch-emulator-1.2.0.tgz",
"integrity": "sha1-SGMAsj5X25zpIxoE4KDGIcaGktg="
},
"@vue/babel-helper-vue-jsx-merge-props": { "@vue/babel-helper-vue-jsx-merge-props": {
"version": "1.0.0", "version": "1.0.0",
"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", "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",
"integrity": "sha1-BI/leZWNpAj7eosqPsBQtQpmEEA=", "integrity": "sha1-BI/leZWNpAj7eosqPsBQtQpmEEA="
"dev": true
}, },
"@vue/babel-helper-vue-transform-on": { "@vue/babel-helper-vue-transform-on": {
"version": "1.0.0-rc.2", "version": "1.0.0-rc.2",
@ -1687,17 +1784,6 @@
"integrity": "sha1-4a1IbmxUUBY0xsOXxcEh2qODYHw=", "integrity": "sha1-4a1IbmxUUBY0xsOXxcEh2qODYHw=",
"dev": true "dev": true
}, },
"ansi-styles": {
"version": "4.2.1",
"resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz",
"integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k=",
"dev": true,
"optional": true,
"requires": {
"@types/color-name": "^1.1.1",
"color-convert": "^2.0.1"
}
},
"cacache": { "cacache": {
"version": "13.0.1", "version": "13.0.1",
"resolved": "https://registry.npm.taobao.org/cacache/download/cacache-13.0.1.tgz?cache=0&sync_timestamp=1594428010987&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-13.0.1.tgz", "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-13.0.1.tgz?cache=0&sync_timestamp=1594428010987&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-13.0.1.tgz",
@ -1724,34 +1810,6 @@
"unique-filename": "^1.1.1" "unique-filename": "^1.1.1"
} }
}, },
"chalk": {
"version": "4.1.0",
"resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz",
"integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=",
"dev": true,
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
"integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
"dev": true,
"optional": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
"integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
"dev": true,
"optional": true
},
"find-cache-dir": { "find-cache-dir": {
"version": "3.3.1", "version": "3.3.1",
"resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.3.1.tgz", "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.3.1.tgz",
@ -1773,25 +1831,6 @@
"path-exists": "^4.0.0" "path-exists": "^4.0.0"
} }
}, },
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz?cache=0&sync_timestamp=1596294337050&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-flag%2Fdownload%2Fhas-flag-4.0.0.tgz",
"integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
"dev": true,
"optional": true
},
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz",
"integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=",
"dev": true,
"optional": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"locate-path": { "locate-path": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz", "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz",
@ -1856,16 +1895,6 @@
"minipass": "^3.1.1" "minipass": "^3.1.1"
} }
}, },
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1598611730985&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz",
"integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
"dev": true,
"optional": true,
"requires": {
"has-flag": "^4.0.0"
}
},
"terser-webpack-plugin": { "terser-webpack-plugin": {
"version": "2.3.8", "version": "2.3.8",
"resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-2.3.8.tgz?cache=0&sync_timestamp=1600532057758&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-2.3.8.tgz", "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-2.3.8.tgz?cache=0&sync_timestamp=1600532057758&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-2.3.8.tgz",
@ -1882,18 +1911,6 @@
"terser": "^4.6.12", "terser": "^4.6.12",
"webpack-sources": "^1.4.3" "webpack-sources": "^1.4.3"
} }
},
"vue-loader-v16": {
"version": "npm:vue-loader@16.0.0-beta.8",
"resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-16.0.0-beta.8.tgz?cache=0&sync_timestamp=1600850425972&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-16.0.0-beta.8.tgz",
"integrity": "sha1-H1I9n+qOjG5PW7mf12gWWvWEWHk=",
"dev": true,
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
}
} }
} }
}, },
@ -2213,7 +2230,6 @@
"version": "6.12.5", "version": "6.12.5",
"resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.5.tgz?cache=0&sync_timestamp=1600887328129&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.5.tgz", "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.5.tgz?cache=0&sync_timestamp=1600887328129&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.5.tgz",
"integrity": "sha1-GbDouuj0duW6ZmMAOHd1+xoApNo=", "integrity": "sha1-GbDouuj0duW6ZmMAOHd1+xoApNo=",
"dev": true,
"requires": { "requires": {
"fast-deep-equal": "^3.1.1", "fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0", "fast-json-stable-stringify": "^2.0.0",
@ -2230,8 +2246,7 @@
"ajv-keywords": { "ajv-keywords": {
"version": "3.5.2", "version": "3.5.2",
"resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz", "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz",
"integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0=", "integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0="
"dev": true
}, },
"alphanum-sort": { "alphanum-sort": {
"version": "1.0.2", "version": "1.0.2",
@ -2438,6 +2453,14 @@
"integrity": "sha1-3TeelPDbgxCwgpH51kwyCXZmF/0=", "integrity": "sha1-3TeelPDbgxCwgpH51kwyCXZmF/0=",
"dev": true "dev": true
}, },
"async-validator": {
"version": "1.8.5",
"resolved": "https://registry.npm.taobao.org/async-validator/download/async-validator-1.8.5.tgz",
"integrity": "sha1-3D4I7B/Q3dtn5ghC8CwM0c7G1/A=",
"requires": {
"babel-runtime": "6.x"
}
},
"asynckit": { "asynckit": {
"version": "0.4.0", "version": "0.4.0",
"resolved": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz", "resolved": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz",
@ -2486,6 +2509,11 @@
"is-buffer": "^1.1.5" "is-buffer": "^1.1.5"
} }
}, },
"babel-helper-vue-jsx-merge-props": {
"version": "2.0.3",
"resolved": "https://registry.npm.taobao.org/babel-helper-vue-jsx-merge-props/download/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
"integrity": "sha1-Iq69OzOQIyjlEyk6jkmSs4T58bY="
},
"babel-loader": { "babel-loader": {
"version": "8.1.0", "version": "8.1.0",
"resolved": "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.1.0.tgz", "resolved": "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.1.0.tgz",
@ -2612,11 +2640,19 @@
} }
}, },
"better-scroll": { "better-scroll": {
"version": "1.15.2", "version": "2.0.1",
"resolved": "https://registry.npm.taobao.org/better-scroll/download/better-scroll-1.15.2.tgz?cache=0&sync_timestamp=1603173316390&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbetter-scroll%2Fdownload%2Fbetter-scroll-1.15.2.tgz", "resolved": "https://registry.npm.taobao.org/better-scroll/download/better-scroll-2.0.1.tgz",
"integrity": "sha1-Zf/GBYuLT/M3uN+tS8szTXaZzrY=", "integrity": "sha1-UY/izK957LYp2e3jJ77l7eRtdYo=",
"requires": { "requires": {
"babel-runtime": "^6.0.0" "@better-scroll/core": "^2.0.1",
"@better-scroll/mouse-wheel": "^2.0.1",
"@better-scroll/observe-dom": "^2.0.1",
"@better-scroll/pull-down": "^2.0.1",
"@better-scroll/pull-up": "^2.0.1",
"@better-scroll/scroll-bar": "^2.0.1",
"@better-scroll/slide": "^2.0.1",
"@better-scroll/wheel": "^2.0.1",
"@better-scroll/zoom": "^2.0.1"
} }
}, },
"bfj": { "bfj": {
@ -2634,8 +2670,7 @@
"big.js": { "big.js": {
"version": "5.2.2", "version": "5.2.2",
"resolved": "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz", "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz",
"integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=", "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg="
"dev": true
}, },
"binary-extensions": { "binary-extensions": {
"version": "2.1.0", "version": "2.1.0",
@ -4138,8 +4173,7 @@
"deepmerge": { "deepmerge": {
"version": "1.5.2", "version": "1.5.2",
"resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz?cache=0&sync_timestamp=1593463429320&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-1.5.2.tgz", "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz?cache=0&sync_timestamp=1593463429320&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-1.5.2.tgz",
"integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M=", "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M="
"dev": true
}, },
"default-gateway": { "default-gateway": {
"version": "5.0.5", "version": "5.0.5",
@ -4577,6 +4611,19 @@
"integrity": "sha1-LnAjRITgPXx+kDENfXn9N3U3nDQ=", "integrity": "sha1-LnAjRITgPXx+kDENfXn9N3U3nDQ=",
"dev": true "dev": true
}, },
"element-ui": {
"version": "2.14.1",
"resolved": "https://registry.npm.taobao.org/element-ui/download/element-ui-2.14.1.tgz?cache=0&sync_timestamp=1605089928506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felement-ui%2Fdownload%2Felement-ui-2.14.1.tgz",
"integrity": "sha1-i1dFxzZsHBpgO7bAIShupxh+KqI=",
"requires": {
"async-validator": "~1.8.1",
"babel-helper-vue-jsx-merge-props": "^2.0.0",
"deepmerge": "^1.2.0",
"normalize-wheel": "^1.0.1",
"resize-observer-polyfill": "^1.5.0",
"throttle-debounce": "^1.0.1"
}
},
"elliptic": { "elliptic": {
"version": "6.5.3", "version": "6.5.3",
"resolved": "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.3.tgz?cache=0&sync_timestamp=1592492847950&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felliptic%2Fdownload%2Felliptic-6.5.3.tgz", "resolved": "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.3.tgz?cache=0&sync_timestamp=1592492847950&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felliptic%2Fdownload%2Felliptic-6.5.3.tgz",
@ -4609,8 +4656,7 @@
"emojis-list": { "emojis-list": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-3.0.0.tgz", "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-3.0.0.tgz",
"integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang=", "integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang="
"dev": true
}, },
"encodeurl": { "encodeurl": {
"version": "1.0.2", "version": "1.0.2",
@ -4660,7 +4706,6 @@
"version": "0.1.7", "version": "0.1.7",
"resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz", "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz",
"integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=", "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=",
"dev": true,
"requires": { "requires": {
"prr": "~1.0.1" "prr": "~1.0.1"
} }
@ -5047,8 +5092,7 @@
"fast-deep-equal": { "fast-deep-equal": {
"version": "3.1.3", "version": "3.1.3",
"resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz?cache=0&sync_timestamp=1591599604977&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-3.1.3.tgz", "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz?cache=0&sync_timestamp=1591599604977&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-3.1.3.tgz",
"integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=", "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU="
"dev": true
}, },
"fast-glob": { "fast-glob": {
"version": "2.2.7", "version": "2.2.7",
@ -5090,8 +5134,7 @@
"fast-json-stable-stringify": { "fast-json-stable-stringify": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz", "resolved": "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=", "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM="
"dev": true
}, },
"fastclick": { "fastclick": {
"version": "1.0.6", "version": "1.0.6",
@ -5436,8 +5479,7 @@
"graceful-fs": { "graceful-fs": {
"version": "4.2.4", "version": "4.2.4",
"resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.4.tgz", "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.4.tgz",
"integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=", "integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs="
"dev": true
}, },
"gzip-size": { "gzip-size": {
"version": "5.1.1", "version": "5.1.1",
@ -5892,6 +5934,12 @@
"integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=",
"dev": true "dev": true
}, },
"image-size": {
"version": "0.5.5",
"resolved": "https://registry.npm.taobao.org/image-size/download/image-size-0.5.5.tgz?cache=0&sync_timestamp=1603729096155&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimage-size%2Fdownload%2Fimage-size-0.5.5.tgz",
"integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
"optional": true
},
"import-cwd": { "import-cwd": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz", "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz",
@ -6425,8 +6473,7 @@
"json-schema-traverse": { "json-schema-traverse": {
"version": "0.4.1", "version": "0.4.1",
"resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz?cache=0&sync_timestamp=1599333925809&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-schema-traverse%2Fdownload%2Fjson-schema-traverse-0.4.1.tgz", "resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz?cache=0&sync_timestamp=1599333925809&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-schema-traverse%2Fdownload%2Fjson-schema-traverse-0.4.1.tgz",
"integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=", "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA="
"dev": true
}, },
"json-stringify-safe": { "json-stringify-safe": {
"version": "5.0.1", "version": "5.0.1",
@ -6444,7 +6491,6 @@
"version": "2.1.3", "version": "2.1.3",
"resolved": "https://registry.npm.taobao.org/json5/download/json5-2.1.3.tgz", "resolved": "https://registry.npm.taobao.org/json5/download/json5-2.1.3.tgz",
"integrity": "sha1-ybD3+pIzv+WAf+ZvzzpWF+1ZfUM=", "integrity": "sha1-ybD3+pIzv+WAf+ZvzzpWF+1ZfUM=",
"dev": true,
"requires": { "requires": {
"minimist": "^1.2.5" "minimist": "^1.2.5"
} }
@ -6482,6 +6528,11 @@
"integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=", "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=",
"dev": true "dev": true
}, },
"klona": {
"version": "2.0.4",
"resolved": "https://registry.npm.taobao.org/klona/download/klona-2.0.4.tgz?cache=0&sync_timestamp=1600226641291&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fklona%2Fdownload%2Fklona-2.0.4.tgz",
"integrity": "sha1-e7Hjr/sMuGJFR+9+j2cI6i4538A="
},
"launch-editor": { "launch-editor": {
"version": "2.2.1", "version": "2.2.1",
"resolved": "https://registry.npm.taobao.org/launch-editor/download/launch-editor-2.2.1.tgz", "resolved": "https://registry.npm.taobao.org/launch-editor/download/launch-editor-2.2.1.tgz",
@ -6501,6 +6552,67 @@
"launch-editor": "^2.2.1" "launch-editor": "^2.2.1"
} }
}, },
"less": {
"version": "3.12.2",
"resolved": "https://registry.npm.taobao.org/less/download/less-3.12.2.tgz?cache=0&sync_timestamp=1607425518254&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fless%2Fdownload%2Fless-3.12.2.tgz",
"integrity": "sha1-FX5t0ypohp34hZMUrTjnAhGvOrQ=",
"requires": {
"errno": "^0.1.1",
"graceful-fs": "^4.1.2",
"image-size": "~0.5.0",
"make-dir": "^2.1.0",
"mime": "^1.4.1",
"native-request": "^1.0.5",
"source-map": "~0.6.0",
"tslib": "^1.10.0"
},
"dependencies": {
"mime": {
"version": "1.6.0",
"resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz?cache=0&sync_timestamp=1590635592890&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-1.6.0.tgz",
"integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=",
"optional": true
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&sync_timestamp=1589682764497&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz",
"integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
"optional": true
}
}
},
"less-loader": {
"version": "7.1.0",
"resolved": "https://registry.npm.taobao.org/less-loader/download/less-loader-7.1.0.tgz?cache=0&sync_timestamp=1605095927771&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fless-loader%2Fdownload%2Fless-loader-7.1.0.tgz",
"integrity": "sha1-lY1B6G194Ly0kHEe4PI1qp3Flqo=",
"requires": {
"klona": "^2.0.4",
"loader-utils": "^2.0.0",
"schema-utils": "^3.0.0"
},
"dependencies": {
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz",
"integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=",
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"schema-utils": {
"version": "3.0.0",
"resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-3.0.0.tgz",
"integrity": "sha1-Z1AvaqK2ai1AMrQnmilEl4oJE+8=",
"requires": {
"@types/json-schema": "^7.0.6",
"ajv": "^6.12.5",
"ajv-keywords": "^3.5.2"
}
}
}
},
"leven": { "leven": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npm.taobao.org/leven/download/leven-3.1.0.tgz", "resolved": "https://registry.npm.taobao.org/leven/download/leven-3.1.0.tgz",
@ -6645,7 +6757,6 @@
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz", "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz",
"integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=", "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=",
"dev": true,
"requires": { "requires": {
"pify": "^4.0.1", "pify": "^4.0.1",
"semver": "^5.6.0" "semver": "^5.6.0"
@ -6867,8 +6978,7 @@
"minimist": { "minimist": {
"version": "1.2.5", "version": "1.2.5",
"resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz", "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz",
"integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=", "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI="
"dev": true
}, },
"minipass": { "minipass": {
"version": "3.1.3", "version": "3.1.3",
@ -6962,6 +7072,11 @@
"minimist": "^1.2.5" "minimist": "^1.2.5"
} }
}, },
"moment": {
"version": "2.29.1",
"resolved": "https://registry.npm.taobao.org/moment/download/moment-2.29.1.tgz?cache=0&sync_timestamp=1601983557585&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmoment%2Fdownload%2Fmoment-2.29.1.tgz",
"integrity": "sha1-sr52n6MZQL6e7qZGnAdeNQBvo9M="
},
"move-concurrently": { "move-concurrently": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz", "resolved": "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz",
@ -7035,6 +7150,12 @@
"to-regex": "^3.0.1" "to-regex": "^3.0.1"
} }
}, },
"native-request": {
"version": "1.0.8",
"resolved": "https://registry.npm.taobao.org/native-request/download/native-request-1.0.8.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnative-request%2Fdownload%2Fnative-request-1.0.8.tgz",
"integrity": "sha1-j2a/YG4PfqJ8DlmV6y9dA+M65vs=",
"optional": true
},
"negotiator": { "negotiator": {
"version": "0.6.2", "version": "0.6.2",
"resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz", "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz",
@ -7154,6 +7275,11 @@
"integrity": "sha1-suHE3E98bVd0PfczpPWXjRhlBVk=", "integrity": "sha1-suHE3E98bVd0PfczpPWXjRhlBVk=",
"dev": true "dev": true
}, },
"normalize-wheel": {
"version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/normalize-wheel/download/normalize-wheel-1.0.1.tgz",
"integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU="
},
"npm-run-path": { "npm-run-path": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz", "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz",
@ -7660,8 +7786,7 @@
"pify": { "pify": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz", "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz",
"integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE="
"dev": true
}, },
"pinkie": { "pinkie": {
"version": "2.0.4", "version": "2.0.4",
@ -8363,8 +8488,7 @@
"prr": { "prr": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz", "resolved": "https://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz",
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY="
"dev": true
}, },
"pseudomap": { "pseudomap": {
"version": "1.0.2", "version": "1.0.2",
@ -8436,8 +8560,7 @@
"punycode": { "punycode": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz", "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz",
"integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=", "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew="
"dev": true
}, },
"q": { "q": {
"version": "1.5.1", "version": "1.5.1",
@ -8445,12 +8568,6 @@
"integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
"dev": true "dev": true
}, },
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
"integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=",
"dev": true
},
"query-string": { "query-string": {
"version": "4.3.4", "version": "4.3.4",
"resolved": "https://registry.npm.taobao.org/query-string/download/query-string-4.3.4.tgz", "resolved": "https://registry.npm.taobao.org/query-string/download/query-string-4.3.4.tgz",
@ -8571,8 +8688,7 @@
"regenerator-runtime": { "regenerator-runtime": {
"version": "0.13.7", "version": "0.13.7",
"resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.13.7.tgz", "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.13.7.tgz",
"integrity": "sha1-ysLazIoepnX+qrrriugziYrkb1U=", "integrity": "sha1-ysLazIoepnX+qrrriugziYrkb1U="
"dev": true
}, },
"regenerator-transform": { "regenerator-transform": {
"version": "0.14.5", "version": "0.14.5",
@ -8769,6 +8885,14 @@
"tough-cookie": "~2.5.0", "tough-cookie": "~2.5.0",
"tunnel-agent": "^0.6.0", "tunnel-agent": "^0.6.0",
"uuid": "^3.3.2" "uuid": "^3.3.2"
},
"dependencies": {
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
"integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=",
"dev": true
}
} }
}, },
"require-directory": { "require-directory": {
@ -8789,6 +8913,11 @@
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
"dev": true "dev": true
}, },
"resize-observer-polyfill": {
"version": "1.5.1",
"resolved": "https://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz",
"integrity": "sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ="
},
"resolve": { "resolve": {
"version": "1.17.0", "version": "1.17.0",
"resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.17.0.tgz", "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.17.0.tgz",
@ -8937,8 +9066,7 @@
"semver": { "semver": {
"version": "5.7.1", "version": "5.7.1",
"resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz",
"integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc="
"dev": true
}, },
"send": { "send": {
"version": "0.17.1", "version": "0.17.1",
@ -9869,6 +9997,11 @@
"neo-async": "^2.6.0" "neo-async": "^2.6.0"
} }
}, },
"throttle-debounce": {
"version": "1.1.0",
"resolved": "https://registry.npm.taobao.org/throttle-debounce/download/throttle-debounce-1.1.0.tgz?cache=0&sync_timestamp=1604313832516&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fthrottle-debounce%2Fdownload%2Fthrottle-debounce-1.1.0.tgz",
"integrity": "sha1-UYU9o3vmihVctugns1FKPEIuic0="
},
"through2": { "through2": {
"version": "2.0.5", "version": "2.0.5",
"resolved": "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz?cache=0&sync_timestamp=1593478628425&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fthrough2%2Fdownload%2Fthrough2-2.0.5.tgz", "resolved": "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz?cache=0&sync_timestamp=1593478628425&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fthrough2%2Fdownload%2Fthrough2-2.0.5.tgz",
@ -9991,8 +10124,7 @@
"tslib": { "tslib": {
"version": "1.13.0", "version": "1.13.0",
"resolved": "https://registry.npm.taobao.org/tslib/download/tslib-1.13.0.tgz?cache=0&sync_timestamp=1596753467801&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.13.0.tgz", "resolved": "https://registry.npm.taobao.org/tslib/download/tslib-1.13.0.tgz?cache=0&sync_timestamp=1596753467801&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.13.0.tgz",
"integrity": "sha1-yIHhPMcBWJTtkUhi0nZDb6mkcEM=", "integrity": "sha1-yIHhPMcBWJTtkUhi0nZDb6mkcEM="
"dev": true
}, },
"tty-browserify": { "tty-browserify": {
"version": "0.0.0", "version": "0.0.0",
@ -10205,7 +10337,6 @@
"version": "4.4.0", "version": "4.4.0",
"resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.4.0.tgz", "resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.4.0.tgz",
"integrity": "sha1-qnFCYd55PoqCNHp7zJznTobyhgI=", "integrity": "sha1-qnFCYd55PoqCNHp7zJznTobyhgI=",
"dev": true,
"requires": { "requires": {
"punycode": "^2.1.0" "punycode": "^2.1.0"
} }
@ -10345,6 +10476,25 @@
"spdx-expression-parse": "^3.0.0" "spdx-expression-parse": "^3.0.0"
} }
}, },
"vant": {
"version": "2.11.3",
"resolved": "https://registry.npm.taobao.org/vant/download/vant-2.11.3.tgz?cache=0&sync_timestamp=1608282033258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvant%2Fdownload%2Fvant-2.11.3.tgz",
"integrity": "sha1-/IjVnLqs3AfpsYmwCoUlNSLpfNQ=",
"requires": {
"@babel/runtime": "7.x",
"@vant/icons": "1.5.0",
"@vant/popperjs": "^1.0.0",
"@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
"vue-lazyload": "1.2.3"
},
"dependencies": {
"vue-lazyload": {
"version": "1.2.3",
"resolved": "https://registry.npm.taobao.org/vue-lazyload/download/vue-lazyload-1.2.3.tgz",
"integrity": "sha1-kB+ewVx+bKeHgaK65KNDaGve2yw="
}
}
},
"vary": { "vary": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", "resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz",
@ -10379,6 +10529,16 @@
"resolved": "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz?cache=0&sync_timestamp=1600441210971&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue%2Fdownload%2Fvue-2.6.12.tgz", "resolved": "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz?cache=0&sync_timestamp=1600441210971&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue%2Fdownload%2Fvue-2.6.12.tgz",
"integrity": "sha1-9evU+mvShpQD4pqJau1JBEVskSM=" "integrity": "sha1-9evU+mvShpQD4pqJau1JBEVskSM="
}, },
"vue-directive-image-previewer": {
"version": "2.2.2",
"resolved": "https://registry.npm.taobao.org/vue-directive-image-previewer/download/vue-directive-image-previewer-2.2.2.tgz",
"integrity": "sha1-VtdOerEJvptf05mob/ho8uLKdUo=",
"dev": true,
"requires": {
"lodash": "^4.17.10",
"vue": "^2.4.2"
}
},
"vue-hot-reload-api": { "vue-hot-reload-api": {
"version": "2.3.4", "version": "2.3.4",
"resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz", "resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz",
@ -10411,6 +10571,87 @@
} }
} }
}, },
"vue-loader-v16": {
"version": "npm:vue-loader@16.1.1",
"resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-16.1.1.tgz?cache=0&sync_timestamp=1607093677581&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-16.1.1.tgz",
"integrity": "sha1-9bKG1grGiGaExjoXoYQ5HMngGZo=",
"dev": true,
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1606792266928&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
"integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
"dev": true,
"optional": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.0",
"resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz",
"integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=",
"dev": true,
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
"integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
"dev": true,
"optional": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
"integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
"dev": true,
"optional": true
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
"integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
"dev": true,
"optional": true
},
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz",
"integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=",
"dev": true,
"optional": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1606205010380&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz",
"integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
"dev": true,
"optional": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"vue-router": { "vue-router": {
"version": "3.0.2", "version": "3.0.2",
"resolved": "https://registry.npm.taobao.org/vue-router/download/vue-router-3.0.2.tgz?cache=0&sync_timestamp=1601637530869&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-3.0.2.tgz", "resolved": "https://registry.npm.taobao.org/vue-router/download/vue-router-3.0.2.tgz?cache=0&sync_timestamp=1601637530869&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-3.0.2.tgz",

@ -7,10 +7,16 @@
"build": "vue-cli-service build" "build": "vue-cli-service build"
}, },
"dependencies": { "dependencies": {
"@vant/touch-emulator": "^1.2.0",
"axios": "^0.18.0", "axios": "^0.18.0",
"better-scroll": "^1.15.2", "better-scroll": "^2.0.1",
"core-js": "^3.6.5", "core-js": "^3.6.5",
"element-ui": "^2.14.1",
"fastclick": "^1.0.6", "fastclick": "^1.0.6",
"less": "^3.12.2",
"less-loader": "^7.1.0",
"moment": "^2.29.1",
"vant": "^2.11.3",
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-lazyload": "^1.3.3", "vue-lazyload": "^1.3.3",
"vue-router": "^3.0.2", "vue-router": "^3.0.2",
@ -20,6 +26,7 @@
"@vue/cli-plugin-babel": "^4.5.0", "@vue/cli-plugin-babel": "^4.5.0",
"@vue/cli-service": "^4.5.0", "@vue/cli-service": "^4.5.0",
"components": "^0.1.0", "components": "^0.1.0",
"vue-directive-image-previewer": "^2.2.2",
"vue-template-compiler": "^2.6.11" "vue-template-compiler": "^2.6.11"
} }
} }

@ -1,9 +1,10 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=2.0, user-scalable=no, width=device-width" name="viewport">
<link rel="icon" href="<%= BASE_URL %>logo.png"> <link rel="icon" href="<%= BASE_URL %>logo.png">
<title><%= htmlWebpackPlugin.options.title %></title> <title><%= htmlWebpackPlugin.options.title %></title>
</head> </head>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

@ -1,25 +1,47 @@
<template> <template>
<div id="app"> <div id="app">
<!-- exclude不包括哪几个组件--> <!-- exclude不包括哪几个组件-->
<keep-alive exclude="Detail"> <keep-alive exclude="Detail,CreateMoment,DetailMoment,CommentList,UserInfo">
<router-view/> <router-view/>
</keep-alive> </keep-alive>
<MainTabBar/> <MainTabBar v-if="footShow"/>
</div> </div>
</template> </template>
<script> <script>
import MainTabBar from "components/content/mainTabbar/MainTabBar"; import MainTabBar from "components/content/mainTabbar/MainTabBar";
export default { export default {
name: 'App', name: 'App',
components: { components: {
MainTabBar MainTabBar
},
data() {
return {
footShow: false,
}
},
watch: {
$route(to, from) {
let ThisPage = to.path;
if (ThisPage === '/home' || ThisPage === '/detail' || ThisPage === '/profile' || ThisPage === '/cart'||ThisPage === '/category'||ThisPage ==='/moment') {
this.footShow = true
}else{
this.footShow=false
} }
},
} }
}
</script> </script>
<style> <style>
@import "./assets/css/base.css"; @import "./assets/css/base.css";
@media screen and (max-width: 500px) {
.el-message {
min-width: 300px !important;
}
}
</style> </style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

@ -0,0 +1 @@
<svg t="1609337718423" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2855" width="200" height="200"><path d="M887.466667 642.133333c-17.066667-6.4-34.133333 0-42.666667 17.066667-64 151.466667-221.866667 243.2-386.133333 221.866667-164.266667-21.333333-294.4-149.333333-315.733334-313.6C119.466667 405.333333 209.066667 245.333333 358.4 179.2c17.066667-6.4 23.466667-25.6 17.066667-42.666667-6.4-17.066667-25.6-23.466667-42.666667-17.066666C155.733333 198.4 51.2 386.133333 78.933333 578.133333c27.733333 192 179.2 343.466667 371.2 369.066667 19.2 2.133333 36.266667 4.266667 55.466667 4.266667 170.666667 0 330.666667-102.4 398.933333-264.533334 6.4-17.066667-2.133333-36.266667-17.066666-44.8z" p-id="2856" fill="#2c2c2c"></path><path d="M814.933333 209.066667C727.466667 121.6 612.266667 74.666667 490.666667 74.666667c-17.066667 0-32 14.933333-32 32v426.666666c0 17.066667 14.933333 32 32 32h426.666666c17.066667 0 32-14.933333 32-32 0-121.6-46.933333-236.8-134.4-324.266666zM522.666667 501.333333V140.8c93.866667 6.4 179.2 46.933333 247.466666 115.2 66.133333 66.133333 106.666667 153.6 115.2 247.466667h-362.666666z" p-id="2857" fill="#2c2c2c"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1 @@
<svg t="1609335475512" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1731" width="200" height="200"><path d="M848 160H624v400a111.984 111.984 0 0 0 112 112 112 112 0 0 0 112-112V160z" fill="#FFFFFF" p-id="1732"></path><path d="M441.504 437.664c-61.728-109.952-62.816-187.728-62.816-188.464V109.232a14 14 0 0 0 9.232-13.152v-66.08A13.984 13.984 0 0 0 373.968 16h-108.624a13.968 13.968 0 0 0-13.936 14v66.08c0 6.064 3.84 11.216 9.216 13.152v139.936c0 0.768-1.072 78.544-62.816 188.496-39.248 69.904-38.224 169.28-38.128 175.152l-0.016 342.24A52.896 52.896 0 0 0 212.416 1008h214.48a52.912 52.912 0 0 0 52.768-52.944L479.632 612.8c0.096-5.952 1.088-105.264-38.128-175.136z" fill="#FFFFFF" p-id="1733"></path><path d="M373.968 25.008c8.416 0.752 13.952 6.72 13.952 14v66.08c0 6.064-3.856 11.2-9.232 13.152v139.968c0 0.736 1.088 78.512 62.816 188.464 39.216 69.872 38.224 169.184 38.128 175.136l0.032 342.256c0 28.784-23.008 52.272-52.768 52.944H244.416a52.896 52.896 0 0 1-52.752-52.944l0.016-342.24c-0.096-5.872-1.12-105.248 38.128-175.152 61.744-109.952 62.816-187.728 62.816-188.496V118.24a13.968 13.968 0 0 1-9.216-13.152v-66.08c0-7.28 5.52-13.248 13.936-14h76.624z" fill="#5AB947" p-id="1734"></path><path d="M160 960V592h320v368" fill="#CCA733" p-id="1735"></path><path d="M176 720h288v112H176z" fill="#FFE183" p-id="1736"></path><path d="M378.688 112h-86.064v-2.768a13.968 13.968 0 0 1-9.216-13.152v-66.08c0-6.848 4.88-12.544 13.936-14h76.624l10.032 4.512v84.688l-5.312 4.032V112z" fill="#CCA733" p-id="1737"></path><path d="M848 160H656v416c0 25.456 10.112 49.872 28.112 67.888a96.048 96.048 0 0 0 135.776 0A96.048 96.048 0 0 0 848 576V160z" fill="#CBE9EA" p-id="1738"></path><path d="M848 368H656v208a96 96 0 1 0 192 0V368z" fill="#FFD140" p-id="1739"></path><path d="M292.624 112h86.064v61.184l-1.216 13.984a543.072 543.072 0 0 0 1.216 56.864v5.168c0 0.288 0.176 12.64 4.672 33.664A439.888 439.888 0 0 0 416 400l-96 80-78.352-65.296c50.048-97.584 50.976-164.816 50.976-165.536V112z" fill="#FFE183" p-id="1740"></path><path d="M736 896l-144 112h288l-144-112" fill="#CBE9EA" p-id="1741"></path></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -0,0 +1 @@
<svg t="1609337718423" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2855" width="200" height="200"><path d="M887.466667 642.133333c-17.066667-6.4-34.133333 0-42.666667 17.066667-64 151.466667-221.866667 243.2-386.133333 221.866667-164.266667-21.333333-294.4-149.333333-315.733334-313.6C119.466667 405.333333 209.066667 245.333333 358.4 179.2c17.066667-6.4 23.466667-25.6 17.066667-42.666667-6.4-17.066667-25.6-23.466667-42.666667-17.066666C155.733333 198.4 51.2 386.133333 78.933333 578.133333c27.733333 192 179.2 343.466667 371.2 369.066667 19.2 2.133333 36.266667 4.266667 55.466667 4.266667 170.666667 0 330.666667-102.4 398.933333-264.533334 6.4-17.066667-2.133333-36.266667-17.066666-44.8z" p-id="2856" fill="#707070"></path><path d="M814.933333 209.066667C727.466667 121.6 612.266667 74.666667 490.666667 74.666667c-17.066667 0-32 14.933333-32 32v426.666666c0 17.066667 14.933333 32 32 32h426.666666c17.066667 0 32-14.933333 32-32 0-121.6-46.933333-236.8-134.4-324.266666zM522.666667 501.333333V140.8c93.866667 6.4 179.2 46.933333 247.466666 115.2 66.133333 66.133333 106.666667 153.6 115.2 247.466667h-362.666666z" p-id="2857" fill="#707070"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1 @@
<svg t="1610537725362" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6790" width="12" height="12"><path d="M5.1 831.1h253.5c2.8 0 5.1-2.3 5.1-5.1s-2.3-5.1-5.1-5.1H5.1c-2.8 0-5.1 2.3-5.1 5.1 0 2.9 2.3 5.1 5.1 5.1z m314.3 0h55.8c2.8 0 5.1-2.3 5.1-5.1s-2.3-5.1-5.1-5.1h-55.8c-2.8 0-5.1 2.3-5.1 5.1 0.1 2.9 2.3 5.1 5.1 5.1z m106.5 0h253.5c2.8 0 5.1-2.3 5.1-5.1s-2.3-5.1-5.1-5.1H425.9c-2.8 0-5.1 2.3-5.1 5.1 0 2.9 2.3 5.1 5.1 5.1z m314.4 0H796c2.8 0 5.1-2.3 5.1-5.1s-2.3-5.1-5.1-5.1h-55.8c-2.8 0-5.1 2.3-5.1 5.1 0.1 2.9 2.4 5.1 5.2 5.1z m106.4 0h172.4c2.8 0 5.1-2.3 5.1-5.1s-2.3-5.1-5.1-5.1H846.7c-2.8 0-5.1 2.3-5.1 5.1 0.1 2.9 2.3 5.1 5.1 5.1z" fill="#3B0404" p-id="6791"></path><path d="M409.6 803.5H86.9c-14 0-25.4-11.4-25.4-25.4 0-14 11.4-25.4 25.4-25.4h118.2c-10.1-3.4-17.3-12.9-17.3-24 0-10.9 6.8-20.1 16.4-23.7h-73.9c-14 0-25.4-11.4-25.4-25.4 0-14 11.4-25.4 25.4-25.4h130.1l-40.8-40.8-1.8-1.8c-88.1-88.1-88.1-231 0-319.1s231-88.1 319.1 0l1.8 1.8 1.8-1.8c88.1-88.1 231-88.1 319.1 0 88.1 88.1 88.1 231 0 319.1l-1.8 1.8L560.2 911c-11.9 11.9-31.1 11.9-43 0L409.6 803.5zM54.5 753.1c-14 0-25.4-11.4-25.4-25.4 0-14 11.4-25.4 25.4-25.4s25.4 11.4 25.4 25.4c0 14.1-11.4 25.4-25.4 25.4z" fill="#FF5E5E" p-id="6792"></path><path d="M668.1 228.8c67.9-9.7 139.3 11.6 191.5 63.8 88.1 88.1 88.1 231 0 319.1l-1.8 1.8L560.2 911c-11.9 11.9-31.1 11.9-43 0l-5.1-5.1 291.3-291.4 1.8-1.8c88.1-88.1 88.1-231 0-319.1-38.3-38.2-87-59.9-137.1-64.8z" fill="#CB2828" p-id="6793"></path><path d="M196 633.3c2 2 2 5.2 0 7.2s-5.2 2-7.2 0L165.3 617l-1-1-0.3-0.3-0.5-0.5c-54.3-54.3-77.4-130.8-63.8-204.9 0.5-2.8 3.1-4.6 5.9-4.1 2.8 0.5 4.6 3.1 4.1 5.9-13 70.9 9.1 144 61 195.9l0.5 0.5 0.3 0.3 1.1 1.1 23.4 23.4z m-85.3-226c-0.6 2.7-3.2 4.5-6 3.9-2.7-0.6-4.5-3.2-3.9-6 0.3-1.7 0.7-3.4 1.1-5.1 0.6-2.7 3.3-4.4 6.1-3.8 2.7 0.6 4.4 3.3 3.8 6.1-0.4 1.6-0.7 3.3-1.1 4.9z m17.4-51.2c-1.2 2.5-4.3 3.6-6.8 2.4s-3.6-4.3-2.4-6.8c11.1-23 26-44 44.5-62.5 44.3-44.3 103.3-68.1 164.6-67.7 2.8 0 5.1 2.3 5 5.1 0 2.8-2.3 5.1-5.1 5-58.6-0.3-115 22.4-157.4 64.7-17.5 17.7-31.8 37.8-42.4 59.8zM333 231.7c-2.8-0.1-5-2.4-4.9-5.2 0.1-2.8 2.4-5 5.2-4.9 1.7 0 3.5 0.1 5.2 0.2 2.8 0.1 4.9 2.5 4.8 5.3-0.1 2.8-2.5 4.9-5.3 4.8-1.7-0.1-3.4-0.2-5-0.2z m272.4-6c2.7-0.5 5.4 1.3 5.9 4s-1.3 5.4-4 5.9c-42.8 8.3-82.3 29-113.9 60.6l-0.4 0.4-1.5 1.5c-2 2-5.2 2-7.2-0.1-0.6-0.6-1.2-1.2-1.7-1.8-26.9-26.9-59.7-46-95.5-56.2-2.7-0.8-4.3-3.6-3.5-6.3 0.8-2.7 3.6-4.3 6.3-3.5 36.7 10.4 70.3 29.8 98.2 57 32.6-31.9 73.2-53 117.3-61.5z m6.6 9c-2.8 0.5-5.4-1.4-5.9-4.1-0.5-2.8 1.4-5.4 4.1-5.9 1.7-0.3 3.4-0.6 5.1-0.8 2.8-0.4 5.3 1.5 5.8 4.3 0.4 2.8-1.5 5.3-4.3 5.8-1.5 0.2-3.2 0.5-4.8 0.7z m54.6-2.5c-2.8-0.2-4.9-2.7-4.7-5.4 0.2-2.8 2.7-4.9 5.4-4.7 54.4 4.2 105.7 27.5 145.1 66.9 23.1 23.1 40.7 50.3 52.2 80.2 1 2.6-0.3 5.5-2.9 6.6-2.6 1-5.5-0.3-6.6-2.9-11-28.5-27.8-54.6-49.9-76.7-37.6-37.7-86.6-59.9-138.6-64zM857 377.5c-0.9-2.6 0.4-5.5 3.1-6.5 2.6-0.9 5.5 0.4 6.5 3.1 0.6 1.6 1.1 3.3 1.7 4.9 0.9 2.7-0.6 5.5-3.2 6.4-2.7 0.9-5.5-0.6-6.4-3.2-0.6-1.6-1.2-3.1-1.7-4.7z m11.9 53.1c-0.3-2.8 1.8-5.3 4.6-5.5 2.8-0.3 5.3 1.8 5.5 4.6 6.7 68.3-17 136.2-66.5 185.7l-1.8 1.8-36.8 36.8c-2 2-5.2 2-7.2 0s-2-5.2 0-7.2l36.8-36.8c0.6-0.6 1.2-1.2 1.8-1.7 47.3-47.5 69.9-112.5 63.6-177.7zM763.1 650.2c2-2 5.2-2 7.2 0s2 5.2 0 7.2l-3.6 3.6c-2 2-5.2 2-7.2 0s-2-5.2 0-7.2l3.6-3.6z m-39.4 39.5c2-2 5.2-2 7.2 0s2 5.2 0 7.2L551.6 876.1c-2 2-5.2 2-7.2 0s-2-5.2 0-7.2l179.3-179.2zM540.9 872.5c2-2 5.2-2 7.2 0s2 5.2 0 7.2l-3.6 3.6c-2 2-5.2 2-7.2 0s-2-5.2 0-7.2l3.6-3.6z m-39.1 38.3c-9.8 6.4-22.9 5.2-31.4-3.1L367.8 805.1c-2-2-5.2-2-7.2 0s-2 5.2 0 7.2L463.3 915c12 11.6 30.3 13.3 44.1 4.4 2.3-1.5 3-4.7 1.5-7-1.6-2.4-4.7-3.1-7.1-1.6z" fill="#3B0404" p-id="6794"></path><path d="M494.3 514.2c-8.4 0-15.2-6.8-15.2-15.2s6.8-15.2 15.2-15.2c8.4 0 15.2 6.8 15.2 15.2s-6.8 15.2-15.2 15.2z m91.3 0c-8.4 0-15.2-6.8-15.2-15.2s6.8-15.2 15.2-15.2 15.2 6.8 15.2 15.2-6.8 15.2-15.2 15.2zM465.1 583.3c18.7 22.9 46.6 36.5 76.7 36.5 29.2 0 56.3-12.7 74.9-34.4 1.8-2.1 1.6-5.3-0.5-7.2-2.1-1.8-5.3-1.6-7.2 0.5-16.8 19.5-41.1 30.9-67.3 30.9-27 0-52.1-12.2-68.8-32.7-1.8-2.2-5-2.5-7.1-0.7s-2.5 5-0.7 7.1z" fill="#3B0404" p-id="6795"></path><path d="M428.4 559.9c-8.4 0-15.2-6.8-15.2-15.2 0-8.4 6.8-15.2 15.2-15.2 8.4 0 15.2 6.8 15.2 15.2 0 8.4-6.8 15.2-15.2 15.2z m223.1 0c-8.4 0-15.2-6.8-15.2-15.2 0-8.4 6.8-15.2 15.2-15.2s15.2 6.8 15.2 15.2c0 8.4-6.8 15.2-15.2 15.2z" fill="#CB2828" p-id="6796"></path><path d="M332.1 483.8c-30.8 0-55.8-25-55.8-55.8s25-55.8 55.8-55.8 55.8 25 55.8 55.8-25 55.8-55.8 55.8z m415.8 0c-30.8 0-55.8-25-55.8-55.8s25-55.8 55.8-55.8 55.8 25 55.8 55.8-25 55.8-55.8 55.8z" fill="#F54040" p-id="6797"></path><path d="M871.4 125.7v-0.3c0-14.9 12.1-26.9 26.9-26.9s26.9 12.1 26.9 26.9V160.6c0 10.5-8.5 19-19 19H871c-14.9 0-26.9-12.1-26.9-26.9s12.1-26.9 26.9-26.9c0.2-0.1 0.3-0.1 0.4-0.1z" fill="#FF5E5E" p-id="6798"></path></svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

@ -0,0 +1 @@
<svg t="1609566295399" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2631" width="20" height="20"><path d="M621.674667 408.021333c16.618667-74.24 28.224-127.936 34.837333-161.194666C673.152 163.093333 629.941333 85.333333 544.298667 85.333333c-77.226667 0-116.010667 38.378667-138.88 115.093334l-0.586667 2.24c-13.728 62.058667-34.72 110.165333-62.506667 144.586666a158.261333 158.261333 0 0 1-119.733333 58.965334l-21.909333 0.469333C148.437333 407.808 106.666667 450.816 106.666667 503.498667V821.333333c0 64.8 52.106667 117.333333 116.394666 117.333334h412.522667c84.736 0 160.373333-53.568 189.12-133.92l85.696-239.584c21.802667-60.96-9.536-128.202667-70.005333-150.186667a115.552 115.552 0 0 0-39.488-6.954667H621.674667zM544.256 149.333333c39.253333 0 59.498667 36.48 49.888 84.928-7.573333 38.144-21.984 104.426667-43.221333 198.666667-4.512 20.021333 10.56 39.093333 30.912 39.093333h218.666666c6.101333 0 12.16 1.066667 17.909334 3.168 27.445333 9.984 41.674667 40.554667 31.776 68.266667l-85.568 239.573333C744.981333 838.026667 693.301333 874.666667 635.402667 874.666667H223.498667C194.314667 874.666667 170.666667 850.784 170.666667 821.333333V503.498667c0-17.866667 14.144-32.448 31.829333-32.821334l21.866667-0.469333a221.12 221.12 0 0 0 167.381333-82.56c34.346667-42.602667 59.146667-99.306667 74.869333-169.877333C482.101333 166.336 499.552 149.333333 544.266667 149.333333z" p-id="2632" fill="#707070"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -0,0 +1 @@
<svg t="1609337092663" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3052" width="200" height="200"><path d="M934.4 206.933333c-17.066667-4.266667-34.133333 6.4-38.4 23.466667l-23.466667 87.466667C797.866667 183.466667 654.933333 96 497.066667 96 264.533333 96 74.666667 281.6 74.666667 512s189.866667 416 422.4 416c179.2 0 339.2-110.933333 398.933333-275.2 6.4-17.066667-2.133333-34.133333-19.2-40.533333-17.066667-6.4-34.133333 2.133333-40.533333 19.2-51.2 138.666667-187.733333 232.533333-339.2 232.533333C298.666667 864 138.666667 706.133333 138.666667 512S300.8 160 497.066667 160c145.066667 0 277.333333 87.466667 330.666666 217.6l-128-36.266667c-17.066667-4.266667-34.133333 6.4-38.4 23.466667-4.266667 17.066667 6.4 34.133333 23.466667 38.4l185.6 49.066667c2.133333 0 6.4 2.133333 8.533333 2.133333 6.4 0 10.666667-2.133333 17.066667-4.266667 6.4-4.266667 12.8-10.666667 14.933333-19.2l49.066667-185.6c0-17.066667-8.533333-34.133333-25.6-38.4z" p-id="3053" fill="#dbdbdb"></path></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

@ -19,6 +19,10 @@ export default {
type:Boolean, type:Boolean,
default: false default: false
}, },
pullDownLoad:{
type:Boolean,
default: false
},
}, },
data(){ data(){
return{ return{
@ -29,17 +33,27 @@ export default {
this.scroll=new BScroll(this.$refs.wrapper,{ this.scroll=new BScroll(this.$refs.wrapper,{
click:true, click:true,
probeType:this.probeType, probeType:this.probeType,
pullUpLoad: this.pullUpLoad, pullUpLoad: {
threshold: 80,
stop: 80
},
useTransition:false, useTransition:false,
pullDownRefresh: {
threshold: 40,
stop: 30
}
}) })
this.scroll.on('scroll',(position)=>{ this.scroll.on('scroll',(position)=>{
this.$emit('scroll',position) this.$emit('scrollw',position)
}) })
this.scroll.on('pullingUp',()=>{ this.scroll.on('pullingUp',()=>{
this.$emit('pullingUp') this.$emit('pullingUp')
}) })
this.scroll.on('pullingDown',()=>{
this.$emit('pullingDown')
})
this.scroll.scrollTo(0,0) this.scroll.scrollTo(0,0)
@ -51,12 +65,18 @@ export default {
finishPullUp(){ finishPullUp(){
this.scroll && this.scroll.finishPullUp() this.scroll && this.scroll.finishPullUp()
}, },
finishPullDown(){
this.refresh()
this.scroll && this.scroll.finishPullDown()
},
refresh(){ refresh(){
this.scroll && this.scroll.refresh() this.scroll && this.scroll.refresh()
}, },
getScrollY(){ getScrollY(){
return this.scroll ? this.scroll.y : 0 return this.scroll ? this.scroll.y : 0
} },
} }
} }
</script> </script>

@ -18,7 +18,7 @@ name: "NavBar"
line-height: 44px; line-height: 44px;
height: 44px; height: 44px;
text-align: center; text-align: center;
box-shadow: 0 1px 1px rgba(100,100,100,.1); box-shadow: 0 1px 1px rgba(224, 217, 217, 0.1);
position: relative; position: relative;
z-index: 10; z-index: 10;
} }

@ -13,7 +13,7 @@ export default {
path:String, path:String,
activeColor:{ activeColor:{
type:String, type:String,
default:'red' default:'black'
} }
}, },
data(){ data(){

@ -1,5 +1,5 @@
<template> <template>
<div class="check-button" :class="{check:isCheck}" @click=""> <div class="check-button" :class="{check:isCheck}" >
<img src="@/assets/img/cart/tick.svg" alt=""> <img src="@/assets/img/cart/tick.svg" alt="">
</div> </div>
</template> </template>

@ -0,0 +1,85 @@
<template>
<Scroll
class="content"
ref="scroll"
:probe-type="3"
:pull-up-load="true"
@pullingUp="loadMore"
@pullingDown="pullingDown"
>
<div class="pulldown" v-show="pullingdown">Loading...</div>
<CommentListItem class="moment-list-item" v-for="(item,index) in newcomments" :key="index" :comments="item" :Author="Author" ></CommentListItem>
</Scroll>
</template>
<script>
import Scroll from '@/components/common/Scroll/Scroll'
import CommentListItem from '@/components/content/comments/CommentListItem'
export default {
name:"CommentList",
components: {
CommentListItem,
Scroll
},
data(){
return{
pullingdown:false
}
},
props:{
newcomments:{
type:Array,
defalut(){
return []
}
},
Author:{
type:Object,
defalut(){
return {}
}
}
},
created(){
window.sessionStorage.setItem('ispraise','1')
},
methods:{
loadMore(){
this.$refs.scroll.refresh()
},
pullingDown() {
this.pullingdown = true;
setTimeout(() => {
this.pullingdown = false;
this.$refs.scroll.finishPullDown();
}, 1000)
}
}
}
</script>
<style scoped>
.content{
left: 0;
right: 0;
overflow: hidden;
top:300px;
bottom:50px;
position: absolute;
}
.moment-list-item{
margin-top:10px;
}
.pulldown {
color: rgb(51, 46, 46);
text-align: center;
top: 30px;
z-index: 100;
font-size: 10px;
}
</style>

@ -0,0 +1,58 @@
<template>
<div class="comment-items" @click="createcomment">
{{ comments.user.name }}回复:{{this.name}}:{{ comments.content}}
</div>
</template>
<script>
export default {
name: "CommentListItem",
props: {
comments: {
type: Object,
default() {
return {};
},
},
Author:{
type:Object,
default(){
return {}
}
}
},
data() {
return {
name:''
};
},
created() {
this.getName()
},
methods: {
createcomment() {
this.$bus.$emit('commentId',this.comments.id)
this.$bus.$emit('comment')
},
async getName(){
const {data:res} = await this.$http.get('/comment/'+this.comments.comment_id)
this.name=res.user&&res.user.name;
if(this.name == undefined){
this.name=this.Author.name
}
}
},
mounted(){
}
};
</script>
<style scoped>
.comment-items {
position: relative;
width: 100%;
font-size: 15px;
}
</style>

@ -16,7 +16,7 @@ name: "GoodsList",
goods:{ goods:{
type:Array, type:Array,
default(){ default(){
return [] return {}
} }
} }
} }

@ -10,6 +10,11 @@
<img slot="item-icon-active" src="~assets/img/tabbar/category_active.svg" alt=""> <img slot="item-icon-active" src="~assets/img/tabbar/category_active.svg" alt="">
<div slot="item-text">分类</div> <div slot="item-text">分类</div>
</tab-bar-item > </tab-bar-item >
<tab-bar-item path="/moment" activeColor="red" >
<img slot="item-icon" src="~assets/img/moment/hub.svg" alt="">
<img slot="item-icon-active" src="~assets/img/moment/active_hub.svg" alt="">
<div slot="item-text">酒乡</div>
</tab-bar-item>
<tab-bar-item path="/cart" activeColor="red"> <tab-bar-item path="/cart" activeColor="red">
<img slot="item-icon" src="~assets/img/tabbar/cart.svg" alt=""> <img slot="item-icon" src="~assets/img/tabbar/cart.svg" alt="">
<img slot="item-icon-active" src="~assets/img/tabbar/cart_active.svg" alt=""> <img slot="item-icon-active" src="~assets/img/tabbar/cart_active.svg" alt="">
@ -22,18 +27,18 @@
</tab-bar-item> </tab-bar-item>
</tab-bar> </tab-bar>
</template> </template>
<script> <script>
import TabBar from "@/components/common/tabbar/TabBar"; import TabBar from "@/components/common/tabbar/TabBar";
import TabBarItem from "@/components/common/tabbar/TabBarItem"; import TabBarItem from "@/components/common/tabbar/TabBarItem";
export default { export default {
name: "MainTabBar", name: "MainTabBar",
components:{ components:{
TabBar, TabBar,
TabBarItem TabBarItem
} },
} }
</script> </script>

@ -0,0 +1,42 @@
<template>
<div class="moment-list">
<MomentListItem class="moment-list-item" v-for="(item,index) in moments" :key="index" :moments="item"></MomentListItem>
</div>
</template>
<script>
import MomentListItem from '@/components/content/moments/MomentListItem'
export default {
name:"MomentList",
components: {
MomentListItem
},
props:{
moments:{
type:Array,
defalut(){
return []
}
}
},
created(){
},
}
</script>
<style scoped>
.moment-list{
display: flex;
flex-wrap: wrap;
justify-content: space-around;
font-size: 30px;
background-color: rrgba(212, 212, 212, 0.329);
}
.moment-list-item{
margin-top:5px;
background-color: #ffffff;
}
</style>

@ -0,0 +1,217 @@
<template>
<div class="moment-items" v-if="isExist">
<div>
<img
class="avatar"
@load="uploadavatar"
v-lazy="showImage"
/>
</div>
<div class="name">{{ moments.author.name }}</div>
<i
@click="remove"
id="delete"
class="el-icon-delete"
style="font-size: 20px"
></i>
<div class="time">
{{ this.$moment(moments.createAT).format("YYYY-MM-DD HH:mm:ss") }}
</div>
<div class="content">
<div class="text">{{ moments.content }}</div>
<div class="image">
<li
v-for="(item, index) in moments.images"
:key="index"
class="picture"
>
<img
@load="uploadavatar"
width="100px"
height="100px"
v-lazy="item"
/>
</li>
</div>
</div>
<div class="icon" v-if="this.isdisplay">
<i id="icon-1" @click="clickpraise"
><img src="@/assets/img/moment/praise.svg" /></i
>{{ this.praise.promiseCount }}
<i
id="icon-1"
class="el-icon-chat-dot-square"
style="font-size: 20px"
@click="comment"
></i>
<div class="number">{{ moments.commentCount }}</div>
</div>
</div>
</template>
<script>
export default {
name: "MomentListItem",
props: {
moments: {
type: Object,
default() {
return {};
},
},
},
data() {
return {
id: this.moments.id,
isExist: true,
images: [],
praise: {},
isdisplay: true,
number: "",
isfrist: true,
};
},
created() {
this.getAllPraise();
window.sessionStorage.setItem("number", "0");
},
computed:{
showImage(){
return this.moments.author.avatarUrl
},
},
methods: {
uploadavatar() {
this.$bus.$emit("upload");
},
async remove() {
const { data: res } = await this.$http.delete("/moment/" + this.id);
if (res.status == 200) {
this.isExist = !this.isExist;
return this.$message.success("删除成功");
this.$bus.$emit("upload");
} else {
return this.$message.error("你不具备删除该动态权限");
}
},
comment() {
this.$router.push("detailcomment/" + this.moments.id);
},
async getAllPraise() {
const { data: res } = await this.$http.get("/praise/" + this.moments.id);
this.praise = res;
},
refresh() {
this.isdisplay = false;
this.$nextTick(() => {
this.isdisplay = true;
}, 100);
this.getAllPraise();
},
//
async clickpraise() {
const {data:res}= await this.$http.post('/praise/ispraise/'+this.moments.id)
if(res.status!= "200"){
this.number=window.sessionStorage.getItem("number");
if (this.number === "1") window.sessionStorage.setItem("number", "0");
else {
window.sessionStorage.setItem("number", "1");
}
}
if (res.status == "200") {
await this.$http.post("/praise/" + this.moments.id);
this.$nextTick(() => {
this.refresh();
}, 100);
} else {
this.number = window.sessionStorage.getItem("number");
const content = {
ispraise: "",
};
content.ispraise = this.number;
const { data: res } = await this.$http.post(
"/praise/update/" + this.moments.id,
content
);
this.$nextTick(() => {
this.refresh();
}, 100);
}
},
isclickpraise(){
console.log(1);
}
},
mounted() {
this.$bus.$on("aaispraise", this.isclickpraise);
},
};
</script>
<style scoped>
.moment-items {
position: relative;
background-color: rgb(255, 255, 255);
width: 100%;
font-size: 5px;
}
.avatar {
float: left;
width: 50px;
height: 50px;
border-radius: 25px;
}
.name {
float: left;
margin-top: 5px;
margin-left: 10px;
color: rgb(0, 0, 0);
font-size: 15px;
}
.time {
margin-left: 60px;
margin-top: 30px;
font-size: 6px;
}
.content {
margin-top: 15px;
margin-left: 5px;
font-size: 15px;
margin-bottom: 15px;
}
.icon {
margin-top: 15px;
display: flex;
border-top-style: solid;
border-width: 0.1px;
border-color: rgb(230, 220, 220);
}
#icon-1 {
margin-left: 30%;
}
#delete {
float: right;
}
.el-icon-delete {
margin-left: 20px;
}
.remove {
margin-left: 20px;
}
.picture {
margin-top: 30px;
display: inline;
}
.text {
margin-top: 15px;
}
.image {
margin-top: 10px;
}
</style>

@ -0,0 +1,39 @@
<template>
<div class="moment-list">
<PraiseListItem
v-for="(item, index) in praises"
:key="index"
:praise="item"
></PraiseListItem>
</div>
</template>
<script>
import PraiseListItem from "@/components/content/praises/PraiseListItem";
export default {
name: "PraiseList",
components: {
PraiseListItem,
},
props: {
praises: {
type: Array,
defalut() {
return [];
},
},
},
};
</script>
<style scoped>
.moment-list {
left: 0;
right: 0;
overflow: hidden;
top: 230px;
height: 70px;
position: absolute;
}
</style>

@ -0,0 +1,29 @@
<template>
<span class="praise" >
<img src="@/assets/img/moment/praise-icon.svg">
{{praise.name}}{{ispraise}}
</span>
</template>
<script>
export default {
name: "PraiseListItem",
props: {
praise: {
type: Object,
default() {
return {};
},
},
},
data(){
return{
ispraise:"点赞"
}
}
};
</script>
<style scoped>
</style>

@ -1,7 +1,7 @@
<template> <template>
<div class="tab-control"> <div class="tab-control">
<div v-for="(item,index) in titles" <div v-for="(item,index) in titles"
class="tab-control-item" :class="{active:index===currentIndex}" @click="itemclick(index)"> class="tab-control-item" :key=index :class="{active:index===currentIndex}" @click="itemclick(index)">
<span>{{item}}</span> <span>{{item}}</span>
</div> </div>
</div> </div>

@ -4,21 +4,69 @@ import router from './router'
import store from "@/store"; import store from "@/store";
import FastClick from 'fastclick' import FastClick from 'fastclick'
import VueLazyload from "vue-lazyload"; import VueLazyload from "vue-lazyload";
import request from '@/network/request';
import moment from 'moment'
//放大图片
import VueDirectiveImagePreviewer from 'vue-directive-image-previewer'
import 'vue-directive-image-previewer/dist/assets/style.css'
Vue.use(VueDirectiveImagePreviewer)
require('./plugins/element')
require('./plugins/mint')
//全局变量
import toast from'@/components/common/toast' import toast from'@/components/common/toast'
Vue.use(toast)
//公共请求头
Vue.prototype.$http=request;
Vue.config.productionTip = false Vue.config.productionTip = false
//挂载全局变量
Vue.prototype.$bus = new Vue() Vue.prototype.$bus = new Vue()
Vue.prototype.$moment = moment;
//zidon
Vue.use(toast) // 注册一个全局自定义指令 `v-focus`
Vue.directive('focus', {
// 当被绑定的元素插入到 DOM 中时……
inserted: function (el) {
// 聚焦元素
el.focus()
}
})
//懒加载图片
Vue.use(VueLazyload,{ Vue.use(VueLazyload,{
loading:require('./assets/img/common/placeholder.png') loading:require('./assets/img/common/placeholder.png')
}) })
//移动切换0.3秒延迟
// FastClick.attach(document.body)
FastClick.attach(document.body)
new Vue({ new Vue({
render: h => h(App), render: h => h(App),
router, router,
store, store,
}).$mount('#app') }).$mount('#app')
// 用于解决input输入框需要点击多次的问题只发生在苹果手机
FastClick.prototype.focus = function (targetElement) {
let length;
if (targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') {
length = targetElement.value.length;
targetElement.focus();
targetElement.setSelectionRange(length, length);
} else {
targetElement.focus();
}
};

@ -0,0 +1,39 @@
import axios from 'axios'
export function request(config) {
const instance = axios.create({
baseURL: 'http://117.78.10.101:8001/',
timeout:10000
})
//拦截器赋值token
instance.interceptors.request.use(config => {
config.headers.Authorization = window.sessionStorage.getItem('token')
return config
})
return instance(config)
}
//拦截
// instance.interceptors.request.use(config=>{
// config.headers.Authorization=window.sessionStorage.getItem('token')
// return config
// })
///http://152.136.185.210:8000/api/w6/category
// //拦截
// instance.interceptors.request.use(config=>{
// console.log(config);
// return config
// },
// err=>{
// // console.log(err)
// })
//
// instance.interceptors.request.use(res=>{
// return res.get
// },err=>{
// console.log(err);
// })

@ -0,0 +1,15 @@
import axios from 'axios'
export function request(config) {
const instance = axios.create({
baseURL: 'http://152.136.185.210:8000/api/w6/',
})
//拦截器赋值token
return instance(config)
}
// instance.interceptors.request.use(config => {
// config.headers.Authorization = window.sessionStorage.getItem('token')
// return config
// })

@ -1,4 +1,4 @@
import {request} from "@/network/request"; import {request} from "@/network/Requests";
export function getCategory() { export function getCategory() {

@ -0,0 +1,18 @@
import {
request
} from "@/network/Axios";
export function getComment(id){
return request({
url:'/moment/'+id,
})
}
export function getAllCommnet(momentId){
return request({
url:'/comment',
params:{
momentId
}
})
}

@ -0,0 +1,19 @@
import {
request
} from './Axios.js'
export function createMoment1(content){
return request({
url:'/moment',
data:content,
method:"post",
})
}
export function createMoment2(url,content){
return request({
url:url,
data:content,
method:"post",
})
}

@ -1,4 +1,4 @@
import {request} from "@/network/request"; import {request} from "@/network/Requests";
export function getDetail(iid){ export function getDetail(iid){
return request({ return request({

@ -1,4 +1,4 @@
import {request} from "@/network/request"; import {request} from "@/network/Requests";
export function getHomeMutidata(){ export function getHomeMutidata(){
return request({ return request({

@ -0,0 +1,13 @@
import {
request
} from "@/network/Axios";
export function getMomentList(offset, size) {
return request({
url: '/moment',
params: {
offset,
size,
}
})
}

@ -1,28 +1,11 @@
import axios from 'axios'
export function request(config){
const instance =axios.create({
baseURL:'http://152.136.185.210:8000/api/w6',
timeout:5000
})
///http://152.136.185.210:8000/api/w6/category import axios from 'axios'
// //拦截 axios.defaults.baseURL='http://117.78.10.101:8001/'
// instance.interceptors.request.use(config=>{
// console.log(config);
// return config
// },
// err=>{
// // console.log(err)
// })
//
// instance.interceptors.request.use(res=>{
// return res.get
// },err=>{
// console.log(err);
// })
return instance(config) axios.interceptors.request.use(config=>{
} config.headers.Authorization=window.sessionStorage.getItem('token')
return config
})
export default axios;

@ -0,0 +1,7 @@
// import {request} from "@/network/request";
// export function upload(){
// return request({
// url:'/upload/1/avatar',
// })
// }

@ -0,0 +1,15 @@
import Vue from 'vue'
import ElementUI from 'element-ui'
import {Form,FormItem,Input,Message,Button,Upload} from 'element-ui'
//vue2.x缺少样式
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)
Vue.use(Button)
Vue.use(FormItem)
Vue.use(Form)
Vue.use(Input)
Vue.use(Upload)
Vue.prototype.$message=Message

@ -0,0 +1,13 @@
import Vue from 'vue'
import { Button } from 'vant';
import { Uploader } from 'vant';
import { Popup } from 'vant';
import {Field } from 'vant'
import 'vant/lib/index.css';
import '@vant/touch-emulator';
Vue.use(Button)
Vue.use(Uploader);
Vue.use(Popup);
Vue.use(Field );

@ -6,13 +6,39 @@ const Category=()=>import('../views/category/Category')
const Cart = () => import('../views/cart/Cart') const Cart = () => import('../views/cart/Cart')
const Profile = () => import('../views/profile/Profile') const Profile = () => import('../views/profile/Profile')
const Detail = () => import('../views/detail/Detail') const Detail = () => import('../views/detail/Detail')
const Login = () => import('../views/login/Login')
const Register = () => import('../views/login/Register')
const SetupProfile = () =>import('../views/setupProfile/SetupProfile')
const Moment=()=>import('../views/moment/Moment')
const CreateMoment=()=>import('../views/moment/childComps/CreateMoment')
const DetailMoment=()=>import('../views/moment/childComps/DetailMoment')
Vue.use(Router) Vue.use(Router)
const routes = [ const routes = [
{ {
path: '', path: '',
redirect:'/home' redirect: '/login'
},
{
path: '/login',
component: Login,
},
{
path: '/setupprofile',
component: SetupProfile,
},
{
path: '/moment',
component: Moment
},
{
path: '/detailcomment/:iid',
component: DetailMoment
},
{
path: '/register',
component: Register,
}, },
{ {
path: '/home', path: '/home',
@ -33,10 +59,28 @@ const routes=[
{ {
path: '/detail/:iid', path: '/detail/:iid',
component: Detail component: Detail
},
{
path:'/createmoment',
component:CreateMoment
} }
] ]
const router = new Router({ const router = new Router({
routes, routes,
mode: 'history', mode: 'history',
meta:{
footShow:true,
},
}) })
//挂载路由导航守卫
router.beforeEach((to,from,next)=>{
//to将要访问的路径、from代表从哪个路径跳转而来、next是一个函数表示放行
if(to.path === '/login'||'/register') return next();
const tokenStr = window.sessionStorage.getItem('token')
if(!tokenStr) return next('/login')
next()
})
export default router export default router

@ -10,6 +10,7 @@ const state={
cartList:[], cartList:[],
counter:0, counter:0,
number:0, number:0,
ispraise:false
} }
const store = new Vuex.Store({ const store = new Vuex.Store({

@ -19,7 +19,7 @@
<span>{{commentInfo.style}}</span> <span>{{commentInfo.style}}</span>
</div> </div>
<div class="info-imgs"> <div class="info-imgs">
<img :src="item" v-for="(item, index) in commentInfo.images"> <img :src="item" v-for="(item, index) in commentInfo.images" :key="index">
</div> </div>
</div> </div>
</div> </div>

@ -7,7 +7,7 @@
</tr> </tr>
</table> </table>
<table class="info-param"> <table class="info-param">
<tr v-for="(info, index) in paramInfo.infos"> <tr v-for="(info, index) in paramInfo.infos" :key="index">
<td class="info-param-key">{{info.key}}</td> <td class="info-param-key">{{info.key}}</td>
<td class="param-value">{{info.value}}</td> <td class="param-value">{{info.value}}</td>
</tr> </tr>

@ -1,6 +1,6 @@
<template> <template>
<swiper class="swiper-item"> <swiper class="swiper-item">
<swiper-item v-for="(item,index) in topImages"> <swiper-item v-for="(item,index) in topImages" :key="item">
<img :src="item" :key="index" alt=""> <img :src="item" :key="index" alt="">
</swiper-item> </swiper-item>
</swiper> </swiper>

@ -8,9 +8,11 @@
v-show="isTabFixed"></TabControl> v-show="isTabFixed"></TabControl>
<scroll class="content" ref="scroll" <scroll class="content" ref="scroll"
:probe-type="3" :probe-type="3"
@scroll="contentScoll"
:pull-up-load="true" :pull-up-load="true"
@pullingUp="loadMore"> @pullingUp="loadMore"
@pullingDown="pullingDown"
@scrollw="contentScoll">
<div class="pulldown" v-show="pullingdown"><span>Loading...</span></div>
<home-swiper :banners="banners" @swiperImageLoad="swiperImageLoad"></home-swiper> <home-swiper :banners="banners" @swiperImageLoad="swiperImageLoad"></home-swiper>
<home-recommend-view :recommends="recommends"></home-recommend-view> <home-recommend-view :recommends="recommends"></home-recommend-view>
<HomefeatureView></HomefeatureView> <HomefeatureView></HomefeatureView>
@ -65,6 +67,7 @@ export default {
}, },
currentType:'pop', currentType:'pop',
// result:null // result:null
pullingdown:false,
} }
}, },
mixins:[itemListenerMixin,backTopMixin], mixins:[itemListenerMixin,backTopMixin],
@ -113,11 +116,18 @@ export default {
// //
loadMore(){ loadMore(){
this.getHomeGoods(this.currentType) this.getHomeGoods(this.currentType)
this.$refs.scroll.scroll.refresh() this.$refs.scroll.refresh()
}, },
// //
swiperImageLoad(){ swiperImageLoad(){
this.tabOffsetTop=this.$refs.tabControl2.$el.offsetTop this.tabOffsetTop=this.$refs.tabControl2.$el.offsetTop
},
pullingDown() {
this.pullingdown = true;
setTimeout(() => {
this.pullingdown = false;
this.$refs.scroll.finishPullDown();
}, 1000)
} }
}, },
computed:{ computed:{
@ -170,4 +180,12 @@ export default {
position: relative; position: relative;
z-index: 24; z-index: 24;
} }
.pulldown {
color: black;
text-align: center;
top: 30px;
z-index: 100;
font-size: 10px;
color: rgb(150, 138, 138);
}
</style> </style>

@ -1,6 +1,6 @@
<template> <template>
<div class="recommends"> <div class="recommends">
<div v-for="item in recommends" class="recommends-item"> <div v-for="item in recommends" :key="item.link" class="recommends-item">
<a :href="item.link"> <a :href="item.link">
<img :src="item.image" alt=""> <img :src="item.image" alt="">
<div>{{item.title}}</div> <div>{{item.title}}</div>

@ -1,6 +1,6 @@
<template> <template>
<swiper> <swiper>
<swiperItem v-for="item in banners"> <swiperItem v-for="item in banners" :key="item.link">
<a :href="item.link" > <a :href="item.link" >
<img :src="item.image" alt="" @load="imageLoad"> <img :src="item.image" alt="" @load="imageLoad">
</a> </a>

@ -0,0 +1,157 @@
<template>
<Scroll>
<div class="login_container">
<div class="login_box">
<!-- 头像区域 -->
<div class="avatar_box">
<img src="@/assets/img/cart/logo.jpg" alt="" />
</div>
<!-- 登陆区域 -->
<el-form
ref="loginFormRef"
label-width="0px"
class="login_form"
:model="loginForm"
:rules="loginFormRules"
>
<el-form-item prop="name">
<el-input
placeholder="请输入用户名"
v-model="loginForm.name"
prefix-icon="el-icon-user-solid"
></el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
placeholder="请输入密码"
v-model="loginForm.password"
prefix-icon="el-icon-s-goods"
type="password"
></el-input>
</el-form-item>
<!-- 按钮区域 -->
<el-form-item class="btns">
<el-row>
<el-button type="primary" @click="login"></el-button>
<el-button type="info" @click="infoRegister"></el-button>
</el-row>
</el-form-item>
</el-form>
</div>
</div>
<div class="footer" v-show="this.isshow">
</div>
</Scroll>
</template>
<script>
// import loginfature from "./chilidComps/loginfature"
import Scroll from '@/components/common/Scroll/Scroll'
export default {
name: "login",
components: {
Scroll
},
data() {
return {
docmHeight: document.documentElement.clientHeight, //
showHeight: document.documentElement.clientHeight, //
isshow:true, //footer
loginForm: {
name: "",
password: "",
},
loginFormRules: {
//
name: [
{ required: true, message: "请输入用户名", trigger: "blur" },
{ min: 3, max: 10, message: "长度在 3 到 5 个字符", trigger: "blur" },
],
//
password: [
{ required: true, message: "请输入密码", trigger: "blur" },
{
min: 4,
max: 10,
message: "长度在 4 到 10 个字符",
trigger: "blur",
},
],
},
};
},
methods: {
infoRegister() {
this.$router.push('/register');
},
login() {
this.$refs.loginFormRef.validate(async valid => {
if (!valid) return;
const {data:res} =await this.$http.post('login',this.loginForm);
if(res.status!=200) return this.$message.error('登陆失败')
this.$message.success('登陆成功')
window.sessionStorage.setItem('token',res.token);
window.sessionStorage.setItem('userId',res.id);
window.sessionStorage.setItem('name',res.name);
window.sessionStorage.setItem('ispraise','1');
window.sessionStorage.setItem('number','0');
this.$router.push('/profile');
});
},
},
mounted() {
// window.onresize
window.onresize = ()=>{
return(()=>{
this.showHeight = document.body.clientHeight;
})()
}
},
};
</script>
<style lang="less" scoped>
.login_container {
height: 100vh;
background-color: #fff;
}
.login_box {
width: 300px;
height: 280px;
background-color: #ffffff;
border-radius: 3px;
position: relative;
left: 50%;
top: 25%;
transform: translate(-50%, -50%);
}
.avatar_box {
height: 70px;
width: 70px;
position: absolute;
left: 50%;
transform: translate(-50%);
background-color: #fff;
img {
height: 70px;
width: 70px;
}
}
.btns {
display: flex;
justify-content: flex-end;
}
.login_form {
position: absolute;
bottom: 0;
width: 100%;
padding: 0 20px;
box-sizing: border-box;
}
.footer{
height: 70%;
width: 100%;
}
</style>

@ -0,0 +1,153 @@
<template>
<div class=".home">
<scroll ref="scroll">
<div class="login_container">
<div class="login_box">
<!-- 头像区域 -->
<div class="avatar_box">
<img src="@/assets/img/cart/logo.jpg" alt="" />
</div>
<!-- 登陆区域 -->
<el-form
ref="loginFormRef"
label-width="0px"
class="login_form"
:model="loginForm"
:rules="loginFormRules"
>
<el-form-item prop="name">
<el-input
placeholder="请输入用户名"
v-model="loginForm.name"
prefix-icon="el-icon-user-solid"
></el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
placeholder="请输入密码"
v-model="loginForm.password"
prefix-icon="el-icon-s-goods"
type="password"
></el-input>
</el-form-item>
<!-- 按钮区域 -->
<el-form-item class="btns">
<el-row>
<el-button type="primary" @click="login"></el-button>
<el-button type="info" @click="infoLogin"></el-button>
</el-row>
</el-form-item>
</el-form>
</div>
</div>
<div class="footer" v-show="this.isshow">
</div>
</scroll>
</div>
</template>
<script>
// import loginfature from "./chilidComps/loginfature"
import scroll from "@/components/common/Scroll/Scroll";
export default {
name: "login",
components: {
scroll,
},
data() {
return {
docmHeight: document.documentElement.clientHeight, //
showHeight: document.documentElement.clientHeight, //
isshow:true, //footer
loginForm: {
name: "",
password: "",
},
loginFormRules: {
//
name: [
{ required: true, message: "请输入用户名", trigger: "blur" },
{ min: 2, max: 10, message: "长度在 3 到 5 个字符", trigger: "blur" },
],
//
password: [
{ required: true, message: "请输入密码", trigger: "blur" },
{
min: 6,
max: 16,
message: "长度在 6 到 13 个字符",
trigger: "blur",
},
],
},
};
},
methods: {
infoLogin() {
this.$router.push('/login');
},
login() {
this.$refs.loginFormRef.validate(async (valid) => {
if (!valid) return;
const { data: res } = await this.$http.post("users", this.loginForm);
if (res.status != 200) return this.$message.error('注册失败'+res.message);
this.$message.success('注册成功');
this.$router.push('/login');
});
},
},
mounted() {
this.$refs.scroll.refresh();
},
};
</script>
<style lang="less" scoped>
.login_container {
height: 100vh;
background-color: #fff;
}
.login_box {
width: 300px;
height: 280px;
background-color: #ffffff;
border-radius: 3px;
position: relative;
left: 50%;
top: 25%;
transform: translate(-50%, -50%);
}
.avatar_box {
height: 70px;
width: 70px;
position: absolute;
left: 50%;
transform: translate(-50%);
background-color: #fff;
img {
height: 70px;
width: 70px;
}
}
.btns {
display: flex;
justify-content: flex-end;
}
.login_form {
position: absolute;
bottom: 0;
width: 100%;
padding: 0 20px;
box-sizing: border-box;
}
.home{
height: 100vh;
position: relative;
}
.footer{
height: 70%;
width: 100%;
}
</style>

@ -0,0 +1,21 @@
<template>
<div class="fature">{{message}}</div>
</template>
<script>
export default {
name:"loginfature",
data(){
return {
message:'zhangsan',
}
}
}
</script>
<style scoped>
.fature{
color: red;
text-align: 12px;
}
</style>

@ -0,0 +1,144 @@
<template >
<div class="home">
<NavBar class="nav-bar">
<img img="~assets/img/moment/bear.svg" />
<div slot="left"><img src="~assets/img/moment/bear.svg" width="40px" height="40px" /></div>
<div slot="center">酒友乡</div>
<!-- 发表动态 -->
<div slot="right" @click="createmoment"><i class="el-icon-plus"></i></div>
</NavBar>
<Scroll
class="content"
ref="scroll"
:pull-up-load="true"
:probe-type="3"
@pullingUp="loadMore"
@pullingDown="pullingDown"
>
<!-- 下拉显示 -->
<div class="pulldown" v-show="pullingdown"><img src="~assets/img/moment/refresh.svg" width="30px" height="30px" /></div>
<!-- 多条动态拆分-->
<MomentList v-if="refreshmoment" :moments="moments" ></MomentList>
<!-- 上拉显示 -->
<div class="pullUp" v-show="pullingUp"><span>Loading...</span></div>
</Scroll>
</div>
</template>
<script>
import Scroll from "@/components/common/Scroll/Scroll";
import NavBar from "@/components/common/navbar/NavBar";
import MomentList from "@/components/content/moments/MomentList";
//debounce使
import { debounce } from "@/common/utils";
import { getMomentList } from "@/network/moment";
export default {
name: "Moment",
components: {
Scroll,
NavBar,
MomentList,
},
data() {
return {
moments: [],
size: 10,
offset: 0,
pullingdown: false,
refreshmoment: true,
pullingUp: false,
};
},
created() {
this.getMoment();
},
methods: {
//
createmoment() {
this.$router.push("/createmoment");
},
//
getMoment() {
getMomentList(this.offset, this.size).then((res) => {
this.moments.push(...res.data);
this.offset += 10;
});
},
//
ReMoment() {
getMomentList(0, 10).then((res) => {
this.moments = res.data;
});
},
//
loadMore() {
this.pullingUp = true;
this.offset = 10;
this.getMoment();
setTimeout(() => {
this.pullingUp = false;
this.$refs.scroll.finishPullUp();
this.$refs.scroll.refresh();
}, 1000);
},
//
pullingDown() {
this.pullingdown = true;
this.offset;
this.ReMoment();
this.refreshmoment = false;
this.refreshmoment= true;
setTimeout(() => {
this.pullingdown = false;
this.$refs.scroll.finishPullDown();
}, 1000);
},
},
mounted() {
//
const refresh = debounce(this.$refs.scroll.refresh, 300);
this.uploadavatar = () => {
refresh();
};
this.refreshmoment=()=>{
this.ReMoment();
this.refreshmoment = false;
this.refreshmoment= true;
}
this.$bus.$on("upload", this.uploadavatar);
this.$bus.$on("createmoment",this.refreshmoment)
},
};
</script>
<style scoped>
.nav-bar {
background-color: rgb(245, 243, 243);
font-weight: 500px;
color: rgba(54, 53, 53, 0.733);
}
.home {
height: 100vh;
position: relative;
background-color: rgba(212, 212, 212, 0.329);
}
.content {
left: 0;
right: 0;
top: 39px;
bottom: 49px;
overflow: hidden;
position: absolute;
}
.pulldown {
text-align: center;
top: 15px;
z-index: 20;
}
.pullUp {
text-align: center;
bottom: 50px;
z-index: 20;
}
</style>

@ -0,0 +1,288 @@
<template>
<div class="moment-items" >
<!-- 基本内容 -->
<div>
<img class="avatar" :src="comments.author && comments.author.avatarUrl" />
</div>
<div class="name" >{{ comments.author && comments.author.name }}</div>
<div class="time" >
{{ this.$moment(comments.createTime).format("YYYY-MM-DD HH:mm:ss") }}
</div>
<!-- 图片区域 -->
<div class="content" >
<div class="text">{{ comments.content }}</div>
<div class="image">
<li
v-for="(item, index) in comments.images"
:key="index"
class="picture"
>
<img width="100px" height="100px" v-lazy="item"/>
</li>
</div>
</div>
<!-- 小图标区域 -->
<icon class="icon" :comments=comments :praise=this.praise @clickpraise="clickpraise" @Popup=Popup v-if="this.isdisplay"></icon>
<!-- 点赞 -->
<PraiseList class="praise" :praises=this.praise.praise v-if="this.isdisplay"> </PraiseList>
<!-- 评论 -->
<CommentList class="newmoment" :newcomments=this.allcomment :Author=comments.author></CommentList>
<!-- 发表评论 -->
<!-- show是否要显示评论 -->
<van-popup v-model="show" position="bottom" :style="{ height: '10%' }">
<div class="createcomment">
<van-field
ref="gain"
class="input"
v-model="comment.content"
rows="1"
autosize
placeholder="请输入评论"
show-word-limit
type="textarea"
size="large"
v-focus
maxlength="40"
/>
<van-button class="button" round type="info" @click="createcomment"></van-button>
</div>
</van-popup>
</div>
</template>
<script>
import icon from '@/views/moment/childComps/icon'
import CommentList from '@/components/content/comments/CommentList'
import PraiseList from '@/components/content/praises/PraiseList'
import {getAllCommnet} from '@/network/comment'
export default {
name:"ChildDetailMoment",
components:{
CommentList,
PraiseList,
icon
}
,
props: {
comments: {
type: Object,
default() {
return {};
},
},
},
data() {
return {
id:'',
show: false,
isResize: false,
isshow:true,
comment: {
content: "",
momentId:"",
},
iscomment: true,
allcomment:[],
praise:{},
ispraise:'',
number:'',
isdisplay:'true'
};
},
created() {
this.momentId = this.$route.params.iid;
getAllCommnet(this.momentId).then((res)=>{
this.allcomment=res.data;
})
this.getdata()
},
//
directives: {
focus: {
//
inserted: function (el) {
el.focus()
}
}
},
methods: {
async getdata(){
const {data:res} = await this.$http.get('/praise/'+this.momentId)
this.praise=res
},
//
Popup() {
this.show = !this.show;
//
this.$nextTick(() => {
this.$refs.gain.focus();
}, 100);
},
refresh(){
this.isdisplay=false
this.$nextTick(() => {
this.isdisplay=true
}, 100);
this.getdata()
},
//
async createcomment(){
this.comment.momentId=this.comments.id
if(this.iscomment){
const { data: res } = await this.$http.post("comment", this.comment);
if(res.insertId!=0){
this.$emit('refresh')
this.$message.success("评论成功");
}
}else{
const { data: res } = await this.$http.post("comment/"+this.commentId+'/reply', this.comment);
if(res.insertId!=0){
this.iscomment=true
this.$emit('refresh')
this.$message.success("评论成功");
}
}
},
async clickpraise() {
const {data:res}= await this.$http.post('/praise/ispraise/'+this.momentId)
if(res.status!= "200"){
this.number=window.sessionStorage.getItem("number");
if (this.number === "1") window.sessionStorage.setItem("number", "0");
else {
window.sessionStorage.setItem("number", "1");
}
}
if (res.status == "200") {
await this.$http.post("/praise/" + this.momentId);
this.$nextTick(() => {
this.refresh();
}, 100);
} else {
this.number = window.sessionStorage.getItem("number");
const content = {
ispraise: "",
};
content.ispraise = this.number;
const { data: res } = await this.$http.post(
"/praise/update/" + this.momentId,
content
);
this.$nextTick(() => {
this.refresh();
}, 100);
}
},
},
mounted(){
this.$bus.$on("commentId",(result)=>{
this.commentId=result
this.iscomment=false
})
this.$bus.$on("comment", this.Popup);
}
};
</script>
<style scoped>
.moment-items {
position: fixed;
background-color: rgb(255, 255, 255);
width: 100%;
height: 100vh;
font-size: 5px;
}
.avatar {
float: left;
width: 60px;
height: 60px;
border-radius: 30px;
}
.name {
float: left;
width: 40%;
margin-left: 15px;
margin-top: 5px;
color: rgb(39, 37, 37);
font-size: 20px;
}
.time {
float: left;
margin-top: 8px;
margin-left: 15px;
font-size: 14px;
width: 60%;
}
.content {
width: 100%;
float: left;
margin-left: 5px;
font-size: 15px;
}
.icon {
width: 100%;
float: left;
margin-top: 15px;
display: flex;
border-top-style: solid;
border-width: 0.1px;
border-color: rgb(230, 220, 220);
}
.picture {
margin-top: 25px;
display: inline;
}
.text {
margin-top: 15px;
}
.image {
margin-top: 10px;
}
.input {
top: 50%;
transform: translate(0, -50%);
border-radius: 20px;
width: 70%;
background-color: rgb(212, 212, 212);
float: left;
font-size: 15px;
}
.button {
top: 50%;
transform: translate(0, -50%);
width: 25%;
float: left;
}
.createcomment {
display: inline;
width: 100%;
}
.footer{
height: 50%;
}
.praise{
margin-right:10px;
margin-top:20px;
margin-left:10px;
float: left;
width: 90%;
}
.newmoment{
margin-right:10px;
margin-top:20px;
margin-left:10px;
float: left;
width: 90%;
}
</style>

@ -0,0 +1,132 @@
<template>
<div>
<NavBar class="nav-bar">
<div slot="left" class="back" @click="backClick">
<img src="~assets/img/common/back.svg" alt="" />
</div>
<div slot="center" class="title">发表动态</div>
</NavBar>
<!-- 动态内容 -->
<el-form
ref="createmoment"
label-width="0px"
:model="moment"
:rules="momentRules"
preview-image:true
>
<el-form-item prop="content">
<el-input
type="textarea"
:rows="2"
placeholder="输入你此刻的想法"
v-model="moment.content"
>
</el-input>
</el-form-item>
<!-- 图片上传部分 -->
<van-uploader
:after-read="afterRead"
preview-size="60px"
v-model="fileList"
multiple
:max-count="3"
:deletable="false"
>
</van-uploader>
<el-form-item class="btns">
<el-row>
<el-button type="primary" @click="createmoment"></el-button>
</el-row>
</el-form-item>
</el-form>
</div>
</template>
<script>
import NavBar from "@/components/common/navbar/NavBar";
import { createMoment1, createMoment2 } from "@/network/createMoment.js";
export default {
name: "CreateMoment",
components: {
NavBar
},
data() {
return {
moment: {
content: "",
formdata: ""
},
momentRules: {
//
content: [
{ required: true, message: "请输入内容", trigger: "blur" },
{
min: 4,
max: 100,
message: "长度在 4 到 100 个字符",
trigger: "blur"
}
]
},
fileList: []
};
},
created() {
this.formdata = new FormData();
},
methods: {
backClick() {
this.$router.push("/moment");
},
createmoment() {
this.$refs.createmoment.validate(async valid => {
//
if (!valid) return;
//id
const { data: res } = await createMoment1(this.moment);
//
if (res.insertId != 0)
this.url = "/upload/" + res.insertId + "/picture";
//
try {
await createMoment2(this.url, this.formdata);
//
this.$bus.$emit("createmoment");
this.$message.success("发表成功");
//
this.$router.push("/moment");
} catch (err) {this.$message.success("发表失败");}
});
},
// formdataformdata
async afterRead(file) {
this.formdata.append("picture", file.file);
// this.avatarexit = false;
}
//
// async remove(file){
// this.fileList.forEach((item)=>{
// console(file.file.lastModifiedDate)
// console.log(item.file.lastModifiedDate);
// if(file.file.lastModifiedDate==item.file.lastModifiedDate){
// console.log(1);
// }
// })
// resolve()
// }
}
};
</script>
<style scoped>
.back img {
margin-top: 12px;
}
.nav-bar {
background-color: rgb(245, 243, 243);
font-weight: 500px;
color: rgba(54, 53, 53, 0.733);
}
</style>

@ -0,0 +1,65 @@
<template>
<div class="home">
<NavBar class="nav-bar">
<div slot="left" class="back" @click="backClick">
<img src="~assets/img/common/back.svg" alt="" />
</div>
<div slot="center" class="title">动态详情</div>
</NavBar>
<ChildDetailMoment :comments="comments" v-if="isshow" @refresh="refresh"></ChildDetailMoment>
</div>
</template>
<script>
import NavBar from "@/components/common/navbar/NavBar";
import { getComment } from "@/network/comment";
import ChildDetailMoment from "@/views/moment/childComps/ChildDetailMoment";
export default {
name: "DetailMoment",
components: {
NavBar,
ChildDetailMoment,
},
data() {
return {
iid: "",
comments: {},
isshow:true
};
},
created() {
this.getComment();
},
methods: {
backClick() {
this.$router.push("/moment");
},
refresh(){
this.isshow=false
this.$nextTick(() => {
this.isshow=true
}, 100);
this.getComment();
},
async getComment() {
this.iid = this.$route.params.iid;
const res = await getComment(this.iid);
this.comments = res.data;
},
},
};
</script>
<style scoped>
.back img {
margin-top: 12px;
}
.home{
height: 100vh;
}
.nav-bar {
background-color: rgb(245, 243, 243);
font-weight: 500px;
color: rgba(54, 53, 53, 0.733);
}
</style>

@ -0,0 +1,58 @@
<template>
<div >
<i id="icon-1" @click="clickpraise"
><img src="@/assets/img/moment/praise.svg" /></i
>{{ this.praise.promiseCount}}
<i
id="icon-1"
class="el-icon-chat-dot-square"
style="font-size: 20px"
@click="Popup"
>{{ comments.commentCount }}</i
>
</div>
</template>
<script>
import { getAllCommnet } from "@/network/comment";
export default {
name: "icon",
props: {
comments:{
type:Object,
default(){
return {}
}
},
},
data(){
return {
praise:{},
momentId:''
}
}
,
created() {
this.momentId = this.$route.params.iid;
this.getAllPraise();
},
methods: {
async getAllPraise() {
const { data: res } = await this.$http.get("/praise/" + this.momentId);
this.praise = res;
},
clickpraise(){
this.$emit('clickpraise')
},
Popup(){
this.$emit('Popup')
},
}
};
</script>
<style scoped>
#icon-1 {
margin-left: 27%;
}
</style>

@ -1,9 +1,29 @@
<template> <template>
<div id="profile"> <div class="profile">
<nav-bar class="nav-bar"><div slot="center">小码哥商城</div></nav-bar> <nav-bar class="nav-bar"><div slot="center">白酒商城</div></nav-bar>
<!--1.单独封装一个组件: 利用slot知识点--> <!--1.单独封装一个组件: 利用slot-->
<UserInfo></UserInfo> <Scroll id="tab-content"
ref="scroll"
:pull-up-load="true"
@pullingDown="pullingDown"
:probe-type="3">
<user-info v-if="this.avatarexit">
<div slot="user-icon" >
<img class="avtar" alt="未上传" v-lazy="this.avatar" />
<van-uploader
class="uploading"
:after-read="afterRead"
preview-size="60px"
/>
</div>
<div slot="user-nickname">
<div v-if="this.name">{{ isLogin }}</div>
<div v-else><a @click="infoLogin"></a><a>/</a><a @click="infoRegister"></a></div>
</div>
<div slot="sign" class="info-sign">
个性签名我好帅 帅帅帅
</div>
</user-info>
<!--2.没有单独封装: 不同的地方太多, 需要传过多的参数--> <!--2.没有单独封装: 不同的地方太多, 需要传过多的参数-->
<section class="account"> <section class="account">
<div class="account-item"> <div class="account-item">
@ -25,61 +45,115 @@
<div class="account-info">我的积分</div> <div class="account-info">我的积分</div>
</div> </div>
</section> </section>
<set-up class="set-up"></set-up>
<!--3.封装成一个整体--> <log-out class="log-out"></log-out>
<list-view :list-data="orderList" class="order-list"></list-view> </Scroll>
<list-view :list-data="serviceList" class="service-list"></list-view>
</div> </div>
</template> </template>
<script> <script>
import UserInfo from './childComps/UserInfo'
import ListView from './childComps/ListView'
import NavBar from "@/components/common/navbar/NavBar"; import NavBar from "@/components/common/navbar/NavBar";
import Scroll from "@/components/common/Scroll/Scroll";
import UserInfo from "@/views/profile/childComps/UserInfo";
import LogOut from '@/views/profile/childComps/LogOut'
import SetUp from '@/views/profile/childComps/SetUp.vue';
export default { export default {
name: "Profile", name: "Profile",
components: { components: {
UserInfo, ListView, NavBar NavBar,
Scroll,
UserInfo,
LogOut,
SetUp,
}, },
data: function () { data() {
return { return {
orderList: [ name: "",
{icon: '#order', iconColor: '#ff8198', info: '我的消息'}, isLogin: "",
{icon: '#point', iconColor: '#fc7b53', info: '积分商城'}, id:'',
{icon: '#vip', iconColor: '#ffc636', info: '会员卡'}, url:'',
], avatar:'',
serviceList: [ avatarexit:true,
{icon: '#service', iconColor: '#ff8198', info: '我的购物车'}, isshow:true
{icon: '#download', iconColor: '#ff8198', info: '下载购物APP'}, };
]
}
}, },
mounted: function () { mounted(){
} }
,
methods: {
userLogin() {
this.name = window.sessionStorage.getItem("name");
if (this.name) {
this.isLogin = "你好!" + this.name;
}
},
infoLogin() {
this.$router.push("/login");
},
infoRegister() {
this.$router.push("/register");
},
async afterRead(file) {
this.url='/upload/'+this.id+'/avatar'
//
const formdata=new FormData();
formdata.append('avatar',file.file)
const res = await this.$http.post(this.url,formdata)
this.getAvatar()
this.avatarexit=false
this.$nextTick(() => {
this.avatarexit=true
}, 3000);
},
async getAvatar(){
this.id=window.sessionStorage.getItem('userId')
const res= await this.$http.get('/users/'+this.id+'/avatar')
this.avatar=res.config.url
},
pullingDown() {
this.$refs.scroll.finishPullDown();
} }
},
created() {
this.userLogin();
this.getAvatar();
},
};
</script> </script>
<style scoped> <style scoped>
#profile { .profile {
background-color: #f2f2f2; background-color: rgb(243, 236, 238);
height: 100vh;
position: relative;
} }
.nav-bar { .nav-bar {
background-color: var(--color-tint); background-color: rgb(196, 15, 15);
font-weight: 700; font-weight: 700;
color: #fff; color: rgba(255, 255, 255, 0.877);
}
a{
color:rgb(70, 59, 59);
}
.info-sign{
font-size: 10px;
} }
.account { .account {
display: flex; display: flex;
} }
.account-item { .account-item {
margin-top:5px;
width: 100%; width: 100%;
background-color: #fff;
margin-right: 1px; margin-right: 1px;
text-align: center; text-align: center;
background-color:#fff;
border-radius: 5px;
} }
.account-item:last-of-type { .account-item:last-of-type {
@ -95,15 +169,40 @@
.account-item .balance { .account-item .balance {
font-size: 24px; font-size: 24px;
font-weight: 700; font-weight: 700;
color: #ff5f3e; color: red;
} }
.account-info { .account-info {
margin-top: 6px; margin-top: 6px;
} }
.order-list, .service-list { .order-list,
.service-list {
margin-top: 12px; margin-top: 12px;
} }
.log-out{
margin-top:5px;
}
.set-up{
margin-top:10px;
}
.uploading{
width: 60px;
left: 10px;
position: absolute;
opacity: 0;
}
.avtar{
height: 60px;
widows: 60px;
border-radius: 30px;
}
#tab-content {
left: 0;
right: 0;
top:39px;
bottom: 49px;
overflow: hidden;
position: absolute;
}
</style> </style>

@ -1,60 +0,0 @@
<template>
<div id="list">
<div v-for="(item, index) in listData" :key="index" class="item">
<span class="icon">
<svg :fill="item.iconColor"><use :xlink:href="item.icon"></use></svg>
</span>
<div class="info">{{item.info}}</div>
</div>
</div>
</template>
<script>
export default {
name: "ListView",
props: {
listData: {
type: Array,
default: function () {
return []
}
}
}
}
</script>
<style scoped>
#list {
background-color: #fff;
font-size: 15px;
color: #333;
}
#list .item {
height: 44px;
line-height: 44px;
position: relative;
}
.icon svg {
width: 18px;
height: 18px;
}
.item .icon {
margin-top: 10px;
position: absolute;
left: 16px;
top: -7px;
}
.item .info {
margin-left: 40px;
border-bottom: 1px solid rgba(100, 100, 100, .1);
padding-left: 5px;
}
.item:last-of-type .info {
border-bottom: none;
}
</style>

@ -0,0 +1,29 @@
<template>
<div>
<div class="logout" @click="logout">退</div>
</div>
</template>
<script>
export default {
name: "ListView",
methods:{
logout(){
window.sessionStorage.clear();
this.$router.push("/login")
this.$message('退出成功')
}
}
}
</script>
<style scoped>
.logout{
width:100%;
background-color:#fff;
border-radius: 10px;
position: relative;
text-align:center;
font-size: 30px;
}
</style>

@ -0,0 +1,27 @@
<template>
<div>
<div class="logout" @click="logout"></div>
</div>
</template>
<script>
export default {
name: "ListView",
methods:{
logout(){
this.$router.push("/setupprofile")
}
}
}
</script>
<style scoped>
.logout{
width:100%;
background-color: #fff;
border-radius: 10px;
position: relative;
text-align:center;
font-size: 30px;
}
</style>

@ -2,75 +2,52 @@
<div id="user-info"> <div id="user-info">
<a href="#" class="clear-fix"> <a href="#" class="clear-fix">
<slot name="user-icon"> <slot name="user-icon">
<svg class="privateImage-svg left"> <div class="privateImage-svg">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#avatar-default"></use> </div>
</svg>
</slot> </slot>
<div class="login-info left"> <div class="login-info left">
<slot name="user-nickname"> <slot name="user-nickname"> </slot>
<div>登录/注册</div> <slot name="sign"></slot>
</slot>
<div class="phone">
<span>
<svg data-v-735ff1be="" fill="#fff" class="icon-mobile"><use data-v-735ff1be="" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mobile"></use></svg>
</span>
<slot name="user-phone">暂无绑定手机号</slot>
</div> </div>
</div>
<svg data-v-735ff1be="" fill="#fff" class="arrow-svg right"><use data-v-735ff1be="" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#arrow-right"></use></svg>
</a> </a>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: "UserInfo" name: "UserInfo",
} data() {
return {
isLogin: "登陆/注册",
name: "",
};
},
created() {},
methods: {},
};
</script> </script>
<style scoped> <style scoped>
#user-info { #user-info {
background-color: var(--color-tint);
padding: 15px; padding: 15px;
margin-top: -5px; margin-top: -5px;
} }
#user-info .privateImage-svg { #user-info .privateImage-svg {
width: 60px; width: 70px;
height: 60px; height: 70px;
background-color: #fff; background-color: #fff;
border-radius: 30px; border-radius: 30px;
overflow: hidden;
} }
.left { .left {
float: left; margin-left: 80px;
} height: 50px;
width: 150px;
#user-info .arrow-svg { line-height: 30px;
width: 11px;
height: 22px;
margin-top: 18px;
} }
#user-info .login-info { #user-info .login-info {
color: #fff; color: rgb(88, 73, 73);
margin: 10px 0 0 10px; margin: 10px 0 0 10px;
} border-radius:(0,0,0,0)
#user-info .login-info .phone {
position: relative;
font-size: 13px;
margin-top: 5px;
margin-left: 15px;
font-weight: 300;
}
#user-info .login-info .phone .icon-mobile {
position: absolute;
width: 12px;
height: 18px;
left: -15px;
top: 0px;
} }
</style> </style>

@ -0,0 +1,53 @@
<template>
<div class="home">
<Setup-navbar></Setup-navbar>
<van-uploader
:after-read="afterRead"
/>
</div>
</template>
<script>
import SetupNavbar from "@/views/setupProfile/childComps/SetupNavbar";
export default {
components: {
SetupNavbar,
},
data() {
return {
fileList: [],
id:'',
url:''
}
},
created(){
this.id=window.sessionStorage.getItem('userId')
this.url='/upload/'+this.id+'/avatar'
}
,
methods:{
async afterRead(file) {
//
console.log(file);
const formdata=new FormData();
formdata.append('avatar',file.file)
// formdata.append('id',1)
const {data:res} = await this.$http.post(this.url,formdata)
console.log(res);
}
}
}
</script>
<style scoped>
.back img {
margin-top: 12px;
}
.title {
font-size: 15px;
}
.home{
height: 100vh;
position: relative;
}
</style>

@ -0,0 +1,34 @@
<template>
<nav-bar>
<div slot="left" class="back" @click="backClick">
<img src="~assets/img/common/back.svg" alt="">
</div>
<div slot="center" class="title">
个人资料
</div>
</nav-bar>
</template>
<script>
import NavBar from '@/components/common/navbar/NavBar'
export default {
components:{
NavBar
},
methods:{
backClick(){
this.$router.push('/profile')
}
}
}
</script>
<style scoped>
.back img{
margin-top: 12px;
}
.title{
font-size: 15px;
}
</style>
Loading…
Cancel
Save