2.6发版合并

This commit is contained in:
X1627315083
2025-02-05 10:09:53 +08:00
177 changed files with 15452 additions and 9320 deletions

View File

@@ -74,7 +74,6 @@ import { Https } from "@/tool/https";
import { useStore } from "vuex";
import { useRouter,useRoute } from 'vue-router'
import GO from "@/tool/GO";
import { getCookie } from "@/tool/cookie";
import { country } from "@/tool/country";
import { getUploadUrl } from "@/tool/util";
// import { forEach } from "jszip";
@@ -214,6 +213,35 @@ export default defineComponent({
// isShow:true,
// },
],
},{
name:'Approval Affiliate',
icon:'usetime',
route:'/administrator/affiliateAudit',
key:'sub10',
isShow:true,
},{
name:'Transaction',
icon:'usetime',
expandIcon:'icon-xiala',
key:'sub11',
isShow:true,
children: [
{
name:'Transaction Record',
route:'/administrator/TransactionTable',
icon:'',
key:'sub11-1',
isShow:true,
},
// {
// code:'ROLE_MANAGER',
// name:'Access Permission',
// route:'/home/excil2',
// icon:'',
// key:'/home/excil33',
// isShow:true,
// },
],
}],
openKeys: [],
selectedKeys: ['sub1'],
@@ -239,16 +267,6 @@ export default defineComponent({
router.push('/home');
}
onMounted(() => {
let cookieInfo = getCookie('userInfo') || ''
if(cookieInfo){
// menuList.value = JSON.parse(menuListSession)
// userInfo.value = JSON.parse(cookieInfo)
// state.selectedKeys = [route.path]
// getBreadData(route.name)
// getTitle(menuList.value, route.path)
}else{
}
state.rootSubmenuKeys.forEach((item:any) => {
if(item.children){
item.children.forEach((item:any) => {
@@ -268,6 +286,11 @@ export default defineComponent({
store.commit('setAllUserList',rv);
}
})
Https.axiosGet(Https.httpUrls.getCities,).then((rv: any) => {
if (rv) {
store.commit('setAllCitiesList',rv);
}
})
let allCountry = country
sessionStorage.setItem('allCountry',JSON.stringify(allCountry));
// state.nowPageName = state.rootSubmenuKeys[0].name

View File

@@ -4,20 +4,23 @@
<div class="homeMain_right_content">
<div class="homeMain_user">
<div class="homeMain_user_icon" @click="openAccount">
<img :src="userInfo?.avatar" alt="">
<img :src="userDetail.avatar" alt="">
</div>
<div class="homeMain_user_detail">
<div v-if="isTest" class="username">{{$t('Header.hello')}}@{{ $t('isTest.userName') }}</div>
<div v-else class="username">{{$t('Header.hello')}}@{{ cookieUserInfo?.userName }}</div>
<div class="homeMain_user_detail_item homeMain_user_detail_attention">
<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>{{ userInfo?.followeeCount }}</div>
<div>{{ userDetail?.followeeCount }}</div>
<span>{{$t('account.Follow')}}</span>
</div>
<div class="attention_item">
<div>{{ userInfo?.followerCount }}</div>
<div>{{ userDetail?.followerCount }}</div>
<span>{{$t('account.Fans')}}</span>
</div>
<!-- <div class="attention_item">
@@ -25,30 +28,56 @@
<span>作品数</span>
</div> -->
</div>
<div class="homeMain_user_detail_item homeMain_user_detail_setUser" @click="openAccount">
<i class="fi fi-rr-user"></i>
<div>{{$t('Header.personal')}}</div>
<i class="icon iconfont icon-xiala"></i>
<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>
<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 class="homeMain_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')}}@{{ cookieUserInfo?.userName }}</div>
<div
v-if="!isMurmur"
:class="[
'icon',
'iconfont',
'icon-xiala',
isShowOperate ? 'icon_rotate' : '',
]"
@click.stop="changeShowOperateContent()"
></div>
</div>
<div
class="trialApproval button_second credits hideChecked"
>
@@ -63,36 +92,17 @@
<!-- <i @click="Assignment" class="fi fi-rr-gift" title="Assignment"></i> -->
<i @click="UpgradePlan" title="Purchase" class="fi fi-rr-shop"></i>
</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>
<!-- <nav class="homeMain_nav_content">
<router-link :class="['nav_item',$route.name === 'homePage' ? 'select_nav' : '', ]" :to="`/home/homePage`">
{{$t('Header.HOME')}}
</router-link>
<router-link :class="['nav_item',$route.name === 'library' ? 'select_nav' : '', ]" :to="`/home/library`">
{{$t('Header.LIBRARY')}}
</router-link>
<router-link :class="['nav_item',$route.name === 'history' ? 'select_nav' : '', ]" :to="`/home/history`">
{{$t('Header.HISTORY')}}
</router-link>
<router-link :class="['nav_item',$route.name === 'works' ? 'select_nav' : '', ]" :to="`/home/works`">
{{$t('Header.WORKS')}}
</router-link>
</nav> -->
<navRouter :routerList="navRouterList"></navRouter>
<div class="homeMain_right">
<!-- <img
class="homeMain_logo"
@click="turnToNewPage('https://www.aidlab.hk/en/')"
src="@/assets/images/loginPage/aida_logo.png"
/> -->
<div class="trialApproval credits message">
<div class="message_iconItem">
<a-badge :count="messageNum">
<i class="fi fi-rr-envelope" @click="openMessage"></i>
</a-badge>
</div>
<div class="message_iconItem">
<a-badge :count="messageType?.newPosted">
<!-- <i class="fi fi-rr-envelope" @click="openMessage"></i> -->
@@ -106,49 +116,11 @@
<Habit></Habit>
</div>
<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="openTask()">
<i class="icon iconfont icon-renwu"></i>
<span class="select_item_des">{{$t('Header.TaskList')}}</span>
</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="AdministratorUserIdList.indexOf(cookieUserInfo?.userId) >= 0" :to="`/administrator`">
<span class="icon iconfont icon-yonghu"></span>
<span class="select_item_des">Administrator</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" @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>
<payOrder ref="payOrder"></payOrder>
<UpgradePlan ref="UpgradePlan"></UpgradePlan>
<TaskPage ref="TaskPage"></TaskPage>
</header>
<div class="homeMain_content_body">
<!-- <router-view v-slot="{ Component }" @setTask = "setTask">
<keep-alive>
@@ -156,18 +128,27 @@
</keep-alive>
<component :key="$route.name" :is="Component" v-if="!$route.meta.keepAlive"/>
</router-view> -->
<router-view @setTask = "setTask" :getLangIsShowMark="getLangIsShowMark"></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>
<RobotAssist></RobotAssist>
<scaleVideo ref="scaleVideo"></scaleVideo>
<!-- 进行续订 -->
<renew ref="renew"></renew>
<!-- 绑定邮箱 -->
<bindEmail ref="bindEmail"></bindEmail>
</div>
</template>
<script >
import { defineComponent, createVNode, ref,toRefs, reactive, computed, onMounted } from "vue";
import { defineComponent, createVNode, ref,toRefs, reactive, computed, onMounted, nextTick } from "vue";
import { isEmail } from "@/tool/util";
import { setCookie, getCookie, WriteCookie,clonAllCookie } from "@/tool/cookie";
import payOrder from "@/component/Pay/payOrder.vue";
import VerificationCodeInput from "@/component/LoginPage/verificationCodeInput.vue";
import renew from "@/component/HomePage/renew.vue";
import Habit from "@/component/Detail/habit.vue";
import TaskPage from "@/component/HomePage/TaskPage.vue";
import UpgradePlan from "@/component/HomePage/UpgradePlan.vue";
@@ -178,6 +159,7 @@ import RobotAssist from "@/component/HomePage/RobotAssist.vue";
import scaleVideo from "@/component/HomePage/scaleVideo.vue";
import newPosted from "@/component/HomePage/newPosted.vue";
import navRouter from "@/component/modules/navRouter.vue";
import bindEmail from "@/component/HomePage/bindEmail.vue";
import { useStore } from "vuex";
import { setLang } from "@/tool/guide";
import showViewVideo from "@/tool/mount";
@@ -189,6 +171,7 @@ import MyEvent from "@/tool/myEvents";
export default defineComponent({
components: {
VerificationCodeInput,
renew,
Habit,
RobotAssist,
scaleVideo,
@@ -197,15 +180,15 @@ export default defineComponent({
payOrder,
TaskPage,
navRouter,
bindEmail,
},
setup(){
const store = useStore();
const {t} = useI18n()
const {locale} = useI18n()
let userInfo= computed(()=>{
return store.state.UserHabit.userInfo
let userDetail= computed(()=>{
return store.state.UserHabit.userDetail
})
let isTest = ref()
let isMurmur = ref()
let credits = computed(()=>{
return store.state.UserHabit.credits.value
@@ -213,7 +196,6 @@ export default defineComponent({
let activeCredits = ref(false)
let getLangIsShowMark = ref(true)
let AdministratorUserIdList = [88,6,46,31,73,83,87,4,12201,12592]
let navRouterList = ref([])
let messageNum = computed(()=>{
return store.state.UserHabit.messageSystem.messageNum
@@ -223,14 +205,13 @@ export default defineComponent({
})
let stateList = reactive({
isNewPosted:false,
isShowOperate:false,
isLanguage:false,
})
let isNewPosted = ref(false)
let isShowOperate = ref(false)
let isLanguage = ref(false)
let newPosted = ref(null)
let getUnreadCount = ()=>{
Https.axiosGet(Https.httpUrls.getUnreadCount).then((rv)=>{
if(rv){
@@ -252,7 +233,7 @@ export default defineComponent({
isObj = true
}
});
if(isObj)store.commit('setUserInfo',obj)
if(isObj)store.commit('upUserDetail',obj)
store.commit('setMessageSystem',data)
}
@@ -274,14 +255,6 @@ export default defineComponent({
);
}
//点击下拉图标出现操作
let changeShowOperateContent=() =>{
stateList.isShowOperate = !stateList.isShowOperate;
document.addEventListener(
"click",
closeShowOperateContent,
false
);
}
let changeLanguage=() =>{
stateList.isLanguage = !stateList.isLanguage;
document.addEventListener(
@@ -293,12 +266,14 @@ export default defineComponent({
//关闭下拉图标
let closeShowOperateContent=() =>{
stateList.isShowOperate = false;
stateList.isLanguage = false
stateList.isNewPosted = false
document.removeEventListener("click", closeShowOperateContent);
}
let renew = ref(null)
const subscribe = ()=>{
renew.value.init()
}
onMounted(()=>{
getUnreadCount()
navRouterList.value = [
@@ -327,38 +302,31 @@ export default defineComponent({
})
return {
store,
userInfo,
userDetail,
t,
locale,
isTest,
isMurmur,
credits,
activeCredits,
getLangIsShowMark,
AdministratorUserIdList,
navRouterList,
messageNum,
messageType,
...toRefs(stateList),
newPosted,
openNewPosted,
changeShowOperateContent,
changeLanguage,
closeShowOperateContent,
renew,
subscribe,
}
},
data() {
return {
bindEmailVisible: false,
isHaveBindEmail: false,
bindEmailStep: 1,
email: "",
emailCode: ["", "", "", "", "", ""], //邮箱验证码
time: 60, //60秒倒计时
timer: 0,
cookieUserInfo: {
userId:-1
},
timerOperate: null,
numTime: 30,
timerSec: null,
@@ -377,29 +345,30 @@ export default defineComponent({
],
};
},
watch: {
// credits.value(newVal,oldVal){
// console.log(String(newVal).length);
// }
},
directives:{
moveOpenDetal:{
mounted (el,binding) {
},
}
},
mounted() {
let isTest = getCookie('isTest')//获取是否是试用用户
this.isTest =JSON.parse(isTest)
async mounted() {
await new Promise((resolve, reject) => {
this.store.dispatch('getLangType').then(()=>{
this.getLangIsShowMark = false
resolve()
}).catch(()=>{
this.getLangIsShowMark = false
reject()
})
})
let isMurmur = getCookie('isMurmur')//获取是否是试用用户
this.isMurmur =JSON.parse(isMurmur)
this.cookieUserInfo = JSON.parse(getCookie("userInfo"));
if (!this.cookieUserInfo) {
this.$router.replace("/");
if (this.userDetail.userId && this.userDetail.userId > -1) {
this.accountIsLogin();
} else {
this.accountIsLogin(this.cookieUserInfo);
this.$router.replace("/");
}
this.isHaveBindEmail = this.cookieUserInfo?.email ? true : false;
if(!this.isMurmur){
this.operateClick();
document.addEventListener("click", this.operateClick);
@@ -407,24 +376,19 @@ export default defineComponent({
this.getCredits()
this.getLang('')
//语言适配
this.store.dispatch('getLangType').then(()=>{
this.getLangIsShowMark = false
})
let tl1 = gsap.timeline({ paused: true });
let heradeRight = document.querySelector('.homeMain_max .homeMain_right_content')
let userDetailMax = document.querySelector('.homeMain_max .homeMain_user')
let userDetailIcon = document.querySelector('.homeMain_max .homeMain_user_icon')
let userName = document.querySelector('.homeMain_max .homeMain_user_content')
let userDetail = document.querySelector('.homeMain_max .homeMain_user_detail')
// let anmiation = TweenMax.to(userDetailMax,1, {'margin-top':'30px',opacity:1})
// anmiation.stop()
let state
tl1
.to(userDetail,.3, {opacity:1,display:'flex'})
.to(userDetailIcon,.3, {'left':'15rem',y:'25%',x:'-50%',scale:1.5,opacity:1},'-=.3')
.to(userName,.3, {opacity:0},'-=.3')
// .to(userDetailIcon,.3, {'left':'16rem',y:'25%',x:'-50%',scale:1.5,opacity:1},'-=.3')
let overTime
let outTime
userDetailMax.addEventListener('mouseenter',(event)=>{
@@ -433,7 +397,6 @@ export default defineComponent({
clearTimeout(outTime)
overTime = setTimeout(() => {
state = true
this.isShowOperate = false
this.isLanguage = false
tl1.play()
}, 500);
@@ -449,15 +412,17 @@ export default defineComponent({
tl1.reverse()
}, 500);
})
let orderId = sessionStorage.getItem('orderId');//进入首页后是否打开订单列表查询到订单
if(orderId){
let payOrder = this.$refs.payOrder
payOrder.init(orderId)
}
},
methods: {
setTask(data){
this.openTask(data)
},
turnToNewPage(url) {
window.open(url);
},
turnToPage(name) {
let noRefresh = name === "home" ? true : false;
this.$router.push({ name: name, params: { noRefresh: noRefresh } });
@@ -513,11 +478,10 @@ export default defineComponent({
//登出
async logout() {
let data = {
userId: this.cookieUserInfo.userId,
userId: this.userDetail.userId,
};
let isTest = getCookie('isTest')
// console.log(getCookie("token"));
if(JSON.parse(isTest)){
if(this.userDetail.systemUser == 3){
await Https.axiosGet(Https.httpUrls.trialUserLogout,).then((rv) => {
Https.axiosPost(Https.httpUrls.accountLogout, data).then((rv) => {
this.$router.replace("/");
@@ -530,7 +494,7 @@ export default defineComponent({
});
this.$router.replace("/");
}
this.store.commit('clearSystemUser')
this.store.commit('createDetail')
// WriteCookie("token");
clonAllCookie()
@@ -538,9 +502,9 @@ export default defineComponent({
},
//判断是否登录
accountIsLogin(userInfo) {
accountIsLogin() {
let data = {
userId: userInfo.userId,
userId: this.userDetail.userId,
};
Https.axiosPost(Https.httpUrls.accountIsLogin, data).then((rv) => {
if (!rv) {
@@ -648,23 +612,23 @@ export default defineComponent({
.homeMain_heade {
flex-shrink: 0;
display: flex;
justify-content: space-between;
// padding: 0 30px;
padding: 0 9rem;
padding: 2rem 6rem;
width: 100%;
height: 7rem;
height: auto;
background: rgba(255, 255, 255, 0.2);
// border-bottom: 0.1rem solid rgba(3, 3, 3, 0.1);
border-bottom: 1px solid #e1e1e1;
position: relative;
align-items: center;
z-index: 1049;
z-index: 9;
background-color: #fff;
.homeMain_right{
width: 33%;
// width: 33%;
width: auto;
display: flex;
justify-content: flex-end;
align-items: center;
margin-left: auto;
.message{
display: flex;
width: 6rem;
@@ -716,7 +680,9 @@ export default defineComponent({
// right: 3.2rem;
left: 0;
display: flex;
width: 33%;
// width: 36%;
margin-right: 7rem;
width: auto;
height: 100%;
align-items: center;
.homeMain_icon {
@@ -735,6 +701,7 @@ export default defineComponent({
left: 0;
border-radius: 50%;
cursor: pointer;
background: #fff;
img{
width: 100%;
height: 100%;
@@ -746,24 +713,110 @@ export default defineComponent({
position: absolute;
top: calc(100% + .5rem);
background: #fff;
border-radius: 4px;
width: 30rem;
height: 30rem;
width: 32rem;
height: auto;
opacity: 0;
display: none;
box-shadow: 0 0px 10px 1px rgba(0, 0, 0, 0.12);
padding-top: 4rem;
// box-shadow: 0 0px 10px 1px rgba(0, 0, 0, 0.12);
text-align: center;
flex-direction: column;
align-items: center;
padding: 4rem 3rem;
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: 0 2rem;
border-bottom: 1px solid #e3e5e7;
padding-left: 3.5rem;
padding-right: 3.5rem;
.attention_item{
display: flex;
flex-direction: column;
@@ -778,32 +831,15 @@ export default defineComponent({
color: #39215b;
}
}
div{
font-size: 1.6rem;
font-weight: 600;
}
span{
font-size: 1.4rem;
color: #949eae;
}
}
.homeMain_user_detail_setUser{
display: flex;
align-items: center;
justify-content: flex-start;
cursor: pointer;
width: 100%;
i{
font-size: 2rem;
display: flex;
}
.fi-rr-user{
margin-right: 1rem;
}
.icon-xiala{
margin-left: auto
}
}
.homeMain_user_detail_item{
margin-top: 1rem;
padding-bottom: 1rem;
}
}
}
@@ -816,29 +852,6 @@ export default defineComponent({
margin: .7rem;
}
}
.homeMain_user_content {
// transition: all .3s;
display: flex;
align-items: center;
position: relative;
height: 3.7rem;
&.marLeft2{
margin-left: 2rem;
}
.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;
@@ -847,6 +860,10 @@ export default defineComponent({
padding: 0 1rem;
cursor: auto;
display: flex;
line-height: 6rem;
height: 6rem;
box-sizing: content-box;
border-radius: 4rem;
span{
width: 5rem;
display: inline-block;
@@ -856,10 +873,13 @@ export default defineComponent({
.credits_item{
transition: .3s all;
// height: 4rem;
height: 35px;
height: 100%;
// height: 3.2rem;
div{
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
}
}
@@ -900,33 +920,37 @@ export default defineComponent({
overflow: hidden;
border: 1px solid #000000;
height: auto;
&.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;
// &.select_list{
// top: 56%;
// left: 100%;
// // transform: translateX(5%);
// }
.homeMain_select{
width: 100%;
.select_item {
height: 4.1rem;
color: #4d4d4d;
display: flex;
align-items: center;
cursor: pointer;
user-select: none;
width: 100%;
&:hover {
background: #f7f7f7;
}
&:hover {
background: #f7f7f7;
}
.iconfont ,.fi-rr-book-user {
// font-size: 1.4rem;
}
.iconfont ,.fi-rr-book-user {
font-size: 1.4rem;
}
.select_item_des {
font-size: 1.3rem;
margin-left: 0.8rem;
.select_item_des {
font-size: 1.6rem;
margin-left: 1rem;
font-weight: 500;
}
}
}
}
.modal_component {
.skip_content {

View File

@@ -1,5 +1,5 @@
<template>
<div class="homeRecommend_max Guide_1_16_1">
<div class="homeRecommend_max">
<header class="homeRecommend_heade">
<div class="homeRecommend_right_content">
<div class="homeRecommend_user_content">
@@ -11,40 +11,42 @@
</div>
</div>
<div class="homeRecommend_right">
<a class="started_btn" v-if="systemUser.value == 0" href="https://code-create.com.hk/aida/" target="_blank">Upgrade to an official user</a>
<div class="started_btn" v-if="systemUser.value == 1 && !isMoblie" @click="goHome">Home</div>
<div class="started_btn started_btn2" v-if="systemUser.value != -1" @click="logout">log off</div>
<div class="gallery_btn" v-if="userDetail.systemUser == 1 && !isMoblie" @click="goHome">Home</div>
<div class="gallery_btn white" v-if="userDetail.systemUser != -1" @click="logout">log off</div>
</div>
<div class="homeRecommend_right" v-if="systemUser.value == -1">
<div class="started_btn" @click="setLogin">Login</div>
<div class="started_btn started_btn2" @click="setRegister">Visitor registration</div>
<div class="homeRecommend_right" v-if="userDetail.systemUser == -1">
<div class="gallery_btn" @click="setLogin">Login</div>
<div class="gallery_btn white" @click="setRegister">Sign up</div>
</div>
</header>
<div class="homeRecommend_content_body">
<!-- <div class="homeRecommend_content_body_recommend">
<img src="@/assets/images/homePage/home-bg.png">
<div class="content_body_recommend_center content_body_text">
<div class="content_body_recommend_center_title">
<h1>AiDA</h1>
<h3>bloom your creativity</h3>
</div>
</div>
</div> -->
<div class="homeRecommend_content_body_recommend" id="aaaa">
<div class="content_body_recommend_left mdhidden">
<img class="content_body_img1 content_body_img" src="/image/mainImg/img1.png" alt="">
<img class="content_body_img2 content_body_img" src="/image/mainImg/img2.png" alt="">
<img class="content_body_img3 content_body_img" src="/image/mainImg/img3.png" alt="">
<img class="content_body_img4 content_body_img" src="/image/mainImg/img4.png" alt="">
<img class="content_body_img5 content_body_img" src="/image/mainImg/img5.png" alt="">
</div>
<div class="content_body_recommend_center content_body_text">
<div class="content_body_recommend_center_title">
<h1>AiDA</h1>
<h3>bloom your creativity</h3>
</div>
<div class="content_body_recommend_center_btn">
<a class="started_btn" href="https://code-create.com.hk/aida/" target="_blank">SUBSCRIBE NOW</a>
<a class="started_btn" href="https://code-create.com.hk/aida-trial/" target="_blank">START TRIAL</a>
</div>
</div>
<div class="content_body_recommend_right mdhidden">
<img class="content_body_img1 content_body_img" src="/image/mainImg/img6.png" alt="">
<img class="content_body_img2 content_body_img" src="/image/mainImg/img7.png" alt="">
<img class="content_body_img3 content_body_img" src="/image/mainImg/img8.png" alt="">
<img class="content_body_img4 content_body_img" src="/image/mainImg/img9.png" alt="">
<img class="content_body_img5 content_body_img" src="/image/mainImg/img10.png" alt="">
<img class="content_body_img1 content_body_img" src="/image/mainImg/img5.png" alt="">
<img class="content_body_img2 content_body_img" src="/image/mainImg/img6.png" alt="">
<img class="content_body_img3 content_body_img" src="/image/mainImg/img7.png" alt="">
<img class="content_body_img4 content_body_img" src="/image/mainImg/img8.png" alt="">
</div>
</div>
<Works :isScroll="false"></Works>
@@ -52,12 +54,11 @@
<div class="homeRecommend_content_adminTop" @click="setAdminUp">
<i class="fi fi-rr-arrow-small-up"></i>
</div>
<registerModel ref="registerModel"></registerModel>
</div>
</template>
<script >
import { defineComponent, createVNode, ref , nextTick,computed, onMounted, onBeforeUnmount } from "vue";
import { defineComponent, toRefs, reactive, ref , nextTick,computed, onMounted, onBeforeUnmount } from "vue";
import { isEmail } from "@/tool/util";
import { setCookie, getCookie, WriteCookie,clonAllCookie } from "@/tool/cookie";
import VerificationCodeInput from "@/component/LoginPage/verificationCodeInput.vue";
@@ -72,33 +73,25 @@ import { useI18n } from "vue-i18n";
import { useRouter } from 'vue-router';
import { gsap, TweenMax } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
import registerModel from '@/component/Login/registerModel.vue'
export default defineComponent({
components: {
VerificationCodeInput,
Habit,
Works,
registerModel,
},
setup(){
const store = useStore();
const router = useRouter();
let registerModel = ref()
let data = reactive({
})
let isMoblie = ref(false)
let systemUser = computed(()=>{
return store.state.UserHabit.systemUser
let userDetail = computed(()=>{
return store.state.UserHabit.userDetail
})
let setLogin = ()=>{
router.push("/login");
}
let setRegister = () =>{
// ler
if(window.innerWidth < 768){
registerModel.value.pageWidth = '100%'
}
registerModel.value.init()
// router.push("/register");
}
let setAdminUp = ()=>{
let scrollDom = document.querySelector('.homeRecommend_content_body')
scrollDom.scrollTo({
@@ -107,13 +100,12 @@ export default defineComponent({
});
}
let logout = ()=>{
let userInfo = JSON.parse(getCookie("userInfo"));
let userInfo = store.state.UserHabit.userDetail;
let data = {
userId: userInfo?.userId,
};
store.commit('clearSystemUser')
store.commit('createDetail')
if(!data.userId) return
// console.log(getCookie("token"));
Https.axiosPost(Https.httpUrls.accountLogout, data).then((rv) => {
clonAllCookie();
});
@@ -133,6 +125,9 @@ export default defineComponent({
},500)
}
const setRegister = ()=>{
router.push('/register');
}
onMounted(()=>{
if(window.innerWidth < 768){
isMoblie.value = true
@@ -145,14 +140,15 @@ export default defineComponent({
window.removeEventListener('resize', updataIsMoblie);
});
return {
systemUser,
...toRefs(data),
userDetail,
setLogin,
registerModel,
setRegister,
setAdminUp,
logout,
goHome,
isMoblie,
setRegister,
}
},
data() {
@@ -166,6 +162,7 @@ export default defineComponent({
},
mounted() {
nextTick().then(()=>{
let dom = document.querySelector('.homeRecommend_content_body')
let codeTween = document.querySelectorAll('.homeRecommend_content_body_recommend .content_body_img')
let codeTweenText = document.querySelectorAll('.homeRecommend_content_body_recommend .content_body_text')
@@ -210,7 +207,12 @@ export default defineComponent({
})
},
methods: {
turnToNewPage(url) {
window.open(url);
},
turnToWindow(url) {
window.open(url);
},
},
});
</script>
@@ -230,29 +232,34 @@ export default defineComponent({
display: flex;
justify-content: space-between;
// padding: 0 30px;
padding: 0 9rem;
padding: 1rem 4rem;
width: 100%;
height: 7rem;
// height: 7rem;
flex-shrink: 0;
background: rgba(255, 255, 255, 0.2);
// background: rgba(255, 255, 255, 0.2);
// border-bottom: 0.1rem solid rgba(3, 3, 3, 0.1);
position: relative;
position: absolute;
align-items: center;
z-index: 1049;
z-index: 2;
@media (max-width: 768px) {
z-index: 1000;
}
background-color: #fff;
// background-color: #fff;
.homeRecommend_right{
width: 33%;
display: flex;
justify-content: flex-end;
align-items: center;
.started_btn2{
color: #000;
background: #fff;
border: 2px solid #39215b;
margin-left: 2rem;
.gallery_btn{
// color: #000;
// background: #fff;
// border: 2px solid #39215b;
// margin-left: 2rem;
width: 13rem;
text-align: center;
&.gallery_btn:nth-child(1){
margin-right: 3rem;
}
}
}
.homeRecommend_logo {
@@ -260,11 +267,15 @@ export default defineComponent({
height: 3.2rem;
margin-top: 0;
}
.login_footer_item_text{
margin-left: 5rem;
display: none;
}
.homeRecommend_right_content {
top: 0;
left: 0;
display: flex;
width: 33%;
width: 40%;
height: 100%;
align-items: center;
overflow: hidden;
@@ -306,6 +317,36 @@ export default defineComponent({
&.homeRecommend_content_body::-webkit-scrollbar {
display: none;
}
// .homeRecommend_content_body_recommend{
// // display: flex;
// // justify-content: center;
// position: relative;
// border-bottom: 1px solid #ececec;
// width: 100%;
// img{
// width: 100%;
// }
// .content_body_recommend_center{
// position: absolute;
// top: 40%;
// left: 36rem;
// transform: translateY(-50%);
// .content_body_recommend_center_title{
// h1,h3{
// color: #fff;
// }
// h1{
// font-size: 15rem;
// margin-bottom: 0;
// line-height: 1;
// }
// h3{
// font-size: 6rem;
// }
// }
// }
// }
.homeRecommend_content_body_recommend{
// display: flex;
// justify-content: center;
@@ -328,32 +369,34 @@ export default defineComponent({
.content_body_recommend_right{
right: 0;
.content_body_img1{
width: 20rem;
height: 20rem;
width: 25rem;
height: 55rem;
object-fit: cover;
top: 10rem;
right: calc(20rem + var(--margin));
// top: 10rem;
// right: calc(20rem + var(--margin));
right: 0;
top: 14rem;
}
.content_body_img2{
top: calc(45rem + var(--margin));
width: 15rem;
height: 15rem;
object-fit: cover;
top: calc(30rem + var(--margin));
right: calc(20rem + var(--margin));
}
.content_body_img3{
top: 38rem;
width: 30rem;
height: 30rem;
object-fit: cover;
right: calc(-13rem + var(--margin));
right: calc(41rem + var(--margin));
}
.content_body_img3{
top: calc(40rem + var(--margin));
width: 15rem;
height: 30rem;
object-fit: cover;
right: calc(25rem + var(--margin));
}
.content_body_img4{
width: 20rem;
height: 20rem;
width: 30rem;
height: 25rem;
object-fit: cover;
top: 51rem;
right: calc(20rem + var(--margin));
top: calc(13rem);
right: calc(25rem + var(--margin));
}
.content_body_img5{
width: 20rem;
@@ -366,32 +409,34 @@ export default defineComponent({
.content_body_recommend_left{
left: 0;
.content_body_img1{
width: 15rem;
height: 15rem;
width: 25rem;
height: 55rem;
object-fit: cover;
top: 5rem;
left: calc(20rem + var(--margin));
left: 0;
top: 14rem;
// top: 5rem;
// left: calc(20rem + var(--margin));
}
.content_body_img2{
width: 25rem;
height: 25rem;
object-fit: cover;
top: calc(20rem + var(--margin));
left: calc(20rem + var(--margin));
}
.content_body_img3{
width: 20rem;
height: 20rem;
width: 35rem;
height: 27rem;
object-fit: cover;
top: calc(10rem + var(--margin));
// left: calc(0 + var(--margin));
left: calc(25rem + var(--margin));
}
.content_body_img4{
width: 30rem;
.content_body_img3{
width: 22rem;
height: 30rem;
object-fit: cover;
top: 36rem;
left: calc(-13rem + var(--margin));
top: calc(40rem + var(--margin));
left: calc(27rem + var(--margin));
}
.content_body_img4{
width: 15rem;
height: 18rem;
object-fit: cover;
top: calc(53rem + var(--margin));
left: calc(45rem + var(--margin));
}
.content_body_img5{
width: 20rem;

View File

@@ -1,10 +1,10 @@
<template>
<div class="events_page" :class="{active:isScroll}">
<div class="modal_title_text modal_search">
<div v-show="isScroll || systemUser.value>-1" v-for="item in worksType" :key="item" class="modal_title_text_assistant" @click="setWorksSelect(item)" :class="{active:item.value == worksSelect}">
<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 && systemUser.value == -1" class="modal_title_text_assistant active">All</div>
<div v-show="!isScroll && userDetail.systemUser == -1" class="gallery_btn active">All</div>
</div>
<div class="page_content" >
<div class="page_content_itemBox">
@@ -77,8 +77,8 @@ export default defineComponent({
isShowMark:false,
isNoData:false,//如果数据为空就不加载
})
let systemUser = computed(()=>{
return store.state.UserHabit.systemUser
let userDetail = computed(()=>{
return store.state.UserHabit.userDetail
})
let selectMenu:any = ref({
label:'全部',
@@ -151,7 +151,7 @@ export default defineComponent({
})
return {
...toRefs(filter),
systemUser,
userDetail,
selectMenu,
setWorksSelect,
likeFile,
@@ -208,7 +208,7 @@ export default defineComponent({
// height: 100%;
height: auto;
min-height: 100%;
padding: 0 9rem;
padding: 0 6rem;
// min-width: 1440px;
position: relative;
padding-top: 5rem;
@@ -218,20 +218,13 @@ export default defineComponent({
display: flex;
margin: 0;
padding-bottom: 2.4rem;
.modal_title_text_assistant{
padding: 1rem 3rem;
border-radius: 2rem;
background: #eee;
.gallery_btn{
margin-right: 1rem;
cursor: pointer;
min-width: 12rem;
}
.modal_title_text_assistant:last-child{
.gallery_btn:last-child{
margin-right: 0;
}
.active{
background: #39215b;
color: #fff;
}
.modal_search_menu{
margin-left: auto;
z-index: 10;

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
<div>Works</div>
</div> -->
<div class="modal_title_text modal_search" v-if="!otherUsers">
<div v-show="isScroll" v-for="item in worksType" :key="item" class="modal_title_text_assistant" @click="setWorksSelect(item)" :class="{active:item.value == worksSelect}">
<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" :class="{active:'all' == worksSelect}" @click="setWorksSelect({value:'all'})">All</div>
@@ -279,7 +279,7 @@ export default defineComponent({
// height: 100%;
height: auto;
min-height: 100%;
padding: 0 9rem;
padding: 0 6rem;
// min-width: 1440px;
position: relative;
padding-top: 5rem;
@@ -288,20 +288,13 @@ export default defineComponent({
display: flex;
margin: 0;
padding-bottom: 2.4rem;
.modal_title_text_assistant{
padding: 1rem 3rem;
border-radius: 2rem;
background: #eee;
margin-right: 1rem;
cursor: pointer;
.gallery_btn{
min-width: 12rem;
margin-right: 2rem;
}
.modal_title_text_assistant:last-child{
.gallery_btn:last-child{
margin-right: 0;
}
.active{
background: #39215b;
color: #fff;
}
.modal_search_menu{
margin-left: auto;
z-index: 10;
@@ -315,6 +308,7 @@ export default defineComponent({
min-height: 80%;
height: auto;
background: #f7f8fa;
border-radius: 3rem;
@media (max-width: 768px) {
background: #fff;
}

View File

@@ -1,10 +1,6 @@
<template>
<div class="history_page">
<div class="page_content">
<img
class="page_content_bg"
src="@/assets/images/homePage/bg.png"
/>
<div class="page_content_body">
<!-- <HeaderComponent></HeaderComponent> -->
<div class="history_page_body">
@@ -14,14 +10,18 @@
<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 class="content_search_block">
<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>
<input class="search_input" :placeholder="$t('LibraryPage.inputContent1')" v-model="searchCollectionName" @keydown.enter="searchHistoryList()">
<div class="search_cascader">
<div class="content_search_block generalModel_state">
<div class="generalModel_state_item">
<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>
<div class="generalModel_state_item">
<input class="search_input" :placeholder="$t('LibraryPage.inputContent1')" v-model="searchCollectionName" @keydown.enter="searchHistoryList()">
</div>
<div class="generalModel_state_item">
<el-cascader
:options="options"
filterable
@@ -49,7 +49,8 @@
<div :title="$t('LibraryPage.intersection')" @click="()=>intersection = 0" v-show="intersection == 1" :class="['icon', 'iconfont','icon-bingji1',]"></div>
</div>
<!-- <div class="search_icon_block" @click="getLibraryList('')"><span class="icon iconfont icon-sousuo"></span></div> -->
<div class="generage_btn search_icon_block" @click="searchHistoryList()"><span class="icon iconfont icon-sousuo"></span></div>
<div class="gallery_btn" style="padding: 2rem; line-height: 1;" @click="searchHistoryList('')"><span class="icon iconfont icon-sousuo"></span></div>
</div>
</div>
@@ -398,19 +399,12 @@ export default defineComponent({
.history_page {
width: 100%;
height: 100%;
padding: 0 9rem;
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%;
@@ -420,7 +414,7 @@ export default defineComponent({
.history_page_body{
width: 100%;
height: 100%;
padding: 0 2.5rem 4rem;
padding: 3rem 0;
box-sizing: border-box;
.history_header{
@@ -435,19 +429,7 @@ export default defineComponent({
display: flex;
align-items: center;
.range_picker{
width: 36rem;
height: 3rem;
margin-right: 2rem;
.ant-picker-input > input{
font-size: 1.6rem;
}
.range_picker_icon{
font-size: 2.2rem;
}
}
.ant-picker:hover, .ant-picker-focused{
border-color: #d5d8df;
}
@@ -455,28 +437,7 @@ export default defineComponent({
display: flex;
align-items: center;
width: 140rem;
.search_input{
height: 3rem;
border-radius: 0.5rem;
width: 20rem;
border: 1px solid rgba(0, 0, 0, 0.15);
padding-left: 1.5rem;
border: 0.2rem solid #d5d8df;
font-size: 1.2rem;
font-weight: 400;
margin-right: 2rem;
&::placeholder {
color: #C2C2C2;
}
}
.search_cascader{
// width: 53%;
width: 38rem;
display: flex;
position: relative;
}
.search_icon_block{
width: 5.2rem;
height: 2.8rem;
@@ -493,10 +454,13 @@ export default defineComponent({
}
}
.intersection{
margin-left: 3rem;
cursor: pointer;
margin-right: 3rem;
>div{
font-size: 3rem;
font-weight: 900;
}
}
}
}
@@ -519,24 +483,22 @@ export default defineComponent({
&::-webkit-scrollbar { width: 0 !important }
}
.ant-table-thead > tr > th{
background: #FFFFFF;
}
.ant-table-tbody > tr:hover{
background: #ededed;
}
.ant-table-tbody > tr > td{
border: none;
background: transparent;
}
.ant-table-tbody > tr{
&:hover > td{
background: #FFFFFF;
}
}
.ant-table-pagination-right{
justify-content: center;
}
.ant-table-pagination-right{
padding-right: 3.5rem;
@@ -552,7 +514,7 @@ export default defineComponent({
font-size: 1.4rem;
font-family: Roboto;
font-weight: 400;
color: #343579;
color: #007EE5;
cursor: pointer;
}
}

View File

@@ -36,68 +36,80 @@
<div v-show="selectCode != 'Models' && selectCode != 'DesignElements'" class='header_operate_item pointer' :class="{operate_select:uploadGenerate == 'Generate'}" @click="uploadGenerateOpen('Generate')">{{ $t('LibraryPage.Generate') }}</div>
</div>
<div class="librart_headr_right">
<div class="select_block" v-show="selectCode == 'Sketchboard' || selectCode == 'Models'|| selectCode == 'DesignElements'|| selectCode == 'Printboard'" >
<a-select
ref="select"
v-show="selectCode != 'DesignElements' && selectCode != 'Printboard'"
v-model:value="sex"
:options="sexList"
:fieldNames="{ label: 'name', value: 'value' }"
@change="sexChange"
>
<template #suffixIcon
><span
class="icon iconfont icon-xiala"
style="color: #343579"
></span
></template>
</a-select>
<a-select
ref="select"
v-show="designTypeList[selectCode]?.[0]?.value && selectCode != 'Sketchboard'"
v-model:value="designType"
:options="designTypeList[selectCode]"
@change="handleChange"
:fieldNames="{ label: 'name', value: 'value' }"
>
<template #suffixIcon
><span
class="icon iconfont icon-xiala"
style="color: #343579"
></span
></template>
</a-select>
<a-select
ref="select"
v-show="designTypeList[selectCode]?.[0]?.value && selectCode == 'Sketchboard' && uploadGenerate != 'Generate'"
v-model:value="designType"
:options="designTypeList[selectCode]"
@change="handleChange"
:fieldNames="{ label: 'name', value: 'value' }"
>
<template #suffixIcon
><span
class="icon iconfont icon-xiala"
style="color: #343579"
></span
></template>
</a-select>
<a-select
ref="select"
v-show="SketchGenerateTypeList?.[0]?.value && selectCode == 'Sketchboard' && uploadGenerate == 'Generate'"
v-model:value="SketchGenerateType"
:options="SketchGenerateTypeList"
@change="setSketchGenerateType"
:fieldNames="{ label: 'name', value: 'value' }"
>
<template #suffixIcon
><span
class="icon iconfont icon-xiala"
style="color: #343579"
></span
></template>
</a-select>
<div class="librart_headr_right ">
<div class="generalModel_state " v-show="selectCode == 'Sketchboard' || selectCode == 'Models'|| selectCode == 'DesignElements'|| selectCode == 'Printboard'" >
<div class="generalModel_state_item smail" v-if="selectCode != 'DesignElements' && selectCode != 'Printboard'">
<a-select
ref="select"
v-model:value="sex"
:options="sexList"
size="large"
:fieldNames="{ label: 'name', value: 'value' }"
style="width:20rem"
@change="sexChange"
>
<template #suffixIcon
><span
class="icon iconfont icon-xiala"
style="color: #343579"
></span
></template>
</a-select>
</div>
<div class="generalModel_state_item smail" v-if="designTypeList[selectCode]?.[0]?.value && selectCode != 'Sketchboard'">
<a-select
ref="select"
v-model:value="designType"
:options="designTypeList[selectCode]"
@change="handleChange"
style="width:20rem"
size="large"
:fieldNames="{ label: 'name', value: 'value' }"
>
<template #suffixIcon
><span
class="icon iconfont icon-xiala"
style="color: #343579"
></span
></template>
</a-select>
</div>
<div class="generalModel_state_item smail" v-if="designTypeList[selectCode]?.[0]?.value && selectCode == 'Sketchboard' && uploadGenerate != 'Generate'">
<a-select
ref="select"
v-model:value="designType"
:options="designTypeList[selectCode]"
@change="handleChange"
style="width:20rem"
size="large"
:fieldNames="{ label: 'name', value: 'value' }"
>
<template #suffixIcon
><span
class="icon iconfont icon-xiala"
style="color: #343579"
></span
></template>
</a-select>
</div>
<div class="generalModel_state_item smail" v-if="SketchGenerateTypeList?.[0]?.value && selectCode == 'Sketchboard' && uploadGenerate == 'Generate'">
<a-select
ref="select"
v-model:value="SketchGenerateType"
:options="SketchGenerateTypeList"
@change="setSketchGenerateType"
style="width:20rem"
size="large"
:fieldNames="{ label: 'name', value: 'value' }"
>
<template #suffixIcon
><span
class="icon iconfont icon-xiala"
style="color: #343579"
></span
></template>
</a-select>
</div>
</div>
</div>
</div>
@@ -128,13 +140,16 @@
<div :class="['header_operate_item' , 'fontSize',selectImgList.length>0?'active':'']" @click="deleteBatchPic()">{{ $t('LibraryPage.Delete') }}</div>
<div :class="['header_operate_item' , 'fontSize',selectImgList.length>0?'active':'']" @click="showRenameModal(selectImgList,'batch')">{{ $t('LibraryPage.Rename') }}</div>
</div>
<div class="content_search_block">
<input
class="search_input"
:placeholder="$t('LibraryPage.inputContent1')"
v-model="searchPictureName"
@keydown.enter="getLibraryList('')">
<div class="search_cascader">
<div class="content_search_block generalModel_state">
<div class="generalModel_state_item">
<input
class="search_input"
style="background-color: #fff;"
:placeholder="$t('LibraryPage.inputContent1')"
v-model="searchPictureName"
@keydown.enter="getLibraryList('')">
</div>
<div class="generalModel_state_item search_cascader">
<el-cascader
:options="options"
filterable
@@ -162,13 +177,14 @@
<div :title="$t('LibraryPage.intersection')" @click="()=>intersection = 0" v-show="intersection == 1" :class="['icon', 'iconfont','icon-bingji1',]"></div>
</div>
<!-- <div class="search_icon_block" @click="getLibraryList('')"><span class="icon iconfont icon-sousuo"></span></div> -->
<div class="generage_btn search_icon_block" @click="getLibraryList('')"><span class="icon iconfont icon-sousuo"></span></div>
<div class="gallery_btn" style="padding: 2rem; line-height: 1;" @click="getLibraryList('')"><span class="icon iconfont icon-sousuo"></span></div>
</div>
<div v-show="imgList.length" :class="['check_all_block',selectImgList.length == imgList.length ? 'check_all' : '']" @click="selectAllImg()">
<div class="check_block"><div class="check_block_body" v-show="selectImgList.length == imgList.length && imgList.length"></div></div>
<div>{{ $t('LibraryPage.all') }}</div>
</div>
</div>
<div v-show="imgList.length" :class="['check_all_block',selectImgList.length == imgList.length ? 'check_all' : '']" @click="selectAllImg()">
<div class="check_block"><div class="check_block_body" v-show="selectImgList.length == imgList.length && imgList.length"></div></div>
<div>{{ $t('LibraryPage.all') }}</div>
</div>
</div>
<div class="content_body_table scroll_style">
@@ -185,6 +201,9 @@
</div>
<div class="img_operate_block" :title="t('LibraryPage.Delete')" @click.stop="deleteSinglePic(img,index)">
<span class="icon iconfont icon-shanchu operate_icon"></span>
</div>
<div class="img_operate_block">
<i class="fi fi-bs-expand-arrows-alt" @click.stop="scaleImage(index,imgList,'library')"></i>
</div>
</div>
</div>
@@ -194,6 +213,11 @@
<div class="no_data_block" v-show="!imgList.length && !isShowMark">
<img src="@/assets/images/homePage/null_img.png">
</div>
<!-- 蒙层 start-->
<div class="mark_loading" v-show="isShowMark || getLangIsShowMark">
<a-spin size="large" />
</div>
<!-- 蒙层 end-->
</div>
<div class="table_pagination" v-show="imgList.length">
@@ -210,7 +234,6 @@
</div>
<div class="right_content_body" v-show="uploadGenerate !='Upload'">
<div class="content_body_header content_body_header_generate">
<div class="content_body_header_right"></div>
<!-- <div v-show="selectCode == 'Printboard' && scene?.value == 'Pattern'" class="printModel">
<div @click.stop="PrintModel">{{ printModel.name }}</div>
<ul v-show="printModel.optype">
@@ -219,11 +242,11 @@
<li class="printModel_item" @click="setprintModel(3)">{{ $t('LibraryPage.Model3') }}</li>
</ul>
</div> -->
<generalMenu v-if="printModelList" class="printModel" v-show="selectCode == 'Printboard' && scene?.value == 'Pattern'" :dataList="printModelList" :isCanvas="selectCode == 'Sketchboard'" @setprintModel="setprintModel" :item="printModel"></generalMenu>
<generalMenu v-if="printModelList" class="printModel" v-show="selectCode == 'Printboard' && scene?.value == 'Pattern'" :dataList="printModelList" :isCanvas="selectCode == 'Sketchboard'" @setprintModel="setprintModel" :item="printModel" :style_="{padding:'2rem'}"></generalMenu>
<div class="input_border">
<div class="input_box" :class="{active:inputShow}">
<div class="input_box_btnBox" v-if="scene?.value != 'extract'">
<div class="upload_item" v-show="selectCode !== 'Moodboard' && ((selectCode == 'Printboard' && scene?.value == 'Pattern') || (selectCode == 'Printboard' && scene?.value == 'Slogan') || selectCode == 'Sketchboard')">
<div class="upload_item" v-show="selectGenerateList.length != 0 && selectCode !== 'Moodboard' && ((selectCode == 'Printboard' && scene?.value == 'Pattern') || (selectCode == 'Printboard' && scene?.value == 'Slogan') || selectCode == 'Sketchboard')">
<div
class="upload_file_item"
v-for="(file, index) in selectGenerateList"
@@ -253,12 +276,12 @@
<input class="search_seed" max="9999" v-show="selectCode == 'Printboard' && scene?.value == 'Logo'" @input="ifSeedValue" v-model="searchPictureSeed" type="Number" placeholder='Seed' min="0">
</a-popover> -->
<input
class="search_input "
@input="ifMaximumLength"
:maxlength='inputShow?0:9999'
@keydown.enter="getgenerate"
@click="inputFocus()"
:placeholder="(scene?.value == 'Slogan' && selectCode == 'Printboard')?isSloganHint:$t('LibraryPage.inputContent2')"
@paste="onPaste"
v-model="captionGeneration">
<i class="fi fi-br-upload" :title="$t('Generate.uploadTitle')" v-show="!isTextarea && upload.level1Type !== 'Moodboard' && scene?.value != 'Slogan' && scene?.value != 'Logo'">
<a-upload
@@ -342,7 +365,7 @@
v-model="captionGeneration"
></textarea>
<div class="generage_btn_box" v-show="!isGenerate[selectCode]">
<div class="generage_btn started_btn">
<div class="generage_btn started_btn" style="padding: 2rem;">
<div @click.stop="getgenerate">
<span v-if="
@@ -390,16 +413,14 @@
<div class="img_operate_block" :title="t('LibraryPage.Delete')" @click.stop="deleteGenerate(index)">
<span class="icon iconfont icon-shanchu operate_icon"></span>
</div>
</div>
<div class="img_operate_content left" :class="[driver__.driver?'hideEvents':'']">
<div class="img_operate_block">
<i class="fi fi-bs-expand-arrows-alt" @click.stop="scaleImage(index)"></i>
<i class="fi fi-bs-expand-arrows-alt" @click.stop="scaleImage(index,generateList[selectCode],'generate')"></i>
</div>
<div class="img_operate_block">
<i v-if="!img.like" class="fi fi-rr-heart operate_icon" @click.stop="likeFile(img,'like')"></i>
<i v-else class="fi fi-sr-heart operate_icon" :adminLike="!!img.like" @click.stop="likeFile(img,'noLike')"></i>
</div>
</div>
</div>
</div>
<sketchCategory v-show="selectCode == 'Sketchboard'" :disignTypeList="designTypeList[selectCode]" :generateList="generateList['Sketchboard']" :item="img"></sketchCategory>
</div>
@@ -411,6 +432,7 @@
</div>
</div>
</div>
</div>
</div>
</div>
@@ -421,12 +443,9 @@
<ModelPlacementMobile ref="ModelPlacementMobile" @submitModelPlacement="getLibraryList"></ModelPlacementMobile>
<setLabel ref="setLabel"></setLabel>
<createSlogan ref="createSlogan" @setSloganData="setSloganData"></createSlogan>
<UpgradePlan ref="UpgradePlan"></UpgradePlan>
<!-- 蒙层 start-->
<div class="mark_loading" v-show="isShowMark || getLangIsShowMark">
<a-spin size="large" />
</div>
<!-- 蒙层 end-->
<!-- <RobotAssist></RobotAssist> -->
</div>
@@ -440,6 +459,7 @@ import ModelPlacement from '@/component/LibraryPage/ModelPlacement.vue';
import setLabel from '@/component/LibraryPage/setLabel.vue';
import ModelPlacementMobile from '@/component/LibraryPage/ModelPlacementMobile.vue';
import searchLabel from '@/component/LibraryPage/searchLabel.vue';
// import RobotAssist from "@/component/HomePage/RobotAssist.vue";
import { Modal,message,Upload,CascaderProps } from 'ant-design-vue';
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
@@ -455,6 +475,7 @@ import { remove } from "jszip";
import createSlogan from "@/component/HomePage/createSlogan.vue";
import generalMenu from "@/component/HomePage/generalMenu.vue";
import { id } from "element-plus/es/locale";
import UpgradePlan from "@/component/HomePage/UpgradePlan.vue";
export default defineComponent({
components: {
// HeaderComponent,
@@ -468,6 +489,7 @@ export default defineComponent({
sketchCategory,
createSlogan,
generalMenu,
UpgradePlan,
},
props:{
getLangIsShowMark:{
@@ -564,6 +586,9 @@ export default defineComponent({
let driver__:any = computed(()=>{
return store.state.Guide.guide
})
let userDetail:any= computed(()=>{
return store.state.UserHabit.userDetail
})
let generateTime:any = ref({
Sketchboard:'',
Moodboard:'',
@@ -765,6 +790,7 @@ export default defineComponent({
intersection,
isTest,
driver__,
userDetail,
generateTime,
generateProceedList,
isGenerate,
@@ -791,7 +817,6 @@ export default defineComponent({
},
data(this_) {
return {
userInfo: {},
indicator: h(LoadingOutlined, {
style: {
fontSize: "2.4rem",
@@ -806,6 +831,7 @@ export default defineComponent({
},
token: "",
isInputFocus:false,
deleteSelectManneuin:false,
};
},
watch:{
@@ -831,10 +857,8 @@ export default defineComponent({
},
async mounted(){
this.upload.gender = this.sex
let userInfo:any = getCookie("userInfo")
let isTest:any = getCookie('isTest')
this.isTest =JSON.parse(isTest)
this.userInfo = JSON.parse(userInfo);
this.uploadUrl = getUploadUrl()
this.token = getCookie("token") || "";
},
@@ -1118,25 +1142,48 @@ export default defineComponent({
//确定删除图片 有data则是单个
confirmDeletePic(data:any,index:any,nData:any){
let libraryIds = data ? [data.id] : this.selectImgList
let newData = {
libraryIds:libraryIds,
let libraryIds = data ? [data.id] : this.selectImgList
let newData = {
libraryIds:libraryIds,
deleteModelConfirm:this.selectCode == 'Models' ? data.deleteModelConfirm?data.deleteModelConfirm : 0:'',
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
}
}
if(nData)newData = nData
Https.axiosPost(Https.httpUrls.batchDeleteLibrary, newData).then(
(rv: any) => {
if(data && data.id){
this.imgList.splice(index, 1)
}else{
this.selectImgList = []
this.getLibraryList('')
}
}
).catch((res)=>{
Https.axiosPost(Https.httpUrls.batchDeleteLibrary, newData).then(
(rv: any) => {
if(data && data.id){
this.imgList.splice(index, 1)
}else{
this.selectImgList = []
this.getLibraryList('')
}
if(!this.deleteSelectManneuin)return
let id = this.store.state.Workspace.workspace.id
Https.axiosGet(Https.httpUrls.workspaceDetail,{params:{id:id}}).then((rv: any) => {
if (rv) {
if(rv.position == "Overall"){
rv.overallSingle = false
}else{
rv.overallSingle = true
}
if(rv.sexEnum.name == 'Female'){
rv.mannequinUrl = rv.femalePresignedUrl
rv.mannequinType = rv.mannequinFemaleType
rv.mannequinId = rv.mannequinFemaleId
}else if(rv.sexEnum.name == 'Male'){
rv.mannequinUrl = rv.malePresignedUrl
rv.mannequinType = rv.mannequinMaleType
rv.mannequinId = rv.mannequinMaleId
}
this.store.commit("setWorkspace", rv);
this.deleteSelectManneuin = false
}
})
}
).catch((res)=>{
if(this.selectCode == "Models" && res.errCode === 2){
let _this = this
this.deleteSelectManneuin = true
Modal.confirm({
title: res.errMsg,
icon: createVNode(ExclamationCircleOutlined),
@@ -1145,37 +1192,15 @@ export default defineComponent({
mask:false,
zIndex:99999,
centered:true,
onOk() {
onOk () {
newData.deleteModelConfirm = 1
let id = _this.store.state.Workspace.workspace.id
Https.axiosGet(Https.httpUrls.workspaceDetail,{params:{id:id}}).then((rv: any) => {
if (rv) {
if(rv.position == "Overall"){
rv.overallSingle = false
}else{
rv.overallSingle = true
}
if(rv.sexEnum.name == 'Female'){
rv.mannequinUrl = rv.femalePresignedUrl
rv.mannequinType = rv.mannequinFemaleType
rv.mannequinId = rv.mannequinFemaleId
}else if(rv.sexEnum.name == 'Male'){
rv.mannequinUrl = rv.malePresignedUrl
rv.mannequinType = rv.mannequinMaleType
rv.mannequinId = rv.mannequinMaleId
}
_this.store.commit("setWorkspace", rv);
}
})
_this.confirmDeletePic('',index,newData)
},
onCancel(){
}
});
}
});
});
},
beforeUpload(file:any,fileList:any){
@@ -1291,7 +1316,6 @@ export default defineComponent({
placementModal.showPlacementModal(data,this.sex)
},
setTextareaShow(){
this.isTextarea = !this.isTextarea
this.isTextarea = !this.isTextarea
if(this.isTextarea){
document.addEventListener('click',this.setTextareaShow)
@@ -1364,10 +1388,9 @@ export default defineComponent({
}
file.categoryValue = category?.value;
file.category = category?.name;
let fileList = this.selectGenerateList.filter(
(v: any) => v.status === "done"
);
this.selectGenerateList = fileList
let paste = this.selectGenerateList.filter((v: any) => v.id === file.id);
if(paste.length == 0)this.selectGenerateList.push(file);
this.selectGenerateList = this.selectGenerateList.filter((v: any) => v.status === "done");
}else{
bor = false
}
@@ -1495,7 +1518,7 @@ export default defineComponent({
collectionElementId:collectionElementId,
level1Type:selectCodeStr,
level2Type:level2Type,
userId:(this?.userInfo as any).userId,
userId:(this?.userDetail as any).userId,
isTestUser:this.driver__.driver?false:this.isTest,
text:sloganText,
seed:this.searchPictureSeed,
@@ -1521,14 +1544,14 @@ export default defineComponent({
}else if(selectCodeStr == 'Sketchboard'){
str = this.t('collectionModal.Sketchboard')
}
if(rv.leftUsageCount >= 1){
message.warning(this.t('Generate.jsContent8',{num:rv.leftUsageCount,str:str}));
}else if(rv.leftUsageCount == 0){
message.warning(this.t('Generate.jsContent9',{str:str}));
this.isGenerate[selectCodeStr] = false
// this.isShowMark = false
return
}
// if(rv.leftUsageCount >= 1){
// message.warning(this.t('Generate.jsContent8',{num:rv.leftUsageCount,str:str}));
// }else if(rv.leftUsageCount == 0){
// message.warning(this.t('Generate.jsContent9',{str:str}));
// this.isGenerate[selectCodeStr] = false
// // this.isShowMark = false
// return
// }
}
this.setGenerate(selectCodeStr,rv.uniqueId)
@@ -1539,6 +1562,25 @@ export default defineComponent({
this.isGenerate[selectCodeStr] = false
clearInterval(this.remGenerateTime[selectCodeStr])
this.remGenerate[selectCodeStr] = false
if(res.errCode === 2){
let this_ = this
Modal.confirm({
title: res.errMsg,
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
mask:false,
zIndex:99999,
centered:true,
onOk() {
let UpgradePlan:any = this_.$refs.UpgradePlan
UpgradePlan.init()
},
onCancel(){
}
});
}
});
},
setGenerate(str:any,dataList:any){
@@ -1607,7 +1649,7 @@ export default defineComponent({
}
let data = {
uniqueId:str,
userId:(this?.userInfo as any)?.userId,
userId:(this?.userDetail as any)?.userId,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
type: type
}
@@ -1670,11 +1712,38 @@ export default defineComponent({
},
scaleImage(index:any){
scaleImage(index:any,list:any,str:any){
let scaleImage:any = this.$refs.scaleImage
scaleImage.scaleImageMask = true
scaleImage.init(this.generateList[this.selectCode],index)
str == 'library'?scaleImage.isLike = false:scaleImage.isLike = true
scaleImage.init(list,index)
},
onPaste(e:any){
if(e.clipboardData.items[0] && !this.isTextarea && this.selectCode !== 'Moodboard' && this.scene?.value != 'Slogan' && this.scene?.value != 'Logo'){
let param = new FormData();
param.append('inPin','0')
param.append('gender',this.sex)
param.append('level1Type',this.selectCode)
param.append('timeZone',Intl.DateTimeFormat().resolvedOptions().timeZone)
param.append('file',e.clipboardData.files[0]);
let config:any = {headers:{'Content-Type':'multipart/form-data','Accept':'*/*' }}
Https.axiosPost(Https.httpUrls.elementUpload, param, config).then((v)=>{
let value = {data:v,errCode : 0}
v.status = 'done'
let data = {
file:{
status: 'done',
xhr:{
response:JSON.stringify(value)
}
}
}
this.generateFileUploadChange(data)
})
}
}
}
})
</script>
@@ -1686,9 +1755,12 @@ export default defineComponent({
width: 100%;
overflow: hidden;
height: 100%;
padding: 0 9rem;
padding: 0 6rem;
// min-width: 1440px;
position: relative;
.mark_loading{
position: absolute;
}
.page_content {
position: relative;
@@ -1713,7 +1785,6 @@ export default defineComponent({
flex: 1;
box-sizing: border-box;
display: flex;
padding-top: 2rem;
.printModel{
font-size: 1.4rem;
font-weight: 500;
@@ -1721,29 +1792,27 @@ export default defineComponent({
}
.library_body_left{
// width: 27.5rem;
width: 36.5rem;
// width: 36.5rem;
width: 25rem;
height: 100%;
background: rgba(255,255,255,0.4);
margin-right: 5rem;
margin-right: 3rem;
background: #f7f8fa;
>div{
background: #f7f8fa;
border-radius: 2rem;
overflow: hidden;
padding: 2rem 0;
}
.library_menu_list{
padding-left: 2rem;
.menu_item{
width: 100%;
height: 6.8rem;
display: flex;
font-weight: 900;
align-items: center;
justify-content: space-between;
padding: 0 1rem 0 2.5rem;
padding: 1rem 3rem;
border-left: 0.5rem solid transparent;
// font-size: 1.6rem;
font-size: var(--aida-fsize2);
font-size: var(--aida-fsize1-8);
color: #030303;
cursor: pointer;
transition: all .3s;
@@ -1753,11 +1822,8 @@ export default defineComponent({
}
&.select_menu_item{
background: #fff;
border-radius: 2rem;
transform: translateX(2rem);
// background: #E6E6F6;
// border-color: #343579;;
background: #000;
color: #fff;
}
.menu_item_left{
@@ -1768,7 +1834,6 @@ export default defineComponent({
.fi{
font-size: 2.2rem;
display: flex;
color: #030303;
margin-right: 1.8rem;
}
}
@@ -1786,7 +1851,6 @@ export default defineComponent({
.library_body_right{
width: calc(100% - 23.5rem);
height: 100%;
.header_operate_item{
margin-right: 5rem;
color: #C2C2C2;
@@ -1815,55 +1879,28 @@ export default defineComponent({
cursor: pointer;
}
&:last-child{
margin-right: 11rem;
margin-right: 7rem;
}
}
.content_search_block{
display: flex;
align-items: center;
width: 75rem;
.search_input{
height: 3rem;
border-radius: 0.5rem;
width: 20rem;
border: 1px solid rgba(0, 0, 0, 0.15);
padding-left: 1.5rem;
border: 0.1rem solid #F1F1F1;
font-size: 1.2rem;
font-weight: 400;
margin-right: 2rem;
&::placeholder {
color: #C2C2C2;
}
// width: 85rem;
margin-left: auto;
.generalModel_state_item,.gallery_btn{
margin-right: 3rem;
}
.search_cascader{
// width: 53%;
width: 38rem;
display: flex;
position: relative;
}
.search_icon_block{
width: 5.2rem;
height: 2.8rem;
line-height: 2.8rem;
text-align: center;
background: #343579;
background-color: #39215b;
cursor: pointer;
border-radius: 2rem;
margin-left: 3rem;
.icon-sousuo{
font-size: 1.6rem;
color: #FFFFFF;
}
width: 37rem;
}
.intersection{
margin-left: 3rem;
cursor: pointer;
margin-right: 3rem;
>div{
font-size: 3rem;
font-weight: 900;
}
}
}
@@ -1872,10 +1909,9 @@ export default defineComponent({
display: flex;
padding: 0 3.5rem 0 2.8rem;
align-items: center;
justify-content: space-between;
background: rgba(255,255,255,0.4);
box-shadow: 0 0.2rem 0.8rem 0 rgba(238,238,244,0.25);
margin: 2rem 0;
.library_header_left{
height: 4rem;
display: flex;
@@ -1883,30 +1919,15 @@ export default defineComponent({
}
.librart_headr_right{
display: flex;
align-items: center;
.select_block{
// background: #FFFFFF;
color: #1A1A1A !important;
.generalModel_state_item{
margin-right: 2rem;
.ant-select-selector{
border: 2px solid !important;
background: #fff;
}
.ant-select{
.ant-select-arrow{
.icon-xiala{
margin-left: -2rem;
zoom: .7;
}
}
}
.icon-xiala{
color: #1A1A1A !important;
}
}
}
}
}
@@ -1915,28 +1936,28 @@ export default defineComponent({
height:calc(100% - 8rem);
padding: 0.1rem 0 0 0.3rem;
box-sizing: border-box;
.right_content_body{
width: 100%;
height: 100%;
background: #f6f5fa;
padding: 0 2rem 5rem 1rem;
padding: 2rem 4rem;
border-radius: 2rem;
overflow: hidden;
display: flex;
flex-direction: column;
.content_body_header{
height: 10rem;
// height: 10rem;
margin-bottom: 1rem;
display: flex;
justify-content: flex-end;
align-items: center;
// padding: 2rem 0 2rem 3rem;
padding-left: 3rem;
box-sizing: content-box;
justify-content: space-between;
.content_body_header_left{
display: flex;
align-items: center;
width: 100%;
}
.content_body_header_right{
display: flex;
@@ -1990,10 +2011,11 @@ export default defineComponent({
padding-bottom: 0;
background: rgba(0, 0, 0, 0);
width: 55rem;
--width:65%;
.input_box_btnBox{
background: #fff;
align-items: center;
width:65%;
padding: 2rem;
.search_input{
height: 3rem;
}
@@ -2013,6 +2035,7 @@ export default defineComponent({
flex-wrap: wrap;
justify-content: flex-start;
align-content: flex-start;
position: relative;
&.content_body_table::-webkit-scrollbar {
display: none;
}
@@ -2072,12 +2095,15 @@ export default defineComponent({
.img_operate_content{
position: absolute;
right: 0.6rem;
top: 0.6rem;
&.left{
left: 0.6rem;
right: auto;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
max-width: 90%;
display: flex;
flex-wrap: wrap;
>div{
margin-bottom: .5rem;
margin-right: .5rem;
}
}
.img_operate_block{
@@ -2175,37 +2201,6 @@ export default defineComponent({
color:#adabb9
}
}
.select_block{
display: flex;
justify-content: space-between;
font-size: 1.8rem;
color:#adabb9;
font-weight: 300;
.ant-select{
border-radius: 4px;
width: 48%;
border: 0.1rem solid #d9d9d9 !important;
.ant-select-arrow{
.icon-xiala{
margin-left: -0rem;
}
}
}
.ant-select-selection-item{
color:#262626;
font-weight: 300;
}
.ant-select-selector{
margin-left: 0rem;
color:#adabb9;
width: 100%;
padding-left: 2.1rem;
}
.icon-xiala{
color: #adabb9 !important;
font-weight: 400;
}
}
}
.rename_button_list{
@@ -2234,31 +2229,7 @@ export default defineComponent({
color: #FFFFFF;
}
}
.el-cascader{
.el-input--suffix{
--el-input-hover-border-color: #d9d9d9;
// border: .1rem solid #d9d9d9;
}
height: 4.6rem;
.el-tag__content{
line-height: 2.5;
.el-cascader__tags{
}
}
.el-input__wrapper{
padding-left: 0;
}
.el-cascader__search-input,.el-input__inner{
margin: 0;
width: 100%;
height: 4.6rem;
padding-left: 2.1rem;
line-height: 4.6rem;
font-size: 1.8rem;
box-sizing: border-box;
}
}
}

File diff suppressed because it is too large Load Diff

236
src/views/Register.vue Normal file
View File

@@ -0,0 +1,236 @@
<template>
<div class="homeRecommend_max openSignUp">
<header class="homeRecommend_heade">
<div class="homeRecommend_right_content">
<div class="homeRecommend_user_content">
<img
class="homeRecommend_logo"
@click="turnToNewPage('https://www.aidlab.hk/en/')"
src="@/assets/images/loginPage/aida_logo.png"
/>
<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>
<div class="homeRecommend_right">
<div class="gallery_btn" v-if="userDetail.systemUser == 1 && !isMoblie" @click="goHome">Home</div>
<div class="gallery_btn white" v-if="userDetail.systemUser != -1" @click="logout">log off</div>
</div>
<div class="homeRecommend_right" v-if="userDetail.systemUser == -1">
<div class="gallery_btn" @click="setLogin">Login</div>
</div>
</header>
<signUp ref="signUp" @close="signUpClose"></signUp>
</div>
</template>
<script >
import { defineComponent, toRefs, reactive, ref , nextTick,computed, onMounted, onBeforeUnmount } from "vue";
import { setCookie, getCookie, WriteCookie,clonAllCookie } from "@/tool/cookie";
import { Https } from "@/tool/https";
import { useStore } from "vuex";
import { useRouter } from 'vue-router';
import signUp from '@/component/mainPage/signUp/index.vue'
export default defineComponent({
components: {
signUp,
},
setup(){
const store = useStore();
const router = useRouter();
let registerModel = ref()
let data = reactive({
homeRecommendMax:null,
signUp:null
})
let isMoblie = ref(false)
let userDetail = computed(()=>{
return store.state.UserHabit.userDetail
})
let setLogin = ()=>{
router.push("/login");
}
let logout = ()=>{
let userInfo = store.state.UserHabit.userDetail;
let data = {
userId: userInfo?.userId,
};
store.commit('createDetail')
if(!data.userId) return
Https.axiosPost(Https.httpUrls.accountLogout, data).then((rv) => {
clonAllCookie();
});
}
let goHome = ()=>{
router.push('/home');
}
let time
let updataIsMoblie = ()=>{
clearTimeout(time)
time = setTimeout(()=>{
if(window.innerWidth < 768){
isMoblie.value = true
}else{
isMoblie.value = false
}
},500)
}
onMounted(()=>{
window.addEventListener('resize',updataIsMoblie)
})
onBeforeUnmount(() => {
window.removeEventListener('resize', updataIsMoblie);
});
return {
...toRefs(data),
userDetail,
setLogin,
registerModel,
logout,
goHome,
isMoblie,
}
},
data() {
return {
};
},
watch: {
// credits.value(newVal,oldVal){
// console.log(String(newVal).length);
// }
},
mounted() {
},
methods: {
turnToNewPage(url) {
window.open(url);
},
turnToWindow(url) {
window.open(url);
},
},
});
</script>
<style lang="less" scoped>
.homeRecommend_max{
position: relative;
display: flex;
height: 100%;
flex-direction: column;
&.openSignUp{
.homeRecommend_heade{
position: relative;
background: #fff !important;
.login_footer_item_text{
display: block;
}
}
.homeRecommend_content_adminTop{
display: none;
}
}
}
.homeRecommend_heade {
display: flex;
justify-content: space-between;
// padding: 0 30px;
padding: 1rem 4rem;
width: 100%;
// height: 7rem;
flex-shrink: 0;
// background: rgba(255, 255, 255, 0.2);
// border-bottom: 0.1rem solid rgba(3, 3, 3, 0.1);
position: absolute;
align-items: center;
z-index: 2;
@media (max-width: 768px) {
z-index: 1000;
}
.homeRecommend_right{
width: 33%;
display: flex;
justify-content: flex-end;
align-items: center;
.gallery_btn{
// color: #000;
// background: #fff;
// border: 2px solid #39215b;
// margin-left: 2rem;
width: 13rem;
text-align: center;
&.gallery_btn:nth-child(1){
margin-right: 3rem;
}
}
}
.homeRecommend_logo {
width: 14.4rem;
height: 3.2rem;
margin-top: 0;
}
.login_footer_item_text{
margin-left: 5rem;
display: none;
}
.homeRecommend_right_content {
top: 0;
left: 0;
display: flex;
width: 40%;
height: 100%;
align-items: center;
overflow: hidden;
.homeRecommend_user_content {
display: flex;
align-items: center;
position: relative;
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;
}
}
}
}
</style>

View File

@@ -0,0 +1,318 @@
<template>
<div class="affiliateHome_page">
<div class="affiliateHome_page_left">
<div class="affiliateHome_title ">
<div class="modal_title_text" @click="setBack">
<i class="fi fi-sr-left"></i>
<div class="modal_title_intro affiliateHome_title_text">Back</div>
</div>
</div>
<div class="modal_title_text">Affiliate</div>
<a-menu
id="dddddd"
class="menu_list_content"
theme="dark"
v-model:openKeys="openKeys"
v-model:selectedKeys="selectedKeys"
mode="inline"
@click="handleClick"
>
<div v-for="(menu) in rootSubmenuKeys" :key="menu.key" >
<a-menu-item :key="menu.key" :name="menu.name" :route="menu.route" v-if="!menu.children">
<template #icon>
<span :class="['icon','iconfont', 'menu_icon', menu.icon]"></span>
</template>
<span class="menu_title" :title="menu.name">{{menu.name}}</span>
</a-menu-item>
<a-sub-menu :key="menu.key" v-else>
<template #icon>
<span :class="['icon','iconfont', 'menu_icon', menu.icon]"></span>
</template>
<template #expandIcon><span :class="['icon','iconfont', 'menu_icon', menu.expandIcon]"></span></template>
<template #title><span class="menu_title" :title="menu.name">{{menu.name}}</span></template>
<div >
<a-menu-item v-for="child in menu.children" :key="child.key" :name="child.name" :route="child.route"><span class="menu_title" :title="child.name">{{child.name}}</span></a-menu-item>
</div>
</a-sub-menu>
</div>
</a-menu>
</div>
<div class="affiliateHome_page_right">
<div class="affiliateHome_page_right_header">
<div class="page_name">
<div v-show="!routers.length" class="page_name_title">{{nowPageName}}</div>
<a-breadcrumb v-show="routers.length" :routes="routers">
<template #itemRender="{ route, routes, paths }">
<span v-if="routes.indexOf(route) === routes.length - 1">
{{ route.breadcrumbName }}
</span>
<router-link v-else :to="`${paths.join('/')}`">
{{ route.breadcrumbName }}
</router-link>
</template>
</a-breadcrumb>
</div>
</div>
<div class="affiliateHome_page_right_content">
<router-view v-slot="{ Component }">
<keep-alive>
<component :is="Component" />
</keep-alive>
</router-view>
</div>
</div>
</div>
</template>
<script lang="ts">
import { message, Upload } from "ant-design-vue";
import { defineComponent, onMounted, h, ref, nextTick, inject,reactive, toRefs } from "vue";
import { Https } from "@/tool/https";
import { useStore } from "vuex";
import { useRouter,useRoute } from 'vue-router'
import { country } from "@/tool/country";
import { getUploadUrl } from "@/tool/util";
export default defineComponent({
components: {
},
props: ["msg",'sketchCatecoryList'],
setup() {
const router = useRouter()
// const route:any = useRoute()
const store:any = useStore()
const state:any = reactive({
rootSubmenuKeys: [{
name:'Affiliate Home',
route:'/affiliate',
icon:'yonghu',
expandIcon:'icon-xiala',
key:'sub1',
isShow:true,
// children: [
// {
// name:'User Management',
// route:'/home/excil1',
// icon:'',
// key:'/home/excil22',
// isShow:true,
// },
// {
// code:'ROLE_MANAGER',
// name:'Access Permission',
// route:'/home/excil2',
// icon:'',
// key:'/home/excil33',
// isShow:true,
// },
// ],
},],
openKeys: [],
selectedKeys: ['sub1'],
nowPageName:'Affiliate Home',//当前页面名称
});
let routers:any = ref([])
const onOpenChange = (openKeys: string[]) => {
const latestOpenKey:any = openKeys.find(key => state.openKeys.indexOf(key) === -1);
if (state.rootSubmenuKeys.indexOf(latestOpenKey!) === -1) {
state.openKeys = openKeys;
} else {
state.openKeys = latestOpenKey ? [latestOpenKey] : [];
}
};
let handleClick = (event:any) => {
// state.selectedKeys = [Number(event.key)]
state.nowPageName = event.item.name
router.push({path:event.item.route})
}
let setBack = ()=>{
router.push('/home');
}
onMounted(() => {
state.rootSubmenuKeys.forEach((item:any) => {
if(item.children){
item.children.forEach((item:any) => {
if(item.route == router.currentRoute.value.path){
state.selectedKeys[0] = item.key
}
});
}else{
if(item.route == router.currentRoute.value.path){
state.selectedKeys[0] = item.key
}
}
});
//储存所有用户id和name
Https.axiosGet(Https.httpUrls.getAllUserId,).then((rv: any) => {
if (rv) {
store.commit('setAllUserList',rv);
}
})
let allCountry = country
sessionStorage.setItem('allCountry',JSON.stringify(allCountry));
// state.nowPageName = state.rootSubmenuKeys[0].name
// router.push(state.rootSubmenuKeys[0].route)
})
return {
...toRefs(state),
onOpenChange,
routers,
handleClick,
setBack,
};
},
data(prop) {
return {
}
},
mounted() {
},
watch:{
// newWindowState:{
// handler(newVal,oldVal){
// console.log(newVal);
// if(newVal){
// this.newWindow?.close();
// }
// }
// },
},
methods: {
},
});
</script>
<style lang="less">
.affiliateHome_page {
width: 100%;
height: 100%;
display: flex;
background: rgba(243,244,248,0.4);
.affiliateHome_title{
display: flex;
align-items: center;
position: sticky;
top: 0;
z-index: 222;
.modal_title_text{
cursor: pointer;
display: flex;
margin-bottom: 0;
font-size: 1.8rem;
}
.affiliateHome_title_text{
line-height: 1;
}
.modal_title_text:hover .affiliateHome_title_text{
text-decoration: underline;
}
i{
font-size: 1.2rem;
display: flex;
align-items: center;
margin-right: 1rem;
}
}
.affiliateHome_page_left{
width: 20%;
padding-top: 20px;
.modal_title_text{
// font-size: var(--aida-fsize1-8);
line-height: 10rem;
text-align: center;
}
.ant-menu-dark.menu_list_content{
padding-left: 1.8rem;
// width: 30rem;
width: 100%;
height: calc(100% - 16rem);
background: #FFFFFF;
flex-shrink: 0;
overflow-y: auto;
&::-webkit-scrollbar{
width: 0;
}
.menu_icon{
font-size: 2.4rem;
color: #808185;
}
.ant-menu-item{
padding-left: 3.1rem !important;
display: flex;
align-items: center;
height: 6.6rem;
border-radius: 3.3rem 0px 0px 3.3rem;
box-sizing: border-box;
&.ant-menu-item-only-child{
padding-left: 5.6rem !important;
}
}
.ant-menu-submenu-title{
padding-left: 3.1rem !important;
height: 6.6rem;
}
.ant-menu-inline.ant-menu-sub{
background: #FFFFFF;
padding-left: 4rem;
}
.menu_title{
font-size: 1.8rem;
font-family: Adobe Heiti Std;
font-weight: normal;
color: #808185;
}
.ant-menu-item-selected{
background: #F3F4F8;
.menu_title{
color: #343579;
}
.menu_icon{
color: #808185;
}
}
}
}
.affiliateHome_page_right{
flex: 1;
width: 80%;
.affiliateHome_page_right_header{
display: flex;
justify-content: space-between;
align-items: center;
height: 6.6rem;
padding: 0 2.8rem 0 3.0rem;
.page_name{
border-left: solid .4rem #161F29;
.page_name_title,.ant-breadcrumb-link{
font-size: 1.8rem;
font-weight: normal;
color: #333333;
padding-left: 1.2rem;
line-height: 1.8rem;
}
}
}
.affiliateHome_page_right_content{
height: 100%;
padding: 0 3rem;
}
}
}
</style>

View File

@@ -0,0 +1,86 @@
<template>
<div class="affiliateRegister">
<div class="title">AiDA Affiliate Request Page</div>
<div class="info">Why do you want to become an affiliate user?</div>
<div class="textarea_box">
<div class="text"></div>
<textarea :value="textarea"></textarea>
</div>
<div class="gallery_btn" style="width: 100%;" @click="submit">Register</div>
</div>
<div class="mark_loading" v-show="loadingShow">
<a-spin size="large" />
</div>
</template>
<script lang="ts">
import { message, Upload } from "ant-design-vue";
import { defineComponent, onMounted, h, ref, nextTick, inject,reactive, toRefs } from "vue";
import { Https } from "@/tool/https";
import { useRouter,useRoute } from 'vue-router'
export default defineComponent({
components: {
},
props: ["msg",'sketchCatecoryList'],
setup() {
const router = useRouter()
const affiliateRegisterData:any = reactive({
loadingShow:false,
textarea:'',//当前页面名称
});
const submit = ()=>{
affiliateRegisterData.loadingShow = true
let data = {
promotionMethod:affiliateRegisterData.textarea,
}
Https.axiosGet(Https.httpUrls.affiliateRegistration,{params:data}).then(()=>{
affiliateRegisterData.loadingShow = false
message.success('success')
}).catch((err)=>{
affiliateRegisterData.loadingShow = false
})
}
onMounted(() => {
})
return {
...toRefs(affiliateRegisterData),
submit,
};
},
});
</script>
<style lang="less" scoped>
.affiliateRegister{
width: 100rem;
margin: 0 auto;
margin-top: 14.5rem;
>.title{
font-size: 4rem;
font-weight: 600;
margin-bottom: 4rem;
}
>.info{
margin-bottom: 4rem;
font-size: 1.8rem;
font-weight: 400;
}
>.textarea_box{
margin-bottom: 5rem;
>.text{
font-size: 2rem;
font-weight: 600;
}
textarea{
width: 100%;
height: 18rem !important;
border: 2px solid;
border-radius: 2rem;
background: #f7f8fa;
padding: 2rem;
}
}
}
</style>

View File

@@ -789,6 +789,7 @@ export default defineComponent({
margin: 1rem;
height: 100%;
overflow-y: auto;
padding-bottom: 2rem;
&.active{
#title {
font-size: 3rem;

View File

@@ -712,6 +712,7 @@ export default defineComponent({
margin: 1rem;
height: 100%;
overflow-y: auto;
padding-bottom: 2rem;
#main{
background: linear-gradient(45deg, #eee4f3, #f3f4e6);

View File

@@ -84,7 +84,7 @@ export default defineComponent({
.paySucceed_page {
width: 100%;
height: 100%;
padding: 0 9rem;
padding: 0 6rem;
overflow: hidden;
// min-width: 1440px;
position: relative;

View File

@@ -43,12 +43,7 @@ export default defineComponent({
return {};
},
mounted() {
// this.userInfo = JSON.parse(getCookie("userInfo") as any);
// if (this.userInfo.userId == 83) {
// } else {
// router.replace("/home");
// return
// }
},
methods: {
async setFingerprint2(str:any) {

22
src/views/test.vue Normal file
View File

@@ -0,0 +1,22 @@
<template>
<div class='box'>
<tesst></tesst>
</div>
</template>
<script>
import { defineComponent} from "vue";
import tesst from "@/component/Canvas/test.vue";
export default defineComponent({
name: "test",
components:{
tesst
}
})
</script>
<style lang='less' scoped>
.box {
border: 1px solid #f00;
}
</style>

View File

@@ -111,13 +111,13 @@
</template>
<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";
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";
@@ -128,6 +128,7 @@ export default defineComponent({
RobotAssist,
},
setup() {
const store = useStore()
let rangePickerValue: any = ref([]);
let renameData: any = ref({}); //修改名字选中的数据
const columns: any = computed(() => {
@@ -232,15 +233,17 @@ export default defineComponent({
},
])
let collectionList: any = ref([]);
let userInfo: any = {};
let status: any = ref(0);
let voluntarily: any = ref(false);
let userDetail:any= computed(()=>{
return store.state.UserHabit.userDetail
})
return {
rangePickerValue,
columns,
collectionList,
renameData,
userInfo,
userDetail,
status,
currentState,
state,
@@ -263,10 +266,8 @@ export default defineComponent({
let historyTable: any = this.$refs.historyTable;
this.historyTableHeight = historyTable.clientHeight - 130;
this.gettrialList();
let userInfo:any = getCookie("userInfo")
this.userInfo = JSON.parse(userInfo);
if (this.userInfo.userId == 83 || this.userInfo.userId == 88 || this.userInfo.userId == 6) {
if (this.userDetail.userId == 83 || this.userDetail.userId == 88 || this.userDetail.userId == 6) {
} else {
router.replace("/home");
return
@@ -383,7 +384,7 @@ export default defineComponent({
.trial_page {
width: 100%;
height: 100%;
padding: 0 9rem;
padding: 0 6rem;
overflow: hidden;
// min-width: 1440px;
position: relative;