detail preview可以设置空颜色

This commit is contained in:
X1627315083
2025-05-08 14:09:12 +08:00
parent a4e040d0ff
commit 610e715ca7
30 changed files with 1323 additions and 6496 deletions

View File

@@ -202,10 +202,10 @@ li {
background: #353535;
}
.gallery_btn {
padding: 0 1.8rem;
line-height: 6rem;
padding: 0 2rem;
line-height: 5.4rem;
border-radius: 4rem;
font-size: 1.8rem;
font-size: 1.6rem;
transition: all 0.3s;
display: inline-block;
color: #fff;
@@ -911,7 +911,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
padding: 0;
height: 100%;
font-size: 1.4rem;
padding: calc(5rem*1.2) calc(6rem*1.2);
padding: 6rem 7rem;
position: relative;
}
.generalModel .fi-rr-down-to-line,

View File

@@ -206,11 +206,11 @@ input:focus{
background: #353535;
}
.gallery_btn{
padding: 0 1.8rem;
line-height: 6rem;
padding: 0 2rem;
line-height: 5.4rem;
border-radius: 4rem;
// line-height: 6rem;
font-size: 1.8rem;
font-size: 1.6rem;
transition: all .3s;
display: inline-block;
color: #fff;
@@ -996,7 +996,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
padding: 0;
height: 100%;
font-size: 1.4rem;
padding: calc(5rem*1.2) calc(6rem*1.2);
padding: 6rem 7rem;
position: relative;
}

View File

@@ -41,6 +41,7 @@
<span>percentOff(%): <span>*</span></span>
<input
:class="{active:title != 'Add'}"
:disabled="title != 'Add'"
v-model="percentOff"
placeholder="Please enter percentOff"
type="text"
@@ -51,6 +52,7 @@
<span>Commission Rate: <span>*</span></span>
<input
:class="{active:title != 'Add'}"
:disabled="title != 'Add'"
v-model="commissionRate"
placeholder="Please enter commission rate"
type="text"
@@ -68,6 +70,7 @@
<span>MaxRedemptions:</span>
<input
:class="{active:title != 'Add'}"
:disabled="title != 'Add'"
v-model="maxRedemptions"
placeholder="Please enter maximum"
type="text"

File diff suppressed because it is too large Load Diff

View File

