├── .gitignore
├── Back-end
├── README.md
├── app.py
└── requirements.txt
├── ER图.drawio
├── Front-end
├── .gitignore
├── README.md
├── index.html
├── package.json
├── pnpm-lock.yaml
├── public
│ ├── avatar
│ │ ├── 1.jpg
│ │ ├── 10.jpg
│ │ ├── 2.jpg
│ │ ├── 3.jpg
│ │ ├── 4.jpg
│ │ ├── 5.jpg
│ │ ├── 6.jpg
│ │ ├── 7.jpg
│ │ ├── 8.jpg
│ │ └── 9.jpg
│ └── products
│ │ ├── 12c.png
│ │ ├── Air2SE.png
│ │ ├── Buds3.png
│ │ ├── Buds4.png
│ │ ├── K60.png
│ │ ├── K60Pro.png
│ │ ├── MiBook.png
│ │ ├── MiPad.png
│ │ ├── MiWiFi.png
│ │ ├── Note12.png
│ │ ├── Note12Pro.png
│ │ ├── T恤.png
│ │ ├── Xiaomi13.png
│ │ ├── Xiaomi13Pro.png
│ │ ├── Xiaomi14.png
│ │ ├── er图.jpg
│ │ ├── side.jpg
│ │ ├── xiaomiTV.png
│ │ ├── 上海青.png
│ │ ├── 冬装.png
│ │ ├── 小米辣.png
│ │ ├── 杭白菜.png
│ │ ├── 毛巾.png
│ │ ├── 毛衣.png
│ │ ├── 沐浴露.png
│ │ ├── 洗发水.png
│ │ ├── 牙刷.png
│ │ ├── 胡萝卜.png
│ │ ├── 菠菜.png
│ │ ├── 裙子.png
│ │ └── 黄瓜.png
├── src
│ ├── App.vue
│ ├── Views
│ │ ├── Admin.vue
│ │ ├── Index.vue
│ │ ├── Login.vue
│ │ └── User.vue
│ ├── assets
│ │ └── docs
│ │ │ ├── cart.png
│ │ │ ├── display.png
│ │ │ ├── index.png
│ │ │ ├── login.png
│ │ │ ├── manage.png
│ │ │ ├── order.png
│ │ │ ├── person.png
│ │ │ ├── register.png
│ │ │ ├── 会员中心.png
│ │ │ └── 登陆注册.png
│ ├── components
│ │ ├── Carousel.vue
│ │ ├── Display.vue
│ │ ├── Footer.vue
│ │ ├── Navigation.vue
│ │ ├── admin
│ │ │ ├── ProductForm.vue
│ │ │ └── Table.vue
│ │ └── user
│ │ │ ├── Cart.vue
│ │ │ ├── My.vue
│ │ │ └── Order.vue
│ ├── main.js
│ ├── router
│ │ └── index.js
│ ├── store
│ │ ├── global.js
│ │ └── user.js
│ └── style
│ │ └── style.css
└── vite.config.js
├── README.md
└── shop.sql
/.gitignore:
--------------------------------------------------------------------------------
1 | *.pptx
2 | *.ppt
3 | *.docx
4 | *.doc
5 |
6 | .vscode/
7 | __pycache__/
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Back-end/README.md:
--------------------------------------------------------------------------------
1 |
9 | ## Start
10 |
11 | ##### Windows
12 |
13 | ```sh
14 | pip install -r requirements.txt
15 | python -m flask run --host=0.0.0.0 --port=53000
16 | ```
17 |
18 | #### Linux(Ubuntu)
19 | ```sh
20 | sudo apt install python3-mysqldb
21 | pip install -r requirements.txt
22 | python -m flask run --host=0.0.0.0 --port=53000
23 | ```
--------------------------------------------------------------------------------
/Back-end/app.py:
--------------------------------------------------------------------------------
1 | from datetime import date
2 |
3 | from flask import Flask, request, make_response, render_template, jsonify, session
4 | from flask_sqlalchemy import SQLAlchemy
5 | from sqlalchemy import and_, or_
6 | from flask_cors import CORS
7 | from flask_cors import cross_origin
8 |
9 |
10 | from werkzeug.security import check_password_hash
11 | # 工程文件路径
12 | rootpath = "C:/Users/86199/Desktop/数据库学习笔记/数据库课设/Front-end"
13 | # rootpath = "/home/wyz/Shop/Front-end"
14 |
15 |
16 | app = Flask(__name__)
17 |
18 |
19 | # 设置连接数据库的URL(你的数据库账号:你的数据库密码@数据库外网地址:端口/数据库)
20 | app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:123@baidu.com:3306/chat'
21 |
22 | # 设置json格式
23 | app.config['JSON_AS_ASCII'] = False
24 |
25 | # 设置每次请求结束后会自动提交数据库中的改动
26 | app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
27 |
28 | app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
29 | # 会话密钥
30 | app.secret_key = b'123456'
31 |
32 | db = SQLAlchemy(app)
33 |
34 | # 定义模型
35 | class Goods(db.Model):
36 | __tablename__ = 'Goods'
37 | goods_id = db.Column(db.Integer, primary_key=True)
38 | name = db.Column(db.String(64), nullable=False)
39 | img = db.Column(db.String(64))
40 | type = db.Column(db.String(32))
41 | # 简介
42 | description = db.Column(db.String(200))
43 | # 库存
44 | count = db.Column(db.Integer)
45 | price = db.Column(db.Float)
46 | # 销量
47 | goods_sale= db.Column(db.Integer)
48 |
49 | class User(db.Model):
50 | __tablename__ = 'User'
51 | # 账号
52 | user_id = db.Column(db.Integer, primary_key=True)
53 | # 密码
54 | password = db.Column(db.String(64), nullable=False)
55 | # 昵称
56 | nikename = db.Column(db.String(64))
57 | # 姓名
58 | name = db.Column(db.String(64))
59 | sex= db.Column(db.String(16))
60 | address = db.Column(db.String(64))
61 | phone = db.Column(db.String(16))
62 | mail = db.Column(db.String(32))
63 |
64 | class Car(db.Model):
65 | __tablename__ = 'Car'
66 | car_id = db.Column(db.Integer, primary_key=True)
67 | # 数量
68 | count = db.Column(db.Integer)
69 | # User外键
70 | user_id = db.Column(db.Integer, db.ForeignKey('User.user_id'))
71 | User = db.relationship('User', backref='carts')
72 | # goods外键
73 | goods_id = db.Column(db.Integer, db.ForeignKey('Goods.goods_id'))
74 | Goods = db.relationship('Goods', backref='carts')
75 |
76 | class Order(db.Model):
77 | __tablename__ = 'Order'
78 | order_id = db.Column(db.Integer, primary_key=True)
79 | # 收货人姓名
80 | name = db.Column(db.String(64))
81 | # 收货地址
82 | address = db.Column(db.String(64))
83 | phone = db.Column(db.String(16))
84 | # 价格
85 | sum = db.Column(db.Float)
86 | # 数量
87 | count = db.Column(db.Integer)
88 | # 下单时间
89 | time = db.Column(db.Date)
90 | # User外键
91 | user_id = db.Column(db.Integer, db.ForeignKey('User.user_id'))
92 | User = db.relationship('User', backref='orders')
93 | # goods外键
94 | goods_id = db.Column(db.Integer, db.ForeignKey('Goods.goods_id'))
95 | Goods = db.relationship('Goods', backref='orders')
96 |
97 | class category(db.Model):
98 | __tablename__ = 'category'
99 | types_id = db.Column(db.Integer, primary_key=True)
100 | classification = db.Column(db.String(32))
101 |
102 | @app.route('/')
103 | @cross_origin(supports_credentials=True)
104 | def index():
105 | return ''
106 |
107 | # 商品处理 ###############################################
108 |
109 | # 商品转json
110 | def goods_to_products(items):
111 | products = []
112 | for item in items:
113 | product = {
114 | "id": item.goods_id,
115 | "name": item.name,
116 | "description": item.description,
117 | "price": item.price,
118 | "img": item.img,
119 | "type": item.type,
120 | "number": item.count,
121 | "see": "999+",
122 | "love": "999+",
123 | "hot": item.goods_sale,
124 | 'inventory':item.count
125 | }
126 | products.append(product)
127 | return jsonify(products)
128 | # 图片储存
129 | @app.route('/upload',methods=['POST','GET'])
130 | @cross_origin(supports_credentials=True)
131 | def pictrue_save():
132 | if(request.method == 'POST'):
133 | # 获取图片文件
134 | img = request.files['img']
135 | path = rootpath+"/public/images/products/" + img.filename
136 | img.save(path)
137 | return 'ok'
138 | # 请求处理
139 | @app.route('/products', methods=['GET', 'POST', 'PUT', 'DELETE'])
140 | @cross_origin(supports_credentials=True)
141 | def products():
142 | if (request.method == 'POST'):
143 | if(request.args.get('DeleteID') == None):
144 | # 添加商品
145 | latest = Goods.query.order_by(Goods.goods_id.desc()).first().goods_id
146 | id = latest + 1
147 | name = request.form['name']
148 | image = request.form['filename']
149 | type = request.form['type']
150 | description = request.form['description']
151 | count = request.form['inventory']
152 | price = request.form['price']
153 | goods_sale = 0
154 | product = Goods(goods_id=id, name=name, img=image, type=type, description=description, count=count,
155 | price=price,
156 | goods_sale=goods_sale)
157 | db.session.add(product)
158 | db.session.commit()
159 | return ''
160 | else:
161 | # 删除
162 | id = request.args.get('DeleteID')
163 | product = Goods.query.filter_by(goods_id=id).first()
164 | db.session.delete(product)
165 | db.session.commit()
166 | return ''
167 | return ''
168 | elif (request.method == 'GET'):
169 | # 展示商品
170 | items = Goods.query.all()
171 | products = goods_to_products(items)
172 | return products
173 | elif (request.method == 'PUT'):
174 | id = request.form['id']
175 | product = Goods.query.filter_by(goods_id=id).first()
176 | product.name = request.form['name']
177 | product.img = request.form['filename']
178 | product.type = request.form['type']
179 | product.description = request.form['description']
180 | product.count = request.form['inventory']
181 | product.price = request.form['price']
182 | db.session.commit()
183 | return ''
184 | ###############################################################################
185 |
186 |
187 | # 类别#######################################################################
188 | # 分类转json
189 | def types_to_fenlei(items):
190 | fenlei = []
191 | for item in items:
192 | category = {
193 | 'id' : item.types_id,
194 | 'classification' : item.classification
195 | }
196 | fenlei.append(category)
197 | return jsonify(fenlei)
198 | # 请求处理
199 | @app.route('/fenlei', methods=['GET', 'POST'])
200 | @cross_origin(supports_credentials=True)
201 | def fenlei():
202 | if(request.method == 'GET'):
203 | items = category.query.all()
204 | categories = types_to_fenlei(items)
205 | return categories
206 | ##############################################################################
207 |
208 |
209 | # 购物车处理 ###################################################################
210 | # 购物车转json
211 | def cart_to_preorder(items):
212 | preorders = []
213 | for item in items:
214 | product = Goods.query.filter_by(goods_id=item.goods_id).first()
215 | preorder = {
216 | 'id': item.car_id,
217 | 'name': product.name,
218 | 'img': product.img,
219 | 'type': product.type,
220 | 'price': product.price,
221 | 'count': item.count,
222 | 'sum': item.count * product.price,
223 | 'description': product.description
224 | }
225 | preorders.append(preorder)
226 | return jsonify(preorders)
227 | # 请求处理
228 | @app.route('/cart', methods=['GET', 'POST','PUT'])
229 | @cross_origin(supports_credentials=True)
230 | def shop_cart():
231 | if(request.method=='GET'):
232 | # 展示购物车
233 | user_id = 1
234 | user_now = User.query.filter_by(user_id=user_id).first()
235 | carts_now = user_now.carts
236 | preorders = cart_to_preorder(carts_now)
237 | return preorders
238 | elif(request.method=='POST'):
239 | if(request.args.get('DeleteID') == None):
240 | # 将商品加入购物车
241 | latest = Car.query.order_by(Car.car_id.desc()).first().car_id
242 | car_id = latest + 1
243 | count = 1
244 | goods_id = int(request.form['id'])
245 | user_id = 1
246 | preorder = Car(car_id=car_id, count=count, goods_id=goods_id, user_id=user_id)
247 | db.session.add(preorder)
248 | db.session.commit()
249 | return ''
250 | else:
251 | # 撤销购物车中的订单
252 | id = request.args.get('DeleteID')
253 | preorder = Car.query.filter_by(car_id=id).first()
254 | db.session.delete(preorder)
255 | db.session.commit()
256 | return ''
257 | elif(request.method=='PUT'):
258 | # 修改数量
259 | id = request.form['id']
260 | preorder = Car.query.filter_by(car_id=id).first()
261 | preorder.count = request.form['count']
262 | db.session.commit()
263 | return ''
264 | return ''
265 | #############################################################################
266 |
267 |
268 | # 订单处理####################################################################
269 | # order转json
270 | def order_to_json(items):
271 | orders = []
272 | for item in items:
273 | product = Goods.query.filter_by(goods_id=item.goods_id).first()
274 | time = item.time.strftime("%Y-%m-%d %H:%M:%S")
275 | order_json = {
276 | 'id': item.order_id,
277 | 'goods_name': product.name,
278 | 'count': item.count,
279 | 'sum': item.sum,
280 | 'name': item.name,
281 | 'phone': item.phone,
282 | 'address': item.address,
283 | 'time': time,
284 | 'img': product.img,
285 | 'description': product.description
286 | }
287 | orders.append(order_json)
288 | return jsonify(orders)
289 | # 请求处理
290 | @app.route('/order', methods=['POST', 'GET','PUT'])
291 | @cross_origin(supports_credentials=True)
292 | def op_order():
293 | if (request.method == 'GET'):
294 | # 展示订单
295 | user_id = 1
296 | user_now = User.query.filter_by(user_id=user_id).first()
297 | orders = user_now.orders
298 | orders_json = order_to_json(orders)
299 | return orders_json
300 | elif (request.method == 'POST'):
301 | if(request.args.get('DeleteID')==None):
302 | # 从购物车中下单
303 | latest = Order.query.order_by(Order.order_id.desc()).first().order_id
304 | order_id = latest+1
305 | user_id = 1
306 | # 用购物车中意向订单编号去找到所需商品编号
307 | cart_id = request.form['id']
308 | goods_id = Car.query.filter_by(car_id=cart_id).first().goods_id
309 | user_now = User.query.filter_by(user_id=user_id).first()
310 | name = user_now.name
311 | address = user_now.address
312 | phone = user_now.phone
313 | count = request.form['count']
314 | price = request.form['price']
315 | sum = int(count)*int(price)
316 | time = date.today()
317 | order_now = Order(order_id=order_id,user_id=user_id,goods_id=goods_id,name=name,address=address,phone=phone,sum=sum,count=count,time=time)
318 | db.session.add(order_now)
319 | db.session.commit()
320 | # 删除购物车记录
321 | preorder = Car.query.filter_by(car_id=cart_id).first()
322 | db.session.delete(preorder)
323 | db.session.commit()
324 | return ''
325 | else:
326 | # 撤销订单
327 | id = request.args.get('DeleteID')
328 | order_now = db.session.query(Order).filter_by(order_id=id).first()
329 | db.session.delete(order_now)
330 | db.session.commit()
331 | return ''
332 | elif (request.method == 'PUT'):
333 | # 修改订单信息,只能改收货人信息
334 | id = request.form['id']
335 | order_now = Order.query.filter_by(order_id=id).first()
336 | order_now.name = request.form['name']
337 | order_now.address = request.form['address']
338 | order_now.phone = request.form['phone']
339 | db.session.commit()
340 | return ''
341 | return ''
342 | ############################################################################
343 |
344 |
345 | # 用户管理#################################################
346 | # user转json
347 | def user_json(item):
348 | user_now = {
349 | 'id': item.user_id,
350 | 'nikename': item.nikename,
351 | 'password': item.password,
352 | 'name': item.name,
353 | 'sex': item.sex,
354 | 'address': item.address,
355 | 'phone': item.phone,
356 | 'mail': item.mail
357 | }
358 | return jsonify(user_now)
359 | # 请求处理
360 | @app.route('/user', methods=['GET','POST','PUT'])
361 | @cross_origin(supports_credentials=True)
362 | def op_user():
363 | if(request.method == 'GET'):
364 | # 用户信息查看
365 | user_id = 1
366 | user_now = User.query.filter_by(user_id=user_id).first()
367 | user_now_json = user_json(user_now)
368 | return user_now_json
369 | if(request.method == 'POST'):
370 | # 用户注册
371 | latest = User.query.order_by(User.user_id.desc()).first().user_id
372 | user_id = latest + 1
373 | nikename = request.form['nikename']
374 | password = request.form['password']
375 | mail = request.form['email']
376 | user_now = User(user_id=user_id, nikename=nikename, password=password, name='无', sex='保密', address='无',
377 | phone='无', mail=mail)
378 | db.session.add(user_now)
379 | db.session.commit()
380 | return 'success'
381 | if(request.method == 'PUT'):
382 | # 修改信息
383 | user_id = 1
384 | user_now=Order.query.filter_by(user_id=user_id).first()
385 | user_now.password = request.form['password']
386 | user_now.name = request.form['name']
387 | user_now.sex = request.form['sex']
388 | user_now.address = request.form['address']
389 | user_now.phone = request.form['phone']
390 | user_now.mail = request.form['mail']
391 | user_now.nikename = request.form['nikename']
392 | db.session.commit()
393 | return ''
394 | return ''
395 | #########################################################
396 |
397 |
398 | # 用户登录##################################################
399 | @app.route('/login', methods=['POST', 'GET'])
400 | @cross_origin(supports_credentials=True)
401 |
402 | def login():
403 | with app.app_context():
404 | if(request.method == 'POST'):
405 | nikename = request.form['nikename']
406 | password = request.form['password']
407 | users = User.query.filter_by(nikename=nikename).all()
408 | for item in users:
409 | if password == item.password:
410 | return "success"
411 | else:
412 | print("Error!!")
413 | return 'error'
414 | return ''
415 | @app.route('/logout')
416 | @cross_origin(supports_credentials=True)
417 | def logout():
418 | if(request.method == 'POST'):
419 | session.pop('uid', None)
420 | return 'success'
421 | return ''
422 | ##########################################################
423 |
424 | if __name__ == '__main__':
425 | # 通过CORS,所有的来源都允许跨域访问
426 | CORS(app, supports_credentials=True)
427 | app.run(debug=True, host='localhost', port=53000)
428 |
429 |
--------------------------------------------------------------------------------
/Back-end/requirements.txt:
--------------------------------------------------------------------------------
1 | Flask >= 2.2.2
2 | Flask-Cors >= 3.0.10
3 | Flask-MySQLdb >= 1.0.1
4 | Flask-SQLAlchemy >= 3.0.2
5 | SQLAlchemy >= 1.4.22
--------------------------------------------------------------------------------
/ER图.drawio:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
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 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
--------------------------------------------------------------------------------
/Front-end/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/Front-end/README.md:
--------------------------------------------------------------------------------
1 |
9 | ## 介绍
10 |
11 | OnlineShopping 1.0是一套电商系统,包括 商城系统及 商城后台管理系统,基于后端技术 Flask 和 前端框架 Vue3.2 以及相关技术栈开发。
12 |
13 | ###### 前台商城系统
14 |
15 | - [x] 首页门户
16 | - [x] 登陆注册
17 | - [x] 商品分类
18 | - [x] 商品轮播
19 | - [x] 商品搜索
20 | - [x] 商品展示
21 | - [x] 购物车
22 | - [x] 订单结算
23 | - [x] 个人订单管理
24 | - [ ] 会员中心
25 | - [ ] 帮助中心
26 |
27 | ###### 后台管理系统
28 |
29 | - [x] 商品管理
30 | - [ ] 数据面板
31 | - [ ] 轮播图管理
32 | - [ ] 订单管理
33 | - [ ] 会员管理
34 | - [ ] 分类管理
35 | - [ ] 设置
36 |
37 | 本仓库中的源码为 xx 商城前后端分离版本的 Vue 项目(Vue 版本为 3.2),主要面向前端开发人员,
38 |
39 | 新蜂商城 Vue3 版本线上预览地址:[https://shop.wangwangyz.site](https://shop.wangwangyz.site),账号可自行注册。
40 |
41 | ## 预览
42 |
43 | #### 登陆注册模块
44 |
45 | 
46 |
47 | #### 首页商城
48 |
49 | 
50 |
51 | #### 商品分类
52 |
53 | 
54 |
55 | #### 商品管理
56 |
57 | 
58 |
59 | #### 会员中心
60 |
61 | 
62 |
63 | ## 感谢
64 |
65 | - [Vue](https://github.com/vuejs/core)
66 | - [Vue-Router](https://github.com/vuejs/router)
67 | - [ElementPlus](https://github.com/element-plus/element-plus)
68 |
--------------------------------------------------------------------------------
/Front-end/index.html:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | 网上购物系统
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Front-end/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "shoppingonline",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite --host 0.0.0.0",
8 | "build": "vite build",
9 | "preview": "vite preview"
10 | },
11 | "dependencies": {
12 | "axios": "^1.2.2",
13 | "bootstrap": "5.3.0-alpha1",
14 | "element-plus": "^2.2.28",
15 | "ionicons": "^6.0.4",
16 | "lodash": "^4.17.21",
17 | "lxgw-wenkai-lite-webfont": "^1.6.0",
18 | "pinia": "^2.0.29",
19 | "vue": "^3.2.45",
20 | "vue-router": "4"
21 | },
22 | "devDependencies": {
23 | "@vitejs/plugin-vue": "^4.0.0",
24 | "vite": "^4.0.0"
25 | }
26 | }
--------------------------------------------------------------------------------
/Front-end/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.4
2 |
3 | specifiers:
4 | '@vitejs/plugin-vue': ^4.0.0
5 | axios: ^1.2.2
6 | bootstrap: 5.3.0-alpha1
7 | element-plus: ^2.2.28
8 | ionicons: ^6.0.4
9 | lodash: ^4.17.21
10 | lxgw-wenkai-lite-webfont: ^1.6.0
11 | pinia: ^2.0.29
12 | vite: ^4.0.0
13 | vue: ^3.2.45
14 | vue-router: '4'
15 |
16 | dependencies:
17 | axios: registry.npmmirror.com/axios/1.2.2
18 | bootstrap: registry.npmmirror.com/bootstrap/5.3.0-alpha1
19 | element-plus: registry.npmmirror.com/element-plus/2.2.28_vue@3.2.45
20 | ionicons: registry.npmmirror.com/ionicons/6.0.4
21 | lodash: registry.npmmirror.com/lodash/4.17.21
22 | lxgw-wenkai-lite-webfont: registry.npmmirror.com/lxgw-wenkai-lite-webfont/1.6.0
23 | pinia: registry.npmmirror.com/pinia/2.0.29_vue@3.2.45
24 | vue: registry.npmmirror.com/vue/3.2.45
25 | vue-router: registry.npmmirror.com/vue-router/4.1.6_vue@3.2.45
26 |
27 | devDependencies:
28 | '@vitejs/plugin-vue': registry.npmmirror.com/@vitejs/plugin-vue/4.0.0_vite@4.0.4+vue@3.2.45
29 | vite: registry.npmmirror.com/vite/4.0.4
30 |
31 | packages:
32 |
33 | registry.npmmirror.com/@babel/helper-string-parser/7.19.4:
34 | resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz}
35 | name: '@babel/helper-string-parser'
36 | version: 7.19.4
37 | engines: {node: '>=6.9.0'}
38 |
39 | registry.npmmirror.com/@babel/helper-validator-identifier/7.19.1:
40 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz}
41 | name: '@babel/helper-validator-identifier'
42 | version: 7.19.1
43 | engines: {node: '>=6.9.0'}
44 |
45 | registry.npmmirror.com/@babel/parser/7.20.7:
46 | resolution: {integrity: sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/parser/-/parser-7.20.7.tgz}
47 | name: '@babel/parser'
48 | version: 7.20.7
49 | engines: {node: '>=6.0.0'}
50 | hasBin: true
51 | dependencies:
52 | '@babel/types': registry.npmmirror.com/@babel/types/7.20.7
53 |
54 | registry.npmmirror.com/@babel/types/7.20.7:
55 | resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/types/-/types-7.20.7.tgz}
56 | name: '@babel/types'
57 | version: 7.20.7
58 | engines: {node: '>=6.9.0'}
59 | dependencies:
60 | '@babel/helper-string-parser': registry.npmmirror.com/@babel/helper-string-parser/7.19.4
61 | '@babel/helper-validator-identifier': registry.npmmirror.com/@babel/helper-validator-identifier/7.19.1
62 | to-fast-properties: registry.npmmirror.com/to-fast-properties/2.0.0
63 |
64 | registry.npmmirror.com/@ctrl/tinycolor/3.5.0:
65 | resolution: {integrity: sha512-tlJpwF40DEQcfR/QF+wNMVyGMaO9FQp6Z1Wahj4Gk3CJQYHwA2xVG7iKDFdW6zuxZY9XWOpGcfNCTsX4McOsOg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.5.0.tgz}
66 | name: '@ctrl/tinycolor'
67 | version: 3.5.0
68 | engines: {node: '>=10'}
69 | dev: false
70 |
71 | registry.npmmirror.com/@element-plus/icons-vue/2.0.10_vue@3.2.45:
72 | resolution: {integrity: sha512-ygEZ1mwPjcPo/OulhzLE7mtDrQBWI8vZzEWSNB2W/RNCRjoQGwbaK4N8lV4rid7Ts4qvySU3njMN7YCiSlSaTQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.10.tgz}
73 | id: registry.npmmirror.com/@element-plus/icons-vue/2.0.10
74 | name: '@element-plus/icons-vue'
75 | version: 2.0.10
76 | peerDependencies:
77 | vue: ^3.2.0
78 | dependencies:
79 | vue: registry.npmmirror.com/vue/3.2.45
80 | dev: false
81 |
82 | registry.npmmirror.com/@esbuild/android-arm/0.16.17:
83 | resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz}
84 | name: '@esbuild/android-arm'
85 | version: 0.16.17
86 | engines: {node: '>=12'}
87 | cpu: [arm]
88 | os: [android]
89 | requiresBuild: true
90 | dev: true
91 | optional: true
92 |
93 | registry.npmmirror.com/@esbuild/android-arm64/0.16.17:
94 | resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz}
95 | name: '@esbuild/android-arm64'
96 | version: 0.16.17
97 | engines: {node: '>=12'}
98 | cpu: [arm64]
99 | os: [android]
100 | requiresBuild: true
101 | dev: true
102 | optional: true
103 |
104 | registry.npmmirror.com/@esbuild/android-x64/0.16.17:
105 | resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz}
106 | name: '@esbuild/android-x64'
107 | version: 0.16.17
108 | engines: {node: '>=12'}
109 | cpu: [x64]
110 | os: [android]
111 | requiresBuild: true
112 | dev: true
113 | optional: true
114 |
115 | registry.npmmirror.com/@esbuild/darwin-arm64/0.16.17:
116 | resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz}
117 | name: '@esbuild/darwin-arm64'
118 | version: 0.16.17
119 | engines: {node: '>=12'}
120 | cpu: [arm64]
121 | os: [darwin]
122 | requiresBuild: true
123 | dev: true
124 | optional: true
125 |
126 | registry.npmmirror.com/@esbuild/darwin-x64/0.16.17:
127 | resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz}
128 | name: '@esbuild/darwin-x64'
129 | version: 0.16.17
130 | engines: {node: '>=12'}
131 | cpu: [x64]
132 | os: [darwin]
133 | requiresBuild: true
134 | dev: true
135 | optional: true
136 |
137 | registry.npmmirror.com/@esbuild/freebsd-arm64/0.16.17:
138 | resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz}
139 | name: '@esbuild/freebsd-arm64'
140 | version: 0.16.17
141 | engines: {node: '>=12'}
142 | cpu: [arm64]
143 | os: [freebsd]
144 | requiresBuild: true
145 | dev: true
146 | optional: true
147 |
148 | registry.npmmirror.com/@esbuild/freebsd-x64/0.16.17:
149 | resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz}
150 | name: '@esbuild/freebsd-x64'
151 | version: 0.16.17
152 | engines: {node: '>=12'}
153 | cpu: [x64]
154 | os: [freebsd]
155 | requiresBuild: true
156 | dev: true
157 | optional: true
158 |
159 | registry.npmmirror.com/@esbuild/linux-arm/0.16.17:
160 | resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz}
161 | name: '@esbuild/linux-arm'
162 | version: 0.16.17
163 | engines: {node: '>=12'}
164 | cpu: [arm]
165 | os: [linux]
166 | requiresBuild: true
167 | dev: true
168 | optional: true
169 |
170 | registry.npmmirror.com/@esbuild/linux-arm64/0.16.17:
171 | resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz}
172 | name: '@esbuild/linux-arm64'
173 | version: 0.16.17
174 | engines: {node: '>=12'}
175 | cpu: [arm64]
176 | os: [linux]
177 | requiresBuild: true
178 | dev: true
179 | optional: true
180 |
181 | registry.npmmirror.com/@esbuild/linux-ia32/0.16.17:
182 | resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz}
183 | name: '@esbuild/linux-ia32'
184 | version: 0.16.17
185 | engines: {node: '>=12'}
186 | cpu: [ia32]
187 | os: [linux]
188 | requiresBuild: true
189 | dev: true
190 | optional: true
191 |
192 | registry.npmmirror.com/@esbuild/linux-loong64/0.16.17:
193 | resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz}
194 | name: '@esbuild/linux-loong64'
195 | version: 0.16.17
196 | engines: {node: '>=12'}
197 | cpu: [loong64]
198 | os: [linux]
199 | requiresBuild: true
200 | dev: true
201 | optional: true
202 |
203 | registry.npmmirror.com/@esbuild/linux-mips64el/0.16.17:
204 | resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz}
205 | name: '@esbuild/linux-mips64el'
206 | version: 0.16.17
207 | engines: {node: '>=12'}
208 | cpu: [mips64el]
209 | os: [linux]
210 | requiresBuild: true
211 | dev: true
212 | optional: true
213 |
214 | registry.npmmirror.com/@esbuild/linux-ppc64/0.16.17:
215 | resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz}
216 | name: '@esbuild/linux-ppc64'
217 | version: 0.16.17
218 | engines: {node: '>=12'}
219 | cpu: [ppc64]
220 | os: [linux]
221 | requiresBuild: true
222 | dev: true
223 | optional: true
224 |
225 | registry.npmmirror.com/@esbuild/linux-riscv64/0.16.17:
226 | resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz}
227 | name: '@esbuild/linux-riscv64'
228 | version: 0.16.17
229 | engines: {node: '>=12'}
230 | cpu: [riscv64]
231 | os: [linux]
232 | requiresBuild: true
233 | dev: true
234 | optional: true
235 |
236 | registry.npmmirror.com/@esbuild/linux-s390x/0.16.17:
237 | resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz}
238 | name: '@esbuild/linux-s390x'
239 | version: 0.16.17
240 | engines: {node: '>=12'}
241 | cpu: [s390x]
242 | os: [linux]
243 | requiresBuild: true
244 | dev: true
245 | optional: true
246 |
247 | registry.npmmirror.com/@esbuild/linux-x64/0.16.17:
248 | resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz}
249 | name: '@esbuild/linux-x64'
250 | version: 0.16.17
251 | engines: {node: '>=12'}
252 | cpu: [x64]
253 | os: [linux]
254 | requiresBuild: true
255 | dev: true
256 | optional: true
257 |
258 | registry.npmmirror.com/@esbuild/netbsd-x64/0.16.17:
259 | resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz}
260 | name: '@esbuild/netbsd-x64'
261 | version: 0.16.17
262 | engines: {node: '>=12'}
263 | cpu: [x64]
264 | os: [netbsd]
265 | requiresBuild: true
266 | dev: true
267 | optional: true
268 |
269 | registry.npmmirror.com/@esbuild/openbsd-x64/0.16.17:
270 | resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz}
271 | name: '@esbuild/openbsd-x64'
272 | version: 0.16.17
273 | engines: {node: '>=12'}
274 | cpu: [x64]
275 | os: [openbsd]
276 | requiresBuild: true
277 | dev: true
278 | optional: true
279 |
280 | registry.npmmirror.com/@esbuild/sunos-x64/0.16.17:
281 | resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz}
282 | name: '@esbuild/sunos-x64'
283 | version: 0.16.17
284 | engines: {node: '>=12'}
285 | cpu: [x64]
286 | os: [sunos]
287 | requiresBuild: true
288 | dev: true
289 | optional: true
290 |
291 | registry.npmmirror.com/@esbuild/win32-arm64/0.16.17:
292 | resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz}
293 | name: '@esbuild/win32-arm64'
294 | version: 0.16.17
295 | engines: {node: '>=12'}
296 | cpu: [arm64]
297 | os: [win32]
298 | requiresBuild: true
299 | dev: true
300 | optional: true
301 |
302 | registry.npmmirror.com/@esbuild/win32-ia32/0.16.17:
303 | resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz}
304 | name: '@esbuild/win32-ia32'
305 | version: 0.16.17
306 | engines: {node: '>=12'}
307 | cpu: [ia32]
308 | os: [win32]
309 | requiresBuild: true
310 | dev: true
311 | optional: true
312 |
313 | registry.npmmirror.com/@esbuild/win32-x64/0.16.17:
314 | resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz}
315 | name: '@esbuild/win32-x64'
316 | version: 0.16.17
317 | engines: {node: '>=12'}
318 | cpu: [x64]
319 | os: [win32]
320 | requiresBuild: true
321 | dev: true
322 | optional: true
323 |
324 | registry.npmmirror.com/@floating-ui/core/1.1.0:
325 | resolution: {integrity: sha512-zbsLwtnHo84w1Kc8rScAo5GMk1GdecSlrflIbfnEBJwvTSj1SL6kkOYV+nHraMCPEy+RNZZUaZyL8JosDGCtGQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@floating-ui/core/-/core-1.1.0.tgz}
326 | name: '@floating-ui/core'
327 | version: 1.1.0
328 | dev: false
329 |
330 | registry.npmmirror.com/@floating-ui/dom/1.1.0:
331 | resolution: {integrity: sha512-TSogMPVxbRe77QCj1dt8NmRiJasPvuc+eT5jnJ6YpLqgOD2zXc5UA3S1qwybN+GVCDNdKfpKy1oj8RpzLJvh6A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.1.0.tgz}
332 | name: '@floating-ui/dom'
333 | version: 1.1.0
334 | dependencies:
335 | '@floating-ui/core': registry.npmmirror.com/@floating-ui/core/1.1.0
336 | dev: false
337 |
338 | registry.npmmirror.com/@stencil/core/2.21.0:
339 | resolution: {integrity: sha512-c4mVCl87wTV8u7ExQqiiQU5XrkzXjq8ll8skPlFHlJ7+5hGWhRpuVqKgVYJPN1mC/ucRqCUfjzSNUD7cFKHhkw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@stencil/core/-/core-2.21.0.tgz}
340 | name: '@stencil/core'
341 | version: 2.21.0
342 | engines: {node: '>=12.10.0', npm: '>=6.0.0'}
343 | hasBin: true
344 | dev: false
345 |
346 | registry.npmmirror.com/@sxzz/popperjs-es/2.11.7:
347 | resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz}
348 | name: '@sxzz/popperjs-es'
349 | version: 2.11.7
350 | dev: false
351 |
352 | registry.npmmirror.com/@types/lodash-es/4.17.6:
353 | resolution: {integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz}
354 | name: '@types/lodash-es'
355 | version: 4.17.6
356 | dependencies:
357 | '@types/lodash': registry.npmmirror.com/@types/lodash/4.14.191
358 | dev: false
359 |
360 | registry.npmmirror.com/@types/lodash/4.14.191:
361 | resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.191.tgz}
362 | name: '@types/lodash'
363 | version: 4.14.191
364 | dev: false
365 |
366 | registry.npmmirror.com/@types/web-bluetooth/0.0.16:
367 | resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz}
368 | name: '@types/web-bluetooth'
369 | version: 0.0.16
370 | dev: false
371 |
372 | registry.npmmirror.com/@vitejs/plugin-vue/4.0.0_vite@4.0.4+vue@3.2.45:
373 | resolution: {integrity: sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz}
374 | id: registry.npmmirror.com/@vitejs/plugin-vue/4.0.0
375 | name: '@vitejs/plugin-vue'
376 | version: 4.0.0
377 | engines: {node: ^14.18.0 || >=16.0.0}
378 | peerDependencies:
379 | vite: ^4.0.0
380 | vue: ^3.2.25
381 | dependencies:
382 | vite: registry.npmmirror.com/vite/4.0.4
383 | vue: registry.npmmirror.com/vue/3.2.45
384 | dev: true
385 |
386 | registry.npmmirror.com/@vue/compiler-core/3.2.45:
387 | resolution: {integrity: sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz}
388 | name: '@vue/compiler-core'
389 | version: 3.2.45
390 | dependencies:
391 | '@babel/parser': registry.npmmirror.com/@babel/parser/7.20.7
392 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.45
393 | estree-walker: registry.npmmirror.com/estree-walker/2.0.2
394 | source-map: registry.npmmirror.com/source-map/0.6.1
395 |
396 | registry.npmmirror.com/@vue/compiler-dom/3.2.45:
397 | resolution: {integrity: sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz}
398 | name: '@vue/compiler-dom'
399 | version: 3.2.45
400 | dependencies:
401 | '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core/3.2.45
402 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.45
403 |
404 | registry.npmmirror.com/@vue/compiler-sfc/3.2.45:
405 | resolution: {integrity: sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz}
406 | name: '@vue/compiler-sfc'
407 | version: 3.2.45
408 | dependencies:
409 | '@babel/parser': registry.npmmirror.com/@babel/parser/7.20.7
410 | '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core/3.2.45
411 | '@vue/compiler-dom': registry.npmmirror.com/@vue/compiler-dom/3.2.45
412 | '@vue/compiler-ssr': registry.npmmirror.com/@vue/compiler-ssr/3.2.45
413 | '@vue/reactivity-transform': registry.npmmirror.com/@vue/reactivity-transform/3.2.45
414 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.45
415 | estree-walker: registry.npmmirror.com/estree-walker/2.0.2
416 | magic-string: registry.npmmirror.com/magic-string/0.25.9
417 | postcss: registry.npmmirror.com/postcss/8.4.21
418 | source-map: registry.npmmirror.com/source-map/0.6.1
419 |
420 | registry.npmmirror.com/@vue/compiler-ssr/3.2.45:
421 | resolution: {integrity: sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz}
422 | name: '@vue/compiler-ssr'
423 | version: 3.2.45
424 | dependencies:
425 | '@vue/compiler-dom': registry.npmmirror.com/@vue/compiler-dom/3.2.45
426 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.45
427 |
428 | registry.npmmirror.com/@vue/devtools-api/6.4.5:
429 | resolution: {integrity: sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.4.5.tgz}
430 | name: '@vue/devtools-api'
431 | version: 6.4.5
432 | dev: false
433 |
434 | registry.npmmirror.com/@vue/reactivity-transform/3.2.45:
435 | resolution: {integrity: sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz}
436 | name: '@vue/reactivity-transform'
437 | version: 3.2.45
438 | dependencies:
439 | '@babel/parser': registry.npmmirror.com/@babel/parser/7.20.7
440 | '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core/3.2.45
441 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.45
442 | estree-walker: registry.npmmirror.com/estree-walker/2.0.2
443 | magic-string: registry.npmmirror.com/magic-string/0.25.9
444 |
445 | registry.npmmirror.com/@vue/reactivity/3.2.45:
446 | resolution: {integrity: sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.45.tgz}
447 | name: '@vue/reactivity'
448 | version: 3.2.45
449 | dependencies:
450 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.45
451 |
452 | registry.npmmirror.com/@vue/runtime-core/3.2.45:
453 | resolution: {integrity: sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.45.tgz}
454 | name: '@vue/runtime-core'
455 | version: 3.2.45
456 | dependencies:
457 | '@vue/reactivity': registry.npmmirror.com/@vue/reactivity/3.2.45
458 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.45
459 |
460 | registry.npmmirror.com/@vue/runtime-dom/3.2.45:
461 | resolution: {integrity: sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz}
462 | name: '@vue/runtime-dom'
463 | version: 3.2.45
464 | dependencies:
465 | '@vue/runtime-core': registry.npmmirror.com/@vue/runtime-core/3.2.45
466 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.45
467 | csstype: registry.npmmirror.com/csstype/2.6.21
468 |
469 | registry.npmmirror.com/@vue/server-renderer/3.2.45_vue@3.2.45:
470 | resolution: {integrity: sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz}
471 | id: registry.npmmirror.com/@vue/server-renderer/3.2.45
472 | name: '@vue/server-renderer'
473 | version: 3.2.45
474 | peerDependencies:
475 | vue: 3.2.45
476 | dependencies:
477 | '@vue/compiler-ssr': registry.npmmirror.com/@vue/compiler-ssr/3.2.45
478 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.45
479 | vue: registry.npmmirror.com/vue/3.2.45
480 |
481 | registry.npmmirror.com/@vue/shared/3.2.45:
482 | resolution: {integrity: sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz}
483 | name: '@vue/shared'
484 | version: 3.2.45
485 |
486 | registry.npmmirror.com/@vueuse/core/9.10.0_vue@3.2.45:
487 | resolution: {integrity: sha512-CxMewME07qeuzuT/AOIQGv0EhhDoojniqU6pC3F8m5VC76L47UT18DcX88kWlP3I7d3qMJ4u/PD8iSRsy3bmNA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vueuse/core/-/core-9.10.0.tgz}
488 | id: registry.npmmirror.com/@vueuse/core/9.10.0
489 | name: '@vueuse/core'
490 | version: 9.10.0
491 | dependencies:
492 | '@types/web-bluetooth': registry.npmmirror.com/@types/web-bluetooth/0.0.16
493 | '@vueuse/metadata': registry.npmmirror.com/@vueuse/metadata/9.10.0
494 | '@vueuse/shared': registry.npmmirror.com/@vueuse/shared/9.10.0_vue@3.2.45
495 | vue-demi: registry.npmmirror.com/vue-demi/0.13.11_vue@3.2.45
496 | transitivePeerDependencies:
497 | - '@vue/composition-api'
498 | - vue
499 | dev: false
500 |
501 | registry.npmmirror.com/@vueuse/metadata/9.10.0:
502 | resolution: {integrity: sha512-G5VZhgTCapzU9rv0Iq2HBrVOSGzOKb+OE668NxhXNcTjUjwYxULkEhAw70FtRLMZc+hxcFAzDZlKYA0xcwNMuw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.10.0.tgz}
503 | name: '@vueuse/metadata'
504 | version: 9.10.0
505 | dev: false
506 |
507 | registry.npmmirror.com/@vueuse/shared/9.10.0_vue@3.2.45:
508 | resolution: {integrity: sha512-vakHJ2ZRklAzqmcVBL38RS7BxdBA4+5poG9NsSyqJxrt9kz0zX3P5CXMy0Hm6LFbZXUgvKdqAS3pUH1zX/5qTQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vueuse/shared/-/shared-9.10.0.tgz}
509 | id: registry.npmmirror.com/@vueuse/shared/9.10.0
510 | name: '@vueuse/shared'
511 | version: 9.10.0
512 | dependencies:
513 | vue-demi: registry.npmmirror.com/vue-demi/0.13.11_vue@3.2.45
514 | transitivePeerDependencies:
515 | - '@vue/composition-api'
516 | - vue
517 | dev: false
518 |
519 | registry.npmmirror.com/async-validator/4.2.5:
520 | resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz}
521 | name: async-validator
522 | version: 4.2.5
523 | dev: false
524 |
525 | registry.npmmirror.com/asynckit/0.4.0:
526 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz}
527 | name: asynckit
528 | version: 0.4.0
529 | dev: false
530 |
531 | registry.npmmirror.com/axios/1.2.2:
532 | resolution: {integrity: sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/axios/-/axios-1.2.2.tgz}
533 | name: axios
534 | version: 1.2.2
535 | dependencies:
536 | follow-redirects: registry.npmmirror.com/follow-redirects/1.15.2
537 | form-data: registry.npmmirror.com/form-data/4.0.0
538 | proxy-from-env: registry.npmmirror.com/proxy-from-env/1.1.0
539 | transitivePeerDependencies:
540 | - debug
541 | dev: false
542 |
543 | registry.npmmirror.com/bootstrap/5.3.0-alpha1:
544 | resolution: {integrity: sha512-ABZpKK4ObS3kKlIqH+ZVDqoy5t/bhFG0oHTAzByUdon7YIom0lpCeTqRniDzJmbtcWkNe800VVPBiJgxSYTYew==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/bootstrap/-/bootstrap-5.3.0-alpha1.tgz}
545 | name: bootstrap
546 | version: 5.3.0-alpha1
547 | peerDependencies:
548 | '@popperjs/core': ^2.11.6
549 | dev: false
550 |
551 | registry.npmmirror.com/combined-stream/1.0.8:
552 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz}
553 | name: combined-stream
554 | version: 1.0.8
555 | engines: {node: '>= 0.8'}
556 | dependencies:
557 | delayed-stream: registry.npmmirror.com/delayed-stream/1.0.0
558 | dev: false
559 |
560 | registry.npmmirror.com/csstype/2.6.21:
561 | resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz}
562 | name: csstype
563 | version: 2.6.21
564 |
565 | registry.npmmirror.com/dayjs/1.11.7:
566 | resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz}
567 | name: dayjs
568 | version: 1.11.7
569 | dev: false
570 |
571 | registry.npmmirror.com/delayed-stream/1.0.0:
572 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz}
573 | name: delayed-stream
574 | version: 1.0.0
575 | engines: {node: '>=0.4.0'}
576 | dev: false
577 |
578 | registry.npmmirror.com/element-plus/2.2.28_vue@3.2.45:
579 | resolution: {integrity: sha512-BsxF7iEaBydmRfw1Tt++EO9jRBjbtJr7ZRIrnEwz4J3Cwa1IzHCNCcx3ZwcYTlJq9CYFxv94JnbNr1EbkTou3A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/element-plus/-/element-plus-2.2.28.tgz}
580 | id: registry.npmmirror.com/element-plus/2.2.28
581 | name: element-plus
582 | version: 2.2.28
583 | peerDependencies:
584 | vue: ^3.2.0
585 | dependencies:
586 | '@ctrl/tinycolor': registry.npmmirror.com/@ctrl/tinycolor/3.5.0
587 | '@element-plus/icons-vue': registry.npmmirror.com/@element-plus/icons-vue/2.0.10_vue@3.2.45
588 | '@floating-ui/dom': registry.npmmirror.com/@floating-ui/dom/1.1.0
589 | '@popperjs/core': registry.npmmirror.com/@sxzz/popperjs-es/2.11.7
590 | '@types/lodash': registry.npmmirror.com/@types/lodash/4.14.191
591 | '@types/lodash-es': registry.npmmirror.com/@types/lodash-es/4.17.6
592 | '@vueuse/core': registry.npmmirror.com/@vueuse/core/9.10.0_vue@3.2.45
593 | async-validator: registry.npmmirror.com/async-validator/4.2.5
594 | dayjs: registry.npmmirror.com/dayjs/1.11.7
595 | escape-html: registry.npmmirror.com/escape-html/1.0.3
596 | lodash: registry.npmmirror.com/lodash/4.17.21
597 | lodash-es: registry.npmmirror.com/lodash-es/4.17.21
598 | lodash-unified: registry.npmmirror.com/lodash-unified/1.0.3_3ib2ivapxullxkx3xftsimdk7u
599 | memoize-one: registry.npmmirror.com/memoize-one/6.0.0
600 | normalize-wheel-es: registry.npmmirror.com/normalize-wheel-es/1.2.0
601 | vue: registry.npmmirror.com/vue/3.2.45
602 | transitivePeerDependencies:
603 | - '@vue/composition-api'
604 | dev: false
605 |
606 | registry.npmmirror.com/esbuild/0.16.17:
607 | resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild/-/esbuild-0.16.17.tgz}
608 | name: esbuild
609 | version: 0.16.17
610 | engines: {node: '>=12'}
611 | hasBin: true
612 | requiresBuild: true
613 | optionalDependencies:
614 | '@esbuild/android-arm': registry.npmmirror.com/@esbuild/android-arm/0.16.17
615 | '@esbuild/android-arm64': registry.npmmirror.com/@esbuild/android-arm64/0.16.17
616 | '@esbuild/android-x64': registry.npmmirror.com/@esbuild/android-x64/0.16.17
617 | '@esbuild/darwin-arm64': registry.npmmirror.com/@esbuild/darwin-arm64/0.16.17
618 | '@esbuild/darwin-x64': registry.npmmirror.com/@esbuild/darwin-x64/0.16.17
619 | '@esbuild/freebsd-arm64': registry.npmmirror.com/@esbuild/freebsd-arm64/0.16.17
620 | '@esbuild/freebsd-x64': registry.npmmirror.com/@esbuild/freebsd-x64/0.16.17
621 | '@esbuild/linux-arm': registry.npmmirror.com/@esbuild/linux-arm/0.16.17
622 | '@esbuild/linux-arm64': registry.npmmirror.com/@esbuild/linux-arm64/0.16.17
623 | '@esbuild/linux-ia32': registry.npmmirror.com/@esbuild/linux-ia32/0.16.17
624 | '@esbuild/linux-loong64': registry.npmmirror.com/@esbuild/linux-loong64/0.16.17
625 | '@esbuild/linux-mips64el': registry.npmmirror.com/@esbuild/linux-mips64el/0.16.17
626 | '@esbuild/linux-ppc64': registry.npmmirror.com/@esbuild/linux-ppc64/0.16.17
627 | '@esbuild/linux-riscv64': registry.npmmirror.com/@esbuild/linux-riscv64/0.16.17
628 | '@esbuild/linux-s390x': registry.npmmirror.com/@esbuild/linux-s390x/0.16.17
629 | '@esbuild/linux-x64': registry.npmmirror.com/@esbuild/linux-x64/0.16.17
630 | '@esbuild/netbsd-x64': registry.npmmirror.com/@esbuild/netbsd-x64/0.16.17
631 | '@esbuild/openbsd-x64': registry.npmmirror.com/@esbuild/openbsd-x64/0.16.17
632 | '@esbuild/sunos-x64': registry.npmmirror.com/@esbuild/sunos-x64/0.16.17
633 | '@esbuild/win32-arm64': registry.npmmirror.com/@esbuild/win32-arm64/0.16.17
634 | '@esbuild/win32-ia32': registry.npmmirror.com/@esbuild/win32-ia32/0.16.17
635 | '@esbuild/win32-x64': registry.npmmirror.com/@esbuild/win32-x64/0.16.17
636 | dev: true
637 |
638 | registry.npmmirror.com/escape-html/1.0.3:
639 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz}
640 | name: escape-html
641 | version: 1.0.3
642 | dev: false
643 |
644 | registry.npmmirror.com/estree-walker/2.0.2:
645 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz}
646 | name: estree-walker
647 | version: 2.0.2
648 |
649 | registry.npmmirror.com/follow-redirects/1.15.2:
650 | resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz}
651 | name: follow-redirects
652 | version: 1.15.2
653 | engines: {node: '>=4.0'}
654 | peerDependencies:
655 | debug: '*'
656 | peerDependenciesMeta:
657 | debug:
658 | optional: true
659 | dev: false
660 |
661 | registry.npmmirror.com/form-data/4.0.0:
662 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz}
663 | name: form-data
664 | version: 4.0.0
665 | engines: {node: '>= 6'}
666 | dependencies:
667 | asynckit: registry.npmmirror.com/asynckit/0.4.0
668 | combined-stream: registry.npmmirror.com/combined-stream/1.0.8
669 | mime-types: registry.npmmirror.com/mime-types/2.1.35
670 | dev: false
671 |
672 | registry.npmmirror.com/fsevents/2.3.2:
673 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz}
674 | name: fsevents
675 | version: 2.3.2
676 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
677 | os: [darwin]
678 | requiresBuild: true
679 | dev: true
680 | optional: true
681 |
682 | registry.npmmirror.com/function-bind/1.1.1:
683 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz}
684 | name: function-bind
685 | version: 1.1.1
686 | dev: true
687 |
688 | registry.npmmirror.com/has/1.0.3:
689 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has/-/has-1.0.3.tgz}
690 | name: has
691 | version: 1.0.3
692 | engines: {node: '>= 0.4.0'}
693 | dependencies:
694 | function-bind: registry.npmmirror.com/function-bind/1.1.1
695 | dev: true
696 |
697 | registry.npmmirror.com/ionicons/6.0.4:
698 | resolution: {integrity: sha512-uDNOkBo0OVYV+kIhb51g9mb7r3Z0b+78GPZQBsjXuaetNmrB/mNTqN/uFtO+vxL/rQySKjzk8qeKJI5NWL9Ueg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ionicons/-/ionicons-6.0.4.tgz}
699 | name: ionicons
700 | version: 6.0.4
701 | dependencies:
702 | '@stencil/core': registry.npmmirror.com/@stencil/core/2.21.0
703 | dev: false
704 |
705 | registry.npmmirror.com/is-core-module/2.11.0:
706 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-core-module/-/is-core-module-2.11.0.tgz}
707 | name: is-core-module
708 | version: 2.11.0
709 | dependencies:
710 | has: registry.npmmirror.com/has/1.0.3
711 | dev: true
712 |
713 | registry.npmmirror.com/lodash-es/4.17.21:
714 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz}
715 | name: lodash-es
716 | version: 4.17.21
717 | dev: false
718 |
719 | registry.npmmirror.com/lodash-unified/1.0.3_3ib2ivapxullxkx3xftsimdk7u:
720 | resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz}
721 | id: registry.npmmirror.com/lodash-unified/1.0.3
722 | name: lodash-unified
723 | version: 1.0.3
724 | peerDependencies:
725 | '@types/lodash-es': '*'
726 | lodash: '*'
727 | lodash-es: '*'
728 | dependencies:
729 | '@types/lodash-es': registry.npmmirror.com/@types/lodash-es/4.17.6
730 | lodash: registry.npmmirror.com/lodash/4.17.21
731 | lodash-es: registry.npmmirror.com/lodash-es/4.17.21
732 | dev: false
733 |
734 | registry.npmmirror.com/lodash/4.17.21:
735 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz}
736 | name: lodash
737 | version: 4.17.21
738 | dev: false
739 |
740 | registry.npmmirror.com/lxgw-wenkai-lite-webfont/1.6.0:
741 | resolution: {integrity: sha512-jSjCZSlRVDEcj9CQoWqtX5xyjZhwfxisvZjZfef/NFBfMTlKQm5bvKDq6l/G230fiQVgCGu/KxtDPu3OlNU+mw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/lxgw-wenkai-lite-webfont/-/lxgw-wenkai-lite-webfont-1.6.0.tgz}
742 | name: lxgw-wenkai-lite-webfont
743 | version: 1.6.0
744 | dev: false
745 |
746 | registry.npmmirror.com/magic-string/0.25.9:
747 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz}
748 | name: magic-string
749 | version: 0.25.9
750 | dependencies:
751 | sourcemap-codec: registry.npmmirror.com/sourcemap-codec/1.4.8
752 |
753 | registry.npmmirror.com/memoize-one/6.0.0:
754 | resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz}
755 | name: memoize-one
756 | version: 6.0.0
757 | dev: false
758 |
759 | registry.npmmirror.com/mime-db/1.52.0:
760 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz}
761 | name: mime-db
762 | version: 1.52.0
763 | engines: {node: '>= 0.6'}
764 | dev: false
765 |
766 | registry.npmmirror.com/mime-types/2.1.35:
767 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz}
768 | name: mime-types
769 | version: 2.1.35
770 | engines: {node: '>= 0.6'}
771 | dependencies:
772 | mime-db: registry.npmmirror.com/mime-db/1.52.0
773 | dev: false
774 |
775 | registry.npmmirror.com/nanoid/3.3.4:
776 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz}
777 | name: nanoid
778 | version: 3.3.4
779 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
780 | hasBin: true
781 |
782 | registry.npmmirror.com/normalize-wheel-es/1.2.0:
783 | resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz}
784 | name: normalize-wheel-es
785 | version: 1.2.0
786 | dev: false
787 |
788 | registry.npmmirror.com/path-parse/1.0.7:
789 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz}
790 | name: path-parse
791 | version: 1.0.7
792 | dev: true
793 |
794 | registry.npmmirror.com/picocolors/1.0.0:
795 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz}
796 | name: picocolors
797 | version: 1.0.0
798 |
799 | registry.npmmirror.com/pinia/2.0.29_vue@3.2.45:
800 | resolution: {integrity: sha512-5z/KpFecq/cIgfeTnulJXldiLcTITRkTe3N58RKYSj0Pc1EdR6oyCdnf5A9jLoVwBqX5LtHhd0kGlpzWvk9oiQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pinia/-/pinia-2.0.29.tgz}
801 | id: registry.npmmirror.com/pinia/2.0.29
802 | name: pinia
803 | version: 2.0.29
804 | peerDependencies:
805 | '@vue/composition-api': ^1.4.0
806 | typescript: '>=4.4.4'
807 | vue: ^2.6.14 || ^3.2.0
808 | peerDependenciesMeta:
809 | '@vue/composition-api':
810 | optional: true
811 | typescript:
812 | optional: true
813 | dependencies:
814 | '@vue/devtools-api': registry.npmmirror.com/@vue/devtools-api/6.4.5
815 | vue: registry.npmmirror.com/vue/3.2.45
816 | vue-demi: registry.npmmirror.com/vue-demi/0.13.11_vue@3.2.45
817 | dev: false
818 |
819 | registry.npmmirror.com/postcss/8.4.21:
820 | resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz}
821 | name: postcss
822 | version: 8.4.21
823 | engines: {node: ^10 || ^12 || >=14}
824 | dependencies:
825 | nanoid: registry.npmmirror.com/nanoid/3.3.4
826 | picocolors: registry.npmmirror.com/picocolors/1.0.0
827 | source-map-js: registry.npmmirror.com/source-map-js/1.0.2
828 |
829 | registry.npmmirror.com/proxy-from-env/1.1.0:
830 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz}
831 | name: proxy-from-env
832 | version: 1.1.0
833 | dev: false
834 |
835 | registry.npmmirror.com/resolve/1.22.1:
836 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz}
837 | name: resolve
838 | version: 1.22.1
839 | hasBin: true
840 | dependencies:
841 | is-core-module: registry.npmmirror.com/is-core-module/2.11.0
842 | path-parse: registry.npmmirror.com/path-parse/1.0.7
843 | supports-preserve-symlinks-flag: registry.npmmirror.com/supports-preserve-symlinks-flag/1.0.0
844 | dev: true
845 |
846 | registry.npmmirror.com/rollup/3.10.0:
847 | resolution: {integrity: sha512-JmRYz44NjC1MjVF2VKxc0M1a97vn+cDxeqWmnwyAF4FvpjK8YFdHpaqvQB+3IxCvX05vJxKZkoMDU8TShhmJVA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rollup/-/rollup-3.10.0.tgz}
848 | name: rollup
849 | version: 3.10.0
850 | engines: {node: '>=14.18.0', npm: '>=8.0.0'}
851 | hasBin: true
852 | optionalDependencies:
853 | fsevents: registry.npmmirror.com/fsevents/2.3.2
854 | dev: true
855 |
856 | registry.npmmirror.com/source-map-js/1.0.2:
857 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz}
858 | name: source-map-js
859 | version: 1.0.2
860 | engines: {node: '>=0.10.0'}
861 |
862 | registry.npmmirror.com/source-map/0.6.1:
863 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz}
864 | name: source-map
865 | version: 0.6.1
866 | engines: {node: '>=0.10.0'}
867 |
868 | registry.npmmirror.com/sourcemap-codec/1.4.8:
869 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz}
870 | name: sourcemap-codec
871 | version: 1.4.8
872 | deprecated: Please use @jridgewell/sourcemap-codec instead
873 |
874 | registry.npmmirror.com/supports-preserve-symlinks-flag/1.0.0:
875 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz}
876 | name: supports-preserve-symlinks-flag
877 | version: 1.0.0
878 | engines: {node: '>= 0.4'}
879 | dev: true
880 |
881 | registry.npmmirror.com/to-fast-properties/2.0.0:
882 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz}
883 | name: to-fast-properties
884 | version: 2.0.0
885 | engines: {node: '>=4'}
886 |
887 | registry.npmmirror.com/vite/4.0.4:
888 | resolution: {integrity: sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vite/-/vite-4.0.4.tgz}
889 | name: vite
890 | version: 4.0.4
891 | engines: {node: ^14.18.0 || >=16.0.0}
892 | hasBin: true
893 | peerDependencies:
894 | '@types/node': '>= 14'
895 | less: '*'
896 | sass: '*'
897 | stylus: '*'
898 | sugarss: '*'
899 | terser: ^5.4.0
900 | peerDependenciesMeta:
901 | '@types/node':
902 | optional: true
903 | less:
904 | optional: true
905 | sass:
906 | optional: true
907 | stylus:
908 | optional: true
909 | sugarss:
910 | optional: true
911 | terser:
912 | optional: true
913 | dependencies:
914 | esbuild: registry.npmmirror.com/esbuild/0.16.17
915 | postcss: registry.npmmirror.com/postcss/8.4.21
916 | resolve: registry.npmmirror.com/resolve/1.22.1
917 | rollup: registry.npmmirror.com/rollup/3.10.0
918 | optionalDependencies:
919 | fsevents: registry.npmmirror.com/fsevents/2.3.2
920 | dev: true
921 |
922 | registry.npmmirror.com/vue-demi/0.13.11_vue@3.2.45:
923 | resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz}
924 | id: registry.npmmirror.com/vue-demi/0.13.11
925 | name: vue-demi
926 | version: 0.13.11
927 | engines: {node: '>=12'}
928 | hasBin: true
929 | requiresBuild: true
930 | peerDependencies:
931 | '@vue/composition-api': ^1.0.0-rc.1
932 | vue: ^3.0.0-0 || ^2.6.0
933 | peerDependenciesMeta:
934 | '@vue/composition-api':
935 | optional: true
936 | dependencies:
937 | vue: registry.npmmirror.com/vue/3.2.45
938 | dev: false
939 |
940 | registry.npmmirror.com/vue-router/4.1.6_vue@3.2.45:
941 | resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vue-router/-/vue-router-4.1.6.tgz}
942 | id: registry.npmmirror.com/vue-router/4.1.6
943 | name: vue-router
944 | version: 4.1.6
945 | peerDependencies:
946 | vue: ^3.2.0
947 | dependencies:
948 | '@vue/devtools-api': registry.npmmirror.com/@vue/devtools-api/6.4.5
949 | vue: registry.npmmirror.com/vue/3.2.45
950 | dev: false
951 |
952 | registry.npmmirror.com/vue/3.2.45:
953 | resolution: {integrity: sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vue/-/vue-3.2.45.tgz}
954 | name: vue
955 | version: 3.2.45
956 | dependencies:
957 | '@vue/compiler-dom': registry.npmmirror.com/@vue/compiler-dom/3.2.45
958 | '@vue/compiler-sfc': registry.npmmirror.com/@vue/compiler-sfc/3.2.45
959 | '@vue/runtime-dom': registry.npmmirror.com/@vue/runtime-dom/3.2.45
960 | '@vue/server-renderer': registry.npmmirror.com/@vue/server-renderer/3.2.45_vue@3.2.45
961 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.45
962 |
--------------------------------------------------------------------------------
/Front-end/public/avatar/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/avatar/1.jpg
--------------------------------------------------------------------------------
/Front-end/public/avatar/10.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/avatar/10.jpg
--------------------------------------------------------------------------------
/Front-end/public/avatar/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/avatar/2.jpg
--------------------------------------------------------------------------------
/Front-end/public/avatar/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/avatar/3.jpg
--------------------------------------------------------------------------------
/Front-end/public/avatar/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/avatar/4.jpg
--------------------------------------------------------------------------------
/Front-end/public/avatar/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/avatar/5.jpg
--------------------------------------------------------------------------------
/Front-end/public/avatar/6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/avatar/6.jpg
--------------------------------------------------------------------------------
/Front-end/public/avatar/7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/avatar/7.jpg
--------------------------------------------------------------------------------
/Front-end/public/avatar/8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/avatar/8.jpg
--------------------------------------------------------------------------------
/Front-end/public/avatar/9.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/avatar/9.jpg
--------------------------------------------------------------------------------
/Front-end/public/products/12c.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/12c.png
--------------------------------------------------------------------------------
/Front-end/public/products/Air2SE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/Air2SE.png
--------------------------------------------------------------------------------
/Front-end/public/products/Buds3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/Buds3.png
--------------------------------------------------------------------------------
/Front-end/public/products/Buds4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/Buds4.png
--------------------------------------------------------------------------------
/Front-end/public/products/K60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/K60.png
--------------------------------------------------------------------------------
/Front-end/public/products/K60Pro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/K60Pro.png
--------------------------------------------------------------------------------
/Front-end/public/products/MiBook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/MiBook.png
--------------------------------------------------------------------------------
/Front-end/public/products/MiPad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/MiPad.png
--------------------------------------------------------------------------------
/Front-end/public/products/MiWiFi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/MiWiFi.png
--------------------------------------------------------------------------------
/Front-end/public/products/Note12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/Note12.png
--------------------------------------------------------------------------------
/Front-end/public/products/Note12Pro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/Note12Pro.png
--------------------------------------------------------------------------------
/Front-end/public/products/T恤.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/T恤.png
--------------------------------------------------------------------------------
/Front-end/public/products/Xiaomi13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/Xiaomi13.png
--------------------------------------------------------------------------------
/Front-end/public/products/Xiaomi13Pro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/Xiaomi13Pro.png
--------------------------------------------------------------------------------
/Front-end/public/products/Xiaomi14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/Xiaomi14.png
--------------------------------------------------------------------------------
/Front-end/public/products/er图.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/er图.jpg
--------------------------------------------------------------------------------
/Front-end/public/products/side.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/side.jpg
--------------------------------------------------------------------------------
/Front-end/public/products/xiaomiTV.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/xiaomiTV.png
--------------------------------------------------------------------------------
/Front-end/public/products/上海青.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/上海青.png
--------------------------------------------------------------------------------
/Front-end/public/products/冬装.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/冬装.png
--------------------------------------------------------------------------------
/Front-end/public/products/小米辣.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/小米辣.png
--------------------------------------------------------------------------------
/Front-end/public/products/杭白菜.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/杭白菜.png
--------------------------------------------------------------------------------
/Front-end/public/products/毛巾.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/毛巾.png
--------------------------------------------------------------------------------
/Front-end/public/products/毛衣.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/毛衣.png
--------------------------------------------------------------------------------
/Front-end/public/products/沐浴露.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/沐浴露.png
--------------------------------------------------------------------------------
/Front-end/public/products/洗发水.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/洗发水.png
--------------------------------------------------------------------------------
/Front-end/public/products/牙刷.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/牙刷.png
--------------------------------------------------------------------------------
/Front-end/public/products/胡萝卜.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/胡萝卜.png
--------------------------------------------------------------------------------
/Front-end/public/products/菠菜.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/菠菜.png
--------------------------------------------------------------------------------
/Front-end/public/products/裙子.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/裙子.png
--------------------------------------------------------------------------------
/Front-end/public/products/黄瓜.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/public/products/黄瓜.png
--------------------------------------------------------------------------------
/Front-end/src/App.vue:
--------------------------------------------------------------------------------
1 |
9 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/Front-end/src/Views/Admin.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Front-end/src/Views/Index.vue:
--------------------------------------------------------------------------------
1 |
9 |
14 |
15 |
16 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Front-end/src/Views/Login.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
没有帐户?
7 |
8 |
9 |
10 |
11 |
12 |
已有账户?
13 |
14 |
15 |
16 |
17 |
18 |
58 |
59 |
60 |
61 |
62 |
163 |
--------------------------------------------------------------------------------
/Front-end/src/Views/User.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
105 |
--------------------------------------------------------------------------------
/Front-end/src/assets/docs/cart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/src/assets/docs/cart.png
--------------------------------------------------------------------------------
/Front-end/src/assets/docs/display.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/src/assets/docs/display.png
--------------------------------------------------------------------------------
/Front-end/src/assets/docs/index.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/src/assets/docs/index.png
--------------------------------------------------------------------------------
/Front-end/src/assets/docs/login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/src/assets/docs/login.png
--------------------------------------------------------------------------------
/Front-end/src/assets/docs/manage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/src/assets/docs/manage.png
--------------------------------------------------------------------------------
/Front-end/src/assets/docs/order.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/src/assets/docs/order.png
--------------------------------------------------------------------------------
/Front-end/src/assets/docs/person.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/src/assets/docs/person.png
--------------------------------------------------------------------------------
/Front-end/src/assets/docs/register.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/src/assets/docs/register.png
--------------------------------------------------------------------------------
/Front-end/src/assets/docs/会员中心.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/src/assets/docs/会员中心.png
--------------------------------------------------------------------------------
/Front-end/src/assets/docs/登陆注册.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InvalidSyntaxxx/Shop/8a925a0ddbb40b6a2b0a291b6fa506ddb0910a55/Front-end/src/assets/docs/登陆注册.png
--------------------------------------------------------------------------------
/Front-end/src/components/Carousel.vue:
--------------------------------------------------------------------------------
1 |
9 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
72 |
--------------------------------------------------------------------------------
/Front-end/src/components/Display.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
手机
13 |
14 |
15 |

