Files
aida_front/src/component/HomePage/renew.vue

802 lines
20 KiB
Vue
Raw Normal View History

2024-12-11 16:26:36 +08:00
<template>
<div class="renew" ref="renew"></div>
<a-modal
class="generalModel"
:get-container="() => $refs.renew"
v-model:visible="renewModel"
:footer="null"
2025-05-08 14:09:12 +08:00
width="130rem"
2024-12-11 16:26:36 +08:00
height="auto"
:maskClosable="false"
:centered="true"
:closable="false"
:mask="renewModelMask"
:keyboard="false"
:destroyOnClose="true"
:zIndex="1000"
>
<div class="generalModel_btn">
<div class="generalModel_closeIcon" @click.stop="cancelDsign()">
<!-- <i class="fi fi-rr-cross-small"></i> -->
<svg width="46" height="46" viewBox="0 0 46 46" fill="none" xmlns="http://www.w3.org/2000/svg">
2025-01-07 17:15:28 +08:00
<circle cx="23" cy="23" r="23" fill="white" fill-opacity="0.3"/>
<rect x="32.5063" y="12" width="3" height="29" rx="1.5" transform="rotate(45 32.5063 12)" fill="white"/>
<rect x="34.6274" y="32.5059" width="3" height="29" rx="1.5" transform="rotate(135 34.6274 32.5059)" fill="white"/>
</svg>
2024-12-11 16:26:36 +08:00
</div>
</div>
<div class="renewContent">
2025-05-08 14:09:12 +08:00
<div class="left">
<div class="title">Unlock the Pro Advantage</div>
<div class="content">
<div class="benefits">
<div>Benefits</div>
<div class="contrast">
<div>Free</div>
<div>PRO</div>
</div>
2024-12-11 16:26:36 +08:00
</div>
2025-05-08 14:09:12 +08:00
<div class="benefitsItem">
<div class="describe">
<div class="icon">
<img src="https://storage.googleapis.com/chatapp-website-assets/stars.webp" >
</div>
<div class="text">
<p class="title">GPT-4o - DeepSeek-R1 - Gemini Pro and more</p>
<p class="info">More accurate answers with multiple latest AI models</p>
</div>
</div>
<div class="contrast">
<div></div>
<div>×</div>
</div>
2024-12-11 16:26:36 +08:00
</div>
2025-05-08 14:09:12 +08:00
<div class="benefitsItem">
<div class="describe">
<div class="icon">
<img src="https://storage.googleapis.com/chatapp-website-assets/stars.webp" >
</div>
<div class="text">
<p class="title">GPT-4o - DeepSeek-R1 - Gemini Pro and more</p>
<p class="info">More accurate answers with multiple latest AI models</p>
</div>
2025-04-16 10:43:54 +08:00
</div>
2025-05-08 14:09:12 +08:00
<div class="contrast">
<div></div>
<div>×</div>
2025-04-16 10:43:54 +08:00
</div>
</div>
2025-05-08 14:09:12 +08:00
<div class="benefitsItem">
<div class="describe">
<div class="icon">
<img src="https://storage.googleapis.com/chatapp-website-assets/stars.webp" >
</div>
<div class="text">
<p class="title">GPT-4o - DeepSeek-R1 - Gemini Pro and more</p>
<p class="info">More accurate answers with multiple latest AI models</p>
</div>
</div>
<div class="contrast">
<div></div>
<div>×</div>
</div>
</div>
<div class="benefitsItem">
<div class="describe">
<div class="icon">
<img src="https://storage.googleapis.com/chatapp-website-assets/stars.webp" >
</div>
<div class="text">
<p class="title">GPT-4o - DeepSeek-R1 - Gemini Pro and more</p>
<p class="info">More accurate answers with multiple latest AI models</p>
</div>
</div>
<div class="contrast">
<div></div>
<div>×</div>
</div>
</div>
</div>
</div>
<div class="right">
<div class="title">
{{ $t('Renew.title') }}
</div>
<div class="info">Get started today for unlimited access!</div>
<div class="content">
<div class="productItem" :class="{active:item.price == current.price,sellWell:item.sellWell}" v-for="item in personage" :key="item.price" @click="setPromotionData(item)">
<div class="popular" v-show="item.sellWell">MOST POPULAR</div>
<div class="priceBox">
<div class="left">
<p class="productType">1 {{ item.type.label }}</p>
<p class="price">${{ item.price }}</p>
</div>
<div class="right">
<div class="promotion">
<div class="succeed" v-show="item.promotionData.error == 'true'">
{{item.promotionData.code}}
<i class="fi fi-sr-times-hexagon" @click="clearPromotionCode"></i>
</div>
<div class="input" @click.stop v-show="!item.promotionData.error || item.promotionData.error == 'false'">
<input type="text" :placeholder="$t('Renew.promotionCode')" v-model="item.promotionData.code">
<div style="cursor: pointer;" @click="examine(item)">{{ $t('Renew.use') }}</div>
</div>
<div class="error" v-show="item.promotionData.error == 'false'">{{item.promotionData.str}}</div>
</div>
<p class="discountsPrice" v-show="item.promotionData.price" style="text-align: center;">${{ item.promotionData.price }}</p>
</div>
</div>
</div>
</div>
<div class="payment">
<div class="allocation">
<div class="selectType">
<div class="text">{{ $t('Renew.Payment') }}:</div>
<label>
<input name="payment" type="radio" value="CreditCard" v-model="current.PaymentType" @change="setPaymentType('CreditCard')">
{{ $t('Renew.CreditCard') }}
</label>
<label>
<input name="payment" type="radio" value="Alipay" v-model="current.PaymentType" @change="setPaymentType('Alipay')">
{{ $t('Renew.Alipay') }}
</label>
</div>
</div>
<div class="gallery_btn gallery_btn_radius" @click="payment">
Continue
2025-02-20 09:26:11 +08:00
</div>
<div class="payMethod_payAffirm_clause" ref="labelDisclaimer">
<label>
<input type="checkbox" v-model="clause">
<span class="generalModelDescription">{{ $t('upgradePlan.policy1') }}<a href="https://code-create.com.hk/aida-terms-and-conditions/" target="_blank">{{ $t('upgradePlan.policy2') }}</a>{{ $t('upgradePlan.policy3') }}<a href="https://code-create.com.hk/aida-subscription-agreement/" target="_blank">{{ $t('upgradePlan.policy4') }}</a>. *</span>
</label>
</div>
2025-05-08 14:09:12 +08:00
<!-- <div class="paySecure">
<svg data-v-4715f595="" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 17" class="shield-icon"><path fill="#4AA181" stroke="#4AA181" stroke-width=".395" d="M7.44.957 1.914 3.398a1.38 1.38 0 0 0-.822 1.256v3.69c0 1.648.443 3.257 1.218 4.667 1.577 2.154 3.835 3.222 5.986 3.222 2.152 0 4.206-1.069 5.387-3.21a9.7 9.7 0 0 0 1.225-4.679v-3.69a1.38 1.38 0 0 0-.822-1.256L8.56.957zm0 0h.001m-.001 0h.001m0 0c.351-.158.758-.159 1.119 0z"></path><g clip-path="url(#a)"><path stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.184" d="M10.634 6.563 7.016 10.18 5.37 8.536"></path></g><defs><clipPath id="a"><path fill="#fff" d="M4.055 4.586h7.895v7.895H4.055z"></path></clipPath></defs></svg>
<span>Pay safe & secure </span>
</div> -->
2024-12-11 16:26:36 +08:00
</div>
</div>
</div>
2025-02-20 09:26:11 +08:00
<div class="mark_loading" v-show="isShowMark_">
<a-spin size="large" />
</div>
<div class="mark_loading" v-show="isShowMark" state="true">
<div class="mark_loading_title">{{ $t('upgradePlan.completed') }}</div>
<div class="mark_loading_intro">{{ $t('upgradePlan.hint') }}</div>
<div class="mark_loading_title_box">
<div class="mark_loading_btn mark_loading_btn2" @click="setPaidBack">{{ $t('upgradePlan.Back') }}</div>
<div class="mark_loading_btn" @click="completePayment">OK</div>
</div>
</div>
2024-12-11 16:26:36 +08:00
</a-modal>
2024-12-27 14:38:21 +08:00
<payMethod ref="payMethod" @completePayment="cancelDsign" type="renew"></payMethod>
2024-12-11 16:26:36 +08:00
</template>
<script lang="ts">
2025-02-14 17:41:35 +08:00
import { defineComponent,computed,reactive,toRefs ,onMounted} from "vue";
2024-12-11 16:26:36 +08:00
import { message } from "ant-design-vue";
import payMethod from "@/component/Pay/payMethod.vue";
import { useStore } from "vuex";
2024-12-23 16:23:18 +08:00
import { useI18n } from "vue-i18n";
2025-02-20 09:26:11 +08:00
import { Https } from "@/tool/https";
2024-12-11 16:26:36 +08:00
const md5 = require("md5");
export default defineComponent({
components: {
payMethod,
},
setup(){
const store = useStore();
2024-12-23 16:23:18 +08:00
const {t} = useI18n()
2024-12-11 16:26:36 +08:00
let renew = reactive({
renewModel:false,
renewModelMask:true,
pageWidth:'50%'
})
2025-02-20 09:26:11 +08:00
let payMethodData = reactive({
clause:false,
2025-05-08 14:09:12 +08:00
labelDisclaimer:null as any,
2025-02-20 09:26:11 +08:00
newWindow:null as any,
isShowMark:false,
isShowMark_:false,
})
2024-12-11 16:26:36 +08:00
let renewData = reactive({
2025-05-08 14:09:12 +08:00
personage:[
{
price:'500',
sellWell:true,
activity:false,//活动打折
type:{
value:'Month',
label:'Month',
},
PaymentType:'',
promotionData:{
code:'',
error:'',
str:'',
price:'',
},
2025-02-14 17:41:35 +08:00
},
2025-05-08 14:09:12 +08:00
{
price:'5,000',
sellWell:false,
activity:false,//活动打折
typeValue:'year',
type:{
value:'Year',
label:'Year',
},
PaymentType:'',
promotionData:{
code:'',
error:'',
str:'',
price:'',
},
2025-02-14 17:41:35 +08:00
},
2025-05-08 14:09:12 +08:00
],
// personage:computed(()=>{
// return {
// title:t('Renew.PersonalVersion'),
// price:{
// monthly:'500',
// year:'5,000',
// },
// unit:{
// monthly:t('Renew.HKDMonth'),
// year:t('Renew.HKDYear'),
// },
// type:'monthly',
// PaymentType:'',
// typeList:['monthly','year'],
// info:'Tax, VAT not included.',
// }
// }),
2025-02-14 17:41:35 +08:00
firm:computed(()=>{
return {
title:'Education Edition',
price:{
year:'500',
},
unit:{
year:'HKD / Year',
},
type:'year',
2025-02-17 15:24:01 +08:00
autoRenewal:{
text:t('Renew.automatically'),
value:true,
},
2025-02-14 17:41:35 +08:00
typeList:['year'],
info:'Customised plan',
2025-05-08 14:09:12 +08:00
2025-02-14 17:41:35 +08:00
}
}),
education:computed(()=>{
return {
title:'Enterprise Edition',
2024-12-11 16:26:36 +08:00
price:{
year:'500',
},
unit:{
year:'HKD / Year',
},
type:'year',
2025-02-17 15:24:01 +08:00
autoRenewal:{
text:t('Renew.automatically'),
value:true,
2024-12-11 16:26:36 +08:00
},
typeList:['year'],
info:'Customised plan',
2025-02-14 17:41:35 +08:00
}
}),
2024-12-11 16:26:36 +08:00
current:{
} as any,
payMethod:null as any,
})
const init = ()=>{
renew.renewModel = true
2025-05-08 14:09:12 +08:00
renewData.current = renewData.personage[0]
2024-12-11 16:26:36 +08:00
}
const cancelDsign = () => {
renew.renewModel = false
}
2025-02-20 09:26:11 +08:00
const setPaymentType = (str:any)=>{
renewData.current.PaymentType = str
}
2024-12-11 16:26:36 +08:00
const payment = ()=>{
2025-02-20 09:26:11 +08:00
if(!payMethodData.clause){
let labelDisclaimer:any = payMethodData.labelDisclaimer
if(!labelDisclaimer.classList.contains('animation')){
labelDisclaimer.classList.add('animation')
setTimeout(() => {
labelDisclaimer.classList.remove('animation')
}, 1000);
}
return
}
if(!renewData.current.PaymentType)return message.info(t('Renew.PleaseSelectPayment'))
// let data = {
// autoRenewal:renewData.current.PaymentType != 'Alipay',//one_time为不自动续费
// productName:'Subscription',
// subscribeType,//yearly为年费monthly为月费
// }
let url = window.location.origin+'/paySucceed'
2024-12-11 16:26:36 +08:00
let data = {
2025-02-20 09:26:11 +08:00
autoRenewal:renewData.current.PaymentType != 'Alipay',//false为不自动续费
2024-12-11 16:26:36 +08:00
productName:'Subscription',
2025-02-20 09:26:11 +08:00
quantity:1,
returnUrl:url,
2025-05-08 14:09:12 +08:00
subscribeType:renewData.current.type.value,//yearly为年费monthly为月费
2025-02-20 09:26:11 +08:00
wallet:'ALIPAYHK',
2025-05-08 14:09:12 +08:00
promotionCode:renewData.current.promotionData.code,
2024-12-11 16:26:36 +08:00
}
2025-02-20 09:26:11 +08:00
let httpsUrl = Https.httpUrls.payStripe
payMethodData.isShowMark_ = true
Https.axiosPost(httpsUrl,data).then(
(rv: any) => {
var width = 800;
var height = 600;
var left = (screen.width - width) / 2;
var top = (screen.height - height) / 2;
payMethodData.newWindow = window.open("", "_blank", "width=" + width + ", height=" + height + ", left=" + left + ", top=" + top);
let herf = rv
if(payMethodData.newWindow){
payMethodData.newWindow.location.href = herf
}else{
// window.open(herf, '_blank');
window.location.href=herf;
}
payMethodData.newWindow = null
payMethodData.isShowMark = true
payMethodData.isShowMark_ = false
}
).catch(res=>{
payMethodData.isShowMark_ = false
});
// renewData.payMethod.init(data)
}
const setPaidBack = ()=>{
payMethod.payMethodModel = false
payMethodData.isShowMark = false
payMethodData.clause = false
}
const completePayment = ()=>{
renew.renewModel = false
setPaidBack()
2024-12-11 16:26:36 +08:00
}
2025-05-08 14:09:12 +08:00
const examine = (item:any)=>{
2025-04-16 10:43:54 +08:00
// renewData.promotionData.error
2025-05-08 14:09:12 +08:00
let price = item?.price
2025-04-16 10:43:54 +08:00
const normalNumber = Number(price.replace(/,/g, ''));
2025-05-08 14:09:12 +08:00
if(!item.promotionData.code){
2025-04-16 10:43:54 +08:00
return
}
let data = {
2025-05-08 14:09:12 +08:00
promotionCode:item.promotionData.code,
2025-04-16 10:43:54 +08:00
price:normalNumber,
}
Https.axiosGet(Https.httpUrls.checkCoupon,{params:data}).then((rv:any)=>{
if(rv){
2025-05-08 14:09:12 +08:00
renewData.personage.forEach((personageItem:any)=>{
if(personageItem.price == item.price){
if(rv.status == "valid"){
item.promotionData.error = 'true'
item.promotionData.price = (Number(rv.discountedPrice)).toLocaleString()
}else{
item.promotionData.error = 'false'
item.promotionData.str = rv.message
}
}
})
2025-04-16 10:43:54 +08:00
}else{
}
})
}
const clearPromotionCode = ()=>{
2025-05-08 14:09:12 +08:00
renewData.current.promotionData.error = '';
renewData.current.promotionData.code = ''
renewData.current.promotionData.price = ''
}
const setPromotionData = (item:any)=>{
renewData.current = item
2025-04-16 10:43:54 +08:00
}
2024-12-11 16:26:36 +08:00
return{
store,
...toRefs(renew),
...toRefs(renewData),
2025-02-20 09:26:11 +08:00
...toRefs(payMethodData),
2024-12-11 16:26:36 +08:00
init,
cancelDsign,
2025-02-20 09:26:11 +08:00
setPaymentType,
2024-12-11 16:26:36 +08:00
payment,
2025-02-20 09:26:11 +08:00
setPaidBack,
completePayment,
2025-04-16 10:43:54 +08:00
examine,
clearPromotionCode,
2025-05-08 14:09:12 +08:00
setPromotionData
2024-12-11 16:26:36 +08:00
}
},
data() {
return {
};
},
methods: {
turnToWindow(url:any) {
window.open(url);
},
},
});
</script>
<style lang="less" scoped>
.renew {
2025-05-08 14:09:12 +08:00
:deep(.ant-modal-body){
padding: 0;
}
2024-12-11 16:26:36 +08:00
.renewContent{
2025-05-08 14:09:12 +08:00
display: flex;
border-radius: 3rem;
overflow: hidden;
> .left,> .right{
> .title{
text-align: center;
font-size: 3.2rem;
font-weight: 600;
line-height: 4rem;
}
> .info{
text-align: center;
opacity: .6;
font-weight: 400;
margin-top: .8rem;
font-size: 1.6rem;
}
> .content{
margin-top: 2rem;
2024-12-11 16:26:36 +08:00
display: flex;
flex-direction: column;
}
2025-05-08 14:09:12 +08:00
}
> .left{
width: 60%;
background: #0f0f0f;
color: #fff;
padding: 4rem 3.2rem;
> .title{
opacity: .6;
}
> .content{
> .benefits,> .benefitsItem{
display: flex;
> .contrast{
margin-left: auto;
display: flex;
align-items: center;
> div{
width: 8rem;
text-align: center;
}
> div:nth-child(1){
margin-right: 2.4rem;
opacity: .5;
}
> div:nth-child(2){
opacity: 1;
color: #38c793;
text-shadow: 0 4px 27.1px #38c793b3;
}
}
2024-12-11 16:26:36 +08:00
}
2025-05-08 14:09:12 +08:00
> .benefits{
> div:nth-child(1){
opacity: .5;
}
font-weight: 600;
2024-12-11 16:26:36 +08:00
font-size: 2rem;
2025-05-08 14:09:12 +08:00
margin: 1rem 0;
padding: 0 1.6rem;
2024-12-11 16:26:36 +08:00
}
2025-05-08 14:09:12 +08:00
> .benefitsItem{
border: 1px solid #27272a;
border-radius: 2.4rem;
margin-bottom: 1.6rem;
padding: 1.6rem;
> .describe{
2025-04-16 10:43:54 +08:00
display: flex;
align-items: center;
2025-05-08 14:09:12 +08:00
> .icon{
border: 1px solid #27272a;
background: linear-gradient(#1d1d1d,#000);
border-radius: 1.4rem;
margin-right: 1.6rem;
padding: 1.4rem;
> img{
width: 3.5rem;
height: 3.5rem;
}
}
> .text{
> p{
margin: 0;
}
> .title{
font-size: 1.8rem;
font-weight: 600;
}
> .info{
font-weight: 400;
margin-top: .4rem;
font-size: 1.6rem;
opacity: .5;
}
2025-04-16 10:43:54 +08:00
}
}
2025-05-08 14:09:12 +08:00
}
}
}
> .right{
width: 40%;
flex-direction: column;
align-items: center;
padding: 4rem 3.2rem;
> .content{
margin-top: 2rem;
> .productItem{
margin-bottom: 1rem;
border-radius: 1rem;
overflow: hidden;
border: 2px solid #eaecf0;
> .popular{
background: #2d9f75;
font-weight: 600;
2025-04-16 10:43:54 +08:00
display: flex;
2025-05-08 14:09:12 +08:00
justify-content: center;
2025-04-16 10:43:54 +08:00
align-items: center;
2025-05-08 14:09:12 +08:00
color: #fff;
padding: .8rem 1.2rem;
}
> .priceBox{
height: 11rem;
padding: 1rem 1.2rem;
display: flex;
justify-content: space-between;
align-items: center;
> .left,> .right{
p{
margin: 0;
}
> .discountsPrice ,> .price{
font-size: 1.8rem;
margin-top: .4rem;
opacity: .4;
font-weight: 500;
}
}
> .left{
> p:nth-child(1){
font-size: 2rem;
opacity: .7;
font-weight: 700;
}
}
> .right{
> .promotion{
display: flex;
align-items: center;
flex-direction: column;
> .text{
font-size: 1.4rem;
font-weight: 600;
margin-right: 2rem;
}
> .succeed{
padding: 1rem;
display: flex;
align-items: center;
border-radius: 1rem;
background: #eee;
// color: #fff;
// font-weight: 600;
> i{
display: flex;
margin-left: 1rem;
cursor: pointer;
}
}
> .input{
display: flex;
align-items: center;
border-radius: 2rem;
border: 2px solid #000;
overflow: hidden;
padding: 0 1rem;
input{
border: none;
height: 3rem;
width: 10rem;
font-size: 1.2rem;
background: rgba(0, 0, 0, 0);
}
}
> .error{
color: red;
text-align: center;
font-size: 1.2rem;
}
}
> .discountsPrice{
font-weight: 600;
color: red;
}
2025-04-16 10:43:54 +08:00
}
}
2025-05-08 14:09:12 +08:00
&.active{
background: #0ea98233;
border: 2px solid #0ea982;
> .priceBox{
> .left{
> p:nth-child(1){
opacity: 1;
}
}
> .right{
> .discountsPrice{
opacity: 1;
}
}
}
}
&.sellWell{
border: 2px solid #0ea982;
2025-04-16 10:43:54 +08:00
}
}
2025-05-08 14:09:12 +08:00
> .productItem:last-child{
margin-bottom: 2rem;
2025-02-20 09:26:11 +08:00
}
2025-05-08 14:09:12 +08:00
}
> .payment{
margin-top: auto;
> .allocation{
// border-radius: 1rem;
// border: 2px solid #eaecf0;
// padding: 1rem 1.2rem;
> .selectType{
display: flex;
> .text{
font-size: 1.4rem;
font-weight: 600;
margin-right: 2rem;
}
label{
margin-right: 1rem;
display: flex;
cursor: pointer;
input{
margin-right: .5rem;
}
}
2024-12-11 16:26:36 +08:00
}
}
2025-05-08 14:09:12 +08:00
> .gallery_btn{
width: 100%;
margin: 2rem 0;
margin-top: 1rem;
}
> .payMethod_payAffirm_clause{
2025-02-20 09:26:11 +08:00
label{
input{
2025-05-08 14:09:12 +08:00
margin-right: 1rem;
cursor: pointer;
vertical-align: middle;
}
span{
vertical-align: top;
font-size: 1.4rem;
a{
color: #000;
text-decoration: underline;
}
2025-02-20 09:26:11 +08:00
}
}
2025-05-08 14:09:12 +08:00
&.animation{
animation: shake .3s linear;
@keyframes shake {
0%{
transform: translateX(0px);
}
25%{
transform: translateX(-10px);
}
50%{
transform: translateX(10px);
}
75%{
transform: translateX(-10px);
}
100%{
transform: translateX(0px);
}
}
2025-02-20 09:26:11 +08:00
}
}
2025-05-08 14:09:12 +08:00
// > .paySecure{
// display: flex;
// margin-top: 1rem;
// > svg{
// width: 1.6rem;
// height: 1.6rem;
// }
// > span{
// font-weight: 600;
// font-size: 1.4rem;
// }
// }
2025-02-20 09:26:11 +08:00
}
}
2025-05-08 14:09:12 +08:00
// .login_footer_item_text{
// text-align: center;
// margin-bottom: 1.5rem;
// text-decoration: underline;
// }
// .login_footer_item_text:last-child{
// margin-bottom: 0rem;
// }
2024-12-11 16:26:36 +08:00
}
2025-02-20 09:26:11 +08:00
.mark_loading{
position: absolute;
z-index: 2;
background: #fff;
2025-05-08 14:09:12 +08:00
border-radius: 3rem;
2025-02-20 09:26:11 +08:00
.mark_loading_title{
font-size: 3rem;
// text-decoration: underline;
font-weight: 600;
margin-bottom: 2rem;
2025-05-08 14:09:12 +08:00
overflow: hidden;
2025-02-20 09:26:11 +08:00
// color: #fff;
}
.mark_loading_intro{
color: rgba(0, 0, 0, 0.6);
font-size: 1.4rem;
margin-bottom: 2rem;
text-align: center;
width: 80%;
}
.mark_loading_title_box{
display: flex;
}
.mark_loading_btn,.mark_loading_btn2{
// border: #000;
// color: #fff;
display: flex;
margin-top: 10px;
text-align: center;
border: 2px solid;
padding: 0 20px;
border-radius: 10px;
cursor: pointer;
padding: .3rem 4rem;
background: #39215b;
color: #fff;
border: none;
margin: 0 2rem;
align-items: center;
}
.mark_loading_btn2{
border: 2px solid #000;
color: #000;
background: rgba(0,0,0,0);
}
}
2024-12-11 16:26:36 +08:00
}
</style>