@@ -264,7 +264,7 @@ export default defineComponent({
let isCurrent = list[i].id == detailData?.selectDetail?.id
let data:any = {
changed:false,
color:(newData && detailData.currentDetailType == 'color' && isCurrent)?`${newData.rgba.r} ${newData.rgba.g} ${newData.rgba.b}`:`${list[i].color.rgba.r} ${list[i].color.rgba.g} ${list[i].color.rgba.b}`,
color:(detailData.currentDetailType == 'color' && isCurrent)?(newData?.rgba?`${newData.rgba.r} ${newData.rgba.g} ${newData.rgba.b}`:''):`${list[i].color.rgba.r} ${list[i].color.rgba.g} ${list[i].color.rgba.b}`,
designType:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.designType:list[i].designType,
id:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.id:list[i].id,
// maskMinioUrl:'',

View File

@@ -260,8 +260,8 @@ export default defineComponent({
const getSubmitData = (value:any)=>{
let parentNode = document.getElementsByClassName('molepositon')[0].getElementsByClassName("designOpenrtion_imgMask")[0].getBoundingClientRect()
let ratio = detailData.frontBack.body.layersObject[0].imageSize[0]/parentNode.width
let arr:any = sort(detailData.frontBack.front)
// let arr:any = sort(JSON.parse(JSON.stringify(detailData.frontBack.front)))
// let arr:any = sort(detailData.frontBack.front)
let arr:any = sort(JSON.parse(JSON.stringify(detailData.frontBack.front)))
let num = 10
arr.forEach((item:any)=>{
item.priority = num++

View File

@@ -32,7 +32,6 @@
<script lang="ts">
import { LoadingOutlined } from "@ant-design/icons-vue";
import { defineComponent,h ,toRefs,ref,reactive,onMounted,nextTick,provide,computed} from 'vue'
// import HeaderComponent from "@/component/HomePage/Header.vue";
// import RobotAssist from "@/component/HomePage/RobotAssist.vue";
import { Https } from "@/tool/https";
import { message, Upload, Modal } from "ant-design-vue";

View File

@@ -1,838 +0,0 @@
<template>
<div class="header_max">
<header class="header_component">
<div class="header_right_content">
<div class="header_user_icon"></div>
<!-- <div class="header_icon icon iconfont icon-touxiang3"></div> -->
<div class="header_user_content">
<div v-if="isTest" class="username"><span>/</span> {{$t('Header.hello')}}@{{ $t('isTest.userName') }}</div>
<div v-else class="username"><span>/</span> {{$t('Header.hello')}}@{{ userInfo?.userName }}</div>
<div
v-if="!isMurmur"
:class="[
'icon',
'iconfont',
'icon-xiala',
isShowOperate ? 'icon_rotate' : '',
]"
@click.stop="changeShowOperateContent()"
></div>
</div>
<div @click="openTask">abc</div>
<!-- <div class="header_user_content marLeft2">
<span class="username">{{$t('Header.language')}}</span>
<div
:class="[
'icon',
'iconfont',
'icon-xiala',
isLanguage ? 'icon_rotate' : '',
]"
@click.stop="changeLanguage()"
></div>
</div> -->
<div
class="trialApproval button_second credits hideChecked"
>
Credits:&nbsp;
<span :title="credits">
<!-- <div>{{ String(credits.value[credits.value.legnth-1]) }}</div> -->
<div class="credits_item" v-for="item in String(credits)" :style="{'transform': 'translateY('+item*-100+'%)'}">
<div v-for="numItem in 10">{{ numItem-1 }}</div>
</div>
</span>
<i @click="getCredits" class="fi fi-br-refresh" :class="[activeCredits?'active':'']"></i>
<i @click="Assignment" class="fi fi-rr-gift" title="Assignment"></i>
<i @click="UpgradePlan" title="Purchase" class="fi fi-rr-shop"></i>
</div>
</div>
<nav class="header_nav_content">
<div :class="['nav_item',$route.name === 'home' ? 'select_nav' : '',
]"
@click="turnToPage('home')"
>
{{$t('Header.HOME')}}
</div>
<div
:class="['nav_item', $route.name === 'library' ? 'select_nav' : '',]"
@click="turnToPage('library')"
>
{{$t('Header.LIBRARY')}}
</div>
<div
:class="['nav_item',$route.name === 'history' ? 'select_nav' : '',]"
@click="turnToPage('history')"
>
{{$t('Header.HISTORY')}}
</div>
</nav>
<div class="header_right">
<img
class="header_logo"
@click="turnToNewPage('https://www.aidlab.hk/en/')"
src="@/assets/images/loginPage/aida_logo.png"
/>
<Habit></Habit>
</div>
</header>
<nav class="select_block" v-show="isShowOperate">
<!-- <div class="select_item" @click="showBindEmailModal()">
<span class="icon iconfont icon-youxiang"></span><span class="select_item_des">{{$t('Header.bindEmail')}}</span>
</div> -->
<div class="select_item" @click.stop="isLanguage = !isLanguage">
<span class="icon iconfont icon-yuyan"></span>
<span class="select_item_des">{{$t('Header.language')}}</span>
</div>
<div class="select_item" @click="orderForm()">
<i class="fi fi-rs-notebook"></i>
<span class="select_item_des">View Orders</span>
</div>
<div class="select_item" @click="logout()">
<span class="icon iconfont icon-tuichu"></span
><span class="select_item_des">{{$t('Header.logOff')}}</span>
</div>
</nav>
<ul class="select_block select_list" v-show="isLanguage">
<li class="select_item" v-for="item in language" @click="setLocale(item.value)">
<span class="select_item_des">{{ item.name }}</span>
</li>
</ul>
<a-modal
class="modal_component"
v-model:visible="bindEmailVisible"
:footer="null"
title="Mailbox binding"
width="56rem"
:maskClosable="false"
:keyboard="false"
:centered="true"
>
<template #closeIcon v-if="!isHaveBindEmail && bindEmailStep === 1">
<div class="skip_content">{{$t('Header.skip')}}</div>
</template>
<div class="bind_email_content" v-if="isHaveBindEmail">
<div class="bind_email_tip">{{$t('Header.emailContent')}}</div>
<div class="bind_email">{{ userInfo.email }}</div>
</div>
<div class="bind_email_content" v-else>
<!-- 绑定邮箱第一步 start -->
<div v-show="bindEmailStep === 1">
<div class="bind_email_form_content">
<div class="bind_email_form_title">{{$t('Header.Email')}}</div>
<input
class="bind_email_form_input"
placeholder="Enter a new email"
v-model="email"
@keydown.enter="emailNextStepFun()"
/>
</div>
<div
class="bind_email_submit_button"
@click="emailNextStepFun()"
>
{{$t('Header.NextStep')}}
</div>
</div>
<!-- 绑定邮箱第一步 end -->
<!-- 绑定邮箱第二步 start -->
<div v-show="bindEmailStep === 2">
<div @click="emailLastStepFun()">
<span class="icon iconfont icon--shangyibu"></span
><span class="email_last_step_content"
>{{$t('Header.verification')}}</span
>
</div>
<div class="email_last_step_des">
<div class="sent_email_content">
{{$t('Header.SentTo')}} {{ email }}
</div>
<div class="tip_content">
<span v-show="time">{{ time }}s</span>
<span v-show="!time" @click="emailNextStepFun()"
>{{$t('Header.Resend')}}Resend</span
>
</div>
</div>
<VerificationCodeInput
:ct="emailCode"
@sendCaptcha="submitBindEmail($event)"
></VerificationCodeInput>
</div>
<!-- 绑定邮箱第一步 end -->
</div>
</a-modal>
<payOrder ref="payOrder"></payOrder>
<UpgradePlan ref="UpgradePlan"></UpgradePlan>
<TaskPage ref="TaskPage"></TaskPage>
</div>
</template>
<script >
import { defineComponent, createVNode, ref, computed } from "vue";
import { isEmail } from "@/tool/util";
import { setCookie, getCookie, WriteCookie } from "@/tool/cookie";
import payOrder from "@/component/Pay/payOrder.vue";
import VerificationCodeInput from "@/component/LoginPage/verificationCodeInput.vue";
import Habit from "@/component/Detail/habit.vue";
import TaskPage from "@/component/HomePage/TaskPage.vue";
import UpgradePlan from "@/component/HomePage/UpgradePlan.vue";
import { Https } from "@/tool/https";
import { Modal, message } from "ant-design-vue";
import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
import { useStore } from "vuex";
import { setLang } from "@/tool/guide";
import { useI18n } from "vue-i18n";
export default defineComponent({
components: {
VerificationCodeInput,
Habit,
UpgradePlan,
payOrder,
TaskPage,
},
setup(){
const store = useStore();
const {t} = useI18n()
const {locale} = useI18n()
let isTest = ref()
let isMurmur = ref()
let credits = computed(()=>{
return store.state.UserHabit.credits.value
})
let activeCredits = ref(false)
return {
store,
t,
locale,
isTest,
isMurmur,
credits,
activeCredits,
}
},
data() {
return {
isShowOperate: false,
bindEmailVisible: false,
isHaveBindEmail: false,
bindEmailStep: 1,
email: "",
emailCode: ["", "", "", "", "", ""], //邮箱验证码
time: 60, //60秒倒计时
timer: 0,
userInfo: {},
timerOperate: null,
numTime: 30,
timerSec: null,
modalWarning: null,
isLanguage: false,
language:[
{name:'English',value:'ENGLISH'},
{name:'中文',value:'CHINESE_SIMPLIFIED'},
// {name:'한국인',value:'KOREAN'},
// {name:'にほんご',value:'JAPANESE'},
// {name:'Русский',value:'RUSSIAN'},
// {name:'Français',value:'FRENCH'},
// {name:'แบบไทย',value:'THAI'},
// {name:'Tiếng Việt',value:'VIETNAMESE'},
// {name:'Italiano',value:'ITALIAN'},
],
};
},
watch: {
// credits.value(newVal,oldVal){
// console.log(String(newVal).length);
// }
},
mounted() {
let isTest = getCookie('isTest')//获取是否是试用用户
this.isTest =JSON.parse(isTest)
let isMurmur = getCookie('isMurmur')//获取是否是试用用户
this.isMurmur =JSON.parse(isMurmur)
this.userInfo = JSON.parse(getCookie("userInfo"));
if (!this.userInfo) {
this.$router.replace("/");
} else {
this.accountIsLogin(this.userInfo);
}
this.isHaveBindEmail = this.userInfo?.email ? true : false;
if(!this.isMurmur){
this.operateClick();
document.addEventListener("click", this.operateClick);
}
this.getCredits()
this.getLang('')
},
methods: {
turnToNewPage(url) {
window.open(url);
},
turnToPage(name) {
let noRefresh = name === "home" ? true : false;
this.$router.push({ name: name, params: { noRefresh: noRefresh } });
},
UpgradePlan(){//购买积分
let UpgradePlan = this.$refs.UpgradePlan
UpgradePlan.init()
},
Assignment(){//任务
// let num = 123+this.credits
// this.store.commit('setCredits',num)
},
getCredits(){//刷新当前积分
if(!this.activeCredits){
this.activeCredits = true
this.store.dispatch('getCredits').then((rv)=>{
setTimeout(()=>{
this.activeCredits = false
},300)
})
}else{
this.activeCredits = false
}
},
//点击下拉图标出现操作
changeShowOperateContent() {
this.isShowOperate = !this.isShowOperate;
document.addEventListener(
"click",
this.closeShowOperateContent,
false
);
},
changeLanguage(){
this.isLanguage = !this.isLanguage;
document.addEventListener(
"click",
this.closeShowOperateContent,
false
);
},
//关闭下拉图标
closeShowOperateContent() {
this.isShowOperate = false;
this.isLanguage = false
document.removeEventListener("click", this.closeShowOperateContent);
},
//打开绑定邮箱弹窗
showBindEmailModal() {
this.bindEmailVisible = true;
},
emailNextStepFun() {
if (!isEmail(this.email)) {
message.info(this.t('Header.jsContent1'));
return;
}
let data = {
email: this.email,
operationType: "BIND_MAILBOX",
};
const hide = message.loading("loading", 0);
Https.axiosPost(Https.httpUrls.accountSendEmail, data)
.then((rv) => {
if (rv) {
this.bindEmailStep = 2;
(this.emailCode = ["", "", "", "", "", ""]),
this.createTimer();
hide();
message.success(this.t('Header.jsContent2'));
}
})
.catch((res) => {
hide();
});
},
//绑定邮箱的上一步
emailLastStepFun() {
this.bindEmailStep = 1;
this.email = "";
(this.emailCode = ["", "", "", "", "", ""]), this.clearTimer();
},
//创建定时器
createTimer() {
this.timer = setInterval(() => {
this.time--;
if (!this.time) {
clearInterval(this.timer);
}
}, 1000);
},
//清除定时器
clearTimer() {
this.time = 60;
if (this.timer) {
clearInterval(this.timer);
}
},
//查看订单
orderForm(){
let payOrder = this.$refs.payOrder
payOrder.init()
},
//登出
async logout() {
let data = {
userId: this.userInfo.userId,
};
let isTest = getCookie('isTest')
// console.log(getCookie("token"));
if(JSON.parse(isTest)){
await Https.axiosGet(Https.httpUrls.trialUserLogout,).then((rv) => {
Https.axiosPost(Https.httpUrls.accountLogout, data).then((rv) => {
this.$router.replace("/login");
WriteCookie("token");
});
})
}else{
await Https.axiosPost(Https.httpUrls.accountLogout, data).then((rv) => {
WriteCookie("token");
});
this.$router.replace("/login");
}
// window.location.reload()
},
//绑定邮箱
submitBindEmail(emailVerifyCode) {
let data = {
userEmail: this.email,
userId: this.userInfo.userId,
emailVerifyCode: emailVerifyCode,
};
Https.axiosPost(Https.httpUrls.accountBindEmail, data).then(
(rv) => {
if (rv) {
this.userInfo.email = this.email;
(this.bindEmailVisible = false),
(this.bindEmailStep = 1);
this.clearTimer();
this.emailCode = ["", "", "", "", "", ""];
}
}
);
},
//判断是否登录
accountIsLogin(userInfo) {
let data = {
userId: userInfo.userId,
};
Https.axiosPost(Https.httpUrls.accountIsLogin, data).then((rv) => {
if (!rv) {
this.$router.replace("/");
}
});
},
//点击重置判断是否长时间五操作
operateClick() {
if (this.timer) {
clearTimeout(this.timer);
}
let _this = this;
let timeNum = 1000 * 60 * 120;
this.timer = setTimeout(() => {
this.modalWarning = Modal.warning({
title: () =>
this.t('Header.jsContent3',{numTime:_this.numTime}),
icon: createVNode(ExclamationCircleOutlined),
okText: "Ok",
centered:true,
onOk() {
_this.numTime = 30;
clearInterval(_this.timerSec);
},
});
_this.numCounter();
}, timeNum);
},
numCounter() {
this.timerSec = setInterval(() => {
if (this.numTime > 0) {
this.numTime = this.numTime - 1;
} else {
clearTimeout(this.timer);
clearInterval(this.timerSec);
this.logout();
this.modalWarning.destroy();
}
}, 1000);
},
//获取当前语言
getLang(v){
let data
Https.axiosPost(Https.httpUrls.getUserLanguage, data).then(
(rv) => {
if (rv) {
this.locale = rv
setLang(rv)
}
}
);
},
setLang(v){
Https.axiosGet(Https.httpUrls.changeUserLanguage,{params:{language:v}}).then((rv) => {
if (rv) {
if (rv) {
let token = rv;
setCookie("token", token);
this.getLang('')
// if(this.$router.currentRoute._value.path == '/home'){
// this.$router.push("/home")
// }else{
// this.$router.push("/home")
// }
this.store.commit('clearAllData')
window.location.reload()
}
}
})
},
setLocale(v){
this.setLang(v)
},
openTask(){
let taskPage = this.$refs.TaskPage
taskPage.init()
},
},
});
</script>
<style lang="less" scoped>
.header_max{
position: relative;
}
.header_component {
display: flex;
justify-content: space-between;
// padding: 0 30px;
padding-left: 0;
width: 100%;
height: 7rem;
background: rgba(255, 255, 255, 0.2);
// border-bottom: 0.1rem solid rgba(3, 3, 3, 0.1);
position: relative;
align-items: center;
z-index: 1049;
background-color: #fff;
.header_right{
width: 33%;
display: flex;
justify-content: flex-end;
align-items: center;
}
.header_logo {
width: 14.4rem;
height: 3.2rem;
margin: 2.1rem 2.8rem 0 ;
// position: absolute;
margin-top: 0;
}
.header_nav_content {
display: flex;
// margin-left: 28.9rem;
// margin-left: 46.2rem;
align-items: center;
.nav_item {
padding: 1.1rem 1rem;
border-bottom: 0.1rem solid transparent;
margin-right: 3.4rem;
font-size: 1.6rem;
line-height: 1.3rem;
// color: #333333;
color: #000;
cursor: pointer;
font-weight: 900;
&.nav_item:nth-child(3){
margin: 0;
}
&.nav_item::before {
position: absolute;
content: "";
display: block;
background: #000;
height: .3rem;
left: 50%;
transform: translateX(-50%);
bottom: .3rem;
width: 0px;
transition: 0.3s all;
}
&.select_nav {
color: #000;
transform: scale(1.15);
}
&.select_nav::before {
width: 80%;
}
}
}
.header_right_content {
// position: absolute;
top: 0;
// right: 3.2rem;
left: 0;
display: flex;
width: 33%;
height: 100%;
align-items: center;
overflow: hidden;
.header_icon {
font-size: 3.6rem;
position: relative;
top: 0.3rem;
}
.header_user_icon{
height: 4rem;
width: 4rem;
background-color: #000;
border-radius: 50%;
transform: translateX(-40%)scale(1.3);
}
.header_user_content {
// margin-left: 2rem;
display: flex;
align-items: center;
position: relative;
// top: 1.2rem;
height: 3.7rem;
&.marLeft2{
margin-left: 2rem;
}
.username {
font-size: 1.8rem;
color: #1a1a1a;
margin: 0 0.8rem;
font-weight: 900;
span{
margin: .7rem;
}
}
.icon-xiala {
font-size: 1.4rem;
cursor: pointer;
transition: .3s all;
}
.icon_rotate {
-moz-transform: rotate(180deg);
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
animation-direction: 0.5s;
}
}
.credits{
font-size: 1.8rem;
color: #1a1a1a;
font-weight: 900;
width: auto;
padding: 0 1rem;
cursor: auto;
display: flex;
span{
width: 5rem;
display: inline-block;
overflow: hidden;
display: flex;
margin-right: .9rem;
.credits_item{
transition: .3s all;
div{
height: 100%;
}
}
}
i{
height: 100%;
display: inline-block;
border-left: .1rem solid ;
padding-left: .9rem;
margin-left: .9rem;
font-size: 1.8rem;
cursor: pointer;
}
.fi-br-refresh{
margin-left: 0;
border-left: none;
padding-left: 0;
&.active{
transition: all .3s;
transform: rotate(360deg);
}
}
}
.trialApproval{
margin-left: 2rem;
}
}
}
.select_block {
z-index: 1050;
position: absolute;
left: 6.5rem;
top: 4.7rem;
width: 11.4rem;
background: #ffffff;
box-shadow: 0px 0.4rem 0.4rem 0px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #000000;
&.select_list{
// display: none;
transform: translateX(105%);
// transform: translateX(120%);
}
.select_item {
padding-left: 1.5rem;
height: 4.1rem;
color: #4d4d4d;
display: flex;
align-items: center;
cursor: pointer;
user-select: none;
&:hover {
background: #f7f7f7;
}
.iconfont {
font-size: 1.4rem;
}
.select_item_des {
font-size: 1.3rem;
margin-left: 0.8rem;
}
}
}
.modal_component {
.skip_content {
width: 6rem;
height: 3rem;
line-height: 2.8rem;
border: 0.1rem solid #343579;
font-size: 1.4rem;
color: #343579;
position: absolute;
top: 1.8rem;
right: 1.8rem;
cursor: pointer;
}
.bind_email_content {
padding: 4.8rem 9.2rem 6rem;
.bind_email_tip {
font-size: 1.8rem;
color: #a5b0c2;
line-height: 1.9rem;
text-align: center;
}
.bind_email {
margin-top: 2rem;
font-size: 2.2rem;
font-weight: 400;
color: #030303;
text-align: center;
}
.bind_email_form_content {
.bind_email_form_title {
font-size: 2.2rem;
font-weight: bold;
color: #030303;
line-height: 2.4rem;
}
.bind_email_form_input {
width: 100%;
height: 4.6rem;
margin-top: 1rem;
border: 0.1rem solid #b4bed7;
padding-left: 2.1rem;
line-height: 4.6rem;
font-size: 1.8rem;
box-sizing: border-box;
&::placeholder {
color: #a5b0c2;
}
}
}
.bind_email_submit_button {
height: 4.6rem;
line-height: 4.6rem;
background: #343579;
font-size: 1.6rem;
font-weight: 500;
color: #ffffff;
width: 12.8rem;
text-align: center;
cursor: pointer;
margin: 3rem auto 0;
}
.icon--shangyibu {
font-size: 2.5rem;
font-weight: bold;
color: #030303;
}
.email_last_step_content {
margin-left: 1rem;
font-size: 2.2rem;
font-family: PingFang SC;
font-weight: bold;
color: #030303;
}
.tip_content {
font-size: 1.3rem;
font-weight: bold;
color: #343579;
cursor: pointer;
}
.email_last_step_des {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 2.5rem;
margin-bottom: 1.5rem;
.sent_email_content {
font-size: 1.8rem;
font-weight: bold;
color: #a5b0c2;
}
}
}
}
</style>

View File

@@ -211,7 +211,6 @@
<script lang="ts">
import { defineComponent, h, ref, computed, reactive, toRefs, inject,provide,nextTick,createVNode,onBeforeUnmount, toRef} from "vue";
// import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
// import HeaderComponent from "@/component/HomePage/Header.vue";
import CollectionModal from "@/component/HomePage/collectionModal.vue";
import NewCollectionReview from "@/component/HomePage/NewCollectionReview.vue";
import productImg from "@/component/HomePage/productImg.vue";

View File

@@ -5,7 +5,7 @@
:get-container="() => $refs.renew"
v-model:visible="renewModel"
:footer="null"
:width="pageWidth"
width="130rem"
height="auto"
:maskClosable="false"
:centered="true"
@@ -27,80 +27,136 @@
</div>
</div>
<div class="renewContent">
<div class="generalModelTitle">
{{ $t('Renew.title') }}
<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>
</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 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 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="renew_detail">
<div class="name generalModelTitle">{{ current?.title }}</div>
<div class="price_box">
<div class="price">
<sub>$</sub>
{{ current?.price[current?.type] }} <span>{{ current?.unit[current?.type] }}</span>
</div>
<div class="type" v-if="current.typeList.length > 1">
<label>
<input name="pric" type="radio" value="monthly" v-model="current.type" @change="setPricType('monthly')">
{{ $t('Renew.Monthly') }}
</label>
<label>
<input name="pric" type="radio" value="year" v-model="current.type" @change="setPricType('year')">
{{ $t('Renew.Yearly') }}
</label>
</div>
<div class="type promotion">
<div class="text">{{ $t('Renew.promotionCode') }}:</div>
<div class="succeed" v-show="promotionData.error == 'true'">
{{promotionData.code}}
<i class="fi fi-sr-times-hexagon" @click="clearPromotionCode"></i>
<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 class="input" v-show="!promotionData.error || promotionData.error == 'false'">
<input type="text" v-model="promotionData.code">
<div style="cursor: pointer;" @click="examine">{{ $t('Renew.use') }}</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 class="error" v-show="promotionData.error == 'false'">{{promotionData.str}}</div>
</div>
<div class="type payment">
<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 class="gallery_btn gallery_btn_radius" @click="payment">
Continue
</div>
<!-- <div class="autoRenewal">
<label>
{{ current.autoRenewal.text }} :
<a-switch v-model:checked="current.autoRenewal.value" />
</label>
</div> -->
<div class="info">{{ current?.info }}</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>
<!-- <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> -->
</div>
<div class="gallery_btn gallery_btn_radius" @click="payment">{{ $t('Renew.SubscribeNow') }}</div>
</div>
<div
class="login_footer_item_text"
@click="turnToWindow(
'https://code-create.com.hk/aida-terms-and-conditions/'
)"
>
Terms&Conditions
</div>
<div
class="login_footer_item_text"
@click="turnToWindow(
'https://code-create.com.hk/aida-subscription-agreement/'
)"
>
Privacy Policy
</div>
</div>
<div class="mark_loading" v-show="isShowMark_">
@@ -140,35 +196,65 @@ export default defineComponent({
})
let payMethodData = reactive({
clause:false,
labelDisclaimer:null,
labelDisclaimer:null as any,
newWindow:null as any,
isShowMark:false,
isShowMark_:false,
})
let renewData = reactive({
promotionData:{
code:'',
error:'',
str:'',
oldPrice:'',
},
personage:computed(()=>{
return {
title:t('Renew.PersonalVersion'),
price:{
monthly:'500',
year:'5,000',
personage:[
{
price:'500',
sellWell:true,
activity:false,//活动打折
type:{
value:'Month',
label:'Month',
},
PaymentType:'',
promotionData:{
code:'',
error:'',
str:'',
price:'',
},
},
unit:{
monthly:t('Renew.HKDMonth'),
year:t('Renew.HKDYear'),
{
price:'5,000',
sellWell:false,
activity:false,//活动打折
typeValue:'year',
type:{
value:'Year',
label:'Year',
},
PaymentType:'',
promotionData:{
code:'',
error:'',
str:'',
price:'',
},
},
type:'monthly',
PaymentType:'',
typeList:['monthly','year'],
info:'Tax, VAT not included.',
}
}),
],
// 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.',
// }
// }),
firm:computed(()=>{
return {
title:'Education Edition',
@@ -185,6 +271,7 @@ export default defineComponent({
},
typeList:['year'],
info:'Customised plan',
}
}),
education:computed(()=>{
@@ -212,14 +299,11 @@ export default defineComponent({
})
const init = ()=>{
renew.renewModel = true
renewData.current = renewData.personage
renewData.current = renewData.personage[0]
}
const cancelDsign = () => {
renew.renewModel = false
}
const setPricType=(str:any)=>{
renewData.current.type = str
}
const setPaymentType = (str:any)=>{
renewData.current.PaymentType = str
}
@@ -234,10 +318,7 @@ export default defineComponent({
}
return
}
let subscribeType = 'Year'
if(!renewData.current.PaymentType)return message.info(t('Renew.PleaseSelectPayment'))
if(renewData.current.type == 'monthly')subscribeType= 'Month'
// let data = {
// autoRenewal:renewData.current.PaymentType != 'Alipay',//one_time为不自动续费
// productName:'Subscription',
@@ -249,9 +330,9 @@ export default defineComponent({
productName:'Subscription',
quantity:1,
returnUrl:url,
subscribeType:subscribeType,//yearly为年费monthly为月费
subscribeType:renewData.current.type.value,//yearly为年费monthly为月费
wallet:'ALIPAYHK',
promotionCode:renewData.promotionData.code,
promotionCode:renewData.current.promotionData.code,
}
let httpsUrl = Https.httpUrls.payStripe
payMethodData.isShowMark_ = true
@@ -288,37 +369,41 @@ export default defineComponent({
renew.renewModel = false
setPaidBack()
}
const examine = ()=>{
const examine = (item:any)=>{
// renewData.promotionData.error
let price = renewData.current?.price[renewData.current?.type]
let price = item?.price
const normalNumber = Number(price.replace(/,/g, ''));
if(!renewData.promotionData.code){
if(!item.promotionData.code){
return
}
let data = {
promotionCode:renewData.promotionData.code,
promotionCode:item.promotionData.code,
price:normalNumber,
}
Https.axiosGet(Https.httpUrls.checkCoupon,{params:data}).then((rv:any)=>{
if(rv){
if(rv.status == "valid"){
renewData.promotionData.error = 'true'
renewData.promotionData.oldPrice = renewData.current?.price[renewData.current?.type]
renewData.current.price[renewData.current.type] = (Number(rv.discountedPrice)).toLocaleString()
}else{
renewData.promotionData.error = 'false'
renewData.promotionData.str = rv.message
}
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
}
}
})
}else{
}
})
}
const clearPromotionCode = ()=>{
renewData.promotionData.error = '';
renewData.promotionData.code = ''
renewData.current.price[renewData.current.type] = renewData.promotionData.oldPrice
renewData.promotionData.oldPrice = ''
renewData.current.promotionData.error = '';
renewData.current.promotionData.code = ''
renewData.current.promotionData.price = ''
}
const setPromotionData = (item:any)=>{
renewData.current = item
}
return{
store,
@@ -327,13 +412,13 @@ export default defineComponent({
...toRefs(payMethodData),
init,
cancelDsign,
setPricType,
setPaymentType,
payment,
setPaidBack,
completePayment,
examine,
clearPromotionCode,
setPromotionData
}
},
data() {
@@ -350,159 +435,332 @@ export default defineComponent({
</script>
<style lang="less" scoped>
.renew {
:deep(.ant-modal-body){
padding: 0;
}
.renewContent{
display: flex;
flex-direction: column;
align-items: center;
.generalModelTitle{
text-align: center;
}
.renew_detail{
width: 58rem;
height: 60rem;
// height: 53rem;
border-radius: 3rem;
margin-bottom: 5rem;
border: 2px solid #000;
padding: 6rem 3rem 5rem;
display: flex;
flex-direction: column;
.price_box{
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;
display: flex;
flex-direction: column;
align-items: center;
flex: 1;
justify-content: space-between;
margin-bottom: 3rem;
}
.price{
font-size: 6rem;
sub{
font-size: 2rem;
top: -3rem;
}
span{
font-size: 2rem;
}
}
> .left{
width: 60%;
background: #0f0f0f;
color: #fff;
padding: 4rem 3.2rem;
> .title{
opacity: .6;
}
.type{
display: flex;
&.promotion{
flex-wrap: wrap;
justify-content: center;
align-items: center;
> .succeed{
padding: 1rem;
> .content{
> .benefits,> .benefitsItem{
display: flex;
> .contrast{
margin-left: auto;
display: flex;
align-items: center;
border-radius: 1rem;
background: #eee;
> i{
> 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;
}
}
}
> .benefits{
> div:nth-child(1){
opacity: .5;
}
font-weight: 600;
font-size: 2rem;
margin: 1rem 0;
padding: 0 1.6rem;
}
> .benefitsItem{
border: 1px solid #27272a;
border-radius: 2.4rem;
margin-bottom: 1.6rem;
padding: 1.6rem;
> .describe{
display: flex;
align-items: center;
> .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;
}
}
}
}
}
}
> .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;
display: flex;
justify-content: center;
align-items: center;
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;
}
}
}
&.active{
background: #0ea98233;
border: 2px solid #0ea982;
> .priceBox{
> .left{
> p:nth-child(1){
opacity: 1;
}
}
> .right{
> .discountsPrice{
opacity: 1;
}
}
}
}
&.sellWell{
border: 2px solid #0ea982;
}
}
> .productItem:last-child{
margin-bottom: 2rem;
}
}
> .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;
margin-left: 1rem;
cursor: pointer;
input{
margin-right: .5rem;
}
}
}
> .input{
display: flex;
align-items: center;
border-radius: 2rem;
border: 2px solid #000;
overflow: hidden;
padding: 0 1rem;
input{
border: none;
height: 3rem;
}
}
> .error{
color: red;
width: 100%;
text-align: center;
font-size: 1.2rem;
}
}
> .text{
margin-right: 2rem;
// font-weight: 600;
}
label{
display: flex;
align-items: center;
margin-right: 3rem;
input{
margin-right: 1rem;
}
> .gallery_btn{
width: 100%;
margin: 2rem 0;
margin-top: 1rem;
}
&.payment{
> .payMethod_payAffirm_clause{
label{
margin-right: 1rem;
input{
margin-right: .5rem;
margin-right: 1rem;
cursor: pointer;
vertical-align: middle;
}
span{
vertical-align: top;
font-size: 1.4rem;
a{
color: #000;
text-decoration: underline;
}
}
}
&.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);
}
}
}
}
label:last-child{
margin-right: 0rem;
}
}
}
.login_footer_item_text{
text-align: center;
margin-bottom: 1.5rem;
text-decoration: underline;
}
.login_footer_item_text:last-child{
margin-bottom: 0rem;
}
.payMethod_payAffirm_clause{
label{
cursor: pointer;
input{
margin-right: 1rem;
cursor: pointer;
vertical-align: middle;
}
span{
vertical-align: top;
a{
color: #000;
text-decoration: underline;
}
}
}
&.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);
}
}
// > .paySecure{
// display: flex;
// margin-top: 1rem;
// > svg{
// width: 1.6rem;
// height: 1.6rem;
// }
// > span{
// font-weight: 600;
// font-size: 1.4rem;
// }
// }
}
}
// .login_footer_item_text{
// text-align: center;
// margin-bottom: 1.5rem;
// text-decoration: underline;
// }
// .login_footer_item_text:last-child{
// margin-bottom: 0rem;
// }
}
.mark_loading{
position: absolute;
z-index: 2;
background: #fff;
border-radius: 3rem;
.mark_loading_title{
font-size: 3rem;
// text-decoration: underline;
font-weight: 600;
margin-bottom: 2rem;
overflow: hidden;
// color: #fff;
}
.mark_loading_intro{

View File

@@ -41,7 +41,7 @@
<i v-else class="fi fi-br-check" @click="editChek('brandSlogan')"></i>
</div>
</div>
<div style="flex:1;text-align: right;" v-show="imgList.length > 0">
<div style="flex:1;text-align: right;" v-show="fall?.list?.length > 0">
<div class="gallery_btn" v-show="schedule.num == 1||(schedule.num == 0 && !schedule.state)" @click="compute">Compute</div>
<div v-show="schedule.num != 1">
<a-progress style="width:20rem;" :percent="schedule.num * 100" size="small" :showInfo="false" />
@@ -139,7 +139,6 @@ export default defineComponent({
upload:{},
token:getCookie("token"),
isShowMark:false,
imgList:[],
total:0,
pageSize:10,
currentPage:1,

View File

@@ -83,7 +83,7 @@ export default defineComponent({
setup(){
let list = ref([])
let wait_list = ref([])
let width = ref(250)
let width = ref(300)
let num_x = ref(1)
let gap_x = ref(0)
let gap_y = ref(0)

View File

@@ -689,7 +689,8 @@ export default {
jsContent2:'The current network cannot load Google',
},
Renew:{
title:'Select The Best Plan For Your Needs',
// title:'Select The Best Plan For Your Needs',
title:'Find Your Ideal Plan',
Monthly:'Monthly',
Yearly:'Yearly',
promotionCode:'Promotion code',

View File

@@ -255,7 +255,7 @@ const userHabit : Module<UserHabit,RootState> = {
*/
state.userDetail.affiliate = data.affiliate
state.userDetail.systemUser = data.systemUser
// state.userDetail.systemUser = 3
state.userDetail.systemUser = 3
// 身份列表1可以使用aida系统2:可以使用affiliate页面3系统管理员用户
state.userDetail.systemList = []
if(data.systemUser != 0)state.userDetail.systemList.push(1)

View File

@@ -231,4 +231,114 @@ const projectList = {
}
],
}
export {projectList}
const openTypeList = (t)=>{
return {
tools:{
icon:'fi-rr-magic-wand',
label:'Advanced tools',
value:'advancedTools',
list:[
{
icon:'',
label:'All',
value:'all',
}
]
},
library:{
icon:'fi-rr-followcollection',
label:'Library',
value:'library',
router:'/home/library',
list:[
{
icon:'fi-rr-grid',
label:t('LibraryPage.Moodboard'),
value:'Moodboard',
router:'library=Moodboard'
},{
icon:'fi-rs-objects-column',
label:t('LibraryPage.Prints'),
value:'Printboard',
router:'library=Printboard'
},{
icon:'icon iconfont icon-a-waitao_changkuanwaitao11x',
label:t('LibraryPage.Sketches'),
value:'Sketchboard',
router:'library=Sketchboard'
},{
icon:'fi-ss-puzzle-piece',
label:t('LibraryPage.DesignElements'),
value:'DesignElements',
router:'library=DesignElements'
},{
icon:'fi-rs-people',
label:t('LibraryPage.Mannequins'),
value:'Models',
router:'library=Models'
},{
icon:'fi-ss-gem',
label:t('LibraryPage.brandDNA'),
value:'MyBrand',
router:'library=MyBrand'
},
]
},
history:{
icon:'fi-br-time-past',
label:'History',
value:'history',
list:[
{
icon:'',
label:'All',
value:'all',
}
]
},
gallery:{
icon:'fi-rr-gallery',
label:'Gallery',
value:'works',
router:'/home/works',
list:[
{
icon:'',
label:'All',
value:'all',
router:'works=all'
},{
icon:'',
label:'Like Works',
value:'favoriteWorks',
router:'works=favoriteWorks'
},{
icon:'',
label:'My Works',
value:'myWorks',
router:'works=myWorks'
},{
icon:'',
label:'New Year 2025',
value:'NewYear_2025',
router:'works=NewYear_2025'
},
]
},
event:{
icon:'fi-rr-calendar-star',
label:'Event',
value:'event',
router:'/home/events',
list:[
{
icon:'',
label:'All',
value:'all',
router:''
}
]
},
}
}
export {projectList,openTypeList}

View File

@@ -305,6 +305,8 @@ export default defineComponent({
.administrator_page_right{
flex: 1;
width: 80%;
display: flex;
flex-direction: column;
.administrator_page_right_header{
display: flex;
justify-content: space-between;

View File

@@ -1,102 +1,158 @@
<template>
<div class="homeMain_max Guide_1_16_1">
<header class="homeMain_heade">
<div class="homeMain_right_content">
<div class="homeMain_user">
<div class="homeMain_user_icon" @click="openAccount">
<img :src="userDetail.avatar" alt="">
<div class="homeMain_max">
<div class="leftBox">
<div class="left">
<div class="title">
<span>AiDA</span>
<svg xmlns="http://www.w3.org/2000/svg" width="2rem" height="2rem" fill="currentColor" viewBox="0 0 24 24" data-v-1c7326d6=""><path fill-rule="evenodd" d="M6 5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h2V5H6Zm4 0v14h8a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-8ZM3 6a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3V6Z" clip-rule="evenodd" data-v-1c7326d6=""></path></svg>
</div>
<div class="newObj marginT2">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 25 24"><path stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12.5 5v14m-7-7h14"></path></svg>
<p>New Chat</p>
</div>
<div class="navList marginT2">
<div class="tools list" v-for="item in openTypeList" :class="{active:openType == item.value}">
<div class="titleBox" @click="setOpenType(item.value)">
<div class="left">
<i :class="['fi',item.icon]"></i>
<span>{{item.label}}</span>
</div>
<div class="right">
<i class="fi fi-br-angle-small-down"></i>
</div>
</div>
<div class="detailBox">
<div class="detail" v-show="openType == item.value">
<div class="detailItem" v-for="childItem in item.list" @click="setRouter(item,childItem)" :class="{active:openTypeChild == childItem.value}">
<i v-show="childItem.icon" :class="['fi',childItem.icon]"></i>
<span>{{ childItem.label }}</span>
</div>
</div>
</div>
</div>
<div class="homeMain_user_detail">
</div>
<div class="navListBottom">
<div class="tools marginT2 list language" :class="{active:isLanguage}">
<div class="titleBox" @click="()=>isLanguage = !isLanguage">
<div class="left">
<i class="fi fi-br-angle-small-down"></i>
<span>Advanced Tools</span>
</div>
<div class="right">
<i class="fi fi-br-angle-small-down"></i>
</div>
</div>
<div class="detailBox">
<div class="detail" v-show="isLanguage">
<div class="detailItem">
<!-- <i class="fi fi-br-angle-small-down"></i> -->
<span>AI Image Generator</span>
</div>
<div class="detailItem active">
<svg data-v-2396c87a="" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 14 14" class="dark-icon sidebar-lang-icon" width="20" height="20"><path stroke="#52525b" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.167" d="M11.667 3.5 5.25 9.917 2.334 7"></path></svg>
<span>AI Image Generator</span>
</div>
</div>
</div>
</div>
</div>
<div v-if="userDetail.systemUser == 0 || userDetail.systemUser == 3" @click="openUpgradeToPro" class="gallery_btn gallery_btn_radius" style="width: 100%;">Upgrade to Pro</div>
</div>
</div>
<div class="rightBox">
<div class="right">
<div class="user">
<div class="homeMain_user">
<div class="homeMain_user_icon" @click="openAccount">
<img :src="userDetail.avatar" alt="">
</div>
<div v-if="userDetail.systemUser == 3" class="username">{{$t('Header.hello')}}@{{ $t('isTest.userName') }}</div>
<div v-else class="username">{{$t('Header.hello')}}@{{ userDetail.userName }}</div>
<div class="homeMain_user_detail_attention">
<div class="attention_item">
<!-- 点击事件就用下面的div -->
<!-- <div class="attention_item attention_item_active"> -->
<div>{{ userDetail?.followeeCount }}</div>
<span>{{$t('account.Follow')}}</span>
<div class="homeMain_user_detail">
<div class="homeMain_user_icon" @click="openAccount">
<img :src="userDetail.avatar" alt="">
</div>
<div class="attention_item">
<div>{{ userDetail?.followerCount }}</div>
<span>{{$t('account.Fans')}}</span>
</div>
<!-- <div class="attention_item">
<div>22</div>
<span>作品数</span>
</div> -->
</div>
<div class="homeMain_subscribe">
<div>
<span class="font">Status</span>
<span v-if="userDetail.timeData.isExpiration" class="stateSucsess font">Valid <i class="fi fi-ss-check-circle"></i></span>
<span v-else class="stateError font">Expire <i class="fi fi-ss-check-circle"></i></span>
<span class="time">{{ userDetail.timeData.text }}</span>
</div>
<!-- <div>
<span class="font">Cancel Renewal <i class="fi fi-rr-arrow-small-right"></i></span>
</div> -->
</div>
<div class="homeMain_select">
<div class="select_item_box" @click.stop="isLanguage = !isLanguage">
<div class="select_item">
<span class="icon iconfont icon-yuyan"></span>
<span class="select_item_des">{{$t('Header.language')}}</span>
<span class="icon iconfont icon-xiala" :class="{'active': isLanguage}"></span>
<div v-if="userDetail.systemUser == 3" class="username">{{$t('Header.hello')}}@{{ $t('isTest.userName') }}</div>
<div v-else class="username">{{$t('Header.hello')}}@{{ userDetail.userName }}</div>
<div class="homeMain_user_detail_attention">
<div class="attention_item">
<!-- 点击事件就用下面的div -->
<div>{{ userDetail?.followeeCount }}</div>
<span>{{$t('account.Follow')}}</span>
</div>
<div class="attention_item">
<div>{{ userDetail?.followerCount }}</div>
<span>{{$t('account.Fans')}}</span>
</div>
<ul class="select_list" :class="{'active': isLanguage}" @click.stop="">
<li class="select_item" v-for="item in language" @click="setLocale(item.value)">
<span class="select_item_des">{{ item.name }}</span>
</li>
</ul>
</div>
<div class="select_item" @click="orderForm()">
<i class="fi fi-rs-notebook"></i>
<span class="select_item_des">{{$t('Header.ViewOrders')}}</span>
<div class="homeMain_subscribe">
<div>
<span class="font">Status</span>
<span v-if="userDetail.timeData.isExpiration" class="stateSucsess font">Valid <i class="fi fi-ss-check-circle"></i></span>
<span v-else class="stateError font">Expire <i class="fi fi-ss-check-circle"></i></span>
<span class="time">{{ userDetail.timeData.text }}</span>
</div>
</div>
<router-link class="select_item" v-if="userDetail.systemList.indexOf(3) >= 0" :to="`/administrator`">
<span class="icon iconfont icon-yonghu"></span>
<span class="select_item_des">Administrator</span>
</router-link>
<router-link class="select_item" :to="`/Affiliate`" v-if="userDetail.systemList.indexOf(2) >= 0">
<span class="icon iconfont icon-yonghu"></span>
<span class="select_item_des">Affiliate</span>
</router-link>
<div class="select_item" @click="getTutorial()">
<span class="fi fi-rr-book-user"></span>
<span class="select_item_des">{{$t('Header.Tutorial')}}</span>
</div>
<div class="select_item_long"></div>
<div class="select_item" @click="logout()">
<span class="icon iconfont icon-tuichu"></span>
<span class="select_item_des">{{$t('Header.logOff')}}</span>
<div class="homeMain_select">
<div class="select_item_box" @click.stop="isLanguage = !isLanguage">
<div class="select_item">
<span class="icon iconfont icon-yuyan"></span>
<span class="select_item_des">{{$t('Header.language')}}</span>
<span class="icon iconfont icon-xiala" :class="{'active': isLanguage}"></span>
</div>
<ul class="select_list" :class="{'active': isLanguage}" @click.stop="">
<li class="select_item" v-for="item in language" @click="setLocale(item.value)">
<span class="select_item_des">{{ item.name }}</span>
</li>
</ul>
</div>
<div class="select_item" @click="orderForm()">
<i class="fi fi-rs-notebook"></i>
<span class="select_item_des">{{$t('Header.ViewOrders')}}</span>
</div>
<router-link class="select_item" v-if="userDetail.systemList.indexOf(3) >= 0" :to="`/administrator`">
<span class="icon iconfont icon-yonghu"></span>
<span class="select_item_des">Administrator</span>
</router-link>
<router-link class="select_item" :to="`/Affiliate`" v-if="userDetail.systemList.indexOf(2) >= 0">
<span class="icon iconfont icon-yonghu"></span>
<span class="select_item_des">Affiliate</span>
</router-link>
<div class="select_item" @click="getTutorial()">
<span class="fi fi-rr-book-user"></span>
<span class="select_item_des">{{$t('Header.Tutorial')}}</span>
</div>
<div class="select_item_long"></div>
<div class="select_item" @click="logout()">
<span class="icon iconfont icon-tuichu"></span>
<span class="select_item_des">{{$t('Header.logOff')}}</span>
</div>
</div>
</div>
</div>
</div>
<div class="router">
<router-view v-if="!getLangIsShowMark" @setTask="setTask" :getLangIsShowMark="getLangIsShowMark">
</router-view>
</div>
</div>
</div>
<header class="homeMain_heade" v-show="false">
<div class="homeMain_right_content">
<div
class="trialApproval button_second credits hideChecked"
>
{{$t('Header.Credits')}}:&nbsp;
<span :title="credits">
<!-- <div>{{ String(credits.value[credits.value.legnth-1]) }}</div> -->
<div class="credits_item" v-for="item in String(credits)" :style="{'transform': 'translateY('+item*-100+'%)'}">
<div v-for="numItem in 10">{{ numItem-1 }}</div>
</div>
</span>
<i @click="getCredits" class="fi fi-br-refresh" :class="[activeCredits?'active':'']"></i>
<!-- <i @click="Assignment" class="fi fi-rr-gift" title="Assignment"></i> -->
<i @click="UpgradePlan" title="Purchase" class="fi fi-rr-shop"></i>
</div>
<!-- <div class="gallery_btn" style="margin-left: 3rem;" @click="subscribe">{{$t('Header.SubscribeNow')}}</div> -->
<div v-if="userDetail.systemUser == 0 || userDetail.systemUser == 3" class="gallery_btn" style="margin-left: 3rem;" @click="subscribe">{{$t('Header.SubscribeNow')}}</div>
<div v-else style="width: 30rem;"></div>
</div>
<navRouter :routerList="navRouterList"></navRouter>
<!-- <navRouter :routerList="navRouterList"></navRouter> -->
<div class="homeMain_right">
<div class="trialApproval credits message">
<div class="message_iconItem">
@@ -114,7 +170,6 @@
</div>
</div>
</div>
<!-- <Habit></Habit> -->
</div>
@@ -122,16 +177,8 @@
<UpgradePlan ref="UpgradePlan"></UpgradePlan>
<TaskPage ref="TaskPage"></TaskPage>
</header>
<div class="homeMain_content_body">
<!-- <router-view v-slot="{ Component }" @setTask = "setTask">
<keep-alive>
<component :key="$route.name" :is="Component" v-if="$route.meta.keepAlive"/>
</keep-alive>
<component :key="$route.name" :is="Component" v-if="!$route.meta.keepAlive"/>
</router-view> -->
<router-view v-if="!getLangIsShowMark" @setTask="setTask" :getLangIsShowMark="getLangIsShowMark">
</router-view>
</div>
<div class="mark_loading" v-show="getLangIsShowMark">
<a-spin size="large" />
</div>
@@ -144,7 +191,7 @@
</div>
</template>
<script >
import { defineComponent, createVNode, ref,toRefs, reactive, computed, onMounted, nextTick } from "vue";
import { defineComponent, createVNode, ref,toRefs, reactive, computed, onMounted, nextTick, watch } from "vue";
import { isEmail } from "@/tool/util";
import { setCookie, getCookie, WriteCookie,clonAllCookie } from "@/tool/cookie";
import payOrder from "@/component/Pay/payOrder.vue";
@@ -169,6 +216,8 @@ import { gsap, TweenMax,TweenLite } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
import MyWs from "@/tool/webSocket";
import MyEvent from "@/tool/myEvents";
import { useRouter,useRoute } from 'vue-router'
import {openTypeList} from "@/tool/listData.js";
export default defineComponent({
components: {
VerificationCodeInput,
@@ -187,6 +236,32 @@ export default defineComponent({
const store = useStore();
const {t} = useI18n()
const {locale} = useI18n()
const route = useRoute()
const router = useRouter()
const homeMainData = reactive({
openType:'',
openTypeChild:'',
isLanguage:false,
openTypeList:openTypeList(t),
})
watch(() => route.query,
(query, oldQuery) => {
// if(oldQuery && query?.works == oldQuery?.works)return
console.log(query,oldQuery,Object.keys(query)[0]);
// homeMainData.openTypeList[Object.keys(query)[0]]
nextTick(()=>{
const key = Object.keys(query)?.[0]
if(key){
homeMainData.openType = Object.keys(query)[0]
homeMainData.openTypeChild = query[Object.keys(query)[0]]
}else{
homeMainData.openType = ''
homeMainData.openTypeChild = ''
}
})
},
{ immediate: true } // 立即触发一次以处理初始参数
);
let userDetail= computed(()=>{
return store.state.UserHabit.userDetail
})
@@ -272,7 +347,7 @@ export default defineComponent({
document.removeEventListener("click", closeShowOperateContent);
}
let renew = ref(null)
const subscribe = ()=>{
const openUpgradeToPro = ()=>{
renew.value.init()
}
onMounted(()=>{
@@ -301,10 +376,26 @@ export default defineComponent({
},
]
})
const setOpenType = (type)=>{
if(homeMainData.openType == type){
homeMainData.openType = ''
}else {
homeMainData.openType = type
if(type == 'history'){
}
}
}
const setRouter = (item,childItem)=>{
let itemRouter = item.router
if(childItem.router)itemRouter = itemRouter + '?' + childItem.router
router.push(itemRouter)
}
return {
store,
userDetail,
t,
...toRefs(homeMainData),
locale,
isMurmur,
credits,
@@ -319,7 +410,9 @@ export default defineComponent({
changeLanguage,
closeShowOperateContent,
renew,
subscribe,
openUpgradeToPro,
setOpenType,
setRouter,
}
},
data() {
@@ -612,12 +705,367 @@ export default defineComponent({
display: flex;
height: 100%;
box-sizing: border-box;
flex-direction: column;
.homeMain_content_body{
> .leftBox{
height: 100%;
background: #f5f5f5;
> .left{
width: 26rem;
height: 100%;
padding: 2rem;
display: flex;
flex-direction: column;
.marginT2{
margin-top: 2rem;
}
.list{
display: flex;
flex-direction: column;
// padding: 1.2rem;
max-height: 5rem;
border-radius: 2rem;
> .titleBox{
padding: 1.2rem;
display: flex;
font-size: 1.4rem;
cursor: pointer;
justify-content: space-between;
align-items: center;
font-weight: 600;
i{
display: flex;
}
> .left{
display: flex;
align-items: center;
> i{
margin-right: .8rem;
}
> span{
line-height: 2.4rem;
color: #52525b;
transition: all .3s;
}
}
> .right{
> i{
transition: all .3s;
}
}
&:hover{
> .left{
> span{
color: #000;
}
}
}
}
> .detailBox{
overflow: auto;
scrollbar-width: none;
flex: 1;
> .detail{
height: 100%;
> .detailItem{
cursor: pointer;
padding: 1.2rem 1.1rem 1.2rem 2.2rem;
font-size: 1.4rem;
font-weight: 400;
margin-bottom: .4rem;
border-radius: .8rem;
display: flex;
align-items: center;
> i{
margin-right: .8rem;
display: flex;
}
&.active{
background: #f5f5f5;
}
&:hover{
background: #f5f5f5;
}
}
> .detailItem:last-child{
margin-bottom: 0;
}
}
}
&.active{
padding: 1.2rem;
overflow: hidden;
max-height: 100%;
background: #00000008;
> .titleBox{
padding: 0;
margin-bottom: 1.6rem;
> .right{
> i{
transform: rotate(180deg);
}
}
}
}
&.language{
> .titleBox{
padding: .8rem;
background: #00000000;
> .left{
> i{
margin-right: 2rem;
}
}
}
> .detailBox{
> .detail{
> .detailItem{
padding: .8rem;
> svg{
margin-right: 2.5rem;
width: 2rem;
height: 2rem;
}
> span{
color: #111a18;
opacity: .5;
margin-left: 4.5rem;
font-weight: 600;
}
&.active{
> span{
color: #52525b;
opacity: 1;
margin-left: 0px;
}
}
}
}
}
}
}
> .title{
display: flex;
padding: .4rem;
align-items: center;
justify-content: space-between;
> span{
font-size: 2rem;
font-weight: 600;
}
> svg{
cursor: pointer;
}
}
> .newObj{
border-radius: 1.2rem;
padding: 1.6rem 1.2rem;
border: 1px solid #0003;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
> svg{
margin-right: .4rem;
width: 2.4rem;
height: 2.4rem;
}
> p{
font-size: 1.6rem;
font-weight: 600;
margin: 0;
}
}
> .navList{
height: 100%;
overflow: hidden;
display: flex;
flex-direction: column;
}
> .navListBottom{
display: flex;
flex-direction: column;
}
> .gallery_btn{
margin-top: 1.2rem;
}
}
}
> .rightBox{
flex: 1;
height: calc(100% - 20rem);
// height: calc(100vh - 7rem);
overflow: hidden;
> .right{
display: flex;
width: 100%;
height: 100%;
flex-direction: column;
> .user{
margin-bottom: 1rem;
.homeMain_user{
height: 6rem;
width: 6rem;
margin-left: auto;
position: relative;
.homeMain_user_icon{
height: 6rem;
width: 6rem;
position: relative;
transform-origin: top;
overflow: hidden;
z-index: 2;
left: 0;
border-radius: 50%;
cursor: pointer;
background: #fff;
img{
width: 100%;
height: 100%;
object-fit: contain;
}
// transition: all .3s;
}
.homeMain_user_detail{
z-index: 999;
position: absolute;
top: calc(100% + .5rem);
background: #fff;
width: 32rem;
height: auto;
opacity: 0;
right: 0px;
display: none;
// box-shadow: 0 0px 10px 1px rgba(0, 0, 0, 0.12);
text-align: center;
flex-direction: column;
align-items: center;
padding: 1.2rem 2rem;
border: 2px solid #000;
border-radius: 2rem;
.username,.homeMain_user_detail_attention,.homeMain_subscribe{
margin-bottom: 2rem;
}
.homeMain_user_icon{
position: relative;
}
.homeMain_subscribe{
padding: 2rem;
background: #f3f3f6;
border-radius: 1.4rem;
cursor: pointer;
width: 100%;
> div{
display: flex;
margin-bottom: 2rem;
}
> div:last-child{
margin-bottom: 0;
}
.font{
font-size: 1.6rem;
font-weight: 600;
margin-right: 1rem;
}
.stateSucsess{
color: #3ab45c;
}
.stateError{
color: #b43a3a;
}
.time{
font-size: 1.4rem;
font-weight: 400;
margin-left: auto;
}
}
.homeMain_select{
width: 100%;
.select_item {
padding: 0 1rem;
border-radius: .8rem;
line-height: 4rem;
color: #4d4d4d;
display: flex;
align-items: center;
cursor: pointer;
user-select: none;
width: 100%;
flex-wrap: wrap;
&:hover {
background: #f3f3f6;
}
.iconfont ,.fi-rr-book-user {
// font-size: 1.4rem;
}
.select_item_des {
font-size: 1.6rem;
margin-left: 1rem;
font-weight: 500;
}
}
.select_item_long{
border-bottom: 1px solid #eceaea;
margin: 2rem 0;
}
.icon-xiala{
margin-left: auto;
&.active{
transform: rotate(180deg);
}
}
.select_list{
height: 0;
overflow: hidden;
transition: all .3s;
width: 100%;
margin: 0;
> li{
padding-left: 2.5rem;
}
&.active{
height: auto;
}
}
}
.homeMain_user_detail_attention{
width: 100%;
display: flex;
justify-content: space-between;
padding-left: 3.5rem;
padding-right: 3.5rem;
.attention_item{
display: flex;
flex-direction: column;
align-items: center;
}
.attention_item_active{
cursor: pointer;
}
.attention_item_active:hover{
color: #39215b;
span{
color: #39215b;
}
}
div{
font-size: 1.6rem;
font-weight: 600;
}
span{
font-size: 1.4rem;
color: #949eae;
}
}
}
}
}
> .router{
flex: 1;
overflow: hidden;
padding: 0 6rem;
}
}
}
}
.homeMain_heade {
@@ -702,159 +1150,7 @@ export default defineComponent({
position: relative;
top: 0.3rem;
}
.homeMain_user{
.homeMain_user_icon{
height: 6rem;
width: 6rem;
position: relative;
transform-origin: top;
overflow: hidden;
z-index: 2;
left: 0;
border-radius: 50%;
cursor: pointer;
background: #fff;
img{
width: 100%;
height: 100%;
object-fit: contain;
}
// transition: all .3s;
}
.homeMain_user_detail{
position: absolute;
top: calc(100% + .5rem);
background: #fff;
width: 32rem;
height: auto;
opacity: 0;
display: none;
// box-shadow: 0 0px 10px 1px rgba(0, 0, 0, 0.12);
text-align: center;
flex-direction: column;
align-items: center;
padding: 1.2rem 2rem;
border: 2px solid #000;
border-radius: 2rem;
.username,.homeMain_user_detail_attention,.homeMain_subscribe{
margin-bottom: 2rem;
}
.homeMain_user_icon{
position: relative;
}
.homeMain_subscribe{
padding: 2rem;
background: #f3f3f6;
border-radius: 1.4rem;
cursor: pointer;
width: 100%;
> div{
display: flex;
margin-bottom: 2rem;
}
> div:last-child{
margin-bottom: 0;
}
.font{
font-size: 1.6rem;
font-weight: 600;
margin-right: 1rem;
}
.stateSucsess{
color: #3ab45c;
}
.stateError{
color: #b43a3a;
}
.time{
font-size: 1.4rem;
font-weight: 400;
margin-left: auto;
}
}
.homeMain_select{
width: 100%;
.select_item {
padding: 0 1rem;
border-radius: .8rem;
line-height: 4rem;
color: #4d4d4d;
display: flex;
align-items: center;
cursor: pointer;
user-select: none;
width: 100%;
flex-wrap: wrap;
&:hover {
background: #f3f3f6;
}
.iconfont ,.fi-rr-book-user {
// font-size: 1.4rem;
}
.select_item_des {
font-size: 1.6rem;
margin-left: 1rem;
font-weight: 500;
}
}
.select_item_long{
border-bottom: 1px solid #eceaea;
margin: 2rem 0;
}
.icon-xiala{
margin-left: auto;
&.active{
transform: rotate(180deg);
}
}
.select_list{
height: 0;
overflow: hidden;
transition: all .3s;
width: 100%;
margin: 0;
> li{
padding-left: 2.5rem;
}
&.active{
height: auto;
}
}
}
.homeMain_user_detail_attention{
width: 100%;
display: flex;
justify-content: space-between;
padding-left: 3.5rem;
padding-right: 3.5rem;
.attention_item{
display: flex;
flex-direction: column;
align-items: center;
}
.attention_item_active{
cursor: pointer;
}
.attention_item_active:hover{
color: #39215b;
span{
color: #39215b;
}
}
div{
font-size: 1.6rem;
font-weight: 600;
}
span{
font-size: 1.4rem;
color: #949eae;
}
}
}
}
.username {
font-size: 1.8rem;
color: #1a1a1a;

View File

@@ -57,7 +57,6 @@ import { defineComponent, toRefs, reactive, ref , nextTick,computed, onMounted,
import { isEmail } from "@/tool/util";
import { setCookie, getCookie, WriteCookie,clonAllCookie } from "@/tool/cookie";
import VerificationCodeInput from "@/component/LoginPage/verificationCodeInput.vue";
import Habit from "@/component/Detail/habit.vue";
import { Https } from "@/tool/https";
import { Modal, message } from "ant-design-vue";
import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
@@ -70,7 +69,6 @@ import { ScrollTrigger } from "gsap/ScrollTrigger";
export default defineComponent({
components: {
VerificationCodeInput,
Habit,
},
setup(){
const store = useStore();

View File

@@ -1,11 +1,11 @@
<template>
<div class="events_page" :class="{active:isScroll}">
<div class="modal_title_text modal_search">
<!-- <div class="modal_title_text modal_search">
<div v-show="isScroll || userDetail.systemUser>-1" v-for="item in worksType" :key="item" class="gallery_btn white" @click="setWorksSelect(item)" :class="{active:item.value == worksSelect}">
{{ item.name }}
</div>
<div v-show="!isScroll && userDetail.systemUser == -1" class="gallery_btn active">All</div>
</div>
</div> -->
<div class="page_content" >
<div class="page_content_itemBox">
<div class="page_content_item" v-for="item,index in eventsList" :key="eventsList[eventsList.length-1-index].id" v-fadeIn="isScroll">
@@ -27,7 +27,6 @@
</template>
<script lang="ts">
import { defineComponent,h ,toRefs,ref,reactive,onMounted,nextTick,provide,computed} from 'vue'
// import HeaderComponent from "@/component/HomePage/Header.vue";
// import RobotAssist from "@/component/HomePage/RobotAssist.vue";
import { Https } from "@/tool/https";
import { useI18n } from "vue-i18n";
@@ -204,14 +203,12 @@ export default defineComponent({
.events_page {
border-radius: 4rem;
width: 100%;
// overflow: hidden;
// height: 100%;
height: auto;
min-height: 100%;
padding: 0 6rem;
// min-width: 1440px;
// padding: 0 6rem;
position: relative;
padding-top: 5rem;
// padding-top: 5rem;
display: flex;
flex-direction: column;
.modal_title_text{

View File

@@ -7,7 +7,6 @@
<script lang="ts">
import { defineComponent, h, ref, computed, reactive, toRefs, inject,provide,nextTick,createVNode,onBeforeUnmount, toRef} from "vue";
// import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
// import HeaderComponent from "@/component/HomePage/Header.vue";
import CollectionModal from "@/component/HomePage/collectionModal.vue";
import NewCollectionReview from "@/component/HomePage/NewCollectionReview.vue";
import ExportNewCoolection from "@/component/HomePage/ExportNewCoolection.vue";
@@ -34,7 +33,6 @@ const FileSaver = require("file-saver");
export default defineComponent({
name: "homePage",
components: {
// HeaderComponent,
homeIndex,
NewCollectionReview,
DesignDetail,

View File

@@ -1,20 +1,16 @@
<template>
<div class="works_page" :class="{active:isScroll,'otherUsersActive':otherUsers,'positionLogin':position=='login'}">
<!-- <div class="modal_title_text">
<div>Works</div>
</div> -->
<div class="modal_title_text modal_search" v-if="!otherUsers && position!='login'">
<div class="works_page" :class="{active:isScroll,'otherUsersActive':otherUsers,'positionLogin':true}">
<!-- <div class="works_page" :class="{active:isScroll,'otherUsersActive':otherUsers,'positionLogin':position=='login'}"> -->
<!-- <div class="modal_title_text modal_search" v-if="!otherUsers && position!='login'">
<div v-show="isScroll" v-for="item in worksType" :key="item" class="gallery_btn white" @click="setWorksSelect(item)" :class="{active:item.value == worksSelect}">
{{ item.name }}
</div>
<div v-show="!isScroll" class="modal_title_text_assistant gallery_btn white" :class="{active:'all' == worksSelect}" @click="setWorksSelect({value:'all'})">All</div>
<div v-show="!isScroll" class="modal_title_text_assistant gallery_btn white" :class="{active:'NewYear_2025' == worksSelect}" @click="setWorksSelect({value:'NewYear_2025'})">NewYear_2025</div>
<!-- <div class="modal_search_menu">
<generalMenu :dataList="menuList" @setprintModel="setprintModel" :item="selectMenu"></generalMenu>
</div> -->
</div>
</div> -->
<div class="page_content" >
<Falls ref="fall" @loadend="isShowMark = false" @setPortfolioLike="setPortfolioLike" :isScroll="isScroll" @getImgScale="getImgScale"></Falls>
<Falls ref="fall" @loadend="isShowMark = false" @setPortfolioLike="setPortfolioLike" :isScroll="isScroll" @getImgScale="getImgScale"></Falls>
<div class="page_loading_box" v-show="!isNoData">
<span class="page_loading" v-show="!isShowMark"></span>
<span v-show="isShowMark">
@@ -32,8 +28,7 @@
</template>
<script lang="ts">
import { LoadingOutlined } from "@ant-design/icons-vue";
import { defineComponent,h ,toRefs,ref,reactive,onMounted,nextTick,provide,computed} from 'vue'
// import HeaderComponent from "@/component/HomePage/Header.vue";
import { defineComponent,h ,toRefs,ref,reactive,onMounted,nextTick,watch,computed} from 'vue'
// import RobotAssist from "@/component/HomePage/RobotAssist.vue";
import { Https } from "@/tool/https";
import newScaleImage from "@/component/WorksPage/newScaleImage.vue";
@@ -68,7 +63,8 @@ export default defineComponent({
},
},
setup(prop) {
const router = useRouter()
const router = useRouter() as any
const route = useRoute() as any
let filter:any = reactive({
worksSelect: 'all',
isNull:true,
@@ -135,18 +131,18 @@ export default defineComponent({
let newScaleImageMobile:any = ref()
let fall:any = ref()
let setWorksSelect = (val:any) => {
filter.worksSelect = val.value
filter.worksSelect = val
filter.getListDate.getLikePortfolio = 0
filter.getListDate.getMyPortfolio = 0
filter.getListDate.tagId = ''
if(val.value == 'all'){
}else if(val.value == 'favoriteWorks'){
if(val == 'all'){
}else if(val == 'favoriteWorks'){
filter.getListDate.getLikePortfolio = 1
}else if(val.value == 'myWorks'){
}else if(val == 'myWorks'){
filter.getListDate.getMyPortfolio = 1
}else if(val.value == 'RCAworkshop_2024'){
}else if(val == 'RCAworkshop_2024'){
filter.getListDate.tagId = 1
}else if(val.value == 'NewYear_2025'){
}else if(val == 'NewYear_2025'){
filter.getListDate.tagId = 3
}
filter.getListDate.page = 0
@@ -226,7 +222,7 @@ export default defineComponent({
let setPorfolioDom = ()=>{
filter.isShowMark = false
filter.isNoData = false
getPorfolio()
// getPorfolio()
let worksPage:any = document.querySelector('.works_page')
let imgParent:any = document.querySelector('.works_page .page_loading')
new IntersectionObserver(
@@ -240,6 +236,17 @@ export default defineComponent({
// { root:worksPage }
).observe(imgParent);
}
watch(() => route.query,
(query, oldQuery) => {
if(oldQuery && query?.works == oldQuery?.works)return
let str = query.works
if(!str)str = 'all'
nextTick(()=>{
setWorksSelect(str)
})
},
{ immediate: true } // 立即触发一次以处理初始参数
);
onMounted (()=>{
nextTick(()=>{
setPorfolioDom()

View File

@@ -88,7 +88,6 @@
</template>
<script lang="ts">
import { defineComponent,ref,createVNode,computed,nextTick,provide} from 'vue'
// import HeaderComponent from "@/component/HomePage/Header.vue";
import HistoryDetail from "@/component/Detail/HistoryDetail.vue";
import { Https } from "@/tool/https";
import { formatTime } from "@/tool/util"

View File

@@ -8,7 +8,7 @@
<div class="page_content_body">
<!-- <HeaderComponent></HeaderComponent> -->
<div class="library_page_body">
<div class="library_body_left">
<!-- <div class="library_body_left">
<div>
<div class="library_menu_list" v-for="(menu,index) in menuList" :key="menu.title">
<div :class="['menu_item', selectCode==menu.code ? 'select_menu_item' :'']" @click="selectMenuItem(menu,index)">
@@ -24,7 +24,7 @@
</div>
</div>
</div>
</div>
</div> -->
<div class="library_body_right">
@@ -485,7 +485,6 @@
<script lang="ts">
import { LoadingOutlined } from "@ant-design/icons-vue";
import { defineComponent,h ,ref,createVNode,nextTick,watch,provide,computed,reactive,toRefs} from 'vue'
// import HeaderComponent from "@/component/HomePage/Header.vue";
import ModelPlacement from '@/component/LibraryPage/ModelPlacement.vue';
// import ModelPlacement from '@/component/LibraryPage/ModelPlacementUpdata.vue';
import setLabel from '@/component/LibraryPage/setLabel.vue';
@@ -511,7 +510,6 @@ import generalMenu from "@/component/HomePage/generalMenu.vue";
import UpgradePlan from "@/component/HomePage/UpgradePlan.vue";
export default defineComponent({
components: {
// HeaderComponent,
ModelPlacement,
setLabel,
ModelPlacementMobile,
@@ -893,14 +891,6 @@ export default defineComponent({
};
},
watch:{
searchPictureName(newVal,oldVal){
// clearTimeout(this.getLibraryListInputTime)
// this.getLibraryListInputTime = setTimeout(() => {
// if(newVal != oldVal){
// this.currentPage = 1
// }
// }, 500);
},
scene:{
handler(newVal,oldVal){
if(this.selectCode == 'Printboard' && newVal.value == 'Slogan'){
@@ -911,6 +901,19 @@ export default defineComponent({
this.isSloganHint = ''
}
}
},
'$route.query':{
handler(query, oldQuery) {
if(oldQuery && query?.library == oldQuery?.library)return
let str = query.library
if(!str)str = 'Moodboard'
nextTick(()=>{
console.log()
this.selectMenuItem({code:str})
// setWorksSelect(str)
})
},
immediate: true,
}
},
async mounted(){
@@ -920,6 +923,7 @@ export default defineComponent({
this.uploadUrl = getUploadUrl()
this.token = getCookie("token") || "";
},
methods:{
@@ -958,71 +962,67 @@ export default defineComponent({
});
}
},
selectMenuItem(menu:any,index:any){
if(menu.children?.length){ //证明是有子菜单
menu.showChildren = !menu.showChildren
}else{
if(menu.code != this.upload.level1Type){
this.selectCode = menu.code
this.currentPage = 1
this.total = 0
if(menu.code == 'MyBrand'){
this.getBrandDNAList()
return
}
this.searchPictureName = ''
this.imgList = [],
this.selectImgList = []
this.isTextarea = false
this.value.labelValue = []
if(this.designTypeList[this.selectCode].length >= 1){
this.designType = this.designTypeList[this.selectCode][0].value
}else{
this.designType = ''
}
if(this.selectCode != 'DesignElements'){
this.getClass()
}
if(this.selectCode == 'Sketchboard' || this.selectCode == 'Models')this.getSex()
if(this.selectCode == 'Sketchboard'){
this.positionType = computed(() => {
return this.store.state.UserHabit.Position;
});
this.printModelList = JSON.parse(JSON.stringify(this.store.state.UserHabit.SketchStyle))
let imgList = ['/image/sketch/sketch-thick.jpg','/image/sketch/sketch-medium.jpg','/image/sketch/sketch-fine.jpg']
this.printModelList.forEach((item:any,index:number)=>{
item.img = imgList[index]
})
}
if(this.selectCode == 'Printboard'){
this.printModelList = [
{
num:1,
optype:false,
value:'Painting Style',
label:this.t('Generate.Model1')
},{
num:2,
optype:false,
value:'Illustration Style',
label:this.t('Generate.Model2')
},{
num:3,
optype:false,
value:'Real Style',
label:this.t('Generate.Model3')
},
]
}
if(this.printModelList[0])this.printModel = this.printModelList[0]
this.captionGeneration = ''
this.selectGenerateList = []
this.inputShow = false
this.uploadGenerateOpen('Upload')
selectMenuItem(menu:any){
if(menu.code != this.upload.level1Type){
this.selectCode = menu.code
this.currentPage = 1
this.total = 0
if(menu.code == 'MyBrand'){
this.getBrandDNAList()
return
}
this.upload.level1Type = menu.code
}
this.searchPictureName = ''
this.imgList = [],
this.selectImgList = []
this.isTextarea = false
this.value.labelValue = []
if(this.designTypeList[this.selectCode].length >= 1){
this.designType = this.designTypeList[this.selectCode][0].value
}else{
this.designType = ''
}
if(this.selectCode != 'DesignElements'){
this.getClass()
}
if(this.selectCode == 'Sketchboard' || this.selectCode == 'Models')this.getSex()
if(this.selectCode == 'Sketchboard'){
this.positionType = computed(() => {
return this.store.state.UserHabit.Position;
});
this.printModelList = JSON.parse(JSON.stringify(this.store.state.UserHabit.SketchStyle))
let imgList = ['/image/sketch/sketch-thick.jpg','/image/sketch/sketch-medium.jpg','/image/sketch/sketch-fine.jpg']
this.printModelList.forEach((item:any,index:number)=>{
item.img = imgList[index]
})
}
if(this.selectCode == 'Printboard'){
this.printModelList = [
{
num:1,
optype:false,
value:'Painting Style',
label:this.t('Generate.Model1')
},{
num:2,
optype:false,
value:'Illustration Style',
label:this.t('Generate.Model2')
},{
num:3,
optype:false,
value:'Real Style',
label:this.t('Generate.Model3')
},
]
}
if(this.printModelList[0])this.printModel = this.printModelList[0]
this.captionGeneration = ''
this.selectGenerateList = []
this.inputShow = false
this.uploadGenerateOpen('Upload')
}
this.upload.level1Type = menu.code
},
async sexChange(){
@@ -1860,7 +1860,6 @@ export default defineComponent({
width: 100%;
overflow: hidden;
height: 100%;
padding: 0 6rem;
// min-width: 1440px;
position: relative;
.mark_loading{
@@ -1956,7 +1955,8 @@ export default defineComponent({
}
}
.library_body_right{
width: calc(100% - 23.5rem);
width: 100%;
// width: calc(100% - 23.5rem);
height: 100%;
.header_operate_item{
margin-right: 5rem;

View File

@@ -1,7 +1,16 @@
<template>
<div class="loginPage">
<div class="left">
<Works :isScroll="true" :position="'login'"></Works>
<Works :isScroll="!isMask" :position="'login'"></Works>
<div class="mask" v-show="isMask" @click="()=>isMask = !isMask">
<div class="content">
<div class="userNum">
<div class="title">5 000 000 +</div>
<div>HAPPY USERS</div>
</div>
<div class="info">Millions trust AI products every day</div>
</div>
</div>
</div>
<div class="right">
<div class="Text" v-show="!loginType">
@@ -14,9 +23,9 @@
Continue with one of these:
</div>
<div class="typeList">
<div class="gallery_btn" @click="setLoginType('personal')">personal</div>
<div class="gallery_btn" @click="setLoginType('school')">school</div>
<div class="gallery_btn" @click="setLoginType('enterprise')">enterprise</div>
<div class="gallery_btn white" @click="setLoginType('personal')">personal</div>
<div class="gallery_btn white" @click="setLoginType('school')">school</div>
<div class="gallery_btn white" @click="setLoginType('enterprise')">enterprise</div>
</div>
</div>
<div class="login" v-show="loginType">
@@ -57,6 +66,7 @@ export default defineComponent({
const store = useStore();
const loginData = reactive({
loginType:'',
isMask:true,
})
const dataDom = reactive({
})
@@ -87,6 +97,42 @@ export default defineComponent({
> .left{
width: 60%;
background: #f7f8fa;
position: relative;
> .mask{
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, rgba(0, 0, 0, .8) 100%);
display: flex;
justify-content: center;
align-items: center;
color: #fff;
cursor: pointer;
> .content{
text-align: center;
padding: 15rem;
//黑色径向渐变
background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0) 70%);
.userNum{
line-height: 1;
margin-bottom: 3rem;
> .title{
font-size: 8rem;
font-weight: 900;
}
> div{
font-size: 3rem;
font-weight: 500;
}
}
> .info{
font-size: 4rem;
font-weight: 500;
}
}
}
}
> .right{
display: flex;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -14,7 +14,6 @@
</template>
<script lang="ts">
import { defineComponent,ref,createVNode,computed} from 'vue'
import HeaderComponent from "@/component/HomePage/Header.vue";
import { Https } from "@/tool/https";
import { Modal,message } from 'ant-design-vue';
import RobotAssist from "@/component/HomePage/RobotAssist.vue";
@@ -24,7 +23,6 @@ import { useStore } from "vuex";
import { useI18n } from 'vue-i18n';
export default defineComponent({
components: {
HeaderComponent,
RobotAssist,
payOrder,
},

View File

@@ -10,7 +10,6 @@
<script lang="ts">
import { defineComponent, ref, createVNode, computed } from "vue";
import { setCookie, getCookie, WriteCookie } from "@/tool/cookie";
import HeaderComponent from "@/component/HomePage/Header.vue";
import HistoryDetail from "@/component/Detail/HistoryDetail.vue";
import router from "@/router/index";
import { Https } from "@/tool/https";
@@ -21,7 +20,6 @@ import { useI18n } from "vue-i18n";
import Fingerprint2 from "fingerprintjs2"; //获取浏览器唯一标识
export default defineComponent({
components: {
HeaderComponent,
HistoryDetail,
RobotAssist,
},

View File

@@ -1,574 +0,0 @@
<template>
<div class="trial_page">
<div class="page_content">
<img
class="page_content_bg"
src="@/assets/images/homePage/bg1.jpg"
/>
<div class="page_content_body">
<HeaderComponent></HeaderComponent>
<div class="trial_page_body">
<div class="trial_table_search">
<div class="trial_table_voluntarily">
<span>voluntarily</span>
<a-switch v-model:checked="voluntarily" @change="setIsAutoApproval" />
</div>
<a-range-picker
class="range_picker"
v-model:value="rangePickerValue"
:placeholder="[
$t('HistoryPage.StartDate'),
$t('HistoryPage.EndDate'),
]"
valueFormat="YYYY-MM-DD"
>
<template #suffixIcon>
<span
class="icon iconfont range_picker_icon icon-rili"
></span>
</template>
</a-range-picker>
<div class="trial_state">
<div class="trial_current" @click="setState">
{{currentState.name}}
<div
:class="['icon', 'iconfont', 'icon-xiala']"
@click.stop=""
></div>
</div>
<div class="header_user_content" :class="{active:currentState.state}">
<!-- <span class="icon iconfont icon-yuyan"></span> -->
<div class="username" v-for="item,index in state" :key="item" @click.stop="setStateItem(item)">{{ item.name }}</div>
</div>
</div>
<div class="content_search_block">
<input
class="search_input"
:placeholder="$t('HistoryPage.inputContent1')"
v-model="searchCollectionName"
@keydown.enter="searchHistoryList()"
/>
<div
class="search_icon_block"
@click="searchHistoryList()"
>
<span class="icon iconfont icon-sousuo"></span>
</div>
</div>
</div>
<div class="trial_table_content" ref="historyTable">
<a-table
:columns="columns"
:data-source="collectionList"
:scroll="{ y: historyTableHeight }"
@change="changePage"
:pagination="{
showSizeChanger: true,
current: currentPage,
pageSize: pageSize,
total: total,
showQuickJumper: true,
bordered: false,
}"
>
<template
#bodyCell="{ column, text, record, index }"
>
<div
class="operate_list"
v-if="column?.Operations"
>
<div
v-show="status == 0"
class="operate_item"
@click="setConsent(record, index)"
>
consent
</div>
<div
v-show="status == 0"
class="operate_item"
@click="setRefuse(record, index)"
>
refuse
</div>
<!-- <div
class="operate_item"
@click="deleteGroup(record, index)"
>
Delete
</div> -->
</div>
</template>
</a-table>
</div>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import { defineComponent, ref, createVNode, computed } from "vue";
import HeaderComponent from "@/component/HomePage/Header.vue";
import HistoryDetail from "@/component/Detail/HistoryDetail.vue";
import router from "@/router/index";
import { Https } from "@/tool/https";
import { formatTime } from "@/tool/util";
import { Modal, message } from "ant-design-vue";
import { useStore } from "vuex";
import RobotAssist from "@/component/HomePage/RobotAssist.vue";
import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
import { useI18n } from "vue-i18n";
export default defineComponent({
components: {
HeaderComponent,
HistoryDetail,
RobotAssist,
},
setup() {
const store = useStore()
let rangePickerValue: any = ref([]);
let renameData: any = ref({}); //修改名字选中的数据
const columns: any = computed(() => {
return [
{
title: 'Email',
align: "center",
ellipsis: true,
width: 170,
dataIndex: "email",
key: "email",
},
{
title: 'Create Time',
align: "center",
ellipsis: 200,
dataIndex: "updateTime",
key: "updateTime",
// customRender: (record: any) => {
// let time = formatTime(
// record.text / 1000,
// "YYYY-MM-DD hh:mm:ss"
// );
// return time;
// },
},
{
title: 'State',
align: "center",
ellipsis: true,
width: 150,
dataIndex: "status",
key: "status",
customRender: (record: any) => {
let str
if(record.value == 0){
str ='pending'
}else if(record.value == 1){
str ='agree'
}else if(record.value == 2){
str ='rejected'
}
return str;
},
},
{
title: 'Address',
align: "center",
ellipsis: true,
width: 150,
dataIndex: "country",
key: "country",
},
{
title: 'Surname',
align: "center",
ellipsis: true,
width: 150,
dataIndex: "surname",
key: "surname",
},
{
title: 'Name',
align: "center",
ellipsis: true,
width: 150,
dataIndex: "userName",
key: "userName",
},
{
title: 'Operations',
key: "operation",
align: "center",
fixed: "right",
width: 200,
// slots:{customRender:'action'}
Operations: true,
},
];
});
let currentState = ref({
name:'all',
value:'',
state:false,
},)
let state:any = ref([
{
name:'all',
value:'',
},
{
name:'pending',
value:0,
},
{
name:'agree',
value:1,
},
{
name:'rejected',
value:2,
},
])
let collectionList: any = ref([]);
let status: any = ref(0);
let voluntarily: any = ref(false);
let userDetail:any= computed(()=>{
return store.state.UserHabit.userDetail
})
return {
rangePickerValue,
columns,
collectionList,
renameData,
userDetail,
status,
currentState,
state,
voluntarily,
};
},
data() {
return {
currentPage: 1,
pageSize: 10,
total: 0,
historyTableHeight: 0,
newCollectionName: "",
renameVisivle: false, //修改名字弹窗
collectionName: "", //选中的名字
searchCollectionName: "",
};
},
mounted() {
let historyTable: any = this.$refs.historyTable;
this.historyTableHeight = historyTable.clientHeight - 130;
this.gettrialList();
if (this.userDetail.userId == 83 || this.userDetail.userId == 88 || this.userDetail.userId == 6) {
} else {
router.replace("/home");
return
}
this.getIsAutoApproval()
},
methods: {
//改变页码
changePage(e: any) {
this.currentPage = e.current;
this.pageSize = e.pageSize;
this.gettrialList();
},
//查询列表
searchHistoryList() {
this.currentPage = 1;
this.gettrialList();
},
//获取是否自动审批
getIsAutoApproval(){
Https.axiosPost(Https.httpUrls.getIsAutoApproval, {}).then(
(rv: any) => {
this.voluntarily = rv
}
);
},
setIsAutoApproval(){
Https.axiosPost(Https.httpUrls.switchIsAutoApproval, {}).then(
(rv: any) => {
this.getIsAutoApproval
}
);
},
//获取列表
gettrialList() {
let startDate: any = this.rangePickerValue
? new Date(this.rangePickerValue[0]).getTime()
: "";
let endDate: any = this.rangePickerValue
? new Date(this.rangePickerValue[1]).getTime()
: "";
let data = {
page: this.currentPage,
size: this.pageSize,
status: this.currentState.value,
// startDate:startDate,
// endDate:endDate
};
Https.axiosPost(Https.httpUrls.trialOrderList, data).then(
(rv: any) => {
this.collectionList = rv.content;
}
);
},
setConsent(record: any, index: number){
const formData = new FormData()
formData.append('ids',record.id)
let config:any = {headers:{'Content-Type':'multipart/form-data','Accept':'*/*' }}
Https.axiosPost(Https.httpUrls.trialOrderApproval, formData,config).then(
(rv: any) => {
message.success('同意成功~')
}
);
},
setRefuse(record: any, index: number){
const formData = new FormData()
formData.append('ids',record.id)
let config:any = {headers:{'Content-Type':'multipart/form-data','Accept':'*/*' }}
Https.axiosPost(Https.httpUrls.trialOrderRefuse, formData,config).then(
(rv: any) => {
this.gettrialList();
message.success('拒绝成功~')
}
);
},
//删除分组
// deleteGroup(record: any, index: number) {
// let deleteGroupFun = (id: any, index: number) => {
// let data = {
// userGroupId: id,
// };
// Https.axiosPost(Https.httpUrls.deleteUserGroup, data).then(
// (rv: any) => {
// this.collectionList.splice(index, 1);
// }
// );
// };
// Modal.confirm({
// title: "",
// icon: createVNode(ExclamationCircleOutlined),
// okText: "Yes",
// cancelText: "No",
// centered: true,
// mask: false,
// onOk() {
// deleteGroupFun(record.id, index);
// },
// });
// },
setState(){
this.currentState.state = true
},
setStateItem(item:any){
this.currentState = item
this.currentState.state = false
},
},
});
</script>
<style lang="less">
.trial_page {
width: 100%;
height: 100%;
padding: 0 6rem;
overflow: hidden;
// min-width: 1440px;
position: relative;
.page_content {
position: relative;
.page_content_bg {
position: absolute;
width: 100%;
height: 100%;
}
.page_content_body {
position: absolute;
width: 100%;
height: 100%;
box-sizing: border-box;
.trial_page_body {
width: 100%;
height: calc(100% - 7rem);
padding: 0 2.5rem 4rem;
box-sizing: border-box;
.trial_table_search {
display: flex;
align-items: center;
margin-top: 5rem;
color: #fff;
.range_picker {
width: 36rem;
height: 4.8rem;
.ant-picker-input > input {
font-size: 1.6rem;
}
.range_picker_icon {
font-size: 2.2rem;
}
}
.trial_table_voluntarily{
padding: 0 2rem;
margin: 0 2rem;
margin-left: 0;
// border: 0.1rem solid #f1f1f1;
span{
}
>button{
transform: scale(.8);
}
}
.content_search_block {
margin-left: 4rem;
display: flex;
.search_input {
width: 32.8rem;
padding-left: 1.5rem;
height: 4.8rem;
line-height: 4.6rem;
background: #ffffff;
border: 0.1rem solid #f1f1f1;
font-size: 1.6rem;
font-weight: 400;
&::placeholder {
color: #c2c2c2;
}
}
.search_icon_block {
width: 7.2rem;
height: 4.8rem;
line-height: 4.8rem;
text-align: center;
background: #343579;
cursor: pointer;
.icon-sousuo {
font-size: 2rem;
color: #ffffff;
}
}
}
.trial_state {
border: 0.1rem solid #f1f1f1;
position: relative;
width: 20rem;
margin: 0 2rem;
padding: 0 2rem;
cursor: pointer;
.trial_current{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.header_user_content {
position: absolute;
border: 2px solid;
border-radius: 1rem;
overflow: hidden;
top: 0;
transform: translateY(6rem);
z-index: 2;
display: none;
margin-left: -2rem;
.username{
padding: 0 2rem;
background: #ffffff;
color: #000;
}
.username:hover{
background: #e1e1e1;
}
&.active{
display: block;
}
}
}
}
.trial_table_content {
margin-top: 2.6rem;
width: 100%;
height: calc(100% - 13.7rem);
background: rgba(255, 255, 255, 0.3);
padding-bottom: 3rem;
border-radius: 2rem;
backdrop-filter: blur(3rem);
overflow: hidden;
box-shadow: 0px 0px 18px rgba(0, 0, 0, 0.38);
.ant-table {
background: transparent;
}
.ant-table-body {
overflow-y: auto !important;
-ms-overflow-style: none;
overflow: -moz-scrollbars-none;
&::-webkit-scrollbar {
width: 0 !important;
}
}
.ant-table-thead > tr > th {
background: #ffffff00;
color: #fff;
border-bottom: none;
backdrop-filter: blur(1rem);
}
.ant-table-tbody > tr > td {
border: none;
background: transparent;
// color: #fff;
}
.ant-table-tbody > tr {
&:hover > td {
background: #ffffff3a;
}
}
.ant-table-pagination-right {
padding-right: 3.5rem;
}
.operate_list {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 1rem;
.operate_item {
font-size: 1.4rem;
font-family: Roboto;
font-weight: 400;
color: #343579;
cursor: pointer;
}
}
}
}
}
}
}
</style>