From 158db83965439db118943a19e820e002607ccbae Mon Sep 17 00:00:00 2001 From: RockYang Date: Wed, 18 Sep 2024 07:03:46 +0800 Subject: [PATCH] add geek payment --- CHANGELOG.md | 2 + api/core/types/config.go | 34 ++--- api/handler/payment_handler.go | 193 ++++++++++++------------- api/handler/test_handler.go | 4 +- api/res/img/geek-pay.jpg | Bin 0 -> 27461 bytes api/res/img/qq-pay.jpg | Bin 0 -> 17178 bytes api/service/payment/geekpay_service.go | 136 +++++++++++++++++ api/service/payment/payjs_service.go | 153 -------------------- api/store/model/order.go | 3 +- api/store/vo/order.go | 1 + database/update-v4.1.4.sql | 3 +- web/src/assets/css/member.styl | 8 +- web/src/assets/iconfont/iconfont.css | 22 ++- web/src/assets/iconfont/iconfont.js | 2 +- web/src/assets/iconfont/iconfont.json | 28 ++++ web/src/assets/iconfont/iconfont.ttf | Bin 29056 -> 30468 bytes web/src/assets/iconfont/iconfont.woff | Bin 19360 -> 20304 bytes web/src/assets/iconfont/iconfont.woff2 | Bin 16812 -> 17612 bytes web/src/views/Member.vue | 157 ++++++-------------- 19 files changed, 355 insertions(+), 391 deletions(-) create mode 100644 api/res/img/geek-pay.jpg create mode 100644 api/res/img/qq-pay.jpg create mode 100644 api/service/payment/geekpay_service.go delete mode 100644 api/service/payment/payjs_service.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 04a64d10..f610f799 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ * 功能优化:首次登录不需要验证码,直接登录,登录失败之后才弹出验证码 * 功能新增:给 AI 应用(角色)增加分类,前端支持分类筛选 * 功能优化:允许用户在聊天页面设置是否使用流式输出或者一次性输出,兼容 GPT-O1 模型。 +* 功能优化:移除PayJS支付渠道支持,PayJs已经关闭注册服务,请使用其他支付方式。 +* 功能新增:新增GeeK易支付支付渠道,支持支付宝,微信支付,QQ钱包,京东支付,抖音支付,Paypal支付等支付方式 ## v4.1.3 * 功能优化:重构用户登录模块,给所有的登录组件增加行为验证码功能,支持用户绑定手机,邮箱和微信 diff --git a/api/core/types/config.go b/api/core/types/config.go index 9638f620..f6e59727 100644 --- a/api/core/types/config.go +++ b/api/core/types/config.go @@ -12,24 +12,23 @@ import ( ) type AppConfig struct { - Path string `toml:"-"` - Listen string - Session Session - AdminSession Session - ProxyURL string - MysqlDns string // mysql 连接地址 - StaticDir string // 静态资源目录 - StaticUrl string // 静态资源 URL - Redis RedisConfig // redis 连接信息 - ApiConfig ApiConfig // ChatPlus API authorization configs - SMS SMSConfig // send mobile message config - OSS OSSConfig // OSS config - + Path string `toml:"-"` + Listen string + Session Session + AdminSession Session + ProxyURL string + MysqlDns string // mysql 连接地址 + StaticDir string // 静态资源目录 + StaticUrl string // 静态资源 URL + Redis RedisConfig // redis 连接信息 + ApiConfig ApiConfig // ChatPlus API authorization configs + SMS SMSConfig // send mobile message config + OSS OSSConfig // OSS config + SmtpConfig SmtpConfig // 邮件发送配置 XXLConfig XXLConfig AlipayConfig AlipayConfig // 支付宝支付渠道配置 HuPiPayConfig HuPiPayConfig // 虎皮椒支付配置 - SmtpConfig SmtpConfig // 邮件发送配置 - JPayConfig JPayConfig // payjs 支付配置 + GeekPayConfig GeekPayConfig // GEEK 支付配置 WechatPayConfig WechatPayConfig // 微信支付渠道配置 TikaHost string // TiKa 服务器地址 } @@ -83,10 +82,9 @@ type HuPiPayConfig struct { //虎皮椒第四方支付配置 ReturnURL string // 支付成功返回地址 } -// JPayConfig PayJs 支付配置 -type JPayConfig struct { +// GeekPayConfig GEEK支付配置 +type GeekPayConfig struct { Enabled bool - Name string // 支付名称,默认 wechat AppId string // 商户 ID PrivateKey string // 私钥 ApiURL string // API 网关 diff --git a/api/handler/payment_handler.go b/api/handler/payment_handler.go index 5d807f79..8a0112a9 100644 --- a/api/handler/payment_handler.go +++ b/api/handler/payment_handler.go @@ -19,7 +19,6 @@ import ( "geekai/utils" "geekai/utils/resp" "github.com/shopspring/decimal" - "math" "net/http" "net/url" "sync" @@ -34,19 +33,12 @@ type PayWay struct { Value string `json:"value"` } -var ( - PayWayAlipay = PayWay{Name: "支付宝", Value: "alipay"} - PayWayXunHu = PayWay{Name: "虎皮椒", Value: "hupi"} - PayWayJs = PayWay{Name: "PayJS", Value: "payjs"} - PayWayWechat = PayWay{Name: "微信支付", Value: "wechat"} -) - // PaymentHandler 支付服务回调 handler type PaymentHandler struct { BaseHandler alipayService *payment.AlipayService huPiPayService *payment.HuPiPayService - jsPayService *payment.JPayService + geekPayService *payment.GeekPayService wechatPayService *payment.WechatPayService snowflake *service.Snowflake fs embed.FS @@ -58,7 +50,7 @@ func NewPaymentHandler( server *core.AppServer, alipayService *payment.AlipayService, huPiPayService *payment.HuPiPayService, - jsPayService *payment.JPayService, + geekPayService *payment.GeekPayService, wechatPayService *payment.WechatPayService, db *gorm.DB, snowflake *service.Snowflake, @@ -66,7 +58,7 @@ func NewPaymentHandler( return &PaymentHandler{ alipayService: alipayService, huPiPayService: huPiPayService, - jsPayService: jsPayService, + geekPayService: geekPayService, wechatPayService: wechatPayService, snowflake: snowflake, fs: fs, @@ -81,10 +73,9 @@ func NewPaymentHandler( func (h *PaymentHandler) DoPay(c *gin.Context) { orderNo := h.GetTrim(c, "order_no") - payWay := h.GetTrim(c, "pay_way") t := h.GetInt(c, "t", 0) sign := h.GetTrim(c, "sign") - signStr := fmt.Sprintf("%s-%s-%d-%s", orderNo, payWay, t, h.signKey) + signStr := fmt.Sprintf("%s-%d-%s", orderNo, t, h.signKey) newSign := utils.Sha256(signStr) if newSign != sign { resp.ERROR(c, "订单签名错误!") @@ -118,7 +109,7 @@ func (h *PaymentHandler) DoPay(c *gin.Context) { // 更新扫码状态 h.DB.Model(&order).UpdateColumn("status", types.OrderScanned) - if payWay == "alipay" { // 支付宝 + if order.PayWay == "alipay" { // 支付宝 amount := fmt.Sprintf("%.2f", order.Amount) uri, err := h.alipayService.PayUrlMobile(order.OrderNo, amount, order.Subject) if err != nil { @@ -128,7 +119,7 @@ func (h *PaymentHandler) DoPay(c *gin.Context) { c.Redirect(302, uri) return - } else if payWay == "hupi" { // 虎皮椒支付 + } else if order.PayWay == "hupi" { // 虎皮椒支付 params := payment.HuPiPayReq{ Version: "1.1", TradeOrderId: orderNo, @@ -144,15 +135,41 @@ func (h *PaymentHandler) DoPay(c *gin.Context) { } c.Redirect(302, r.URL) + } else if order.PayWay == "wechat" { + uri, err := h.wechatPayService.PayUrlNative(order.OrderNo, int(order.Amount*100), order.Subject) + if err != nil { + resp.ERROR(c, err.Error()) + return + } + + c.Redirect(302, uri) + } else if order.PayWay == "geek" { + params := payment.GeekPayParams{ + OutTradeNo: orderNo, + Method: "web", + Name: order.Subject, + Money: fmt.Sprintf("%f", order.Amount), + ClientIP: c.ClientIP(), + Device: "pc", + Type: "alipay", + } + + s, err := h.geekPayService.Pay(params) + if err != nil { + resp.ERROR(c, err.Error()) + return + } + resp.SUCCESS(c, s) } - resp.ERROR(c, "Invalid operations") + //resp.ERROR(c, "Invalid operations") } // PayQrcode 生成支付 URL 二维码 func (h *PaymentHandler) PayQrcode(c *gin.Context) { var data struct { - PayWay string `json:"pay_way"` // 支付方式 - ProductId uint `json:"product_id"` + PayWay string `json:"pay_way"` // 支付方式 + PayType string `json:"pay_type"` // 支付类别:wechat,alipay,qq... + ProductId uint `json:"product_id"` // 支付产品ID } if err := c.ShouldBindJSON(&data); err != nil { resp.ERROR(c, types.InvalidArgs) @@ -177,24 +194,22 @@ func (h *PaymentHandler) PayQrcode(c *gin.Context) { return } - var payWay string var notifyURL string switch data.PayWay { case "hupi": - payWay = PayWayXunHu.Value notifyURL = h.App.Config.HuPiPayConfig.NotifyURL break - case "payjs": - payWay = PayWayJs.Value - notifyURL = h.App.Config.JPayConfig.NotifyURL + case "geek": + notifyURL = h.App.Config.GeekPayConfig.NotifyURL break - case "alipay": - payWay = PayWayAlipay.Value + case "alipay": // 支付宝商户支付 notifyURL = h.App.Config.AlipayConfig.NotifyURL break - default: - payWay = PayWayWechat.Value + case "wechat": // 微信商户支付 notifyURL = h.App.Config.WechatPayConfig.NotifyURL + default: + resp.ERROR(c, "Invalid pay way") + return } // 创建订单 @@ -215,7 +230,8 @@ func (h *PaymentHandler) PayQrcode(c *gin.Context) { Subject: product.Name, Amount: amount, Status: types.OrderNotPaid, - PayWay: payWay, + PayWay: data.PayWay, + PayType: data.PayType, Remark: utils.JsonEncode(remark), } res = h.DB.Create(&order) @@ -224,36 +240,26 @@ func (h *PaymentHandler) PayQrcode(c *gin.Context) { return } - // PayJs 单独处理,只能用官方生成的二维码 - if data.PayWay == "payjs" { - params := payment.JPayReq{ - TotalFee: int(math.Ceil(order.Amount * 100)), - OutTradeNo: order.OrderNo, - Subject: product.Name, - } - r := h.jsPayService.Pay(params) - if r.IsOK() { - resp.SUCCESS(c, gin.H{"order_no": order.OrderNo, "image": r.Qrcode}) - return - } else { - resp.ERROR(c, "error with generating payment qrcode: "+r.ReturnMsg) - return - } - } - var logo string - if data.PayWay == "alipay" { + switch data.PayType { + case "alipay": logo = "res/img/alipay.jpg" - } else if data.PayWay == "hupi" { - if h.App.Config.HuPiPayConfig.Name == "wechat" { - logo = "res/img/wechat-pay.jpg" - } else { - logo = "res/img/alipay.jpg" - } - } else if data.PayWay == "wechat" { + break + case "wechat": + logo = "res/img/wechat-pay.jpg" + break + case "qq": + logo = "res/img/qq-pay.jpg" + break + default: + logo = "res/img/geek-pay.jpg" + + } + if data.PayType == "alipay" { + logo = "res/img/alipay.jpg" + } else if data.PayType == "wechat" { logo = "res/img/wechat-pay.jpg" } - file, err := h.fs.Open(logo) if err != nil { resp.ERROR(c, "error with open qrcode log file: "+err.Error()) @@ -268,31 +274,21 @@ func (h *PaymentHandler) PayQrcode(c *gin.Context) { timestamp := time.Now().Unix() signStr := fmt.Sprintf("%s-%s-%d-%s", orderNo, data.PayWay, timestamp, h.signKey) sign := utils.Sha256(signStr) - var imageURL string - if data.PayWay == "wechat" { - payUrl, err := h.wechatPayService.PayUrlNative(order.OrderNo, int(math.Floor(order.Amount*100)), product.Name) - if err != nil { - resp.ERROR(c, "error with generating wechat payment qrcode: "+err.Error()) - return - } else { - imageURL = payUrl - } - } else { - imageURL = fmt.Sprintf("%s://%s/api/payment/doPay?order_no=%s&pay_way=%s&t=%d&sign=%s", parse.Scheme, parse.Host, orderNo, data.PayWay, timestamp, sign) - } - imgData, err := utils.GenQrcode(imageURL, 400, file) + payUrl := fmt.Sprintf("%s://%s/api/payment/doPay?order_no=%s&pay_way=%s&pay_type=%s&t=%d&sign=%s", parse.Scheme, parse.Host, orderNo, data.PayWay, data.PayType, timestamp, sign) + imgData, err := utils.GenQrcode(payUrl, 400, file) if err != nil { resp.ERROR(c, err.Error()) return } imgDataBase64 := base64.StdEncoding.EncodeToString(imgData) - resp.SUCCESS(c, gin.H{"order_no": orderNo, "image": fmt.Sprintf("data:image/jpg;base64, %s", imgDataBase64), "url": imageURL}) + resp.SUCCESS(c, gin.H{"order_no": orderNo, "image": fmt.Sprintf("data:image/jpg;base64, %s", imgDataBase64), "url": payUrl}) } // Mobile 移动端支付 func (h *PaymentHandler) Mobile(c *gin.Context) { var data struct { - PayWay string `json:"pay_way"` // 支付方式 + PayWay string `json:"pay_way"` // 支付方式 + PayType string `json:"pay_type"` // 支付类别:wechat,alipay,qq... ProductId uint `json:"product_id"` } if err := c.ShouldBindJSON(&data); err != nil { @@ -319,12 +315,10 @@ func (h *PaymentHandler) Mobile(c *gin.Context) { } amount, _ := decimal.NewFromFloat(product.Price).Sub(decimal.NewFromFloat(product.Discount)).Float64() - var payWay string var notifyURL, returnURL string var payURL string switch data.PayWay { case "hupi": - payWay = PayWayXunHu.Name notifyURL = h.App.Config.HuPiPayConfig.NotifyURL returnURL = h.App.Config.HuPiPayConfig.ReturnURL parse, _ := url.Parse(h.App.Config.HuPiPayConfig.ReturnURL) @@ -349,20 +343,16 @@ func (h *PaymentHandler) Mobile(c *gin.Context) { return } payURL = r.URL - case "payjs": - payWay = PayWayJs.Name - notifyURL = h.App.Config.JPayConfig.NotifyURL - returnURL = h.App.Config.JPayConfig.ReturnURL - totalFee := decimal.NewFromFloat(product.Price).Sub(decimal.NewFromFloat(product.Discount)).Mul(decimal.NewFromInt(100)).IntPart() - params := url.Values{} - params.Add("total_fee", fmt.Sprintf("%d", totalFee)) - params.Add("out_trade_no", orderNo) - params.Add("body", product.Name) - params.Add("notify_url", notifyURL) - params.Add("auto", "0") - payURL = h.jsPayService.PayH5(params) + case "geek": + //totalFee := decimal.NewFromFloat(product.Price).Sub(decimal.NewFromFloat(product.Discount)).Mul(decimal.NewFromInt(100)).IntPart() + //params := url.Values{} + //params.Add("total_fee", fmt.Sprintf("%d", totalFee)) + //params.Add("out_trade_no", orderNo) + //params.Add("body", product.Name) + //params.Add("notify_url", notifyURL) + //params.Add("auto", "0") + //payURL = h.geekPayService.Pay(params) case "alipay": - payWay = PayWayAlipay.Name payURL, err = h.alipayService.PayUrlMobile(orderNo, fmt.Sprintf("%.2f", amount), product.Name) if err != nil { errMsg := "error with generating Alipay URL: " + err.Error() @@ -370,7 +360,6 @@ func (h *PaymentHandler) Mobile(c *gin.Context) { return } case "wechat": - payWay = PayWayWechat.Name payURL, err = h.wechatPayService.PayUrlH5(orderNo, int(amount*100), product.Name, c.ClientIP()) if err != nil { errMsg := "error with generating Wechat URL: " + err.Error() @@ -399,7 +388,8 @@ func (h *PaymentHandler) Mobile(c *gin.Context) { Subject: product.Name, Amount: amount, Status: types.OrderNotPaid, - PayWay: payWay, + PayWay: data.PayWay, + PayType: data.PayType, Remark: utils.JsonEncode(remark), } res = h.DB.Create(&order) @@ -506,20 +496,25 @@ func (h *PaymentHandler) notify(orderNo string, tradeNo string) error { // GetPayWays 获取支付方式 func (h *PaymentHandler) GetPayWays(c *gin.Context) { - data := gin.H{} + payWays := make([]gin.H, 0) if h.App.Config.AlipayConfig.Enabled { - data["alipay"] = gin.H{"name": "alipay"} + payWays = append(payWays, gin.H{"pay_way": "alipay", "pay_type": "alipay"}) } if h.App.Config.HuPiPayConfig.Enabled { - data["hupi"] = gin.H{"name": h.App.Config.HuPiPayConfig.Name} + payWays = append(payWays, gin.H{"pay_way": "hupi", "pay_type": h.App.Config.HuPiPayConfig.Name}) } - if h.App.Config.JPayConfig.Enabled { - data["payjs"] = gin.H{"name": h.App.Config.JPayConfig.Name} + if h.App.Config.GeekPayConfig.Enabled { + payWays = append(payWays, gin.H{"pay_way": "geek", "pay_type": "alipay"}) + payWays = append(payWays, gin.H{"pay_way": "geek", "pay_type": "wechat"}) + payWays = append(payWays, gin.H{"pay_way": "geek", "pay_type": "qq"}) + payWays = append(payWays, gin.H{"pay_way": "geek", "pay_type": "jd"}) + payWays = append(payWays, gin.H{"pay_way": "geek", "pay_type": "douyin"}) + payWays = append(payWays, gin.H{"pay_way": "geek", "pay_type": "paypal"}) } if h.App.Config.WechatPayConfig.Enabled { - data["wechat"] = gin.H{"name": "wechat"} + payWays = append(payWays, gin.H{"pay_way": "wechat", "pay_type": "wechat"}) } - resp.SUCCESS(c, data) + resp.SUCCESS(c, payWays) } // HuPiPayNotify 虎皮椒支付异步回调 @@ -593,12 +588,12 @@ func (h *PaymentHandler) PayJsNotify(c *gin.Context) { // 校验订单支付状态 tradeNo := c.Request.Form.Get("payjs_order_id") - err = h.jsPayService.TradeVerify(tradeNo) - if err != nil { - logger.Error("订单校验失败:", err) - c.String(http.StatusOK, "fail") - return - } + //err = h.geekPayService.TradeVerify(tradeNo) + //if err != nil { + // logger.Error("订单校验失败:", err) + // c.String(http.StatusOK, "fail") + // return + //} err = h.notify(orderNo, tradeNo) if err != nil { diff --git a/api/handler/test_handler.go b/api/handler/test_handler.go index fe38bc38..88e95a2f 100644 --- a/api/handler/test_handler.go +++ b/api/handler/test_handler.go @@ -11,10 +11,10 @@ import ( type TestHandler struct { db *gorm.DB snowflake *service.Snowflake - js *payment.JPayService + js *payment.GeekPayService } -func NewTestHandler(db *gorm.DB, snowflake *service.Snowflake, js *payment.JPayService) *TestHandler { +func NewTestHandler(db *gorm.DB, snowflake *service.Snowflake, js *payment.GeekPayService) *TestHandler { return &TestHandler{db: db, snowflake: snowflake, js: js} } diff --git a/api/res/img/geek-pay.jpg b/api/res/img/geek-pay.jpg new file mode 100644 index 0000000000000000000000000000000000000000..48baf80d101b4ebd13d02ea0b6066dc082fe2b5a GIT binary patch literal 27461 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 b!CNu*|9I{A8}R760b;up{C^zzejEG`INjh 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 apVj@?{rKxp|JN}8dqnO3 0 { - pList = append(pList, key+"="+value) - } - } - var src = strings.Join(pList, "&") - src += "&key=" + js.config.PrivateKey - - md5bs := md5.Sum([]byte(src)) - md5res := hex.EncodeToString(md5bs[:]) - return strings.ToUpper(md5res) -} - -// TradeVerify 查询订单支付状态 -// @param tradeNo 支付平台交易 ID -func (js *JPayService) TradeVerify(tradeNo string) error { - apiURL := fmt.Sprintf("%s/api/check", js.config.ApiURL) - params := url.Values{} - params.Add("payjs_order_id", tradeNo) - params.Add("sign", js.sign(params)) - data := strings.NewReader(params.Encode()) - resp, err := http.Post(apiURL, "application/x-www-form-urlencoded", data) - if err != nil { - return fmt.Errorf("error with http reqeust: %v", err) - } - defer resp.Body.Close() - body, err := io.ReadAll(resp.Body) - if err != nil { - return fmt.Errorf("error with reading response: %v", err) - } - - var r struct { - ReturnCode int `json:"return_code"` - Status int `json:"status"` - } - err = utils.JsonDecode(string(body), &r) - if err != nil { - return fmt.Errorf("error with decode response: %v", err) - } - - if r.ReturnCode == 1 && r.Status == 1 { - return nil - } else { - logger.Errorf("PayJs 支付验证响应:%s", string(body)) - return errors.New("order not paid") - } -} diff --git a/api/store/model/order.go b/api/store/model/order.go index a1c6929f..86e81ca7 100644 --- a/api/store/model/order.go +++ b/api/store/model/order.go @@ -18,6 +18,7 @@ type Order struct { Status types.OrderStatus Remark string PayTime int64 - PayWay string // 支付方式 + PayWay string // 支付渠道 + PayType string // 支付类型 DeletedAt gorm.DeletedAt } diff --git a/api/store/vo/order.go b/api/store/vo/order.go index c076d002..39693649 100644 --- a/api/store/vo/order.go +++ b/api/store/vo/order.go @@ -16,5 +16,6 @@ type Order struct { Status types.OrderStatus `json:"status"` PayTime int64 `json:"pay_time"` PayWay string `json:"pay_way"` + PayType string `json:"pay_type"` Remark types.OrderRemark `json:"remark"` } diff --git a/database/update-v4.1.4.sql b/database/update-v4.1.4.sql index 28d93e5c..0ea7f36f 100644 --- a/database/update-v4.1.4.sql +++ b/database/update-v4.1.4.sql @@ -11,4 +11,5 @@ ALTER TABLE `chatgpt_app_types`ADD PRIMARY KEY (`id`); ALTER TABLE `chatgpt_app_types` MODIFY `id` int NOT NULL AUTO_INCREMENT; ALTER TABLE `chatgpt_chat_roles` ADD `tid` INT NOT NULL COMMENT '分类ID' AFTER `name`; -ALTER TABLE `chatgpt_chat_history` ADD `total_tokens` INT NOT NULL COMMENT '消耗总Token长度' AFTER `tokens`; \ No newline at end of file +ALTER TABLE `chatgpt_chat_history` ADD `total_tokens` INT NOT NULL COMMENT '消耗总Token长度' AFTER `tokens`; +ALTER TABLE `chatgpt_orders` ADD `pay_type` VARCHAR(30) NOT NULL COMMENT '支付类型' AFTER `pay_way`; \ No newline at end of file diff --git a/web/src/assets/css/member.styl b/web/src/assets/css/member.styl index c1f61bb5..9dab8325 100644 --- a/web/src/assets/css/member.styl +++ b/web/src/assets/css/member.styl @@ -110,6 +110,7 @@ overflow hidden cursor pointer transition: all 0.3s ease; /* 添加过渡效果 */ + margin-bottom 20px .image-container { display flex @@ -175,10 +176,11 @@ .pay-way { padding 10px 0 display flex - justify-content: space-between + justify-content: center + flex-wrap wrap - .iconfont { - margin-right 5px + .el-button { + margin 10px 5px 0 5px } } } diff --git a/web/src/assets/iconfont/iconfont.css b/web/src/assets/iconfont/iconfont.css index 31901bb5..a0959ced 100644 --- a/web/src/assets/iconfont/iconfont.css +++ b/web/src/assets/iconfont/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* Project id 4125778 */ - src: url('iconfont.woff2?t=1725929120246') format('woff2'), - url('iconfont.woff?t=1725929120246') format('woff'), - url('iconfont.ttf?t=1725929120246') format('truetype'); + src: url('iconfont.woff2?t=1726612860394') format('woff2'), + url('iconfont.woff?t=1726612860394') format('woff'), + url('iconfont.ttf?t=1726612860394') format('truetype'); } .iconfont { @@ -13,6 +13,22 @@ -moz-osx-font-smoothing: grayscale; } +.icon-douyin:before { + content: "\e852"; +} + +.icon-paypal:before { + content: "\e60f"; +} + +.icon-qq:before { + content: "\e69f"; +} + +.icon-jd-pay:before { + content: "\e8dd"; +} + .icon-luma:before { content: "\e704"; } diff --git a/web/src/assets/iconfont/iconfont.js b/web/src/assets/iconfont/iconfont.js index ad94b5e2..32973473 100644 --- a/web/src/assets/iconfont/iconfont.js +++ b/web/src/assets/iconfont/iconfont.js @@ -1 +1 @@ -window._iconfont_svg_string_4125778='',(a=>{var l=(c=(c=document.getElementsByTagName("script"))[c.length-1]).getAttribute("data-injectcss"),c=c.getAttribute("data-disable-injectsvg");if(!c){var t,h,i,o,z,m=function(l,c){c.parentNode.insertBefore(l,c)};if(l&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}t=function(){var l,c=document.createElement("div");c.innerHTML=a._iconfont_svg_string_4125778,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(l=document.body).firstChild?m(c,l.firstChild):l.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(h=function(){document.removeEventListener("DOMContentLoaded",h,!1),t()},document.addEventListener("DOMContentLoaded",h,!1)):document.attachEvent&&(i=t,o=a.document,z=!1,p(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,s())})}function s(){z||(z=!0,i())}function p(){try{o.documentElement.doScroll("left")}catch(l){return void setTimeout(p,50)}s()}})(window); \ No newline at end of file +window._iconfont_svg_string_4125778='',(a=>{var l=(c=(c=document.getElementsByTagName("script"))[c.length-1]).getAttribute("data-injectcss"),c=c.getAttribute("data-disable-injectsvg");if(!c){var h,t,i,o,z,m=function(l,c){c.parentNode.insertBefore(l,c)};if(l&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}h=function(){var l,c=document.createElement("div");c.innerHTML=a._iconfont_svg_string_4125778,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(l=document.body).firstChild?m(c,l.firstChild):l.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(h,0):(t=function(){document.removeEventListener("DOMContentLoaded",t,!1),h()},document.addEventListener("DOMContentLoaded",t,!1)):document.attachEvent&&(i=h,o=a.document,z=!1,s(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,p())})}function p(){z||(z=!0,i())}function s(){try{o.documentElement.doScroll("left")}catch(l){return void setTimeout(s,50)}p()}})(window); \ No newline at end of file diff --git a/web/src/assets/iconfont/iconfont.json b/web/src/assets/iconfont/iconfont.json index f114daa2..7dc3877f 100644 --- a/web/src/assets/iconfont/iconfont.json +++ b/web/src/assets/iconfont/iconfont.json @@ -5,6 +5,34 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "22174321", + "name": "抖音支付", + "font_class": "douyin", + "unicode": "e852", + "unicode_decimal": 59474 + }, + { + "icon_id": "1238433", + "name": "social-paypal", + "font_class": "paypal", + "unicode": "e60f", + "unicode_decimal": 58895 + }, + { + "icon_id": "1244217", + "name": "qq", + "font_class": "qq", + "unicode": "e69f", + "unicode_decimal": 59039 + }, + { + "icon_id": "18166714", + "name": "京东支付", + "font_class": "jd-pay", + "unicode": "e8dd", + "unicode_decimal": 59613 + }, { "icon_id": "41645421", "name": "luma-logo", diff --git a/web/src/assets/iconfont/iconfont.ttf b/web/src/assets/iconfont/iconfont.ttf index f00663eccf08e1b716563b5d864c8fdaa3285968..8b2283596f825847456513e0dc78c13b446c83fb 100644 GIT binary patch delta 3422 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 diff --git a/web/src/assets/iconfont/iconfont.woff b/web/src/assets/iconfont/iconfont.woff index ff63b66a4981c48ca2526ecbb3b8c06394358231..426fce0c2100df24c4d077b53b5391fa230d46af 100644 GIT binary patch delta 19950 zcmV)HK)t`9mjTe80Tg#nMn(Vu00000Pf!3000000cLb3XKY!a}ZDDW#00D>q00UkC z00?NR(4_%qYaBp*T002zP z0007k000AlR@%mylL!Gq0b-L&0XlyL40m{(&DK3^RdpQ3@$YRfZN+M#zH6%%YOAdU ziq+auE0&ikMXU9_^`)IiV1T&5Tn3sZBqB}?NMeFA5MxXSCxO2AP#<0m)p+Yg`kW)Qsk|Ux#!=N420u9oI>n(K#*af-Y)B zmvmLPbi1e)CyJ%wa&e`&UffK*X*f-#*|aYmNXJqwt)y$|#%krx9T4T7EoxJTy40h- za?hc1&#`jP>2lA5I;{D7d!B#R+1Rso-+Pkxe869oIKT7dT40gy`GFrfRj!}Qb-rA` zmFsu@VENwqlfPos?t8&b-sWpY`IZrS>EIc@VvIUorip1j-W(?Tb2@H8(l7a7{a7BuswMYV5W048eV37{gXps}tWRaMd zOpENGW{VV|79;Pu&LV$VXuXl&qtzm9sLdjGsNEugsKX+QXoE#6(MBWx>@@OwbXjB; zbz7tt^;qN>^&0tDpGCIOCX1A#%@%n_TP%`~`YmPv4OmPA8nl=TG-NR$XxPZV-)1p2 zXvAWE(5S^Ep}S(H(3p|;*`EQvt^7WZE^7)&w zm|HYwF~MlR#Vn(PR%Yyw<$HtHg}+``vc&|Gui8 z4eI^xe$zECzgMqb_~!Q*%rLJmvJAP2(V1a}(X+J_GPJOQ>}+ljHMPbBLb+mzra&BG z^_pcA?VNvt!YNdnfD&~G)QxZBjUxv}M)r?(J~Fx=eEgB>?$Xrpn~zUT9iI;Cp>VRA zOjbv#$=jZhnHh#b*_vevyr7^yl;eYl7wlYHpFn>lnr@}gA7vG3UK~OHA-|i2oaN|(XXYaD@0qvIrFejFtjzcJB97Ayy`qM6DM%3FbxGrdkYdOdt13Q`jYZT9 z$8u~SE@?)xyeywk!y?36qRbNxZ(cE9?(OZFTe*oPEa4c2VPEaM`dgNe0JEDp$t-^| zpM_Bk)A696J&4@#n!q$6?L}JWkMdGMx>n#v$IBgCSSN<*jW-N%dnpeFwcw7YJ2mjD z(bf?i=W3CwwHn17A2#)zoh#*_p+N){pecAtxjxkPYSLKSno)>HHDD@IK#1g`<&%H=Ys2#+gZVz&l7lSE5()aw>WRV2k0s+)40BlI zFvh~{?vuv^j__P``l2}&cWuIT+BStXPHYAoqNbrRMvS!A5B1tWWCBG^fMJcSsVA*g4`v~t_ zWyEbvpda~@rHED9UC4&gzd{IcL7&cXm_r0hIH1A`2rQ~*FlefsTM>(+QCOp}KJ6UO zq1}YVieJt82ssG-RYJO~1v!7>E4Nt!s~El#01MrVpC#`m;|#1Mq;VQoz`AoIx(R+a zpwIu|C zR)7^TifArfTChISC<{;&S}@7us+k;$ckWvwg)@PZ1~RVkXZ*O=L6e@$~o4QZRNO)cJ_*q1 z4llv^-crJKw2t$=r8@X@Kn0lL&gW0a5hlyzm_cS5zP-_^nSXzT|2&MCqL>5b6xFLW zh}zX0WLf}QFpNPhjZ#R##S%H1ui10g&N~zH*UqVlOhU^~7SI<8lX+*?82l}JJXE!j z_Clx@dciOHtV}w9-XFE?sPoem*Uryhy8^}4gbI)I)8b?i9{kK$=YwNoc-PpKPiQDt zgQ`$7ow0nPpRRvNiWi?I&yXobWis#$4C+DWCd*raDMY^~SJJZZYoTnjHh~+1*luRY zdz`rQNzJk}G6b%(EjMc0qqzawIgK(ldeFJ2cg;v9GqR=^ogh<|cINq|vd*d8==^9d z;rte#c77Lk)Q6$eW+?oy+b3{7h5wNWGBKuy;_3^##ASbLW)g9QW&?VYD>gNb;F?KpUy(bmtG4 zj)vBuU%P({opv(6hCt4;NZ*;q$<{5=(3!2FXf#9~4@J+s@OW=DABBfuco#^#h+kxU zj0RtBGyO~x-Wld|MY^s8`U3hQvJ}vlUTghH7J8vJUxR0hP2HO9c|W)y*7fkB=YP$s z@hao_XshRMy)fCsm2U)Gc?%O~+RP^AIKyxrhJ%031d&F&WN0N9NMTbix_B{6A)7|~ z*3>N8!wN2+!s-O z4-q!3lq(X#uqEN>PjW9>U}dcP(U| z`zC)ofB3)Xn>*bwmbbfOX;b*Yz+lMYF z`q$CvspyI>Oj#tSVBZ+9Lb9-e4Z4KKDH$_?DE*W|&|{>D^x+Cxfx{U+rl0l;a?F4F zhyIu>_*W{1E+Z|AVaS@*i#zqLv^mE((Gb6&6v+VO|9sjN!kNIemW` zojQHm!?piGt|JP-HQIwEwqyw?Xa6_>$@%eoetac$uyig=6bN^I=_cfH$n!6VyZHZU z@^&)E^a9lg4JXk#;xLVbvos<6jPqXkYkMqr@(;RdrK1^*<=_toGO=tzmHy(;<8S^6|JL6K42%#rduBhgX?!hJ;8YjHbd7 z2xP(^>pUE@NrUvn(CJtY1Z;n&wKubPYH{)5y^Bz`j-yD{)Tz#Y}7tYeK!0#`*IEn$(2XtJvSueCL5ulV- zXPGk$eEXs^^>16~#@+I7i;HOL)TwvVD1s>NTcSHYhEI^8F0S(^CkiICKMA0ZE?YM| zyl&a~E`Gi|JiLB**!h3^3;m@&J_LQ7Vv1BIfoLmz=mHY7MG1%tsI)p~2~9!4!6o*t zjuz=OouVKIPsw_rRp?vY*Et0aJb3Tv)0M-YeNUAi$gWynSv6!+M@3R5pAiI z`x?ux9jW)1E6x+=MbP5JyQk(#{r#o6sdrDD7pA!7RhTQfp5pFW;) zoP~^J+DXP;Dau46jjl?JHB+hPL?g9u=A|@EO_PM{Tl{T$3s16F~+M46ASzy%z$uC&3m0TSEsyRqpc?Mq+Mb(h zQ)hp+9}Uh7Ary#Y(XY^4YfF26zP+V2_rZ9->B~2UQkBjYFAbdC`C4s74F#eZbS;)T zzgKp?W~YDh$xl-6=Xhv(5D#RvOf-PD4)0KrU$`FP^LZ_JTaO zHZ)ty)4I%AoWB6$P+?|(CSyeUeeWaiP~#A-4nM-EJsS0$Wx$}$TCB+H9(RL(>O6ttQ3 z36je3VIE!>5|s$FgD%&NP|P$#Mll?6-Weq{Xrb<)XtoSA8OxH+)K>uUCIe_9(1g zA6=eb^}13p5>805*>yYj?OZ>L9!!j^pN#s|sOIzebt9IK8(}{$hN5cc;{*G8DzIKN z*6&f=UKo3q!KMd7XMP^)jj~;M^IzmPq5Fa$^y1BjOM%A5=7S)G5}(hO0U@cW?uVSn)VG#F|k)sO#)^#?jDkh&77o%f(` zab$>ar(E~l16Uo1p<2*?${+j`t??;0=zNX!2XP3!^8E8hoR2*~IF3BvxrlYn&^@EW zH++Nql8ggJ%mT$a1#t5)b1m~$=6>eG%+t&_nU|PfFu!MBMLwh}v(4V}E{IA|s@REQjgv|~(ZxHaIhxNkN9|cmVv?Sc9|4D%S z+_^0>mKutzSU(?aPH=zD8&PDG;PenI(783sql64kIJcs!&`3SHV%>bKFFuUs3_Uu( zenmt#ht^-Rq4Lq5m9el{-L!90)eOg0mIv1j8oFCq4-c+=xN}#zIGfsjaC<6hjz)r9 z=hn4zEKYCTyETp3m@yU&cJ9JQkQ^D+t<3iQ+cVRvuo8=UHDZ6G2d_Ig`p>nUnP`0M z((5lBi$^m%Ya{zdq7k=+NOWXB3Qu1-UF{q0x1tc3zVb>=_W5M7!NNuhP!D20w8+z# zSmSBTR}*Lvv9&NN*AAwZnY6q$oPtQ_Z#K@)^%Z)13u<_Hq0;0w z-qnvupeBe7V`G<& zmsY2Xz35Z$;l=qRt&p5ALgc?P?QEi|9bCYf_H;Y*0PBAX_Pj+S;y>RUeDYOyNKb=vPz!J?vG@fHs=u^SxSfq|CeD@L3T;7f$@Aj(o-rl;}tE#<%FBs%TM+HB}0Sznksy~j3 z>1Z@9Mn&;#=zw4fS+TcQj16S4+oKNjh%iB^bC@=Z@0Wt_^@yYUJ@2sRT^giHlcgB? zc&eI$r&>)Jj^m?hHh428uw=23swVYhCMSv za%&J%jT->Eu-R&Q$R7AJD+S4vM{5*$u1&>*MFpi%Q{VyQT#xIuE!)4kWAmk?S^wBS z?$~@7XHvM?*s<$}M-INNH*Y`mtt*dws5gOA8Rw?EMe%Mq>zD7jNA_pY%}2IvsWnKm z_OXBGwr@GiwrU?cL@9z3`}T}Y#0L65`n_X^@1Kgr?m4`CS11_#+q+@p?p6XB`R=~E z{z zUvtBCPxsu7v>*uMP_$j~o<~I4xo!l$+YNsW!a{S2CK`m1@nkKH2@g)gYiNVKCw(cF zpjkSiCQnBb9#UI+2k@Omprl9(s;ORMEwxl^3Eh@lQIo-%`eHLk`If~J2b zGEr3tMuV-5J`xCv%kzF!wo3JK%*qe0~Cd zuvu%r#itm)yGDkWr6RsuuOgUAF==MB1n)f0g{5yiyPVgP{Pf>`MdUZU?j4fE>(X0a zbNm)LhUL57C55?ThX6Ei-0lM$k6C|R`tp54M!6&xuzGp`i3SWLT<<0;((rB)=m2C0SHtmG#S# z1POjL2CpQ175ODCsAxcr3O-TSR9y}rC17emyBMOK^Sc zi|XyAt|w$mWWnzfia^ARY(^$B*~9}o5Z)mKSe|6uEKzbZcJK6Te93fmNYW62LqsCGS??iLeXt7j^S|#*uj+HvUxPlAm8dp5b`SlR@B;R?N zCsXc75>DL7%Y^*euqejj(5=c$f{$|YVQH!}}1pJ2Ysd>`h;6Kr`9!80cis9cPW zJZyd!=mJmPY+X>!vo&zb6-&0k1N?QRxAj{6{Bnw0vSb&%)?BDCezvxk-ku=smQ}Or z6q?kVMGEAg1wfg4?yM~Yzf{Sh^o$f5rb0*VodZrQ9E8ZE^KOGdJ1Lr*GJ3jP`)q{THw%P#LB1ks$$n?qsR zS~hMZ3oBb*Th)D;L~Z<0K~}=iXkleL8B1jm4kUU~n>X`*6b|K;N2!6qL?w}IZYQtR z0vzFhm6XpE&VMVR z%3w~SWz=3X0AhOn%T z=0dq#1fU&a0phOOUk%jOheU+W{5rr3a$MlxT}X+ns5Z<4t`m!!npBqd5ymgKQF zkk62t7=uZk)#j#9yU?mxoY^&Wpn`Y!k$0Z?o@#{?GP*>JNa%!|2wToQhyR~l?<4Qq zMHY4W%yb|`gfH;i7kLs2kW;eWF>u})L0_WpqHyUs@+C3{Jn|Z5Gqaz$31HKG%m=9! zq7M~4kivfpRccJ(3Rj!1;<8kvDk**`yGXTfZCa)UwcK?+>3MCsKU__Q0L+*`@t?;g zK|F|-Y=HVGG1#D$Xd7v&n=`|0T9ns|8F&R1?`B*ci13+GQEhw3UqxREYMAwLWsMIF zCxTogR_((8xQQZ2sQ>xb@nL_U8un@ZoFpJ#;*x)%GZOs0#R&U|AObGvweA`XaX6UZ z__wVISx0sTQi31_(x&8B!??%_96_X9u?&|^8r4rNA$z*M~%2B4~9a0cWTnj|Cv!(91aDdN;DAQCOHWZ z4^C-9ZZ(npDOgH8^66NLZ&l?t3|x)kH{EpGCog_r_NJR>9=Q0EPS15GUys(ker)vQ z>z$8x<&WUJNDzd0%2{WLF5;}tyZFH~VZeV+Jogu9OJ@-=4s&m^o=n!4RTGISx*7!_ z@dc+3_n~BUq?SllmsOMATKXP&niQEhQ)e1Ln@%vRnTuTcZdSnpUBja;$q)1Fsb^Y) zNOwh=R5eTG3g@^F&h|Lf9B2iO< zd9y!+iv@r9(nPtOz(*40&Qn8)asr)$uQ97A~;DfYm$!bSIS@ zd5je4YFMl=p98W`$hu-k`0y5dxF>&w@uV|n?GwnC&s-(RvV^V^h3A9C1OOlDo1!ew zDdIm#GLl2Wt%B%$T2vGfzalEm)v9G>EKBt~a$J@=y^_p-S;6t}JAtZ_@Qae%IYdJj zL;4K@067uYL>VdKMV9(3)T55`8CpGK(d9zF@eAZxGU0yV25P%h7=*8&d$@l@#gUUh zn0KWTu9(6S+yK?a)mm+fKP$;75^sfdsgc}yi;m+df(4jCsUM!)85y6Rh;TmiPonTG z5}7Uxt{E6uvuj~M{zh#3k)4gk&Sq_E{OgL5jZ93BN1(6wrW(m)W2~M^)g7fcRV+?j zL>)Ymy*NV|u*}6-V8BjCqS1c{=f|&4MXmTXB#|Ci*hO0&OsB8vtv7cZ+tD2Ad0qd- zSz0c$bt|6hwmH^Fc79!$S~FE}o$qBb#>g@wn>Ch=ERE59GrdS*9_QJV^7 zs6N@9Y*$`039G$9p*a;fcI|vkt6glK9S14|7Jw1*_ziS+RADeLh>(BARRFB~S6$^d z(}Anbh5gQl601tBi(ByYtx5dQ*Sh!$8fgz~N`6;C>b)|rrD5IVmgREGW~tNpb#7TU zyKFgiu0J6eY5(!#erOI{(+eAt7Ei+1>}+OJ?}#Uwboh_$Y?SP~^9%L?UpmT*=-F(0 zrk!;i=gG|Q^l-*?=-7YwVQk(?|gRY@AmFrtMeRgyfDQA_0OZpgV$buxalJ( zu1Pwx67E$q&fhk#5Y+-1`zL~6NvboIRpM}0v42}jo6v-rna zSc0AF5@t$AZ*i{AhT}1Gd*=+gIu=hvojWmmo?esoFA1w*kZCbff4-lnZn|@))wO!f zpooCZrYnC|x9Xnm9W`Nn8P|0kVCFW||8E$2h1I%DTQw0Hf&uF~{PE0I)kK6G#CYUrffcMN^c0nVOd zb}&a_71xbgy=Apb0r*D1M_ty$&h;U~E>@5RtOX(_U)tLE?&D4=o`Ae3(PY3&aSp z7X(U{m$?6%RLDb-w}=BXAgL-iojlUE!^;k~}eGDU_^KFVK z^aaY+w5UOpW>K`=q?X#Fh=ZA@mdjacxlB)mH0xGMWY@eGS+; zl%;{4hSwswoalU$Qk-aq^H-{cEEQM4i+np*Mai`J-7`N)kgbWtna2~T#iM^eftF~^UkF6 zQZk7WN$0mSp+P)2H#az7%sjo(wl_W=dHF@4N1 zGYuqywX+F6zP7Sy*e5x^IKFb_hC_4hMvLQ&cw=(kbSpcXwoT`%FaG-12#db`hSd z&-71UR9ew@m}7-&`&OJdWNzLSGwejf)J-|4Yo!&XGULh7o+Pj0mto)7OqE()=pHBI zaW!>Mes&H%G^r%aMi-Q+{w_B(G&?kuMbc#l_CDBXJh=D3iwA%AK3K0mxcA^?NP^tu zLqj?A{-NBXSt#~sZpis`Ds{!GM^|2%OsA7qu6%UW6{!?jaW0?E5eMt`m*jIK0kr23 zGsEn0PhYsU7n*k(OweGcbOZxMS+S|g|77_Msy;yt}TT|jVXw$p{0ad(Pd!; z&(^|)4jKWTEu4Qy8EcyJ(?i?ppET2w-;Cw6mK2N{gVDaMl}*MW@NUJY!BxL<8?6<$xH#u3e-IT&M#$jo-|>9X_0aKu1$Hfa{|ZGM(34? z6<0!p5I}cC(1S7uXe-u>KV;@NbuJ%|XauDUyw*rz)H#1)^~wt2S$+^`V9bVsG1J7R znd-c}boTG3u$ET>E$})RBZW`_44^R96-#n34h>HsQbB_RX0ZW@)J(-ymcR=HVD~ME zhZUR~#El7T0jE#(FWA+;Kt%}yrF7NG@E~Y7GMRrJTsV5o(Y5{kYr$I>d^wZ~_|4&9 zc97(a1yu^NN>b~&#m?bmvRaQ=T|D}4w*r1bJ>gjUSl@(t%#XqF73mChqK z0!@E!TGepG2!$Jl8bIF|_q4wLZV$Fu7OvzawaRxD+V^}V@*#MrW=I)L(<_Z>v7IZrn494to zj(R!tw4SGde94QSN@NtoE-2+>=Vb-+)o_2J^RsY5_md$#x)3yEE@542L>0mTA;#nT zIydIAbySJkC9lDt*G?Fp3KF)FphfC4!(Ni#-JIIj5v}*lI9Dh zO1toOP$EPQ#LyYO5~o%6V}BubHbZGwMo zznUnOhD#-!8JHi68u`I!*dB~`o(bEPIC^Zb)R*nNE76w+ET;sVdO#6@dCCrr4VH&D zOrxiZ?Q*$YL^q^sQ|Zp{A_I8~kHrV=ur*LHpRV8LAYHhVq*QT9fDzY;(qB-S|jJ}q=WUVo{ zYe%o_)U3(rS~xH;F&#rc&y6e}$!14#ug@fr*3*mpd1-jh=1gJhp!2&(SQ(g{t{VZ< zd0BJ?3UkYHls5kTt8ZleB`H0XlVQjvdikM&J> zfPyc1F;x7Mh;TtUEj~H^#QsAE_daw?3q^ygj$AjgEnxDz5#UpORqNpTwFeXhf1T4q z(SQ}=`H(*v%I@dFp@^Q9bRFDZaIWV?K6kEQAQH-A=Fp~fhm~L=cJ;%%_Fgi!Z$ecg zL^dVdKM*NL1tC5)@v(zP^iY4614dShSQ-&H{rOOa698UiIGzg)(>zYkXIaSkd&r^Y zYZky{C;@OmggHA&e(%~I&oUomKF7Sk`~vYXUG$8^lImDcTs&i1VNZ($L#ex3?6!A+ z)>;xFnBCKnt|FRN1=6e3ELOy&mVmyXlt;BiOSQWJmnWkj+!No|+$?_xcv%W6nKY+u zxrs|p19{5tvlXB%_k5n!O}+39FxzL#Uzh{j0pOUf?tBRpR-x?53C3&?)#XT_|k1xHh6aI#O=P=IB5!m=1s4U+SewsOV{QG+(Oset4)Rm=XF zM0@2&LMvuW&1;_3qV&ZawBFJ6cxy9Swqomsb?s%@WMXo9>->M*o{OX>0IsK!fG=1+ zoQMjSvwGYj0>Kz3l7%D@S)(os_HMQ*=!tW>bH1|xTPG^FZX1k1K|X+L@6l9K~Yiss$WM}#Q6T@F%AmS zmIz0S&wUPRaBf{Hn&Ob#Mw97g;;sWH_wF95MdoLZUUqW-=98Oa zpM)M*MiAzn$BJ(977Bz+7$Cyqh#thOAarR&Ab?Kc(@cMmG0&bT{G;=fB-?CTanvNm zoB&{pp5e=$J%-+1LK)=YGwxvsG6in4qrUate|`Bh_ThiI2PWoL{OitB`9@=9qmd5) zFi}-}T9-SE?&%3|J8v#O`Uzw>zdDFSLY)8iaY7zMA3ROVuWVdR%SY5Dn)XI=1<-1K zCJbKaU=E}T7Sc>y^#;gVsVNene1pgzD1x({2fok6P*7AVn2u{jlB zVak~_T~lO@$~RqgjNKJI0u67wAw2GUbKH)OMeXtXRMX5D2EzRd6eBEbUl_^dMixHG zOFmJ+k|u5uR8F*kvjC2Q<&@AeNsaT09V&#J>rj8xa(<@w6{F!)4@~I?$ISkmnO*4T zH8US|cF_~O=v^aw(m$Xf{M>cao1w4Em`)MivTcDPE9&LGAm~0xK!W7kED%8|aR6~y zpd*9ExF7m0+j>3}5d@`gZPu{+BY3mXSBSjsb>U1U<~(7>__XeFo6_V^u5P=u@iXM( zWQu>Wm;vS zX=~@$#G5BZcUdfvx6jPJXLfpr%uXPrAG?2O?e?AP7LIArY)?{6ijkdTRJkaJBAOwv zrR3JB>~Pe_A|7^SJd_YI8&qv-;L~2GtI1$r?~QAOj2_G9W8sXj{T-ERFdXTsuQse}8j$oamr4tw45zGaI#x^?Ty2QEKQa{d!0hcYXZFBA`6aj>|qyMLb}-yrLmWy~Zq&+KAOKyP7* zG(B_vhD#JR8@Z%w{SWKJ7{n!a<{<_E%~KRk;HFy=z6|(;CVZ=B`f=_ciFQule=BFkqW*xT=skrfJFI`mnpPvl(OhC+g%}-*3eG=-_*0aVR;CY){0CVW)=Oz9QYCs~7&_8~TMb{#D*v}EP50ig&qx%tr@ih=7 zcprj(6S9wVy`MIa0JIuvK=lT89yuGt4aC2piD?<^d5ah1eY^?v_p->#J16Vn0Ozct z_G{E8cpP;pvN|j`_qKn7oNL$N!m}pDMO3wkDfS2pb$XbvRrl}_fJ}Ol%UC*UNL9pM z1Av=cr3gLg0#OCKcJD5O<-W{AXRuLk?fkMbi^P~V7!z1t?{bpmkf_L(k?1I~EUT2kQg5 za8Mq0UiE7t@5`;8sU;G%nbo$mI8%88R|qRAOC~7zo(3B%;WT&J+*=Ksit~R;g7i0bfZa zn`R4ezZI^#NGgcJ)%sA?Bkk#RChb<$yWFSIhg_>4_Yi+R@4_^JdXos6rTC8QyLjsd z4(X|3U7ybH=QwfM4kM1)P;s>{62Ux&0>1dJzP13QL*Qt;!XlIz9=nR?dv;wMPfiX3 zReQ7*5tfhU27Mu4MAOsBEe#`9Iq{Lbhb9N25g!)+&Ma2r_PA>>VvpGkRLSJ4$SfMU zYUhqIAklyGvPuB4pq+l%geY2%SR=e6N3F+-N_=IoXmG(bv9zkAnOInpd5cq{vJhAw zBtv3q_zHsv7`5N!3$PrD8l}Xjh}c+^-%|5&oVF}gT)rll5O?2k&1-pCVV!T^cVu~c z*W|KLNa)W^P8ypEeT2jPlL^I+Co27eh;UbrXC;5$$6ED}Qn+#~Hk8*0L_UVoBJbE^X|c-R$Bbnn9`L zh&_L9!_&FP^PiN0Mm%l=ji8xG0E3DoFJO4dWWpZHckaxO+2G@=!M`Oa-R&z@ilTGc z)iS4jrD{pI%T+}G#8(O^IN$rz>Xzt1u+>?KHE*hqL!aWW~?RNl|3c0gqP^rC2p(_e@ z?epk$1~rSK;{wnYoOk7r#nJ0LiY2|-@RD6KT`v(fl|c9+y{U*^R|TvCy*sT<#b&To zQq=g}WM7X10*U1jK%p^?SHy5K6&4kqn*{2aLxmXe0ma8*zYoXr2pBxys9P%Sl^TB+ zIl|>*7z&YJMS65GH#8WpI9o%#A?FF*FhU4|Iyh!BRmeDxXD`Y+PoxWl4BD1imANGx z{F3B6&Pkl}m?WWXte?F_MH81_^JOh0WH8SYe1P|%Bdp@Pj1v%^CqQDq(Z~IRBqQjW z9M<_97EPYFBy97#7?5KH6p$iAmOp<`j0FN>n9pL#a`SV%F8SqHQI@RAk=VeHE$QWG zw(=%PIwj=|^co{CJuAVJHx{|u@{^%2ghJ1TCJN5m^OM@CP-vwYMUUMY;J-k~7x;j4 zPk=u~$m;&e^6S={&Wmwh=0m(63qZ>zeG=kD@&qe!1dATM_$s-JAfO$V!HR!zkHTfO ztgFfMloNk+D^s!U-rJPz>MXL|+nLC9O_uH4fv;s*2!!O$gd7UV_zQA~Q}1F$=S!5? zMLsGRHk;3T3eF*Lm_H4yfEKazerUmYZ*X?;EeW^6|>hNc(_>6C@yV!tI(Wiu(`0 z@wGI4zVis@dq$Et6lYn{&)(?+-hKFz)^M?K`_`QYF59UVL%@HZ_}Nt=i4_aC zZQHs3JKs|(S+TeUoIp>cxTiS`Y}`JU z-mj(^*~wZy7D$j#a%g|DK9e2tOFBYn6<9_pjc|R1~E0s%uz?dY2@Cr01y(_yhTy;w3FU(Vk%9rO!vs+B#bZB z?0A!+duB>)Py6GkeLSvp6d6mthc>zvO-(X2w&zL~%bM?97yESKlKXrB`q^V!TiIMT z{hGHw{Px$RGX;O=U6*WFH&{8kgXcw_-+oY$c5D|^Vf$u+c>m0SR;99bW0aCvb8P`> zrqF5%riO*qa+0vcLpdfnSsm_msz!mii=yBtQzV^1dNQ4pGvCY%NP zU9TH9$xp^o?R!e?P1Aw)L~vgTbw7hJn_WUo08>cDjUaC zO;g7`$nN&wO`CtNfq7n4ZB*k!NE1B^^Ib!ntRc%k{Wu`H*?i$ z?wh$9suFc5`!yQ-8r5kpg`CZmoE!dnW+@dyu0G*6h#)-2kuBvOY)U?ktYG}2|`L((8EELaww@MVw3!|M%I2;d$|3-Gbt=a5f zX0vEbY%o4M3rTY4G3w6F#s}i?;BDn)_~(kQCv@F;7~KVR73V5&(F3lhoR{Q<@v5+V z8;#vY+gS>|d3JWT^JScf55{J6rSlTBsNjSgo`LsvUWyOK+hz2h=ZfD(-##XJLUDH=3i`Bk0 zv+Gx(MfYTLZgS%Q6q`~*DSMzXwzxRf7_d_z73gxn-#5CpWf7)_Y0=xxTn$;HeO91o zx(5vTLam-L&cAoIV7h%%Fug>BIdaLxca_S2<yz5^B71FNSmpI$xC zMuqZRxjeUSrdXU={Nu7-@aO1#rF2YH6g8GEeHoSJ*3Ff0d1l>A*(V=e_+#r7ztv)1pnR!4s(jr-r0tF;T9>E2=ilszgGc}izn=Fh%J=ao8t zm0NE`$IiwEY3xgMJy2)xf;=esUqA8t&@wbEhJ9$Yg!H)N{JrxJzL4PjZGaUdv{sj$ zt7&<3r>p~*S&al;?tFx{hc_sC=c70{14U{y0euaM)X`hfYFK7{Zjl$DNFRRZt^D^N zqPJS~i}5g)oR=O1sPr=-9#C96;z!tjcaq(V55_J5W4D~y>YfYq45%pW*%kDXKa*B+ zuZITQOmDZSP!>mMcS)p_d(VJX;?EkHL&`;op<;0;fgVd*!B{M4CEwIdxGZJT1T*!X zkh$*zyMb;G#zRq`mAt3tFONTc;?R@Vp@VB@Ggoab?R{kT?nm}s{K!81IxCrf8b~Ib z->cDBIu-?H<%0Nc@%DRn4D@15Sj6$G-gxz+dq1#e&27#Vv#+ZinKahl@#q~JHoUb9 zUp<_o0<@ZA-saxc0?QYB(japF8G%9*R(iW6z^B@<+)IK5#DxKrnqakoYOA|C%2KOc zvME^zL}A61O&Ee*YEof@i&$xY0OIXBrTHqTopyDS5Vs6U`T;RRP4=lo%fL+Uy0L6_ zY~5zh>+M-yE-&9m9dzGO-q*Z&ucoG-O6kG9H#dF!(W8PuleE-R=@3m4gm7386)9*h zpHafGq+#qejASevoL-(+Bt;aA6{~as=o}@#d^&ixKwLjtAiNT9$&9Uk+p?Cvf9;la zV;Se(ZV$j&_EcI^|K!zYliUslL#;o3Ux-|q4Dm4gd_%Vbk5>U8^i@~)+kg&OSTfOH8k+VIeKc$RV1CqP~(@Tu2{Tc zYH$qY$Mfi^{J4!!cA3+EsBb&Gt?t~8eqXhnl{Vl*8$D%Lk@JmY)%5p_v@*lxV8qYC zu&D|319WKWiYa&w0g+a5&Un`kBGw+wAE|Gv!*dupCtYh-mLlF}rZv*zH>=6=@Y}U` zGR*rU!Emx`>v#wGA-NWKE_z?WBs0Yz z+dUcYiLmKO8B^DTay+$i#IQ!+KgN~AnbjFJC-T0&Ie&Az8SlvdLjm-o=i0lE?{2#e z?z@~X)vVFmN3B|ak-wbtS+$zlgQ(T}_j%w#{@XnCsdl#`?cE&}y)T;O0~wSF z2-&D}sa{OM0xzQ1&tM-3b9{_&@8;OGEIbe(F`f$(AD*Fq%3?f(;UT=M+Z6zxeu-u9 zFPJb>WL7b|nG?Y6e1KuvjkC%+KHTMSbT4fQ1nKRDYu!hYtI);tt~k>*3M`fy1y4pz zOM5(|t3-0;N`}`2cdo<)w!G_xvfWEx&Rvl1a-M+NzbA!dB_0fzf=|-psd!lMT`n4d zU?LupM4F&~i~nZ?bE1?17I2vslJum+VXTODZ`cX}4#Oha>DCNMQV2X?&k5(;DN0%{ z7#Hw<`;euq#f}IChdqW(LN%@ zO_TI&il*ps=gfEg5~uU5Ab!`!$$BxanW0cZ!bBE-?Q%-V_XL;v1mz_`29o|dB`!rp zDVYd*ZR|O}h#vpV+Bc8WW1Hh|TXh(EV)y40mQgBcsYqePDVKk}hdfNKVp71dv|N49 zSyCv8y7#2j&t4Jk-aXbuCcK_qx^jmMl#8>=ADWvfmF>}7VXA<8z?pG=c4;h=td7=_ zsjHlST@Q#b06-n^j zgs#byE4IfI-bGb8_n3xfFtc6hYDNhKc%MK-L63$r?aYvO=9m)Z^kVd`NXV7=v|IHmB)fa}>^*B#>F({l78NU5P(oM|EkS_VLcj<% zyL9~xR~(y|MjPIKiK-S-Q9}**VC+hNu>c=1i+*LW86olUo<=+yiTJVXlVsh9r>?zb zxHl}xSc=55@kY;hNX4qU=j|KN^u)0%$QC>~cI5IK4t(O~6bbs*`Uvrhvg8;0A|Zj0 zs2+(SIUf~5)<9#UJrzw&CJ`Z0Ae>GYd>lzmrXo}JrbfRN614uv4FQEs-Td)B12n-~=iJZUm+T`URi{3IbmkBM2j|Bw{5VCQ2r-C(I}uC^jgT zDM~5?DpEfx+$%II-Yga@Y%K~cj4og<*e|{?sxbaB5;3kaIsgE8oMT{QU|>jM)MgN7 z00AZ-<^n8m{Ae+`vuT!VkEOJGhH`_z^$hXZ(U+@f&`} zAGnVP_!AHD2#@guPw^N2#xp#}3%tZD{Dar{7aTRjsF1ebR;F-#+i^YK+$`S6DqWcF zJ3gU>Xt`-9@5nb)^iEqY3t^3a;4!C;D_wN9R+^afykVW46VuAfGVWaNcpr#4PjhBy z5t-9`yYRG3BB|m;+AT8xu65Q^H76gH;JOGc_q5JJZ*11N3u&+KOq9`ET?N%SO_NTE zsOhAEQ2FHBcBUR+-G$iO05K$ByJ!ccW-ik$+f0@(J3R# zq$4P6#zB^CuiBokvt&XnoVT5e)1|s4`3}L2prmPd$rd`WjpRfot;n3*$efE=T*NGF z>TxH_p-^R-f@?L{yTJvq+S=JvR);66@O#~Z4&3Nc?|m#H%pBdxwaD@P_@ zCgs*k@@4uxPZcHWXEgDDl;rxMXI7FfobDTCRyTVkX330%U%odptNW&)g|j|RLSI+O zu70{T{Eou}q{%QmQtH?i_mb75HEV5`OiOv0w#~|*x=Jq00Tb& z00aBp*T002oa z0007S000AFLG6g?lL!Gq0cMj+0XlzT40w2)&DA|@m317&@$YR*L97b+u0;iEtF0|m zQEb6lc~z^{_ZN@^CK52h29rZEfiz-5NF0c;fsG-=fjBr;5{4#hB!q$SJWmtC#z^q| zpF`MLi1(jQbMNhK{(YYR`JD?a0NU*}>+sVHwET>=^M1G0yx-2^=KYSgDZhXIk#Yac zkQQmNy0lEo)uTQQXjp5tP8&3)ac$FtCbdJmwO0ppNQZS)(>kUTI;|O9&_!L+oG$B{ zZs~T_Q5~;NR#&R4)%EITJy4I^IWv zx3Sr8d$Zqu9n{pl{Z8qO_nUvcul*?dJ-|oH_w=V`P4P3+{KBvN)~w%~b+%bE&H9sb zoWHmJ;%~2i?rY)mThDilvV*tjV>wUqEo1cf^uOjamhu(rc#&u5XD!?5UKqpSSr z_~GuWon%%HAtdeD+^ zj?mI5eWGRIY@zOO%FuuEpnP^kIC*GgID=?aIE|<$oJ-UjPAKXNXBG8_Q;P2e!nJ4A8I(9c(gX0eY7q-1!yEZ4`?(z8EAb_u609Du5T~cX3d*&f4$AeN33mrN8*UNw zN4QVWOt@Llg(%-ynhnaC{~MGuzZh;HbSd0LXf7!C?{c`G(6w+=p<6+jt=r-DqUwn9 zomm|ZHyYK+aJPR^T?w}w)zxs{QC$x=AJxrp2T~7&+mL!R+>6w^!VO8iC)}0P`@*eB zeI(qU)U)9xrJf6SD)o(UyE0F>XPIvW?f(IeS_HH`cOUNUESPXLrPG$e+LyyrN(Ng1=Yu)x{-hOt?pkKw7(bBo%i|;xs&*q3UeX6 zSJC2=$W-cD7zR9!8kU)LURAGWYb}WPp#XNb$w4N|E*(-XCOxlM&8a2(R{j=rA=I4(sNAX}H z2#@_UYtn)TKRecWY-|kg9J~BU1?6f`6>6q4hDY?$JxSmlo*~bYDJIBd;2jv$gU&3L zy8}~*zE7^GWZ~CB*=B75HwLiT%#sh;ar<+MVJKt}TzhM7)HFwPWz#-^GA4S^zNde8 z^++Z&vbq-?B~ylS@`a_c_VL{4{Aey={|2A1e;c=h4@0RNBCgPEz-V$-Q{nV_tzA&UJh`OPo9gdR;a9-z`0y(%Z{K0x!Q)puy)2LR zv9jnv`*{3!<&@2&%Hqbk>YT0(J)u4w`M?rL=^LtEZL+Q}B9Y!bY%&#DjGYryq@(HqKb2M~v zODGx*ktagYlP^Ef8_h@IVHn;460hJ_7!RYso108O(}X_5e9of#N}wIkj>vyfKwawA zcvBX7xi(*eXR}G&n(2B!JSW!m@S^K~+pTemaecJK^|zdx4Ez36=hQn`LT+Z_Oq?9`(E(CeS1p032bw}Qg^sPM7<7acY@t^1EMUgd1s0rwxK-c{ z2O7Gtuti}=+i4#2=(k=k$3B1L2}V3ef|1}6PbBDhh_I1AnTmeRvY35HG!*f2`!ha8 z@u9Vsi%P`v5GE(NGkIt&&9gtVlz07~%rZpCBLDT@H`)39|Hasx<%YSu&6!J+!VfNI z6$cPZr6KrH3PWH5;AaK34LF2!8Urd5gxn=*EaBs78sZ1IMn~WR zVLw^|%Gp0oKyrROpC4aA9W0#*6F-DI|K=p*ame-0i8IK7q3?esb4)M8sL*f{UXlI` zoo-@*r@x}*{Is*W{FOPDyZZNP&`3u!3d_MC_GMz(L{R#(N2})8JcXrX(i}Bk-1{Bb z#|d74zxVM!fA%>~Z_vkaKF@9MF1>EjLMDE@IcA$g33>1Bs7lOCm_ZI9M11)~A+1QC_?ebdeO~l6&pW>Bclz!3{l(Tz zU;l>K2OYDr=kDWybVUn6e}c2;;KzuJ%%lL5)tDAD;^KdfB;c%uRW!1bG)4(6ib*PH z0GTQz7^;JuTWz&vA(PZqpiSsM$#jmFh6pqCg5Um)|M#buaE63PB#frQ5eQ_$pYA*y zGf9K=#L$UY4+KoRwL7zTd~xyN-HTAKl*yEaruOfjN`!9>CmhExb)%F}MjGxH# zcm8Vn(SLlz{_vyd*9T-QS0Aa$h0`=F%fLKS9L0YC>H|71+pHJbh6qqfsk6*U2Ht(q zp8A)~^x$s(m&HXib^Q1TX%s;e_bt&KpTDc9loJIL%9{e{Q^RYAhSm2L~R!`^1ULfiHci%9pdNR$R32h?h)3303YqOe;K0t3JF`6r9Wp zFC0T;<*hrU_a5G`zFbD#Gx9Qdh4cZGgq3bMXCw!Q1eQD-c1~-}IU#rvZLXC18pFp% z>iwmP{p48@v^ep>skvf*e{pW=gA-?kDQo@eBeihywKPpllZ4~rZ(U*E>@|u5MZ+i>=z*>FH)*V7 z7$w8L_Ds37QxD$T2k-qntWN`WfxtwWq_f+5m@-oZdS{p!XBgO2W*cZNu4Zs43PFE4 z9_EH_`U2!|@c;kkKlIQ`c$eK2c~loUo^bZJM2%zpSbX4tlMg)f5ZU+N`=oyT^(XHq z2cBhL}zGwy=!&2vW z{vB`G;s4y{sP_vzI6Z*NStS$op)Et(gGjR7eEU4~xxn@$idPzzSM7`Es=t3ZC(o%3 z&DQd?E^`{^FTgxhm>Hl68LsJU=ce-l;ibLY>c$nL>=ZWJozm8-VUGOKA_+Q@%u8r!mJWw|2U2yMYb?x)r4Z}rai!h`CxwR(Hkko_&E zsUcJczYAlIlPNL{G>*kE12!dlIG_YLY{IK{;!47&uxab{}WErsIL+_Bq_%}o^x zw;VM`Omk$OIx{!jd2V*T8)Ie6BunA`Sw$V5|43DZ6fP8VhzClr6S)m$8ZX3osB zC(E5Yo+1kKtXW0qcw<|`?Y_S4@V2_cg#qB2az@eEMy4R&o^l645mR$py}qr9jssf< z%$@DPM6}y}*c}#HgyPKUas3&L>naLy4QD?K$RT~qTo?bt;tH6(CZDINdkMA!hiT(-!Fg5ED(?^FUnCl6Dj-A zCe|ZJL5>ge&|ygQN1z>asj7uyx*pQ3aL9gt%*w6H7NaAn1Uewnet1?;pi}$(iXy2< zRgIo}%VCUtyvg zjSftlACAUUPe=|$2;yW}6yd!|1mgDdwIhS=A+IVau`EKl=+KUppH1d9k3Z4ZD<*sV ztXdykmS6d{VjvPuNU_rp#M&q6 znNi^#UL^lU#sMQ{fnuEkxOsp%#@xZ&&wPS;hIxs3jrk?>JLVMfAO!)9RLEMzRvQj8 zb&M=!o+;aH&=kkh3RzfOfC5&L7xaR&1#<2waX^29aCSsx6XTJkQMhQ+2!UmmNy(~(|(1d*px&n>Vqs!OM$NJ(!Xiih3 z^Xq?>M^t@q-G%EbpXyl=3+vU5dp1_}aBM|sVC{gWI+fM%z?z3Uca^N!)V6)wQc-<0 z65u+wteInRddu!DY0Sp7v1p)k7e0vO$f#;$wq3L>Grbb~V^Oz8Y;@l>`$qq}uQUvF(m}bWhvM$@s4=sOG zn%suF`Y|b#N(F+I@bH>Sl`HqHZifOisrObiQ(TdxrIRa)qx(lk_uD_~wbHAK;}?&O zT|8b~m9~1(=i$Yz`6R87oVOtIUzv6`QC0RW;7ohEoq2%u_&gpTdyW@&+;bi{LlT^! z*Ma_u0sWO``j|E|%dBN~GS@M8!zq7axYMkXE3^9}*`~?4#7CAABEtV=7*&v26ii^e zgfyZ!);S!2&R}PgNywc<^|nz@Bf$tDQz)8nT2(3_Yu1f+T_aDOygySeXUG9?PhLv_ z2RY!-F?IV}QXn9qx)b}K!xN_%C(J+?eZMzY@9nJzdxODV!4n8@qoabC!1XQ;=mB`T zG4z>KH3d(#n$m3BBLmqDJ!1k}7Hg?$QcZ?J;4Jy}9|R%ycq;XHmzMehd78`vBnR5x zAsT>q8o=!d46woo>#e4X?16tjGg6RDd9;Sbb8RXfwEQTIngS0X=UQB^ZQk~+?VBzp z&HAVRZu_PKIFrK7#`c{*I=JsWy?OJY?_PfJco)7gZF)Ruqx0KU@#N{Y0gTF`B*6)ajUq1%!p%F-xR3%pE)SnVbqLYD{w z;sM}x00S#S0Xz9#K=B7oK3L<3hlpW*hDD-Z?2X1^N;DY_E5SrM5meQ9N)LF0@n9?= zC~6`T4f+GoKx>1C_`>3{yf-Kt#d;~`^#;AX4~VW}trQC>kx+jy-c##|7+%5OpAfVl z=JONyv1YCPZjWE{+%+;ZoQimIy?#OWTS+~mBzXG;E-bzH+%jHG^3#9yO_5*!w)aUA zuS$2k<;cx)49jb`alc@5D=ful}P(XSc(u|;td_h_ENnXF~m1NN` z2U)KyNs!=0W6&kxtH>)U0lxy|sNfM*C8)|iO#lM~u=msnfV(@GQRX1f{O@Gm#k`xj9cUMZD*PNV2JBC|Ujh{9QdI!m zYiX*;16F^qHi;UrQzof?v(~8K9Nmuu5Pby?AWDAF4e7|c0bV<*0E0qpN6XL#I*%_< zHqzmDC~N3wQQfoD^@MDZEOgv{YaGyPJ~zdNjll!iA!Ge{vIQET!;vG*^F(TE$}2D54K?tkn7CWn4&AIO_oC zRYTlUeCKtZOgS@2IB^Fr6P}GaovKTN5d_su&q(4@vVEIs6*tDjk@=({E_G`^|HlLQ zuKd_yy=al2!A1!AUO^pZm>qu|wwffoR{7%WDX}PUAP+|OZZ8yC= zLE0^&X4EM(sW&YO10_reMx8$^VcB)M7XBViYJwVw*NAdN7{GNcIIw z$({|RR7_0@Byv$C7)a#Me+WLm7Kv`&q-cK%EyV|lTC!(-PbyXn{0bqY#1+4iUDiVg zqB)y3g~GJ8Y+OqgR<>qyg%#~&ER{vrm*`1t+QfTNIF$E43Qchn zl|-_+jl5OyafAa_Qd+m(r+P#PLqhi^8Sn$=Aso@W`u~P0U5i zjR2eOV;-Ygh(2VwAcYsI)R@8%t~MRTWznK4DSj#2qT07MEz^Qp&OV=Xy*7V6AC4wN z0A@^}_|IjNARg$-Cg^c#Q2+-HZ6i%}b9%T{q&QuxqNBEUsr)jkY>oA?C@^}p~oKJ4{X!ycudlLW*|TrzZ0g1>ibVGj{Rzy-a= zU85lm2NE3rp4B1a;0|9(5F~$JT9>@RFt%8MBZ!nLhKABUVB%9EU=LZsApvo_1ab0c z^P@M~ci(j5)buUr(p#se?!VUl^tD%CJ%0C=C$GK+ZScS@5sI>MILLcK8N?#q$LV=F zj@HaQB4rHZsVL!HKE!&wB0++p`1~Bt`}nXLQ4f3+HR7T?5DN9(sYrh}{UPILaX93Q z`lCJ{H_1tWcyLM)a;u2!O~F>;kw?W+d`nP%d-+NfzwyRfKX?8Evp3!}^T7F^vwN<& z`Z~1sy0Ou#ud_eXl|O>>3PBL!DQBG}s)(~H@8Ad5gaJSK{GXxCokhgh%)QBaGFcz4 zCK6S2CGtVy%XS~`L&<;YNG*}94p)=zUV4>0Lo6oF)R_j*rW4F6<~&EfoAqOX?%`2~ z3)ibRDq&gx^s+y&8g)`g-XS$qfjyKG%K&~6+}Lx|FcroPo4N986sx~O}|kI7L-$G?nOIL8VD zcJl<#om6txd!Y#ar;=t`x?V&YZSSAm2E7g(S-ox<(XU2v`XK zKGI8~EYJDHzn6bxB!`4s1kwJ2==Y2G4bg9388nQHVFX=|9Fe6?uO#!|@Z)&+{XkVo z_!UX+?5CmgA^my*fSibHqKy3Fc}DO#s7D?9i?n*ipxcGM<5$UZWWssF_0)E$FaU2s z&v227BPW3{?@A>cF@+&G0jiCwwb}-MT9RQAcZYSUk=%b-n~vitf(4jCsUM!)85y6R zh;SbC_oDD!5}7UxtS*;V?_4O$FUGbV+|g+4Xx6sGzvI`kk%{T?2#odKR3n*ejMY=A zy6v~7ENkjK>fn*=`5DT9WzNq619l=3jYc>xzAhCt;#ZMGy1cNHwmgtdU(s7{Za=)e zIoR{I{_}scv|MJ(7ChH&bF7i<{HidudaB?!uVymZ$gq~pYQrN-b95j11vv)$V3t|O zTmW;_ra~F2Pj(jDk=IPZZf{U%PDPH++t+Kl(YBhW=Ya}=1z?0+egmDJRhZ0kBBXHz z04whmS9tZb?}{^Ful@1F%3|yM7Ce2c6F>5_&cA<*M%v|#$?yA7@Lri$(y(uG!@1n> zEOk1+$_;0;!^^01?NLcfdygFPLUZ8iZdj9)coODjM>CsxUp&#I(|>qJqiEipUoiK2 z(otSS&t=;)?X2V2Pi2Othcb>s=f(?j^AYkI+3)C_6~Jz1>#}C)iBY3B&v_h-OVMbvO?StVU5{hGRHtDILc%)NH3f2@#F59P!PE~5 zafN>}ZUJ)}$3Ko2i=8)QQs7odL) zp2L7-o)kpXxd&ZDWgGTKsrz%U-|zjog6_m)670MFUF zS(O=d>YQipW)|+PYP2)cKZ{^mCiS|YP18aJFdftDyaKptH zuf3?;7+<|=x`uxInf~jpd(+_2%Xo5M%l359rVMR>1dWgBKZp)!!)v%&bQ3>T0!=GU1@N&%QUPY9UC@7)^ z-2UPvK&mIgZ~y(*_6Aic=oMhgT^-IB$xOEQx=!zfgJYF>C>B-=*`9yg`V#9YkiNMd zgk}gZ8G3qKp+^zvF1?d~_U#z6a;Qg@d4M9l%+lO3jtxr7p?5YgjC$JQQCpIo7Acq? zha(S2pO`M0Gm2cJlqC}t0?>`FdfgDHAhg&v1%P{Q+Ht%{O&~jqJ`ukn`lK6T<+#TN z&Sz>fP2XHIaR^0gW~YDGtR=VfZIQR_YR)ce?Aq3tnD`3BF%u2h_lBaEh(2iHm=rI^ z7Db=f(V`)AI21*FX3c)RbHuFGO!W7~fBo0ut#=(heAlge_Rw$_uiXIj4c*@bW*FX+ zQ5}_IrtQiX1WJ|{xvsBKp&6Czw$Yy`)m)Ymi(@bY7wqC)#fRdC)*c5Ldv9{6nsal4Cx4nCTM~(rPb5%_ zM}b&07QlQ@H6hS$9j9mru+_d-}#BU zlmjl|V@{oNG+OSYXnXTjn>JT7$70>qV*Tivv+Hyo*GBvLM*Gk=1Ic1CS+w)&QWkXT z+NCbpwJc+{0nJBk2h4Mg(b~m)(b4Wx(au@+j;()o)&cePW}DIiRNbo8c|n&Q5t8K= zbtK(Tn`N3iTAkZlJDT9*W0j3V9?AaYkrgY}@1JWoS{$dv86_@uN;8@{U-}0mT^-Vitnwf~`sxAjqrMSFUVq7`eQ{)tW9nOu( zRH@a4>T)tJS5tT8XJ_C;lS;x&bWWM-Z*zl#vx9?KBwez1_k)ebgS+>>vTyf;_4h?F+~D0#3Apq7;~FRdJxVi?A%y5~yfZ=vrT5L>EHo+EOUgn1VPO zT1vQC4ht)|wiXU_PzdmB;Y3PX-JG8u+*<#fo|e3NET1)`KvWxu_GOK1GFDujEXRL3 zm$VvN2dC$otF=@j>^rLKk=aJFJ(M4a*TqmIGX*RwQ1=8lzm(Q_N{92MM8@$4HsU>+K-LZpHQ2&`fQ5~-Pr zqbz|A1Yq|Kh==_+H-H-x*Z@wS>R+&+)J79(F!ylV8|!oYvP!ojN# zE|kj)2mgr+n>mld`a(I?li@ibo6&?oRUR4}@@ZkwgTAj$t>4qCY_XsPQRIa4MvbKA z^Z6woOuS!<$h_f8U@@4EhD9@%oNZ)6ye}M;lk@39f%S*|VM8Xf0}F?)I<%(0e+_sG z1FwftKCeC$$PSRawh)v8tUrIL^xSOba57n~M~p5W{TK2@5(7M%VJyea5Jgz6=OYIGr>$y~y? zSd01z2ZR`p@9W%<$Hsplf7C3xtrpFwANymurD!hZ$MXRrD*dP@bAB((qnb1Wrw-l_ z&?Ax-M{-C~Jb_ekC;kHJ>Hx@bG65Ja0}x`4!YLH?MQ&-fO9I zE_aqhDN?UZuti;jd1I2&7Z07@szC2(#zt67w z{30+<*}<`a($M;8^o-RmmD(1%K3$ticYYfw=M6j-A27p4xu8E&>+L)iE0;6)K(_Y* zpWp9$&6|iS=}K!bhh5vUMe=>}ZlGJ30<{lo6;TRJP^5~CE^2MHQP-xOVk)vDGosj~ zkc_^ay>N{-uycQVuWZ+h$?00ySDu)Tp1jB5z(A+O;WD*fL=M zHWK!iC#UP0Pq$we9f88!aE{W(zdQ8~)=O>&im?F{!Wt?KQCp5W+EI%Le&VR34UGmJ zkXp1j=UU%{3n=)a8$;HcBEmW4l=$TMlNasZxBH>PN+^FCSb6Z8k*z+R=QSUn>Z=<2 z)~(s=_v7zyYAEV6LOdVxMnl<)xNs<xYvY6SwaqR(rAQ8Lr z;hnoL9NRMy3`U5oOSr!rDMbY#J~i>_eFxQ0mIFpsi5LnIIQ4~4h7$l@WjLM-4bePK z&1YH2`5S-8q2_A_z+@-^a6yDMyPEvYu|1w;9%H`Dyv+O(@vvOMAcSnxY|MmNH) z773nKJa76OVEJys2fFXz|ASacezuozP zZ#WUqI4KuoFWeL`B6-=zhXQ-5L9Z3eTCwGQJ>u*IBXxNPW?4nPl(D2J2{ zeSK^t;MZWRbONDy@Ogb%JS|qOUP2k<;gil~2r>n3vlG1I-hY1m1oq&6x(62K z7W}Ku)A>eYMWd1T0Wb*$@d;J#EIPL*!0o)N^yp`iX8-#>Bobo(zfTbIAbRWsEx)31 zB`qHbF443%kjsEp^D<$8vn!b!>3ExUN7tZhb>Z|)%X7%F35N`GO=74C0rh_YX3%rk za_kIRg|I-0K8nq$01H#jr0JLG&6F3XtC|J%P8kT}_-fxBqA^RE>HSC|OeO5G_ z>VYMFY)tRZ>Dh&TUeWVWdnbRr!HYgHvMc>V8p6+CL%kW=T}HPp=w<5yMOM_yeN|9B zl7Ixsvq>O=ROA5SvOq@$v~e$tTQ=2vC?W{{zBO6R?2q70T3;dZwzq{dm6-jc9^=!h z!);2FgSoot(8kY_&yXp`V9LxrlrnPko7Jx6wga+wfT51naE_V?SVeydwJ4im@a@4q zC&SFS1_chg?^B3<(DwC^r$f&V=J{Hah z+um2H2Eviv>-%y%%L$$!Krj|on2RRRTPJqMRZT6%%syZqiff$E$zK@Z_)k(EDmK>CSSJpUAE6!+daR}lNZT4 zW|)~|=9!($Q5Y?3k)~_T-*AYcW+Rt$tp8!3Xal(DtUSa3pt*{|3EXr_!kYn~(1dq& zO+U_DBylba5Qj5uIM~zZ-VfmMElR&-Nn$dn`Tfd3rZ9golWX>bqdpH&WknB~P19rW zeG{4R{qcArwkZg+vfLwfrKJG6D;SjC z;j_|OG7|`g2^G0;Gxbs}?!AN4V^Ocq@T)zAC_Chr6{SY3(OjauT#ODz1^aJ9{LNCb zhEI1gF#&&_{DyXW@~_Y7#R)LoJB=sFy@Yin50lIS%;q8HYM9R^HG2f`2FJ~HfpmZ~ z=DKib+*}Jnlq!LIprmL?NT(^tvD#TmfRn1b4Oy@-ZZoIzgtJ=V@elF$2>Bi+PhlGP zEPdR-!d}diy@b1GH^#dOaa{XnyNMft=RHmV%%Oi@oR#=nr~!#QLVx#V79B(IuwN!< z4<`TYL@z=R##cd<;5`V&O~@Y7^?ues0?=xx0o5DWe&lozHxU2!CZ=Vu>n)y>_n9Wt z-_0U7?~JUA1Dvyx+OJWY;BnNY$m+1&oUa|^9J>w&o;4{hqN+_yu}4^_)60adx{Hqh zWYT||T-wrAL#iTn8vxwoC`IT^7l`_?WB2YbSWagyI)j6HOXuGzvq+3712KW+)h;Jl z3W%Tf;!Nf3Tp{cavP7bt0l(>C1zsW~ z7S6r3GMmhlp*QHXoJr1B=DpC{mQ}-9?|5bA2bXw*LGM3}`4u(SS1V^#MIQfGUvPP* zKMuWxbLF^RgyDD(v4jMY)tS}P)kKguI;NASK0;2BTbMetANKVv%qN)VyY|11sLFr6 zs;fIf7{j5dfwO{`gHE78*B}Sh1b~F0I~aceEeRc{0dW`p)mv#70|A?sL=?Hvl>$Nl zCDz>a5@Rd}uskZ?48{xWxqyi{htq)dR(w=_Kq}{60rYrO#CXUsQa|xe!V46U^ zNd(POd`I@2zvW~5)zpxxPUkP;IB|b?yB5c6$XexzL@>`GpC`VvuPp%S;5*c=un1*_ z#;)M`o}K5%lam8L)gEd^gk__-0Z+&iQPgyDb3=<&j(&3Y{>gGQ;=$ry>sB>xjynb; z=9t+)l}x^hbW6)sJGYMkiJq5(1P}|_;gxlWqIHPX!rODydd%|2R|G7L3#@;RrGqM( ziG>xJH@IL_7JTahWKc{EU8WHMqxJ_pK9)mKt(X`U5gUv0n`<79Q-)L4vekivc){&g zy_J{!to;x79bDGlIXN5(3H`arNo`}Hk8rquGT}GliAw(fBHWeZS&8?sMm^*&Ts{^X z%&RCrnzhEVC_k1%=?W_6)x3X>2JFv|(BWz_$8AMP*ff4Af)+3myn`2DTtoTuiXLA& zA6OOja`7Omd%U8lP9r6i^sWhX?*=_bK0+oL73kf$vu^*Nb=}vX=gz%s>3)>L!IE%5 z9opEvyV=D>G=oyf5p&#xr*n_%KP3gUcw7r;0X>lb1{FzeKy#DHggJkf@7$RmGr`AK zf`4;By4zz_EYUvUXqnTVVznsTM0Hug?niD9*;F>c~DvkoYu!J0w2AOIiIT=YDd?;OOT(tfJa%xXF&0uA2ylN+7&Nzf@Gr zQ4^>}TLpTKip}7tq^R+`&R&Oo0*U1jK%p^?_lx0VDlGbWZW5?x4i#d=0~8;Jy&fFT zBVh16qfV)`TWVb72$zpxC`A4}(xZyG!GU`Dxmv92Y z^8`rjcX+tJm1G1%lfx>X!=ldfhJ;OC6@7B7fP7M9(D3@Kn9nDM`7D+UCqKull2?vd zvSd^a#>#`Hq?Ui8*~&X5>9~~F&|9>;^qd4wUR&gD%}<8D8VWrZnkd-s%}*-FL!lLV z6g_^6kN+wmU*&!FJwE<8A*=c;%dT0c+pokunUC{cEC4N=^hk&o$&;+a5iGj&;wf?$ zK|nhU!;W#T!ey1LqseoX6MytoCadjyw<+7zS!BCkXCi;sG+DNDJ3hv;5D3Yg2{{y! z@mJ*#7rcuV?XOd2AB~9YUE~gqOyFY^G+`etuLj+uw9K{~zj2yC@AK4hPV*(E#J|0H|x51D_QqlH+)Q;wCCqY!h*0OVeergvP= z{dkD~tWS8r%ew58bEvu&+DjKQU?M2h)~YYr%R7yqmY>ydnZ(R&IoGE}d*^$KMI#nB zfD`D6Si71-z{c$XY$SLTEjwAu$9xGAN)AreXR?D{Nkz!#OD6+XR)k!K5)KA z6)wEb1E8Nhyrq@RWz%nY@5AqXOFC1qKXBptwF8wy+j(B(`EC3B()MjaP}sJKAl`pF zv$s{Ltl1EyWY%0;K#DH3nu4xip|y;rtzYlB0X?{Z1~#DYt+4*y19T$0Zh`05^TM0TE!!_@@Il93HrLjBMY-r zRuM&@;VBPLSK{QP2m5u;R8S8@;6Hy(@1eyZH?s6Cv>SnjR+(Ps>nlv5NH<|uY=9jO zqv*0H6Z9$wO-U2Zfb*`_HIw8gW2tt&w7HaTr(%;kw-T;r%_Z+>H`es9WE<)*FQd)& zlbfG>^2&|L(zBHfV?jj;j%}zsTS{%zuK)z`?BtOxm58zB$mFvgmc8NGin}~M z6Ya7;R$sE~{15Uz zqB!>^E5KbcXRb@r?K^<7=fvr!asG$=kGxo@SIt*)RZ>MazGzmfCOCh%X189nYSr8; zW|h>?J73CGtGSnQHB=?R!R)tb?AuhQy%e%HRdP=FJDH_a2s!$MUz2-ayuPlL<*KtR z6wlGNpBP4>i1RZER-2H~daWV~iAV+7>)txz~O7xy?HPjY|J3TE6}yyXp(Iq=3- zuA5!mS0#(pzSXnqR-#4cW^-p3&T1ol$57-5Hx7(~oE{2QNJTu41WFyzBf6UpN!A-}?Ud zp+dX7YWmXYRpoy+DwO6*rMa~;mNm2Z$7S8%FVIJd=~&S35605PZ=mAb+PNYw&8(d% zIs5HK_BH3bE-KJaMW)S+GUqXCnTvr|FQd{`0TVb)`<_mRr!_)3E^>`#RkZ)EPJ@4@&;mPrZL0G>nGCum`P@kQ$flzp?+; z6B6vd^09)1)~K?5B`uHclvMyTtB|0|olnyC@Or=6`4kS!K#>|vK;MQUb#w<>1>3C8 zDe^KD>BH~8h5x}r^s5&AVmyo``?UuFD*arD`}~d_@gwZ}$pwrD<}Lwqw~X21+zWIK zs3`5(74(0SKaobs7Y8@fuUk|oizBqVBvQ)x&VW(mPaBy-%6W-F%Nk6e$CE}N77G~3 zcXkslN$E5}Pkkt)@A=pTK(`0tp{U15-qZ7cjy!X8|5MkXeQRbjS8OTne&m7+9@%~V zBYW`MjAW{uOxV8*Mq}w%6quEB;=jS$?%iJQ#h8Dvh~rnjOe{9$4TkXqc-&Q*~ zsja*H(c9OrzoQFZU7QmHXf?;Y$N5?dY+vk3gUH!;1PV>q>FuHbuWG_}FA4?_7aCA% zg3$)5t?uY3i>-Fiq+}rwg%w9Op$TTONreIP2@LiT4q~MNh_~yM=BuD~+R;fu+|VfL z2gD3D*{2eJEe$ihYsa$Lv9+6AueWDeskCeZbcu(`D-AXY1bV?2EzNzWq4;>N& znxv$jPKRicAcVt$=$8WKvKfCkmejP}nwE@(1Jld$e#tKi+VYjE0CbK&zic{ix5|S9e(HV<3WdIl4RijW5E!j#q*3iHc z=jg35N0D?ELycdXx@_^Xsev(+AJ3zw^W!E$*vVOu&aGdfKca z`^98`RrmIcv@%1bK*YBu%)WSmelaFZiCI*m7hd=QctO&haLnC*TDsw0NQZ-p%+uBvFb#+dV5(pTo<$&h z3e)Ms#8vk@YB}msegz0Z*X`bncSYFrri`wt0Xd#pF`^lxA06XL;moQ`Femb!zBzAm zn;!4T|3d-vc!YrQIYb!t1LQ+Wahym2<{hK^+A^&Y2 z`h2@PkoE^b4=J4H#!1>&OGZ38jgK-c?XsgF~nlP9DQ3&Rhk3@g)bHFrP1yWE%W zn_u{4fDXhX=yV{eM8}ByPMV}zko4F1<5EUEmuX)!vy|y|2o|Ok+BxZj;VQ9sol8O|T zA9wiId&tA&3MK^{OUu#soF;{msQaC?`sq)EJKrAbA`@QCE`4%`luOp^vWMnoiY0S2 zSC}f`9&l#tpI;oyB&(yfWaOcA-JxO{4qGFZWxJ07W&mj0if67dlTJW|>9wYN3R_Z!=4BkEh9_ zfD5-V`zV|-1^2r6X^{lqP3W3TIbwS};eMzp=Umfp4Q7_UMA5Zfb*a({y&PU7?#IrY z&&%PT(Cg8vKtB;mJffz5^aXsuq&{W!3^eM^a&^ihX~B#?ce&g!d$${daB8cgz6;QmqC~=<03Qfyu7Vsw#k~~0(#C(z%(i+pv%LlEI zP?+a^zI5)u*z9DrM}aC*#0U#2qUJWDWDRck^49TsEmu;)vd_wYx66mG99}k2?+XS+ zDnmo|`(l*r@ymCmG17@ zYf-V10VRYb(GmoxEdm7Y2icR8$N4JTP~~n2-1Ame)VfjF9+v zPa~d=J4c+!JmS{1jvr8Wn04 z$QEW6+80t6;23Hc?ioB8&>DUk&>Kt}up9IoiXKiLrXOA)G9ZQ_EFs_`oFm92E+tAO znkBR*6eh?gf+x@@S}3w9Tq%?(>MDpcD+(*#ELJT%E+{U1E|4!QFSq~zc${NkWME*3 zW7K94W&i;uAm#!>28RD&J_7(4HUYG=i%UcSf0F5U)HW2w=Z*-BYT=|VSXdSvU3t&S`yl02FG_sElc-~&3x$4@>__uluD2gAYc8V}yTHZep3 zh7=icjIe?+CRoK9_F+E`;2=K0A$*9B@G%bK6CA-&9K&&(z)5_HQ#g&!@Hx)l3!KF{ zf1Jk!e2K5{H41!#i@1b!T*d~j;9Go$tGI^ixPhCvh1G2egEOk|vbBmvt*naDD6uR;BlQ{&fmcmS zIuw<9cjrUyE%6z-v{J-fQkFhfvLYSB^~S^Y|5R|LC|$Hti#+D=(&(WVdDF?Jf8*;c zLI|04rnOfmXtMV%Ea`OFlo}_<sD~pJ$8*lfgLlGlp!e|~S z-q<#Gf|aBcYfKxV#lA$DdZkZY#F^D(Syj?S!fEdwvR$42SDDH>=T;Uo+F{X^Rs{D= hX`<%Ha__g}2+WffS(G$g$Z8pyt{e>B0w_WB;{b`~2uT0{ diff --git a/web/src/assets/iconfont/iconfont.woff2 b/web/src/assets/iconfont/iconfont.woff2 index a6df0ee8c0360ad8b6a3fb72f289f09e646827b9..906588c2f5ac1d27de06f38d88671691e531f21e 100644 GIT binary patch literal 17612 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 literal 16812 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 fZMbq&mNBJcx=f{<&Oc)cqH7LZ)2hwvby>$9 - - - + + +

