diff --git a/public/img/allow.png b/public/img/allow.png new file mode 100644 index 0000000..a856069 Binary files /dev/null and b/public/img/allow.png differ diff --git a/public/img/allow_bg.jpg b/public/img/allow_bg.jpg new file mode 100644 index 0000000..71cd988 Binary files /dev/null and b/public/img/allow_bg.jpg differ diff --git a/public/img/certificate.png b/public/img/certificate.png new file mode 100644 index 0000000..c0d2c05 Binary files /dev/null and b/public/img/certificate.png differ diff --git a/public/img/check.png b/public/img/check.png new file mode 100644 index 0000000..c2394df Binary files /dev/null and b/public/img/check.png differ diff --git a/public/img/co_icon.png b/public/img/co_icon.png new file mode 100644 index 0000000..0844c1a Binary files /dev/null and b/public/img/co_icon.png differ diff --git a/public/img/cv-i1.png b/public/img/cv-i1.png index 7526453..a507947 100644 Binary files a/public/img/cv-i1.png and b/public/img/cv-i1.png differ diff --git a/public/img/cv_bg.jpg b/public/img/cv_bg.jpg new file mode 100644 index 0000000..85071d0 Binary files /dev/null and b/public/img/cv_bg.jpg differ diff --git a/public/img/down-one.png b/public/img/down-one.png new file mode 100644 index 0000000..809c09f Binary files /dev/null and b/public/img/down-one.png differ diff --git a/public/img/ft_i1.png b/public/img/ft_i1.png new file mode 100644 index 0000000..ad2feb4 Binary files /dev/null and b/public/img/ft_i1.png differ diff --git a/public/img/ft_i2.png b/public/img/ft_i2.png new file mode 100644 index 0000000..a1cf4c7 Binary files /dev/null and b/public/img/ft_i2.png differ diff --git a/public/img/ft_i3.png b/public/img/ft_i3.png new file mode 100644 index 0000000..79f89ff Binary files /dev/null and b/public/img/ft_i3.png differ diff --git a/public/img/invite_bg.jpg b/public/img/invite_bg.jpg index 7aae233..e9d3e5c 100644 Binary files a/public/img/invite_bg.jpg and b/public/img/invite_bg.jpg differ diff --git a/public/img/logo.png b/public/img/logo.png new file mode 100644 index 0000000..f490469 Binary files /dev/null and b/public/img/logo.png differ diff --git a/public/img/merchant_bg.jpg b/public/img/merchant_bg.jpg new file mode 100644 index 0000000..218d6a1 Binary files /dev/null and b/public/img/merchant_bg.jpg differ diff --git a/public/img/paycode.jpg b/public/img/paycode.jpg new file mode 100644 index 0000000..0ca3cf3 Binary files /dev/null and b/public/img/paycode.jpg differ diff --git a/public/img/point_bg.jpg b/public/img/point_bg.jpg new file mode 100644 index 0000000..30ea38d Binary files /dev/null and b/public/img/point_bg.jpg differ diff --git a/public/img/team-i1.png b/public/img/team-i1.png index 27f9975..5431a57 100644 Binary files a/public/img/team-i1.png and b/public/img/team-i1.png differ diff --git a/src/components/AddressSelector.vue b/src/components/AddressSelector.vue index 4a6b233..005bad7 100644 --- a/src/components/AddressSelector.vue +++ b/src/components/AddressSelector.vue @@ -49,7 +49,8 @@ @@ -61,7 +62,7 @@ - + @@ -174,6 +175,10 @@ export default { overflow-y: auto; } +.van-switch--on { + background: #ca2904; +} + .address-item { padding: 1.067vw 0; } diff --git a/src/components/ManagerPopup.vue b/src/components/ManagerPopup.vue index a2e48a1..18b9673 100644 --- a/src/components/ManagerPopup.vue +++ b/src/components/ManagerPopup.vue @@ -2,7 +2,7 @@
-
+
个人管理中心 @@ -10,13 +10,13 @@
- 商家中心 + 商家管理中心
- 运营中心 + 运营管理中心
@@ -41,37 +41,11 @@
-
- - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/router.js b/src/router.js index a3f3b4a..a38283d 100644 --- a/src/router.js +++ b/src/router.js @@ -62,20 +62,36 @@ const routes = [ title: '余额', } }, - { - path: '/Voucher', - name: 'Voucher', - component: () => import('./views/User/Voucher.vue'), - meta: { - title: '消费券', - } - }, { path: '/CV', name: 'CV', component: () => import('./views/User/CV.vue'), meta: { - title: '贡献值', + title: '会员卡额度', + } + }, + { + path: '/Point', + name: 'Point', + component: () => import('./views/User/Point.vue'), + meta: { + title: '积分', + } + }, + { + path: '/Allow', + name: 'Allow', + component: () => import('./views/User/Allow.vue'), + meta: { + title: '业绩统计', + } + }, + { + path: '/Certificate', + name: 'Certificate', + component: () => import('./views/User/Certificate.vue'), + meta: { + title: '礼品券', } }, { diff --git a/src/styles/ch.less b/src/styles/ch.less index 66975c6..fcc4f98 100644 --- a/src/styles/ch.less +++ b/src/styles/ch.less @@ -2510,9 +2510,12 @@ .b_l_w; .f5; padding: 4vw 3.33vw; + background: url(/img/merchant_bg.jpg) no-repeat; + background-size: 100% auto; .shopinfo { .box; + position: relative; .tx { width: 16vw; @@ -2539,62 +2542,88 @@ } .service-box { - height: 6.4vw; - background-color: #2db57c; - border-radius: 3.2vw; - .bs; - .box; - .box-align-center; + margin-left: auto; + display: flex; + flex-wrap: nowrap; + align-items: center; + position: absolute; + color: #fff; + font-size: 3.47vw; + font-weight: bold; + right: -4vw; + top: 8vw; + height: 6.67vw; + background-color: #fc6a39; + border-radius: 3.33vw 0vw 0vw 3.33vw; + padding: 0 2.8vw; white-space: nowrap; - padding: 0 1.33vw; - - .icon { - height: 4.67vw; - margin-right: 1.2vw; - } } } .wallet { padding: 4.133vw 2.667vw; - background-color: #3dcd91; - border-radius: 2.667vw; + background-color: #ffffff; + border-radius: 1.6vw; position: relative; margin-top: 4vw; - &::after { - content: ''; - width: 12.67vw; - height: 14.27vw; - position: absolute; - top: 0; - right: 3.73vw; - z-index: 0; - background: url(/img/money.png)no-repeat; - background-size: 100% 100%; + .tit { + span { + color: #1b1b1b; + } + + .line { + .box; + .box-align-center; + margin-top: 4.53vw; + + >div { + margin-left: 6.67vw; + .box; + .box-align-center; + height: 6.13vw; + padding: 0 1.47vw; + border-radius: 1.07vw; + border: solid 0.13vw #222222; + color: #1b1b1b; + + p { + font-weight: bold; + } + } + + b { + font-size: 6.67vw; + color: #1b1b1b; + } + } } b { font-size: 4vw; - .bs; } .cc { .box; position: relative; z-index: 1; - background-color: #ffffff; - border-radius: 1.333vw; + background-color: #f5f5f5; + border-radius: 1.6vw; padding: 5.667vw 3.33vw; margin-top: 3.33vw; >div { .box; .box-tb; + .box-align-center; width: 50%; color: #222222; } + >div:first-child { + border-right: 1px solid #8a8a8a80; + } + span { display: block; margin-bottom: 2vw; @@ -2607,6 +2636,53 @@ } } + .fastTo { + .box; + .box-align-center; + .box-pack-between; + margin-top: 4vw; + + >div { + .box; + width: 29.33vw; + height: 18.67vw; + border-radius: 1.6vw; + position: relative; + padding: 4vw 2.2vw; + font-size: 3.73vw; + font-weight: bold; + line-height: 4.44vw; + color: #1b1b1b; + + img { + width: 11.6vw; + position: absolute; + bottom: 0; + right: 0; + } + } + + .ft1 { + background-color: #f5f8ff; + border: solid 0.27vw #9ab0f9; + } + + .ft2 { + background-color: #fff8f6; + border: solid 0.27vw #f9b49d; + } + + .ft3 { + background-color: #fff8ef; + border: solid 0.27vw #f6c88a; + + img { + bottom: 1.2vw; + right: 1.2vw; + } + } + } + .block { .box; .box-pack-between; @@ -4113,209 +4189,141 @@ } } -.voucher { - background: url(/img/voucher-bg.png) no-repeat; - background-size: 100% auto; - padding: 6.667vw 3.333vw; - .b_l_w; - .f5; +.balance { - >div { - .b_l_w; - } + .top { + .bs; + background-color: #374c6d; + padding: 8vw 4vw; - .t { - background-size: 100% 100% !important; - border-radius: 4vw; - position: relative; - margin-bottom: 4vw; - height: 49.2vw; + .line { + .box; + .box-align-center; + margin-bottom: 5vw; + + .num { + font-size: 8vw; + color: #ffffff; + } + } .tit { .box; .box-align-center; + font-size: 4.8vw; + color: #ffffff; + + .van-icon { + margin-left: 2.4vw; + } + } + + .co_box { + .r; + .box; + .box-align-center; span { - font-size: 4vw; - .box; - .box-align-center; + margin: 0 1.2vw; + } - i { - font-size: 4vw; - margin: .5vw 0 0 1vw; - } + img { + height: 4.27vw; } } - .c { + button { + padding: 0 4vw; + color: #333; + height: 8vw; + background-color: #ffffff; + border-radius: 4vw; + box-shadow: none; + } + + .pn { .box; .box-align-center; - .box-wrap; - font-size: 3.2vw; - position: relative; - background: url(/img/voucher-c.png) no-repeat; - background-size: 100% auto; - height: 50vw; - padding: 5vw 5.467vw 0; - padding-bottom: 4.53vw; - - - >div { - .b_l_w; - } - - .number { - font-size: 8vw; - .box; - .box-pack-between; - .box-align-center; - margin: 4vw 0 0; - color: #d5a837; - - .a { - width: 26.667vw; - height: 8vw; - line-height: 8vw; - border-radius: 4vw; - .center; - background-color: #f3c947; - font-size: 4.267vw; - color: #141414; - margin-left: auto; - } - - .van-button { - width: 24vw; - .b; - font-size: 3.733vw; - margin-left: 3vw; - } - } - - .total { - margin: 4vw 0 0; - line-height: 8vw; - .box; - .box-pack-around; - .center; - font-size: 3.333vw; - color: #959595; - - p { - font-size: 4vw; - color: #252525; - .b; - } - } - + color: #b6c7e1; } } - .times { + .botom { + padding: 5.87vw 4vw; + background-color: #ffffff; + border-radius: 5.33vw 5.33vw 0vw 0vw; + margin-top: -10vw; + + .tabs { + margin-top: 4vw; + + .van-tab--card:last-child { + margin: 0; + } + + .van-tab--card { + border-right: none; + border-radius: 4vw; + background-color: #f6f6f6; + margin-right: 3vw; + gap: 3vw; + width: max-content; + font-size: 3.2vw; + } + + .van-tabs__nav--card { + border: none; + margin: 0; + } + } + } + + .date_box { .box; .box-align-center; - height: 12.8vw; - margin: 2vw 0 4vw; - background-color: #ffffff; - box-shadow: 0vw 0.67vw 1.11vw 0.09vw rgba(219, 255, 242, 0.08); - border-radius: 2.67vw; - position: relative; - z-index: 2; - &::after { - content: ''; - width: 86.4vw; - height: 10.4vw; - background-color: #ffffff; - opacity: 0.5; - border-radius: 2.67vw; - position: absolute; - bottom: -2vw; - left: 2.4vw; - z-index: -1; - } - - img { - width: 2.4vw; - height: 1.333vw; - margin-left: 1.2vw; - } - - ._t { + .date { .box; - .box-align-center; - height: 12.667vw; + .box-center-center; + height: 8vw; + background-color: #f6f6f6; + border-radius: 4vw; + padding: 0 2.8vw; - p { - width: 1.333vw; - height: 4vw; - border-radius: 0.667vw; - margin-right: 1.867vw; + img { + height: 1.2vw; + margin-left: 1.2vw; } + } - b { - font-size: 3.867vw; - } + .count { + .r; + .box; + gap: 12vw; + line-height: 4.67vw; - a { - .r; - .b; + >div { .box; + .box-tb; .box-align-center; } } - - ._m { - .box; - .box-align-center; - .box-pack-between; - width: 100%; - padding-right: 3.33vw; - - .l { - .box; - .box-align-center; - .box-pack-center; - width: 28vw; - height: 8vw; - .b_k; - border-radius: 4vw; - font-size: 3.33vw; - color: #474747; - - span { - .box; - .box-tb; - .box-align-center; - } - } - - .right { - .box; - .center; - - p { - margin-left: 10vw; - line-height: 4.5vw; - } - } - } - } - ._m_list { - background-color: #ffffff; - border-radius: 2.67vw; + ._m_ { + margin-top: 4vw; .list { .b_l_w; .b_k; - // margin-bottom: 4vw; + margin-bottom: 4vw; + border-bottom: 1px solid #f5f5f580; padding: 3.333vw; .box; .box-tb; + background-color: #f6f6f6; + border-radius: 1.6vw; border-radius: 2vw; - border-bottom: 1px solid #f5f5f580; >div { .b_l_w; @@ -4449,94 +4457,205 @@ } .cv { - .b_l_w; .f5; + padding: 8vw 4vw; - >div { - .b_l_w; - } + .card { + .box; + .box-tb; + .box-pack-between; + background-color: #fbf0f0; + border-radius: 2.67vw; + overflow: hidden; + border: solid 1.33vw #ffffff; + padding: 5.07vw 2.67vw; + // height: 34.67vw; + width: 100%; + position: relative; + z-index: 1; - .top { - background: url(/img/cv-t.png) no-repeat; - background-size: 100% auto; - padding: 9.07vw 6.67vw; - height: 58.13vw; - .bs; + &::after { + content: ''; + right: 0; + bottom: 0; + z-index: -1; + position: absolute; + width: 26vw; + height: 23.33vw; + background: url(/img/cv-i1.png) no-repeat; + background-size: 100% auto; + } - .line { + .t { .box; .box-align-center; - .title { - font-size: 4.67vw; - font-weight: bold; - } - - .explain { - .r; + .u_info { + margin-left: 3.6vw; + height: 10.4vw; .box; - .box-center-center; - padding: 0 1.2vw; - height: 5.33vw; - border-radius: 2.67vw; - border: solid 0.27vw #ffffff; + .box-tb; + .box-pack-around; - img { - width: 3.33vw; - height: 3.33vw; - margin-right: 1.2vw; + b { + font-size: 3.47vw; + color: #222; + } + + span { + color: #999999; } } - } - b { - display: block; - font-size: 8.67vw; - margin-top: 10vw; - } - } - - .container { - background: #f5f5f5; - padding: 0 3.33vw - } - - .inf_box { - .box; - .box-tb; - padding: 3.73vw 3.07vw; - background-color: #ffffff; - border-radius: 2.67vw; - margin-top: -6.67vw; - - .title { - font-size: 4vw; - font-weight: bold; - color: #000000; - margin-bottom: 4vw; - } - - .list { - - >div:last-child { - border: none; + .record { + color: #841e36; } + } - >div { + .db { + .box; + .box-align-center; + padding-left: 12.4vw; + margin-top: 5.2vw; + + .left { .box; - .box-align-center; - padding: 3.33vw 1.2vw; - border-bottom: 1px solid #f5f5f580; + .box-tb; + .box-align-start; - img { - width: 4.27vw; - margin-right: 2.53vw; + span { + color: #999999; } b { - .r; + margin-top: 1.73vw; + display: block; + font-size: 4.8vw; + line-height: 3.2vw; + color: #222222; } } + + button { + .r; + height: 6.67vw; + border-radius: 3.33vw; + border: solid 0.27vw #841e36; + padding: 0 2.4vw; + background: transparent; + color: #841e36; + } + } + } + + .list_box { + background-color: #ffffff; + border-radius: 2.67vw 2.67vw 1.07vw 1.07vw; + margin-top: 4vw; + padding: 6vw 2.67vw; + height: 100%; + + .date_box { + .box; + .box-align-center; + + .date { + .box; + .box-center-center; + height: 8vw; + background-color: #fbf0f0; + border-radius: 4vw; + padding: 0 2.8vw; + color: #841e36; + + img { + height: 1.2vw; + margin-left: 1.2vw; + } + } + + .count { + .r; + .box; + gap: 12vw; + line-height: 4.67vw; + + >div { + .box; + .box-tb; + .box-align-center; + } + } + } + + .list { + margin-top: 4vw; + + .item { + .box; + .box-tb; + padding: 3.07vw 2.67vw; + background-color: #f6f6f6; + border-radius: 1.6vw; + margin-bottom: 4vw; + + span { + font-size: 3.2vw; + font-weight: normal; + font-stretch: normal; + line-height: 4.67vw; + letter-spacing: 0vw; + color: #999999; + } + + .t { + .box; + .box-align-center; + margin-bottom: 1.2vw; + + span { + .bs; + } + + .tit { + font-size: 3.47vw; + color: #333333; + } + + .in { + .box; + .box-center-center; + .bs; + height: 4.8vw; + background-color: #269f3d; + border-radius: 0.53vw; + padding: 0 2.4vw; + } + + .out { + .box; + .box-center-center; + .bs; + height: 4.8vw; + background-color: #d13c25; + border-radius: 0.53vw; + padding: 0 2.4vw; + } + } + } + } + } +} + +.point { + .top { + background: url(/img/point_bg.jpg) no-repeat; + background-size: 100% auto; + + .line { + .pn { + color: #e8b5b6; + } } } } @@ -4554,20 +4673,25 @@ .count { .box; .box-tb; - background-image: linear-gradient(0deg, - #156e3f 0%, - #52c087 100%); + background-color: #d1b792; border-radius: 2vw; padding: 3.33vw; + .num { + font-size: 6.67vw; + line-height: 6.4vw; + color: #222222; + } + .top { .box; .box-align-center; + color: #222222; .left { .box; - .box-tb; - .bs; + // .box-tb; + // .bs; b { font-size: 3.73vw; @@ -4586,9 +4710,10 @@ height: 8vw; line-height: 8vw; .b_k; + .bs; + background-color: #1b1b1b; border-radius: 4vw; padding: 0 3.33vw; - color: #2c8d5a; font-size: 4vw; img { @@ -4654,10 +4779,12 @@ .user_box { .box; .box-align-center; + width: 100%; margin-bottom: 4vw; background-color: #ffffff; border-radius: 2vw; padding: 3.33vw; + padding-bottom: 0; .icon { width: 12vw; @@ -4669,11 +4796,13 @@ .info { .box; .box-tb; + width: 100%; >div { .box; .box-align-center; - margin-bottom: 2.53vw; + margin-bottom: 3.33vw; + width: 100%; b { font-size: 4vw; @@ -4712,4 +4841,138 @@ } } } +} + +.allow { + + .top { + background: url(/img/allow_bg.jpg); + background-size: 100% auto; + // height: 35vw; + padding: 12vw 4vw; + + .tit { + .box; + .box-align-center; + font-size: 4.8vw; + color: #222222; + + span { + display: block; + margin-right: 1.2vw; + } + } + + b { + display: block; + font-size: 8vw; + color: #222222; + margin-top: 5.47vw; + } + } + + .content { + background-color: #ffffff; + border-radius: 5.33vw 5.33vw 0vw 0vw; + margin-top: -4vw; + padding: 4vw; + + .t { + font-size: 4vw; + font-weight: bold; + color: #333333; + } + + .list { + .box; + .box-tb; + margin-top: 3.33vw; + + .item { + .box; + .box-align-center; + // height: 10vw; + padding: 4vw 0; + border-bottom: 1px solid #f5f5f580; + + img { + width: 4.53vw; + height: 4.27vw; + margin-right: 4vw; + } + + span { + font-size: 3.47vw; + color: #333333; + } + } + } + } +} + +.certificate { + .f5; + + .van-tabs__line { + bottom: 5.5vw; + } + + .list { + margin-top: 4vw; + padding: 0 4vw; + + .item { + .box; + .box-align-center; + margin-bottom: 4vw; + + img { + width: 26.67vw; + height: 26.67vw; + } + + .info { + .box; + .box-align-center; + height: 26.67vw; + background-color: #ffffff; + border-radius: 1.6vw; + width: 100%; + padding: 5.2vw 0; + position: relative; + + >div { + margin-left: 5.2vw; + + b { + font-size: 4.8vw; + color: #010101; + } + + p { + color: #333333; + margin-top: 5.2vw; + } + } + + img { + width: 11.6vw; + height: 10.27vw; + position: absolute; + right: 2.4vw; + } + + button { + position: absolute; + right: 2.4vw; + width: 18.67vw; + height: 6.67vw; + background-color: #ea3e23; + border-radius: 1.6vw; + border: none; + .bs; + } + } + } + } } \ No newline at end of file diff --git a/src/styles/public.less b/src/styles/public.less index a674add..9f5d9d6 100644 --- a/src/styles/public.less +++ b/src/styles/public.less @@ -1098,8 +1098,11 @@ img { } button { + position: fixed; + bottom: 4vw; + border: none; - width: 100%; + width: 86%; .bs; font-size: 4.53vw; height: 10.67vw; @@ -1375,6 +1378,7 @@ img { .box-pack-between; font-size: 3.47vw; color: #303030; + width: 100%; b { .text-hide(1); @@ -2163,6 +2167,7 @@ img { .box-align-center; .box-pack-between; margin-top: 4vw; + white-space: nowrap; >div { .box; @@ -2304,20 +2309,29 @@ img { margin-bottom: 3.2vw; } + .active { + background-color: #ca2904; + .bs; + } + + .inactive { + border: 1px solid #ca2904; + color: #000; + } + .spec_de { height: 8vw; - background-color: #ca2904; border-radius: 1.07vw; padding: 0 4vw; width: max-content; margin-right: 2.4vw; .box; .box-center-center; - .bs; } .buynums { - .box; + display: flex; + width: 100%; .title { margin-bottom: 0; diff --git a/src/views/Account/Login.vue b/src/views/Account/Login.vue index 57b9482..9ec553d 100644 --- a/src/views/Account/Login.vue +++ b/src/views/Account/Login.vue @@ -324,6 +324,15 @@ export default { }, mounted() { this.init() + // 解析邀请链接参数 + const params = new URLSearchParams(location.hash.split('?')[1] || ''); + const inviteCode = params.get('invite'); + if (inviteCode) { + this.formData.Recommend = inviteCode; + localStorage.setItem('recommend', inviteCode); + // 有邀请码时自动切换到注册模式 + this.isReg = true; + } }, beforeUnmount() { if (this.countdown.timer) { diff --git a/src/views/Goods/NGoodsDetail.vue b/src/views/Goods/NGoodsDetail.vue index 44d13f0..6e8e487 100644 --- a/src/views/Goods/NGoodsDetail.vue +++ b/src/views/Goods/NGoodsDetail.vue @@ -16,8 +16,6 @@ - -
¥{{ data.saleprice?.toFixed(2) }} @@ -60,9 +58,9 @@
-
+
- 请选择规格分类 + {{ selectedSku }}
@@ -71,17 +69,15 @@ 产品详情
-
- -
+
- - - + + + @@ -89,40 +85,40 @@
- +
-
¥
-
剩余:
-
已选:
+
¥{{ (tempSku.saleprice * tempSku.Qty).toFixed(2) }}
+
剩余:{{ tempSku.saleleft }}
+
已选:{{ tempSku.skuname }}
-
+
- 基本规格 + {{ spec.name }}
-
- 瓶 +
+ {{ child.name }}
-
- 瓶 -
-
- -
- - 购买数量 - - - -
+
+ + 购买数量 + + + + +
+ - +
@@ -133,19 +129,28 @@ \ No newline at end of file diff --git a/src/views/Merchant/Merchant.vue b/src/views/Merchant/Merchant.vue index b86a5dd..c4bfa4d 100644 --- a/src/views/Merchant/Merchant.vue +++ b/src/views/Merchant/Merchant.vue @@ -8,41 +8,52 @@

账号:{{ data.MerchantPhone }}

-
- - 专属顾问 +
+ 管理中心 +
- - 我的钱包 - +
+ 营业收入(元) + +
+ + 1020.00 + +
+ 提现中金额 + +

¥1000.00

+
+
+
-
+
- 当前营业收入 + 可用余额 {{ data.Income?.toFixed(2) }}
-
+
- 消费券累计 + 会员卡额度 {{ data.Point?.toFixed(2) }}
-
- +
订单记录 @@ -58,6 +69,23 @@
+
--> + +
+
+ 收款码 + +
+ +
+ 订单记录 + +
+ +
+ 商家资料 + +
@@ -81,7 +109,7 @@
- 今日抵扣积分 + 今日应收(元) {{ data.TodayDeduct?.toFixed(2) }}

昨日{{ data.YesterdayDeduct?.toFixed(2) }}

@@ -97,36 +125,58 @@
- 本月收入(元) + 今日惠利金额(元) {{ data.MonthIncome?.toFixed(2) }} -

上月{{ data.PrevMonthIncome?.toFixed(2) }}

+

昨日{{ data.PrevMonthIncome?.toFixed(2) }}

- -
+ + +
+
+ +
+ +
+
+ {{ data.MerchantName }} +
+
+ +
+
+
+ 收款码 +
+
+
+ + \ No newline at end of file diff --git a/src/views/Trade/TradeConfirm.vue b/src/views/Trade/TradeConfirm.vue index 46ec874..8af6cb2 100644 --- a/src/views/Trade/TradeConfirm.vue +++ b/src/views/Trade/TradeConfirm.vue @@ -4,7 +4,7 @@
- +

{{ address.ReceiveName }} {{ address.ReceivePhone }} @@ -41,7 +41,7 @@

商品金额 {{ ((product.saleprice || 0) * (product.buynums || 1))?.toFixed(2) - }} + }}
@@ -142,18 +142,29 @@ export default { }, methods: { loadProduct() { - this.$get(`/v1/client/EProsClient/${this.$route.query.id}`).then(res => { + const id = this.$route.query.id; + const skuid = this.$route.query.skuid; + this.$get(`/v1/client/EProsClient/${id}`).then(res => { const data = res.data; - const skuid = this.$route.query.skuid; - const sku = (data.specCombinations || []).find(s => s.skuid == skuid); + // 从规格组合中找到匹配的SKU + let sku = null; + if (skuid && data.specCombinations) { + sku = data.specCombinations.find(s => String(s.skuid) === String(skuid)); + } + if (!sku && data.specCombinations?.length) { + sku = data.specCombinations[0]; + } this.product = { - ...data, - skuid: sku?.skuid, - skuname: sku?.skuname, - saleprice: sku?.saleprice, - originalprice: sku?.originalprice, + id: data.id, + name: data.name, img: sku?.img || data.img, - buynums: 1 + saleprice: sku?.saleprice || data.saleprice, + originalprice: sku?.originalprice || data.originalprice, + skuid: sku?.skuid, + skuname: sku?.skuname || '默认规格', + buynums: parseInt(this.$route.query.buynums) || 1, + typename: data.typename || '商品', + expressprice: data.expressprice || 0 }; }); }, diff --git a/src/views/User/Allow.vue b/src/views/User/Allow.vue new file mode 100644 index 0000000..2c0cb02 --- /dev/null +++ b/src/views/User/Allow.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/src/views/User/Balance.vue b/src/views/User/Balance.vue index 33e7c4c..2480a4b 100644 --- a/src/views/User/Balance.vue +++ b/src/views/User/Balance.vue @@ -1,6 +1,6 @@ \ No newline at end of file diff --git a/src/views/User/Invite.vue b/src/views/User/Invite.vue index ae7651e..507133c 100644 --- a/src/views/User/Invite.vue +++ b/src/views/User/Invite.vue @@ -5,11 +5,13 @@
- +
- +
{{ $substring(data.NickName, 0, 8) }} +

邀请你使用泰古润平台
+ 共赴葡园品鉴醇香

import { html2canvas, canvasToDataURL } from '@/utils/html2image'; +import { useUserStore } from '@/stores/user'; export default { name: 'Invite', @@ -34,30 +37,66 @@ export default { loading: true, data: { Icon: '', - Avatar: '/img/avatar.png', - NickName: '123123', + Avatar: '', + NickName: '', }, - link: '123', + link: '', + userStore: useUserStore(), }; }, mounted() { this.loading = false; - document.getElementById("invite_bg").onload = () => { - this.CreatePoster(".ewm_bg > div", "#sc_ewm"); - }; + this.init().then(() => { + // 等数据和二维码都准备好后再生成海报 + this.$nextTick(() => { + const img = document.getElementById("invite_bg"); + if (img.complete) { + this.CreatePoster(".ewm_bg > div", "#sc_ewm"); + } else { + img.onload = () => this.CreatePoster(".ewm_bg > div", "#sc_ewm"); + } + }); + }); }, methods: { + async init() { + try { + // 获取用户信息 + const userInfo = await this.$get('/v1/client/DUsersClient'); + if (userInfo?.data) { + this.data.Avatar = userInfo.data.userimg || ''; + this.data.NickName = userInfo.data.nickname || ''; + this.data.Icon = userInfo.data.Icon || ''; + } + // 生成包含邀请码的链接 + const inviteCode = userInfo?.data?.cellphone || ''; + this.link = `${location.origin}${location.pathname}#/Login?invite=${inviteCode}`; + } catch (err) { + console.error('获取用户信息失败:', err); + } + }, async CreatePoster(divID, targetID) { var shareContent = document.querySelector(divID); var width = shareContent.offsetWidth; var height = shareContent.offsetHeight; try { + // 等待头像图片加载完成 + const avatarImg = shareContent.querySelector('.icon'); + if (avatarImg && !avatarImg.complete) { + await new Promise((resolve, reject) => { + avatarImg.onload = resolve; + avatarImg.onerror = resolve; // 加载失败也继续 + setTimeout(resolve, 5000); // 超时也继续 + }); + } + var canvas = await html2canvas(shareContent, { scale: 2, width: width, height: height, useCORS: true, + allowTaint: false, }); var dataUrl = canvasToDataURL(canvas, "image/png", 1.0); var newImg = document.createElement("img"); @@ -88,38 +127,39 @@ export default { .name { position: absolute; - bottom: 78.067vw; + left: 20.27vw; + bottom: 25.6vw; line-height: 6vw; width: 100%; b { - font-size: 4.8vw; - color: #1d3437; + font-size: 3.47vw; + color: #3a0a05; } p { - color: #1d3437; font-size: 3.2vw; } } .icon { position: absolute; - width: 16.8vw; - height: 16.8vw; - left: 41.467vw; - bottom: 86.933vw; + width: 10.67vw; + height: 10.67vw; + left: 20.27vw; + bottom: 42vw; + border-radius: 50%; } .ewm_test { position: absolute; - left: 30vw; - bottom: 28.133vw; + left: 23.73vw; + bottom: 57.47vw; white-space: nowrap; img { - width: 39.333vw; - height: 39.333vw; + width: 52.53vw; + height: 52.53vw; } } } diff --git a/src/views/User/My.vue b/src/views/User/My.vue index 5dc2f4a..72ae551 100644 --- a/src/views/User/My.vue +++ b/src/views/User/My.vue @@ -32,7 +32,7 @@
-
+
余额 @@ -40,7 +40,7 @@ 1377.00
-
+
会员卡额度 @@ -48,7 +48,7 @@ 13777.00
-
+
积分 diff --git a/src/views/User/Point.vue b/src/views/User/Point.vue new file mode 100644 index 0000000..6013511 --- /dev/null +++ b/src/views/User/Point.vue @@ -0,0 +1,174 @@ + + diff --git a/src/views/User/Team.vue b/src/views/User/Team.vue index a8a025c..bcc58ca 100644 --- a/src/views/User/Team.vue +++ b/src/views/User/Team.vue @@ -7,9 +7,11 @@ 我的好友 - + +
@@ -19,8 +21,13 @@
-
- +
@@ -63,14 +70,16 @@ {{ total.allfriendcount }}
-
+
-->
- - - + + + + + @@ -85,25 +94,47 @@
- {{ item.username }} + {{ item.nickname }} {{ item.userlevelname }}
-
+

账号:{{ item.cellphone ? item.cellphone.substring(0, 3) + '****' + item.cellphone.substring(7) : '' }}

+
- {{ $formatGMT(item.addtime, 'yyyy-MM-dd HH:mm:ss') }} + +
+ {{ $formatGMT(item.addtime, 'yyyy-MM-dd HH:mm:ss') }} + + 商家信息 + + +
+ + +
+ + +
+ name + 账号: +
+
+
@@ -122,39 +153,11 @@ export default { data() { return { active: 0, + cansee: true, + show: false, data: [ - { - UserID: '10001', - NickName: '张三', - Avatar: '/img/mall_i1.png', - LevelName: 'VIP会员', - Phone: '13812345678', - CTime: '2026-04-15 10:30:00', - }, - { - UserID: '10002', - NickName: '李四', - Avatar: '/img/mall_i2.png', - LevelName: '银卡会员', - Phone: '13987654321', - CTime: '2026-04-10 14:20:00', - }, - { - UserID: '10003', - NickName: '王五', - Avatar: '/img/mall_i3.png', - LevelName: '普通会员', - Phone: '13611112222', - CTime: '2026-04-05 09:15:00', - }, ], total: { - TotalTreeQty: 3, - TotalTreeSeed: 12, - TotalTreeFruit: 580, - TotalCount: 3, - friendcount: 0, - allfriendcount: 0, }, title: this.$route.query.title || null, }; @@ -188,4 +191,32 @@ export default { .r10 { border-radius: 10px; } + +.merchantinfo { + display: flex; +} + +.merchantinfo img { + width: 12vw; + height: 12vw; + border-radius: 50%; +} + +.merchantinfo .inf { + display: flex; + flex-direction: column; + justify-content: space-between; + margin-left: 3.33vw; + height: 12vw; +} + +.merchantinfo .inf b { + font-size: 4vw; + color: #000000; +} + +.merchantinfo .inf span { + font-size: 3.67vw; + color: #333; +} diff --git a/src/views/User/Voucher.vue b/src/views/User/Voucher.vue deleted file mode 100644 index 57ab505..0000000 --- a/src/views/User/Voucher.vue +++ /dev/null @@ -1,258 +0,0 @@ - -