├── .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 | ![登陆注册](src/assets/docs/登陆注册.png) 46 | 47 | #### 首页商城 48 | 49 | ![商城](src/assets/docs/index.png) 50 | 51 | #### 商品分类 52 | 53 | ![登陆注册](src/assets/docs/display.png) 54 | 55 | #### 商品管理 56 | 57 | ![商品管理](src/assets/docs/manage.png) 58 | 59 | #### 会员中心 60 | 61 | ![会员中心](src/assets/docs/会员中心.png) 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 | -------------------------------------------------------------------------------- /Front-end/src/Views/Admin.vue: -------------------------------------------------------------------------------- 1 | 9 | 14 | -------------------------------------------------------------------------------- /Front-end/src/Views/Index.vue: -------------------------------------------------------------------------------- 1 | 9 | 14 | 26 | -------------------------------------------------------------------------------- /Front-end/src/Views/Login.vue: -------------------------------------------------------------------------------- 1 | 61 | 62 | 163 | -------------------------------------------------------------------------------- /Front-end/src/Views/User.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 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 | 47 | 48 | 72 | -------------------------------------------------------------------------------- /Front-end/src/components/Display.vue: -------------------------------------------------------------------------------- 1 | 9 | 74 | 202 | -------------------------------------------------------------------------------- /Front-end/src/components/Footer.vue: -------------------------------------------------------------------------------- 1 | 9 | 41 | -------------------------------------------------------------------------------- /Front-end/src/components/Navigation.vue: -------------------------------------------------------------------------------- 1 | 9 | 68 | 99 | -------------------------------------------------------------------------------- /Front-end/src/components/admin/ProductForm.vue: -------------------------------------------------------------------------------- 1 | 9 | 50 | -------------------------------------------------------------------------------- /Front-end/src/components/admin/Table.vue: -------------------------------------------------------------------------------- 1 | 9 | 60 | 239 | -------------------------------------------------------------------------------- /Front-end/src/components/user/Cart.vue: -------------------------------------------------------------------------------- 1 | 9 | 57 | 214 | -------------------------------------------------------------------------------- /Front-end/src/components/user/My.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 62 | 120 | -------------------------------------------------------------------------------- /Front-end/src/components/user/Order.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 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 | --------------------------------------------------------------------------------