消费账单

@@ -132,7 +138,7 @@ - 请打开手机{{ payName }}扫码支付 + 请打开手机扫码支付 @@ -146,7 +152,6 @@ import {onMounted, ref} from "vue" import {ElMessage} from "element-plus"; import {httpGet, httpPost} from "@/utils/http"; -import ItemList from "@/components/ItemList.vue"; import {InfoFilled, SuccessFilled} from "@element-plus/icons-vue"; import {checkSession, getSystemInfo} from "@/store/cache"; import UserProfile from "@/components/UserProfile.vue"; @@ -176,19 +181,16 @@ const text = ref("") const user = ref(null) const isLogin = ref(false) const router = useRouter() -const curPayProduct = ref(null) const activeOrderNo = ref("") const countDownRef = ref(null) const orderTimeout = ref(1800) const loading = ref(true) const orderPayInfoText = ref("") -const vipMonthPower = ref(0) -const powerPrice = ref(0) -const payWays = ref({}) +const payWays = ref([]) const amount = ref(0) -const payName = ref("支付宝") -const curPay = ref("alipay") // 当前支付方式 +const curPayProduct = ref(null) +const curPayWay = ref({pay_way: "", pay_type:""}) const vipInfoText = ref("") const store = useSharedStore() const profileKey = ref(0) @@ -215,8 +217,6 @@ onMounted(() => { if (res.data['order_pay_timeout'] > 0) { orderTimeout.value = res.data['order_pay_timeout'] } - vipMonthPower.value = res.data['vip_month_power'] - powerPrice.value = res.data['power_price'] vipInfoText.value = res.data['vip_info_text'] }).catch(e => { ElMessage.error("获取系统配置失败:" + e.message) @@ -231,22 +231,24 @@ onMounted(() => { // refresh payment qrcode const refreshPayCode = () => { - if (curPay.value === 'alipay') { - alipay(curPayProduct.value) - } else if (curPay.value === 'hupi') { - huPiPay(curPayProduct.value) - } else if (curPay.value === 'payjs') { - PayJs(curPayProduct.value) - } + genPayQrcode(curPayProduct.value, curPayWay.value) } -const genPayQrcode = () => { +const genPayQrcode = (product, payWay) => { + if (!isLogin.value) { + store.setShowLoginDialog(true) + return + } + loading.value = true text.value = "" + curPayProduct.value = product + curPayWay.value = payWay + amount.value = (product.price - product.discount).toFixed(2) httpPost("/api/payment/qrcode", { - pay_way: curPay.value, + pay_way: payWay.pay_way, + pay_type: payWay.pay_type, product_id: curPayProduct.value.id, - user_id: user.value.id }).then(res => { showPayDialog.value = true qrcode.value = res.data['image'] @@ -262,67 +264,6 @@ const genPayQrcode = () => { }) } -const alipay = (row) => { - payName.value = "支付宝" - curPay.value = "alipay" - amount.value = (row.price - row.discount).toFixed(2) - if (!isLogin.value) { - store.setShowLoginDialog(true) - return - } - - if (row) { - curPayProduct.value = row - } - genPayQrcode() -} - -// 虎皮椒支付 -const huPiPay = (row) => { - payName.value = payWays.value["hupi"]["name"] === "wechat" ? '微信' : '支付宝' - curPay.value = "hupi" - amount.value = (row.price - row.discount).toFixed(2) - if (!isLogin.value) { - store.setShowLoginDialog(true) - return - } - - if (row) { - curPayProduct.value = row - } - genPayQrcode() -} - -// PayJS 支付 -const PayJs = (row) => { - payName.value = '微信' - curPay.value = "payjs" - amount.value = (row.price - row.discount).toFixed(2) - if (!isLogin.value) { - store.setShowLoginDialog(true) - return - } - - if (row) { - curPayProduct.value = row - } - genPayQrcode() -} - -const wechatPay = (row) => { - payName.value = '微信' - curPay.value = "wechat" - amount.value = (row.price - row.discount).toFixed(2) - if (!isLogin.value) { - store.setShowLoginDialog(true) - return - } - - if (row) { - curPayProduct.value = row - } - genPayQrcode() -} const queryOrder = (orderNo) => { httpGet("/api/order/query", {order_no: orderNo}).then(res => { @@ -331,11 +272,7 @@ const queryOrder = (orderNo) => { queryOrder(orderNo) } else if (res.data.status === 2) { text.value = "支付成功,正在刷新页面" - if (curPay.value === "payjs") { - setTimeout(() => location.reload(), 3000) - } else { - setTimeout(() => location.reload(), 500) - } + setTimeout(() => location.reload(), 500) } else { // 如果当前订单没有过期,继续等待订单的下一个状态 if (activeOrderNo.value === orderNo) {