|
|
- <template>
-
- <view>
- <uv-popup ref="popup" mode="bottom" bgColor="none" >
- <view class="popup__view">
- <view class="flex header">
- <view class="title">支付订单</view>
- <button class="btn" @click="close">关闭</button>
- </view>
- <view class="main">
- <view class="section flex flex-column info">
- <view class="info-title">{{ orderData.title }}</view>
- <view class="flex info-amount">¥<text class="highlight">{{ orderData.amount }}</text></view>
- </view>
- <view class="section flex payment">
- <view class="flex">
- <image class="payment-icon" src="@/pages_order/static/order/icon-wx.png" mode="widthFix"></image>
- <view class="payment-text">微信</view>
- </view>
- <view>
- <uv-radio-group
- :value="1"
- shape="circle"
- size="36rpx"
- iconSize="36rpx"
- activeColor="#7451DE"
- >
- <uv-radio :name="1"></uv-radio>
- </uv-radio-group>
- </view>
- </view>
- <view class="section agreement">
- <uv-checkbox-group
- v-model="checkboxValue"
- shape="circle"
- >
- <uv-checkbox
- size="36rpx"
- icon-size="36rpx"
- activeColor="#7451DE"
- :name="1"
- ></uv-checkbox>
- </uv-checkbox-group>
- <view class="desc">
- 我已阅读并同意
- <!-- todo: 替换配置项key -->
- <text class="highlight" @click="$refs.modal.open('config_privacy', '应用内支付用户协议')">《应用内支付用户协议》</text>
- <!-- todo: 替换配置项key -->
- <text class="highlight" @click="$refs.modal.open('config_agreement', '支付与隐私的声明')">《支付与隐私的声明》</text>
- </view>
- </view>
- </view>
- <view class="flex footer">
- <button class="flex btn btn-cancel" @click="onCancel">暂不支付</button>
- <button class="flex btn btn-pay" @click="onPay">支付</button>
- </view>
- </view>
- </uv-popup>
-
- <agreementModal ref="modal" @confirm="onConfirmAgreement"></agreementModal>
-
- </view>
- </template>
-
- <script>
- export default {
- data() {
- return {
- orderData: {}
- }
- },
- methods: {
- open(data) {
-
- const {
- title,
- orderId,
- amount,
- } = data
-
- this.orderData = {
- title,
- orderId,
- amount,
- }
-
- this.$refs.popup.open()
-
- console.log('orderData', this.orderData)
- },
- close() {
- this.$refs.popup.close()
- },
- onCancel() {
- // todo: jump to order list page?
- this.close()
- },
- onConfirmAgreement(confirm) {
- if (confirm) {
- this.checkboxValue = [1]
- } else {
- this.checkboxValue = []
- }
- },
- onPay() {
- // todo: pay
-
- // todo: jump to order list page
- this.$emit('submitted')
- },
- },
- }
- </script>
-
- <style lang="scss" scoped>
-
- .popup__view {
- width: 100vw;
- display: flex;
- flex-direction: column;
- box-sizing: border-box;
- background: #FFFFFF;
- border-top-left-radius: 32rpx;
- border-top-right-radius: 32rpx;
- }
-
- .header {
- position: relative;
- width: 100%;
- padding: 24rpx 0;
- box-sizing: border-box;
- border-bottom: 2rpx solid #EEEEEE;
-
- .title {
- font-family: PingFang SC;
- font-weight: 500;
- font-size: 34rpx;
- line-height: 1.4;
- color: #181818;
- }
-
- .btn {
- font-family: PingFang SC;
- font-weight: 500;
- font-size: 32rpx;
- line-height: 1.4;
- color: #8B8B8B;
- position: absolute;
- top: 26rpx;
- left: 40rpx;
- }
-
- }
-
- .main {
- padding: 64rpx 40rpx;
- }
-
- .section {
- margin-top: 24rpx;
- }
-
- .info {
- row-gap: 8rpx;
-
- &-title {
- font-family: PingFang SC;
- font-weight: 400;
- font-size: 28rpx;
- line-height: 1.4;
- color: #000000;
- }
-
- &-amount {
- font-family: PingFang SC;
- font-weight: 500;
- font-size: 24rpx;
- line-height: 1.4;
- color: #7451DE;
-
- .highlight {
- font-size: 64rpx;
- margin-left: 8rpx;
- }
- }
- }
-
- .payment {
- justify-content: space-between;
- box-sizing: border-box;
- padding: 24rpx 32rpx;
- background: #FAFAFF;
- box-shadow: -4rpx -4rpx 20rpx 0 #FFFFFFC4,
- 4rpx 4rpx 20rpx 0 #AAAACC1F,
- 2rpx 2rpx 4rpx 0 #AAAACC40,
- -2rpx -2rpx 4rpx 0 #FFFFFF;
- border-radius: 32rpx;
-
- &-icon {
- width: 56rpx;
- height: auto;
- }
- &-text {
- margin-left: 16rpx;
- font-family: PingFang SC;
- font-weight: 400;
- font-size: 28rpx;
- line-height: 1.5;
- color: #252545;
- }
- }
-
- .agreement {
- margin-top: 24rpx;
- display: flex;
-
- .desc {
- font-family: PingFang SC;
- font-size: 24rpx;
- font-weight: 400;
- line-height: 1.4;
- color: #8B8B8B;
- }
-
- .highlight {
- color: $uni-color;
- }
- }
-
- .footer {
- width: 100%;
- // todo:check
- // height: 214rpx;
- padding: 32rpx 40rpx;
- box-sizing: border-box;
- border-top: 2rpx solid #F1F1F1;
- column-gap: 32rpx;
-
- .btn {
- flex: 1;
- font-family: PingFang SC;
- font-weight: 500;
- font-size: 36rpx;
- line-height: 1.4;
- border-radius: 41rpx;
-
- &-cancel {
- padding: 14rpx 0;
- color: #252545;
- border: 2rpx solid #252545;
- }
-
- &-pay {
- padding: 16rpx 0;
- color: #FFFFFF;
- background-image: linear-gradient(to right, #4B348F, #845CFA);
- }
- }
- }
-
- </style>
|