16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
![]()
24 |
25 |
26 | {{
27 | product['see']}}
28 | {{
29 | product['love']}}
30 | {{
31 | product['hot']}}
32 |
33 |
{{ product['name']}}
34 |
{{ product['description'] }}
35 |
{{ product['price'] }}元
36 |
37 |
38 |
39 |
40 | 其它
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
52 |
53 |
54 |
55 |
56 |
57 |
![]()
58 |
59 |
60 | {{
61 | other['see']}}
62 | {{
63 | other['love']}}
64 | {{ other['hot']}}
65 |
66 |
67 |
{{ other['name']}}
68 |
{{ other['description'] }}
69 |
{{ other['price'] }}元
70 |
71 |
72 |
73 |
74 |
202 |
--------------------------------------------------------------------------------
/Front-end/src/components/Footer.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
40 |
41 |
--------------------------------------------------------------------------------
/Front-end/src/components/Navigation.vue:
--------------------------------------------------------------------------------
1 |
9 |
68 |
69 |
70 |
98 |
99 |
--------------------------------------------------------------------------------
/Front-end/src/components/admin/ProductForm.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
18 |
19 |
20 |
21 |
22 | 仅限一张商品图 文件大小需小于
23 | 1MB
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 | 新增
46 | 更新
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/Front-end/src/components/admin/Table.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
16 |
17 | 搜索
18 | 增加
19 |
20 |
21 |
22 |
23 |
24 |
25 |
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 |
52 |
55 |
56 |
57 |
58 |
59 |
60 |
239 |
--------------------------------------------------------------------------------
/Front-end/src/components/user/Cart.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 | 我的
12 | 我的购物车
13 |
14 |
15 |
16 |
17 | 全部购买!
18 |
19 |
20 |
21 |
23 |
24 |
25 |
26 | {{ scope.row.type }}
27 |
28 |
29 |
30 |
31 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 | 立即下单
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
54 |
55 |
56 |
57 |
214 |
--------------------------------------------------------------------------------
/Front-end/src/components/user/My.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 | 我的
13 | 个人信息
14 |
15 |
16 |
17 |
18 |
19 |
20 |
个人信息页面
21 |
22 |
23 |
24 |
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 |
52 |
53 |
54 |
55 |
56 | 保存
57 |
58 |
59 |
60 |
61 |
62 |
120 |
--------------------------------------------------------------------------------
/Front-end/src/components/user/Order.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 | 我的
14 | 全部订单
15 |
16 |
17 |
18 |
19 | 订单列表
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | {{ order.description }}
32 |
33 |
34 |
35 | x {{ order.count }}
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | 收货人姓名
51 |
52 |
53 | {{ order.name }}
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | 联系电话
62 |
63 |
64 | {{ order.phone }}
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 | 下单时间
74 |
75 |
76 | {{ order.time }}
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 | 订单状态
85 |
86 |
87 |
88 | 已下单
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 | 收货地址
99 |
100 |
101 | {{ order.address }}
102 |
103 |
104 |
105 |
106 |
107 | 实付款
108 | ¥{{ order.sum }}
109 |
110 |
111 |
112 |
113 |
116 |
117 |
118 |
162 |
--------------------------------------------------------------------------------
/Front-end/src/main.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @Descripttion:
3 | * @version:
4 | * @Author: 王远昭
5 | * @Date: 2023-01-14 12:37:30
6 | * @LastEditors: 王远昭
7 | * @LastEditTime: 2023-02-01 21:38:22
8 | */
9 |
10 | import { createApp } from 'vue'
11 | import router from "./router/index"
12 | import "lxgw-wenkai-lite-webfont/style.css";
13 | import ElementPlus from 'element-plus'
14 |
15 | import { createPinia } from 'pinia'
16 | import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
17 | import 'element-plus/dist/index.css'
18 | import App from './App.vue'
19 | import './style/style.css'
20 |
21 |
22 | const app = createApp(App)
23 |
24 | app.use(createPinia()) //根存储
25 |
26 | app.use(ElementPlus,{
27 | locale: zhCn,
28 | })
29 | app.use(router)
30 | app.mount('#app')
31 |
32 | // 解决提供-注入的响应式依赖!!!!!!!!!!傻逼bug
33 | app.config.unwrapInjectedRef = true
34 |
--------------------------------------------------------------------------------
/Front-end/src/router/index.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @Descripttion:
3 | * @version:
4 | * @Author: 王远昭
5 | * @Date: 2023-01-15 10:34:27
6 | * @LastEditors: 王远昭
7 | * @LastEditTime: 2023-01-17 15:15:29
8 | */
9 | import { createRouter, createWebHashHistory } from "vue-router";
10 | const routes = [
11 | {
12 | path: "/",
13 | redirect: "Home",
14 | },
15 | {
16 | path:"/Home",
17 | name:"Home",
18 | component:() => import('../Views/Index.vue')
19 | },
20 | {
21 | path:"/Admin",
22 | name:"Admin",
23 | component:() => import('../Views/Admin.vue')
24 | },
25 | {
26 | path:"/Login",
27 | name:"Login",
28 | component:() => import('../Views/Login.vue')
29 | },
30 | {
31 | path:"/User",
32 | name:"User",
33 | meta: {
34 | title: '用户信息',
35 | requiresAuth: true, // 路由拦截,未登录不能使用
36 | },
37 | component:() => import('../Views/User.vue'),
38 | children: [
39 | {
40 | path: 'info',
41 | component: () => import('../components/user/My.vue')
42 | },
43 | {
44 | path: 'cart',
45 | component: () => import('../components/user/Cart.vue')
46 | },
47 | {
48 | path: 'order',
49 | component: () => import('../components/user/Order.vue')
50 | }
51 | ]
52 | }
53 | ];
54 |
55 |
56 | const router = createRouter({
57 | history: createWebHashHistory(),
58 | routes, // `routes: routes` 的缩写
59 | });
60 |
61 | // 路由拦截,判断是否需要登录
62 | router.beforeEach((to, from, next) => {
63 | if (to.meta.title) {
64 | //判断是否有标题
65 | document.title = to.meta.title;
66 | }
67 | // console.log("title",document.title)
68 | // 通过requiresAuth判断当前路由导航是否需要登录
69 | if (to.matched.some(record => record.meta.requiresAuth)) {
70 | let token = sessionStorage.getItem('username')
71 | // console.log("token",token)
72 | // 若需要登录访问,检查是否为登录状态
73 | if (!token) {
74 | next({
75 | path: '/login',
76 | query: { redirect: to.fullPath }
77 | })
78 | } else {
79 | next()
80 | }
81 | } else {
82 | next() // 确保一定要调用 next()
83 | }
84 | })
85 | export default router;
86 |
--------------------------------------------------------------------------------
/Front-end/src/store/global.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @Descripttion:
3 | * @version:
4 | * @Author: 王远昭
5 | * @Date: 2023-01-17 10:01:45
6 | * @LastEditors: 王远昭
7 | * @LastEditTime: 2023-02-03 17:44:21
8 | */
9 | import { defineStore,acceptHMRUpdate } from "pinia";
10 | export const useGlobalStore = defineStore({
11 | id: 'GlobalStore',
12 | state:()=>({
13 | apiHost: 'http://47.94.12.50',
14 | apiPort: '53000',
15 | }),
16 | getters:{
17 | apiServer:(state) => state.apiHost + ":" + state.apiPort
18 | },
19 | actions: {
20 | getImageUrl(name) {
21 | return new URL(name, import.meta.url).href
22 | }
23 | }
24 | })
25 |
26 | // 确保传递正确的 store 声明
27 | if (import.meta.hot) {
28 | import.meta.hot.accept(acceptHMRUpdate(useGlobalStore, import.meta.hot))
29 | }
--------------------------------------------------------------------------------
/Front-end/src/store/user.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @Descripttion:
3 | * @version:
4 | * @Author: 王远昭
5 | * @Date: 2023-01-17 10:01:45
6 | * @LastEditors: 王远昭
7 | * @LastEditTime: 2023-02-02 14:08:19
8 | */
9 | import { defineStore, acceptHMRUpdate} from "pinia";
10 | export const useUserStore = defineStore({
11 | id: 'userStore',
12 | state:()=>({
13 | name:"",
14 | isAuthenicated: false,
15 |
16 | }),
17 | ations: {
18 | logIn(name) {
19 | this.name = name
20 | this.isAuthenicated = true
21 | },
22 | logOut() {
23 | this.name = ""
24 | this.isAuthenicated = false
25 | },
26 | getStatus() {
27 | return this.isAuthenicated
28 | }
29 | }
30 | })
31 |
32 | // 确保传递正确的 store 声明
33 | if (import.meta.hot) {
34 | import.meta.hot.accept(acceptHMRUpdate(useUserStore, import.meta.hot))
35 | }
--------------------------------------------------------------------------------
/Front-end/src/style/style.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --pc-padding-size: 5rem;
3 | --mb-padding-size: 2rem;
4 | --small-padding-size: 1rem;
5 | --nav-height-size: 4rem;
6 | --text-font-family: "LXGW WenKai Lite", sans-serif;
7 | --toggle-transition: 0.3s ease;
8 | }
9 | * {
10 | margin: 0;
11 | padding: 0;
12 | box-sizing: border-box;
13 | }
14 | #app {
15 | background-color: #f5f5f5;
16 | }
17 |
--------------------------------------------------------------------------------
/Front-end/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import vue from '@vitejs/plugin-vue'
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [vue()],
7 | })
8 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## 介绍
2 |
3 | Shop是一款由前端渐进式技术框架 Vue3.2 和后端技术框架 Flask打造而成,Shop商城能满足基本的游客/会员登录注册、商品展示、商品购买、个人购物车、个人订单、商品管理等。
4 |
5 | ## 传送门
6 |
7 | 👉[前端源码](./Front-end/)👈(页面展示)
8 |
9 | 👉[后端源码](./Back-end/)👈
10 |
11 | ~~👉[商城1.0版本](https://shop.wangwangyz.site)👈~~考研中,服务器过期了
12 |
13 | ## 感谢
14 |
15 | - 我自己
16 |
17 | - 数据库课设老师
18 |
--------------------------------------------------------------------------------
/shop.sql:
--------------------------------------------------------------------------------
1 | /*
2 | Navicat MySQL Data Transfer
3 |
4 | Source Server : BasicTest
5 | Source Server Version : 80027
6 | Source Host : localhost:3306
7 | Source Database : shop
8 |
9 | Target Server Type : MYSQL
10 | Target Server Version : 80027
11 | File Encoding : 65001
12 |
13 | Date: 2023-01-17 00:57:01
14 | */
15 |
16 | SET FOREIGN_KEY_CHECKS=0;
17 |
18 | -- ----------------------------
19 | -- Table structure for car
20 | -- ----------------------------
21 | DROP TABLE IF EXISTS `car`;
22 | CREATE TABLE `car` (
23 | `car_id` int NOT NULL AUTO_INCREMENT,
24 | `count` int DEFAULT NULL,
25 | `user_id` int NOT NULL,
26 | `goods_id` int NOT NULL,
27 | PRIMARY KEY (`car_id`),
28 | KEY `car_ibfk_1` (`user_id`),
29 | KEY `car_ibfk_2` (`goods_id`),
30 | CONSTRAINT `car_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
31 | CONSTRAINT `car_ibfk_2` FOREIGN KEY (`goods_id`) REFERENCES `goods` (`goods_id`) ON DELETE CASCADE ON UPDATE CASCADE
32 | ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3;
33 |
34 | -- ----------------------------
35 | -- Records of car
36 | -- ----------------------------
37 | INSERT INTO `car` VALUES ('2', '2', '1', '3');
38 | INSERT INTO `car` VALUES ('3', '5', '1', '4');
39 |
40 | -- ----------------------------
41 | -- Table structure for category
42 | -- ----------------------------
43 | DROP TABLE IF EXISTS `category`;
44 | CREATE TABLE `category` (
45 | `types_id` int NOT NULL AUTO_INCREMENT,
46 | `classification` varchar(32) DEFAULT NULL,
47 | PRIMARY KEY (`types_id`)
48 | ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3;
49 |
50 | -- ----------------------------
51 | -- Records of category
52 | -- ----------------------------
53 | INSERT INTO `category` VALUES ('1', '生鲜');
54 | INSERT INTO `category` VALUES ('2', '电子产品');
55 | INSERT INTO `category` VALUES ('3', '日用品');
56 | INSERT INTO `category` VALUES ('4', '服装');
57 |
58 | -- ----------------------------
59 | -- Table structure for goods
60 | -- ----------------------------
61 | DROP TABLE IF EXISTS `goods`;
62 | CREATE TABLE `goods` (
63 | `goods_id` int NOT NULL AUTO_INCREMENT,
64 | `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
65 | `img` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
66 | `type` varchar(32) DEFAULT NULL,
67 | `description` varchar(200) DEFAULT NULL,
68 | `count` int DEFAULT NULL,
69 | `price` float DEFAULT NULL,
70 | `goods_sale` int DEFAULT NULL,
71 | PRIMARY KEY (`goods_id`)
72 | ) ENGINE=InnoDB AUTO_INCREMENT=82 DEFAULT CHARSET=utf8mb3;
73 |
74 | -- ----------------------------
75 | -- Records of goods
76 | -- ----------------------------
77 | INSERT INTO `goods` VALUES ('1', 'Redmi 12C', '12c.png', '电子产品', '高性能长续航,5000万像素超清双摄', '150', '699', '31');
78 | INSERT INTO `goods` VALUES ('2', 'Redmi K60', 'K60.png', '电子产品', '骁龙8+|2K 高光直屏|5500mAh+67W闪充', '120', '2499', '111');
79 | INSERT INTO `goods` VALUES ('3', 'Redmi K60 Pro', 'K60Pro.png', '电子产品', '【第二代晓龙8】狂暴引擎', '161', '3299', '56');
80 | INSERT INTO `goods` VALUES ('4', 'Xiaomi 13 限量定制色', 'Xiaomi13.png', '电子产品', '全新第二代骁龙8|徕卡专业光学镜头|徕卡原生双画质 | 6.36″超窄边屏幕|67W小米澎湃秒充|徕卡75mm长焦镜头', '151', '4999', '213');
81 | INSERT INTO `goods` VALUES ('5', 'Xiaomi 13', 'Xiaomi13Pro.png', '电子产品', '全新第二代骁龙8|徕卡专业光学镜头|徕卡原生双画质 | 6.36″超窄边屏幕|67W小米澎湃秒充|徕卡75mm长焦镜头', '81', '3999', '23');
82 | INSERT INTO `goods` VALUES ('6', 'Redmi Note 12 Pro 极速版', 'Note12Pro.png', '电子产品', '高通骁龙778G,OLED柔性直屏+一亿像素', '111', '1699', '314');
83 | INSERT INTO `goods` VALUES ('7', 'Redmi Note 12 5G', 'Xiaomi14.png', '电子产品', '三星 OLED 护眼屏|骁龙 5G 芯|5000mAh 电量', '177', '1199', '78');
84 | INSERT INTO `goods` VALUES ('8', 'Xiaomi 13 Pro', 'Xiaomi13.png', '电子产品', '全新第二代骁龙8|徕卡专业光学镜头|徕卡原生双画质 | 6.36″超窄边屏幕|67W小米澎湃秒充|徕卡75mm长焦镜头', '771', '4999', '213');
85 | INSERT INTO `goods` VALUES ('9', 'Xiaomi Buds 4', 'Buds4.png', '电子产品', '35dB 智能主动降噪 | AI 通话降噪 | 30小时超长续航', '54', '199', '114');
86 | INSERT INTO `goods` VALUES ('10', 'Xiaomi Buds 3', 'Buds3.png', '电子产品', '40dB宽频主动降噪 | HiFi高保真音质 | HRTF专业调音', '111', '299', '56');
87 | INSERT INTO `goods` VALUES ('11', '小米真无线蓝牙耳机Air2 SE', 'Buds4.png', '电子产品', '大尺寸动圈单元 | 20小时持久续航 | 双麦克风通话降噪', '160', '1299', '30');
88 | INSERT INTO `goods` VALUES ('12', 'Redmi Book Pro 14 2022', 'MiBook.png', '电子产品', '全新12代英特尔处理器,2.5K 120Hz高清屏,可选MX550独立显卡,CNC一体精雕工艺', '51', '5399', '100');
89 | INSERT INTO `goods` VALUES ('13', 'Redmi Pad', 'MiPad.png', '电子产品', '入门平板,屏幕/外观/系统三大升级', '210', '1199', '54');
90 | INSERT INTO `goods` VALUES ('14', '小米电视 ES55 2022款', 'xiaomiTV.png', '电子产品', '多分区背光 | MEMC动态补偿 | 杜比视界', '91', '2499', '30');
91 | INSERT INTO `goods` VALUES ('15', '小米路由器', 'MiWiFi.png', '电子产品', '无线速率AX5400 高通多核处理器 5G速度提升20% ', '100', '349', '68');
92 | INSERT INTO `goods` VALUES ('18', '上海青', '上海青.png', '生鲜', '农家自种 新鲜现摘 原产地直发 5斤装', '200', '28.8', '23');
93 | INSERT INTO `goods` VALUES ('19', '小米辣', '小米辣.png', '生鲜', '农家自种 新鲜现摘 原产地直发 5斤装', '200', '23.4', '44');
94 | INSERT INTO `goods` VALUES ('20', '杭白菜', '杭白菜.png', '生鲜', '农家自种 新鲜现摘 原产地直发 5斤装', '200', '26.7', '34');
95 | INSERT INTO `goods` VALUES ('21', '胡萝卜', '胡萝卜.png', '生鲜', '农家自种 新鲜现摘 原产地直发 5斤装', '200', '34.2', '23');
96 | INSERT INTO `goods` VALUES ('22', '菠菜', '菠菜.png', '生鲜', '农家自种 新鲜现摘 原产地直发 5斤装', '200', '12.4', '22');
97 | INSERT INTO `goods` VALUES ('23', '黄瓜', '黄瓜.png', '生鲜', '农家自种 新鲜现摘 原产地直发 5斤装', '194', '34.2', '12');
98 | INSERT INTO `goods` VALUES ('24', '毛巾', '毛巾.png', '日用品', '新疆棉毛巾 A类强吸水素色柔软洁面巾洗脸擦脸巾 单条装', '200', '8.8', '18');
99 | INSERT INTO `goods` VALUES ('25', '牙刷', '牙刷.png', '日用品', '成人超细软毛简装牙刷 防出血小头日系牙刷6只装', '200', '29.8', '123');
100 | INSERT INTO `goods` VALUES ('26', '沐浴露', '沐浴露.png', '日用品', '薰衣草花香沐浴露 2kg滋润保湿沐浴乳', '198', '20.8', '45');
101 | INSERT INTO `goods` VALUES ('27', '洗发水', '洗发水.png', '日用品', '男士去屑洗发水清爽控油型500g+100gX2 青柠薄荷醇 洗头膏C罗', '196', '36.9', '23');
102 | INSERT INTO `goods` VALUES ('28', '冬装', '冬装.png', '服装', '潮牌联名棉衣男秋冬季新款棉服加绒加厚棉袄男女情侣青年面包服潮流连帽假两件外套冬装衣服 卡其色 XL(建议120-140斤)', '200', '168', '111');
103 | INSERT INTO `goods` VALUES ('29', '毛衣', '毛衣.png', '服装', '南极人水貂绒毛衣男秋冬季潮流男士毛衫线衣宽松休闲圆领加厚保暖打底衫青少年男生针织衫冬装衣服男装 10909/8270米白 XL', '200', '69', '32');
104 | INSERT INTO `goods` VALUES ('30', 'T恤', 'T恤.png', '服装', '浪莎男士T恤短袖男棉质圆领纯色简约背心薄款吸汗透气运动休闲打底衫 黑色 180/XXL', '200', '29.9', '34');
105 | INSERT INTO `goods` VALUES ('31', '裙子', '裙子.png', '服装', 'LEDE雪纺连衣裙女装2022年新款夏装修身显瘦超仙气质中长款小个子碎花裙子夏天短袖衣服潮 257仙女碎花杏色 M 90-100斤', '200', '168', '89');
106 |
107 | -- ----------------------------
108 | -- Table structure for order
109 | -- ----------------------------
110 | DROP TABLE IF EXISTS `order`;
111 | CREATE TABLE `order` (
112 | `order_id` int NOT NULL AUTO_INCREMENT,
113 | `name` varchar(64) DEFAULT NULL,
114 | `address` varchar(64) DEFAULT NULL,
115 | `phone` varchar(16) DEFAULT NULL,
116 | `sum` float DEFAULT NULL,
117 | `count` int DEFAULT NULL,
118 | `time` date DEFAULT NULL,
119 | `user_id` int DEFAULT NULL,
120 | `goods_id` int DEFAULT NULL,
121 | PRIMARY KEY (`order_id`),
122 | KEY `order_ibfk_1` (`user_id`),
123 | KEY `order_ibfk_2` (`goods_id`),
124 | CONSTRAINT `order_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
125 | CONSTRAINT `order_ibfk_2` FOREIGN KEY (`goods_id`) REFERENCES `goods` (`goods_id`) ON DELETE CASCADE ON UPDATE CASCADE
126 | ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb3;
127 |
128 | -- ----------------------------
129 | -- Records of order
130 | -- ----------------------------
131 | INSERT INTO `order` VALUES ('1', 'ad', 'wqd', '213', '45', '3', '2023-01-10', '1', '1');
132 | INSERT INTO `order` VALUES ('2', 'gas', 'sdf', '435', '224', '3', '2023-01-08', '1', '5');
133 | INSERT INTO `order` VALUES ('3', 'fgdsg', 'hfgsh', '45636', '321', '4', '2023-01-05', '1', '9');
134 | INSERT INTO `order` VALUES ('4', '张三', '北京', '123456', '4998', '2', '2023-01-15', '1', '2');
135 | INSERT INTO `order` VALUES ('5', '张三', '北京', '123456', '9996', '4', '2023-01-04', '1', '14');
136 | INSERT INTO `order` VALUES ('6', '张三', '北京', '123456', '10798', '2', '2023-01-17', '1', '12');
137 | INSERT INTO `order` VALUES ('7', '张三', '北京', '123456', '68.4', '2', '2023-01-17', '1', '23');
138 | INSERT INTO `order` VALUES ('8', '张三', '北京', '123456', '41.6', '2', '2023-01-17', '1', '26');
139 | INSERT INTO `order` VALUES ('9', '张三', '北京', '123456', '147.6', '4', '2023-01-17', '1', '27');
140 |
141 | -- ----------------------------
142 | -- Table structure for user
143 | -- ----------------------------
144 | DROP TABLE IF EXISTS `user`;
145 | CREATE TABLE `user` (
146 | `user_id` int NOT NULL AUTO_INCREMENT,
147 | `password` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
148 | `nikename` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
149 | `name` varchar(64) DEFAULT NULL,
150 | `sex` varchar(16) DEFAULT NULL,
151 | `address` varchar(64) DEFAULT NULL,
152 | `phone` varchar(16) DEFAULT NULL,
153 | `mail` varchar(32) DEFAULT NULL,
154 | PRIMARY KEY (`user_id`)
155 | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3;
156 |
157 | -- ----------------------------
158 | -- Records of user
159 | -- ----------------------------
160 | INSERT INTO `user` VALUES ('1', 'user', 'user', '张三', '男', '北京', '123456', '123456@qq.com');
161 | DROP TRIGGER IF EXISTS `del_goods`;
162 | DELIMITER ;;
163 | CREATE TRIGGER `del_goods` AFTER DELETE ON `goods` FOR EACH ROW BEGIN
164 | DELETE FROM car
165 | WHERE car.goods_id=old.goods_id;
166 | DELETE FROM `order`
167 | WHERE `order`.goods_id=old.goods_id;
168 | END
169 | ;;
170 | DELIMITER ;
171 | DROP TRIGGER IF EXISTS `del_user`;
172 | DELIMITER ;;
173 | CREATE TRIGGER `del_user` AFTER DELETE ON `user` FOR EACH ROW BEGIN
174 | DELETE FROM car
175 | WHERE car.user_id=old.user_id;
176 | DELETE FROM `order`
177 | WHERE `order`.user_id=old.user_id;
178 | END
179 | ;;
180 | DELIMITER ;
181 |
--------------------------------------------------------------------------------