├── .browserslistrc
├── public
├── favicon.ico
└── index.html
├── src
├── assets
│ ├── bj.jpg
│ ├── car.png
│ ├── hot.jpg
│ ├── qd.jpg
│ ├── 二维码.png
│ ├── 火.png
│ ├── 用户.png
│ ├── 购物车.png
│ ├── 钻石.png
│ ├── logo.png
│ ├── 支付成功.png
│ ├── avator.jpg
│ └── welcome.jpg
├── shims-vue.d.ts
├── main.ts
├── store
│ └── index.ts
├── components
│ ├── Blank.vue
│ ├── Go.vue
│ ├── Sign.vue
│ ├── GoodsSwipe.vue
│ ├── Swipe.vue
│ ├── Tab.vue
│ ├── Title.vue
│ ├── Swipe2.vue
│ ├── QRcode.vue
│ ├── Grid.vue
│ ├── List.vue
│ ├── HelloWorld.vue
│ ├── Recommend.vue
│ └── goodsStyle.vue
├── views
│ ├── mine
│ │ ├── member.vue
│ │ ├── AddAddress.vue
│ │ ├── EditAddress.vue
│ │ ├── message.vue
│ │ └── Address.vue
│ ├── Car
│ │ ├── EmptyCar.vue
│ │ └── ShopCar.vue
│ ├── Car.vue
│ ├── search
│ │ └── search.vue
│ ├── login
│ │ ├── Register.vue
│ │ └── Login.vue
│ ├── Order
│ │ ├── myOrder.vue
│ │ └── ConfirmOrder.vue
│ ├── category
│ │ └── category.vue
│ ├── Goods
│ │ └── GoodsHot.vue
│ ├── Classify.vue
│ ├── Personal.vue
│ ├── Home.vue
│ └── GoodsInfo.vue
├── utils
│ ├── api.js
│ └── axios.js
├── App.vue
└── router
│ └── index.ts
├── babel.config.js
├── .editorconfig
├── .gitignore
├── README.md
├── .eslintrc.js
├── tsconfig.json
├── package.json
└── vue.config.js
/.browserslistrc:
--------------------------------------------------------------------------------
1 | > 1%
2 | last 2 versions
3 | not dead
4 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xu-qing1998/furniture_mall/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/src/assets/bj.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xu-qing1998/furniture_mall/HEAD/src/assets/bj.jpg
--------------------------------------------------------------------------------
/src/assets/car.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xu-qing1998/furniture_mall/HEAD/src/assets/car.png
--------------------------------------------------------------------------------
/src/assets/hot.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xu-qing1998/furniture_mall/HEAD/src/assets/hot.jpg
--------------------------------------------------------------------------------
/src/assets/qd.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xu-qing1998/furniture_mall/HEAD/src/assets/qd.jpg
--------------------------------------------------------------------------------
/src/assets/二维码.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xu-qing1998/furniture_mall/HEAD/src/assets/二维码.png
--------------------------------------------------------------------------------
/src/assets/火.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xu-qing1998/furniture_mall/HEAD/src/assets/火.png
--------------------------------------------------------------------------------
/src/assets/用户.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xu-qing1998/furniture_mall/HEAD/src/assets/用户.png
--------------------------------------------------------------------------------
/src/assets/购物车.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xu-qing1998/furniture_mall/HEAD/src/assets/购物车.png
--------------------------------------------------------------------------------
/src/assets/钻石.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xu-qing1998/furniture_mall/HEAD/src/assets/钻石.png
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xu-qing1998/furniture_mall/HEAD/src/assets/logo.png
--------------------------------------------------------------------------------
/src/assets/支付成功.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xu-qing1998/furniture_mall/HEAD/src/assets/支付成功.png
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/src/assets/avator.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xu-qing1998/furniture_mall/HEAD/src/assets/avator.jpg
--------------------------------------------------------------------------------
/src/assets/welcome.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xu-qing1998/furniture_mall/HEAD/src/assets/welcome.jpg
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | [*.{js,jsx,ts,tsx,vue}]
2 | indent_style = space
3 | indent_size = 2
4 | trim_trailing_whitespace = true
5 | insert_final_newline = true
6 |
--------------------------------------------------------------------------------
/src/shims-vue.d.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | declare module '*.vue' {
3 | import type { DefineComponent } from 'vue'
4 | const component: DefineComponent<{}, {}, any>
5 | export default component
6 | }
7 |
8 | declare module '*.js'
9 |
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import App from './App.vue'
3 | import router from './router'
4 | import store from './store'
5 | import Vant from 'vant';
6 | import 'vant/lib/index.css';
7 |
8 | createApp(App).use(Vant).use(store).use(router).mount('#app')
9 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 |
6 | # local env files
7 | .env.local
8 | .env.*.local
9 |
10 | # Log files
11 | npm-debug.log*
12 | yarn-debug.log*
13 | yarn-error.log*
14 | pnpm-debug.log*
15 |
16 | # Editor directories and files
17 | .idea
18 | .vscode
19 | *.suo
20 | *.ntvs*
21 | *.njsproj
22 | *.sln
23 | *.sw?
24 |
--------------------------------------------------------------------------------
/src/store/index.ts:
--------------------------------------------------------------------------------
1 | import { createStore } from 'vuex'
2 | import createPersistedState from 'vuex-persistedstate'
3 |
4 | export default createStore({
5 | state: {
6 | userName: "",
7 | password: "",
8 | },
9 | mutations: {
10 | },
11 | actions: {
12 | },
13 | modules: {
14 | },
15 | plugins: [createPersistedState()]
16 | })
17 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # furniture_mall
2 |
3 | ## Project setup
4 | ```
5 | npm install
6 | ```
7 |
8 | ### Compiles and hot-reloads for development
9 | ```
10 | npm run serve
11 | ```
12 |
13 | ### Compiles and minifies for production
14 | ```
15 | npm run build
16 | ```
17 |
18 | ### Lints and fixes files
19 | ```
20 | npm run lint
21 | ```
22 |
23 | ### Customize configuration
24 | See [Configuration Reference](https://cli.vuejs.org/config/).
25 |
--------------------------------------------------------------------------------
/src/components/Blank.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
![]()
10 |
11 |
12 |
13 |
14 |
25 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | node: true
5 | },
6 | extends: [
7 | 'plugin:vue/vue3-essential',
8 | '@vue/standard',
9 | '@vue/typescript/recommended'
10 | ],
11 | parserOptions: {
12 | ecmaVersion: 2020
13 | },
14 | rules: {
15 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
16 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/components/Go.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
![]()
9 |
10 |
11 |
12 |
13 |
24 |
25 |
--------------------------------------------------------------------------------
/src/components/Sign.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
![]()
9 |
10 |
11 |
12 |
13 |
24 |
25 |
35 |
36 |
--------------------------------------------------------------------------------
/src/components/GoodsSwipe.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
27 |
28 |
--------------------------------------------------------------------------------
/src/components/Swipe.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
28 |
29 |
40 |
--------------------------------------------------------------------------------
/src/components/Tab.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{item.name}}
6 |
7 |
8 |
9 |
10 |
11 |
12 |
22 |
23 |
24 |
37 |
38 |
--------------------------------------------------------------------------------
/src/components/Title.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
{{title.big_title}}
5 |
{{title.small_title}}
6 |
7 |
8 |
9 |
10 |
18 |
19 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | <%= htmlWebpackPlugin.options.title %>
12 |
13 |
14 |
15 |
16 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/components/Swipe2.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
19 |
20 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "esnext",
4 | "module": "esnext",
5 | "strict": false,
6 | "jsx": "preserve",
7 | "importHelpers": true,
8 | "moduleResolution": "node",
9 | "skipLibCheck": true,
10 | "esModuleInterop": true,
11 | "allowSyntheticDefaultImports": true,
12 | "sourceMap": true,
13 | "baseUrl": ".",
14 | "types": [
15 | "webpack-env"
16 | ],
17 | "paths": {
18 | "@/*": [
19 | "src/*"
20 | ]
21 | },
22 | "lib": [
23 | "esnext",
24 | "dom",
25 | "dom.iterable",
26 | "scripthost"
27 | ]
28 | },
29 | "include": [
30 | "src/**/*.ts",
31 | "src/**/*.tsx",
32 | "src/**/*.vue",
33 | "tests/**/*.ts",
34 | "tests/**/*.tsx"
35 | ],
36 | "exclude": [
37 | "node_modules"
38 | ]
39 | }
40 |
--------------------------------------------------------------------------------
/src/views/mine/member.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
37 |
38 |
--------------------------------------------------------------------------------
/src/views/Car/EmptyCar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |

5 |
购物车还是空的
6 |
7 |
8 |
9 |
10 |
11 |
17 |
18 |
--------------------------------------------------------------------------------
/src/utils/api.js:
--------------------------------------------------------------------------------
1 | export const LunboUrl = "/api/getlunbo"
2 | export const generalUrl = "/api/getgeneral"
3 | export const blankUrl = "/api/getblank"
4 | export const goUrl = "/api/getgo"
5 | export const general2Url = "/api/getgeneral2"
6 | export const iconUrl = "/api/geticon"
7 | export const goodsNatureUrl = "/api/getgoodsNature"
8 | export const goodsUrl = "/api/getgoods"
9 | export const TitleUrl = "/api/getTitle"
10 | export const cupUrl = "/api/getCup"
11 | export const chairUrl = "/api/getChair"
12 | export const easyUrl = "/api/getEasy"
13 | export const chair2Url = "/api/getchair2"
14 | export const officeUrl = "/api/getoffice"
15 | export const bigLightUrl = "/api/getbiglight"
16 | export const lampsUrl = "/api/getlamps"
17 | export const deskUrl = "/api/getdesk"
18 | export const woodsUrl = "/api/getwoods"
19 | export const newUrl = "/api/getnew/"
20 | export const categoryUrl = "/api/getlist/"
21 | export const checkUrl = "/api/login"
--------------------------------------------------------------------------------
/src/components/QRcode.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
36 |
37 |
--------------------------------------------------------------------------------
/src/components/Grid.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
14 |
15 | {{item.title}}
16 | ¥{{item.price}}
17 |
18 |
19 |
20 |
21 |
22 |
30 |
31 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "furniture_mall",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "@types/qrcode": "^1.4.0",
12 | "axios": "^0.21.1",
13 | "core-js": "^3.6.5",
14 | "qrcode": "^1.4.4",
15 | "vant": "^3.0.6",
16 | "vue": "^3.0.0",
17 | "vue-router": "^4.0.0-0",
18 | "vuex": "^4.0.0-0",
19 | "vuex-persistedstate": "^4.0.0-beta.3"
20 | },
21 | "devDependencies": {
22 | "@typescript-eslint/eslint-plugin": "^2.33.0",
23 | "@typescript-eslint/parser": "^2.33.0",
24 | "@vue/cli-plugin-babel": "~4.5.0",
25 | "@vue/cli-plugin-eslint": "~4.5.0",
26 | "@vue/cli-plugin-router": "~4.5.0",
27 | "@vue/cli-plugin-typescript": "~4.5.0",
28 | "@vue/cli-plugin-vuex": "~4.5.0",
29 | "@vue/cli-service": "~4.5.0",
30 | "@vue/compiler-sfc": "^3.0.0",
31 | "@vue/eslint-config-standard": "^5.1.2",
32 | "@vue/eslint-config-typescript": "^5.0.2",
33 | "eslint": "^6.7.2",
34 | "eslint-plugin-import": "^2.20.2",
35 | "eslint-plugin-node": "^11.1.0",
36 | "eslint-plugin-promise": "^4.2.1",
37 | "eslint-plugin-standard": "^4.0.0",
38 | "eslint-plugin-vue": "^7.0.0-0",
39 | "less": "^3.0.4",
40 | "less-loader": "^5.0.0",
41 | "typescript": "~3.9.3"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/views/Car.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
48 |
49 |
--------------------------------------------------------------------------------
/src/views/search/search.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 | 商品搜索
10 |
11 |
12 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | 首页
11 | 分类
15 |
16 |
20 |
21 | 个人中心
25 |
26 |
27 |
28 |
29 |
30 |
52 |
53 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/src/utils/axios.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 | import QS from 'qs';
3 |
4 | //设置超时时间
5 | axios.defaults.timeout = 10000;
6 | // post请求头
7 | axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
8 |
9 |
10 | export default function xqaxios(method, url, params) {
11 | if (method == 'GET') {
12 | return get(url, params);
13 | } else if (method == 'POST') {
14 | return post(url, params);
15 | }
16 | }
17 |
18 | // 封装get方法
19 | function get(url, params) {
20 | return new Promise((resolve, reject) => {
21 | axios.get(url, params).then(res => {
22 | resolve(res.data);
23 | }).catch(err => {
24 | reject(err.data);
25 | })
26 | });
27 | }
28 |
29 | // 封装post方法 {name:"xiaoming",age:123} ---> name=xiaoming&age=123
30 | function post(url, params) {
31 | return new Promise((resolve, reject) => {
32 | axios.post(url, QS.stringify(params))
33 | .then(res => {
34 | resolve(res.data);
35 | })
36 | .catch(err => {
37 | reject(err.data)
38 | })
39 | });
40 | }
41 |
42 | axios.interceptors.request.use(function(request) {
43 | //console.log("请求执行之前",response)
44 | return request;
45 | }, function(error) {
46 | return Promise.reject(error);
47 | });
48 |
49 | //响应的拦截器
50 | axios.interceptors.response.use(
51 | response => {
52 | //console.log("响应处理之前",response);
53 | return response
54 | },
55 | error => {
56 | return Promise.reject(error)
57 | }
58 | )
--------------------------------------------------------------------------------
/src/views/login/Register.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
18 |
26 |
27 |
28 | 提交
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
65 |
66 |
--------------------------------------------------------------------------------
/src/components/List.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
14 |
15 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
47 |
48 |
--------------------------------------------------------------------------------
/src/views/mine/AddAddress.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
16 |
22 |
28 |
34 |
35 |
36 | 保存
37 |
38 |
39 |
40 |
41 |
42 |
43 |
80 |
81 |
--------------------------------------------------------------------------------
/vue.config.js:
--------------------------------------------------------------------------------
1 | //官网配置: https://cli.vuejs.org/zh/config/#filenamehashing
2 |
3 | const path = require('path');
4 | const debug = process.env.NODE_ENV !== 'production'
5 |
6 | module.exports = {
7 | //部署应用包时的基本URL,如果是生产环境,部署到 /cli-study/dist 路径;如果是开发环境,部署到根路径
8 | publicPath: !debug ?
9 | '/cli-study/dist' : '/',
10 | //输出文件路径
11 | outputDir: 'dist',
12 | //放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。
13 | assetsDir: 'static',
14 | //默认情况下,生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存
15 | filenameHashing: true,
16 | // eslint-loader 是否在保存的时候检查
17 | lintOnSave: false,
18 | // 是否使用包含运行时编译器的Vue构建版本,设置为 true 后你就可以在 Vue 组件中使用 template 选项了,但是这会让你的应用额外增加 10kb 左右。
19 | runtimeCompiler: true,
20 | // 默认情况下 babel-loader 会忽略所有 node_modules 中的文件。如果你想要通过 Babel 显式转译一个依赖,可以在这个选项中列出来。
21 | transpileDependencies: [],
22 | // 生产环境不需要sourceMap
23 | productionSourceMap: false,
24 |
25 | // 官网:https://cli.vuejs.org/zh/guide/webpack.html#%E7%AE%80%E5%8D%95%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E5%BC%8F
26 | // 更多配置参考:https://www.jb51.net/article/150844.htm
27 | configureWebpack: {
28 | resolve: {
29 | alias: {
30 | '@': path.resolve(__dirname, './src')
31 | }
32 | }
33 | },
34 |
35 | // webpack的链式操作,允许对内部的 webpack 配置进行更细粒度的修改
36 | // 参考: https://cli.vuejs.org/zh/guide/webpack.html#%E9%93%BE%E5%BC%8F%E6%93%8D%E4%BD%9C-%E9%AB%98%E7%BA%A7
37 | chainWebpack: (config) => {
38 | if (debug) {
39 | // 本地开发配置
40 | } else {
41 | // 生产开发配置
42 | }
43 | },
44 |
45 | // css的相关配置
46 | css: {},
47 | //所有 webpack-dev-server 的选项都支持
48 | devServer: {
49 | open: true,
50 | host: '127.0.0.1',
51 | port: 3003,
52 | https: false,
53 | hotOnly: false,
54 | proxy: {
55 | //凡是请求以api开头的都会使用下面的代理服务器
56 | '/api/*': {
57 | target: 'http://localhost:9000/', // 目标服务器地址
58 | secure: false, // 目标服务器地址是否是安全协议
59 | changeOrigin: true, // 是否修改来源, 为true时会让目标服务器以为是webpack-dev-server发出的请求!服务端和服务端的请求是没有跨域的
60 | //pathRewrite: {'^/api': '/'} // 将/api开头的请求地址, /api 改为 /, 即 /api/xx 改为 /xx
61 | }
62 | }
63 | },
64 | // 第三方插件配置
65 | pluginOptions: {}
66 | };
--------------------------------------------------------------------------------
/src/views/Order/myOrder.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
14 |
15 |
16 |
![]()
20 |
21 |
22 |
{{item.name}}
23 |
{{item.title}}
24 |
25 | ¥{{item.price/100}}
26 | x{{item.count}}
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
56 |
57 |
--------------------------------------------------------------------------------
/src/views/category/category.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 | {{name}}
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
62 |
63 |
--------------------------------------------------------------------------------
/src/components/HelloWorld.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{ msg }}
4 |
5 | For a guide and recipes on how to configure / customize this project,
6 | check out the
7 | vue-cli documentation.
8 |
9 |
Installed CLI Plugins
10 |
17 |
Essential Links
18 |
25 |
Ecosystem
26 |
33 |
34 |
35 |
36 |
46 |
47 |
48 |
64 |
--------------------------------------------------------------------------------
/src/components/Recommend.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
更多精选商品
4 |
8 |
13 |
14 |
23 |
24 |
25 |
26 |
27 |
28 |
58 |
59 |
--------------------------------------------------------------------------------
/src/views/mine/EditAddress.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
16 |
22 |
28 |
34 |
35 |
41 | 保存
42 |
43 |
44 |
45 |
46 |
47 |
48 |
93 |
94 |
--------------------------------------------------------------------------------
/src/views/Goods/GoodsHot.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |

10 |
11 |
12 |
13 |
14 |
15 |
16 |
![]()
17 |
{{item.ranking}}
18 |
19 |
{{item.title}}
20 |
¥{{item.min_price}}
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
55 |
56 |
--------------------------------------------------------------------------------
/src/views/Classify.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
15 |
16 |
17 |
18 |
19 |
26 |
27 |
28 |
29 |
33 |
34 |
35 |
42 |
43 |
44 |
45 |
46 |
53 |
54 |
55 |
56 |
57 |
58 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
123 |
124 |
--------------------------------------------------------------------------------
/src/router/index.ts:
--------------------------------------------------------------------------------
1 | import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'
2 | import Home from '../views/Home.vue'
3 | import Car from '../views/Car.vue'
4 | import Classify from '../views/Classify.vue'
5 | import Personl from '../views/Personal.vue'
6 | import GoodsInfo from '../views/GoodsInfo.vue'
7 | import Member from '../views/mine/member.vue'
8 | import Category from '../views/category/category.vue'
9 | import Search from '../views/search/search.vue'
10 | import Address from '../views/mine/Address.vue'
11 | import Register from '../views/login/Register.vue'
12 | import Message from '../views/mine/message.vue'
13 | import AddAddress from '../views/mine/AddAddress.vue'
14 | import EditAddress from '../views/mine/EditAddress.vue'
15 | import GoodsHot from '../views/Goods/GoodsHot.vue'
16 | import ConfirmOrder from '../views/Order/ConfirmOrder.vue'
17 | import myOrder from '../views/Order/myOrder.vue'
18 | const routes: Array = [
19 | {
20 | path: '/',
21 | name: 'Home',
22 | component: Home,
23 | meta:{
24 | showTabbar:true
25 | }
26 | },
27 | {
28 | path:'/car',
29 | name:'Car',
30 | component:Car,
31 | meta:{
32 | showTabbar:true
33 | }
34 | },
35 | {
36 | path:'/classify',
37 | name:'Classify',
38 | component:Classify,
39 | meta:{
40 | showTabbar:true
41 | }
42 | },{
43 | path:'/personal',
44 | name:'Personl',
45 | component:Personl,
46 | props: true,
47 | meta:{
48 | showTabbar:true
49 | }
50 | },{
51 | path:'/goodsInfo/:id',
52 | name:'GoodsInfo',
53 | component:GoodsInfo,
54 | props: true,
55 | meta:{
56 | showTabbar:false
57 | }
58 | },{
59 | path:'/code/:name',
60 | name:'Member',
61 | component:Member,
62 | meta:{
63 | showTabbar:false
64 | }
65 | },{
66 | path:'/category/:name',
67 | name:'Category',
68 | props: true,
69 | component:Category,
70 | meta:{
71 | showTabbar:false
72 | }
73 | },{
74 | path:'/search',
75 | name:'Search',
76 | props: true,
77 | component:Search,
78 | meta:{
79 | showTabbar:false
80 | }
81 | },{
82 | path:'/api/address',
83 | name:'Address',
84 | props: true,
85 | component:Address,
86 | meta:{
87 | showTabbar:false
88 | }
89 | },{
90 | path:'/api/register',
91 | name:'Register',
92 | props: true,
93 | component:Register,
94 | meta:{
95 | showTabbar:false
96 | }
97 | },{
98 | path:'/api/message',
99 | name:'Message',
100 | props: true,
101 | component:Message,
102 | meta:{
103 | showTabbar:false
104 | }
105 | },{
106 | path:'/api/address/add',
107 | name:'AddAddress',
108 | props: true,
109 | component:AddAddress,
110 | meta:{
111 | showTabbar:false
112 | }
113 | },{
114 | path:'/api/address/edit/:id',
115 | name:'EditAddress',
116 | props: true,
117 | component:EditAddress,
118 | meta:{
119 | showTabbar:false
120 | }
121 | },{
122 | path:'/api/hot',
123 | name:'GoodsHot',
124 | props: true,
125 | component:GoodsHot,
126 | meta:{
127 | showTabbar:false
128 | }
129 | },{
130 | path:'/api/confirm',
131 | name:'ConfirmOrder',
132 | props: true,
133 | component:ConfirmOrder,
134 | meta:{
135 | showTabbar:false
136 | }
137 | },{
138 | path:'/api/order',
139 | name:'myOrder',
140 | props: true,
141 | component:myOrder,
142 | meta:{
143 | showTabbar:false
144 | }
145 | }
146 |
147 |
148 | ]
149 |
150 | const router = createRouter({
151 | history: createWebHashHistory(),
152 | routes
153 | })
154 |
155 | export default router
156 |
--------------------------------------------------------------------------------
/src/views/login/Login.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
15 |
23 |
24 | 登录
32 | 注册
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
110 |
111 |
112 |
--------------------------------------------------------------------------------
/src/views/mine/message.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
15 |
16 |
![]()
17 |
18 |
19 | {{name}}
23 | {{gender}}
28 |
29 | {{birthday}}
34 |
39 |
44 |
45 |
46 |
47 |
53 |
57 |
58 |
59 |
60 |
61 |
66 |
71 | 男
77 | 女
83 | 保密
89 |
90 |
91 |
92 |
97 |
106 |
107 |
108 |
109 |
110 |
117 |
118 |
119 |
120 |
121 |
122 |
209 |
210 |
--------------------------------------------------------------------------------
/src/views/mine/Address.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
15 |
16 |
17 |
18 |
19 |
20 |
{{item.username}}
21 |
22 |
23 |
24 |
25 |
26 | {{item.username}}
27 | {{item.phone}}
28 |
29 |
{{item.provinces}}{{item.address}}
30 |
31 |
32 |
33 |
41 |
42 |
43 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
60 | 添加收货地址
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
108 |
109 |
--------------------------------------------------------------------------------
/src/components/goodsStyle.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
![]()
9 |
10 |
11 |
12 | ¥{{goodInfo.min_price}}
13 | -{{goodInfo.max_price}}
14 |
15 |
剩余{{goodInfo.counts}}件
16 |
请选择款式
17 |
18 |
19 |
20 |
款式
21 |
46 |
47 |
48 |
购买数量
49 |
50 |
51 |
52 |
53 |
57 |
64 |
70 |
71 |
72 |
73 |
74 |
136 |
137 |
--------------------------------------------------------------------------------
/src/views/Car/ShopCar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Cabana家具店
7 |
8 |
9 |
10 | 编辑
11 |
12 |
13 |
14 |
18 |
19 |
24 |
25 |
26 |
27 |
{{item.name}}
28 |
¥{{item.price/100}}
29 |
{{item.title}}
30 |
31 |
32 |
33 |
34 |
35 |
42 |
43 |
44 |
45 |
46 |
47 |
48 | 全选
49 |
50 |
51 |
52 |
53 |
54 |
154 |
155 |
--------------------------------------------------------------------------------
/src/views/Order/ConfirmOrder.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
{{provinces}}
12 |
{{address}}
13 |
14 | {{username}}
15 | {{phone}}
16 |
17 |
18 |
配送方式
19 |
快递 免运费
20 |
21 |
22 |
23 |
24 |
25 |
26 | Cabana家具店
27 |
28 |
29 |
33 |
34 |
35 |
![]()
39 |
40 |
41 |
{{item.name}}
42 |
{{item.title}}
43 |
44 | ¥{{item.price/100}}
45 | x{{item.count}}
46 |
47 |
48 |
49 |
50 |
51 |
52 | 共{{count}}件
53 | 商品小计:¥{{price}}
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | 应付:¥{{price}}
62 |
66 |
67 |
73 |
80 |
85 |
86 |
87 |
88 |
89 |
90 |
168 |
169 |
--------------------------------------------------------------------------------
/src/views/Personal.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |

13 |
14 |
{{username}}
15 |
19 |

20 |
会员码
21 |
22 |
23 |
24 |

25 |
Cabana家具店
26 |
27 |
28 | 成为会员
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
40 |
41 | 0.00
42 | 余额
43 |
44 |
45 | 0
46 | 积分
47 |
48 |
49 | 0
50 | 卡
51 |
52 |
53 | 0
54 | 优惠券
55 |
56 |
57 |
61 | 零钱
62 |
63 |
64 |
65 |
66 |
67 |
68 |
我的订单
69 |
查看全部订单
70 |
71 |
72 |
73 |
74 |
78 |
82 |
86 |
90 |
94 |
98 |
99 |
100 |
101 |
102 |
107 |
111 | 购物车
112 |
113 |
117 |
121 | 返现
122 |
123 |
127 |
131 | 赠品
132 |
133 |
134 |
139 |
140 |
144 | 收货地址
145 |
146 |
151 |
155 | 个人信息
156 |
157 |
162 |
166 | 账号设置
167 |
168 |
退出登录
169 |
170 |
171 |
177 |
178 |
179 |
180 |
181 |
182 |
229 |
230 |
231 |
--------------------------------------------------------------------------------
/src/views/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
25 |
26 |
27 |
28 |
29 |
![]()
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |

49 |
50 |
51 |
55 |
56 |
57 |
61 |
62 |
63 |
64 |

65 |
66 |
67 |
68 |
69 |
70 |
71 |

72 |
73 |
74 |
75 |
76 |
77 |

78 |
79 |
80 |
81 |
85 |
86 |
87 |

88 |
89 |
90 |
91 |
92 |
93 |
94 |
98 |
99 |
100 |

101 |
102 |
103 |
104 |
105 |
106 |
107 |

108 |
109 |
110 |
111 |
112 |
113 |
117 |
118 |
119 |
120 |
121 |
122 |

123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
307 |
308 |
--------------------------------------------------------------------------------
/src/views/GoodsInfo.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 | {{goodsInfo.title}}
6 |
7 |
8 |
9 |
10 |
11 | ¥{{goodsInfo.min_price}}
12 | -{{goodsInfo.max_price}}
13 |
14 |
15 |
{{goodsInfo.title}}
16 |
20 |
21 |
26 | 分享
27 |
28 |
34 |
35 |
36 |
37 |
41 | 预售
42 | 付款后{{goodsInfo.presaleinfo}}天后发货
43 |
44 |
45 |
46 |
50 |
51 |

52 |
店铺商品热榜排行第{{goodsInfo.ranking}}名
53 |
54 |
55 |
56 |
57 |
58 |
59 | 运费
60 | 免运费
61 |
62 |
剩余{{goodsInfo.counts}}
63 |
64 |
65 |
66 |
71 |
72 | 服务
73 | {{goodsInfo.labelname}}
74 |
75 |
76 |
77 |
78 |
79 |
85 |
86 |
{{smallList[0]}}
87 |
{{bigList[0]}}
88 |
{{smallList[1]}}
89 |
{{bigList[1]}}
90 |
{{smallList[2]}}
91 |
{{bigList[2]}}
92 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
106 |
选择
107 |
款式
108 |
109 |
113 |
117 |
118 |
119 |
120 |
121 |
共有{{newList.length}}种款式可选
122 |
123 |
124 |
125 |
126 |
133 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
147 |
148 |
Canban家具店
149 |
150 |
151 |
152 |
156 |
157 |
158 |
159 |
160 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
175 |
180 |
187 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
293 |
294 |
--------------------------------------------------------------------------------