部分优化
This commit is contained in:
4
.env
4
.env
@@ -1,4 +1,4 @@
|
||||
# VITE_USER_NODE_ENV = 'production'
|
||||
VITE_USER_NODE_ENV = 'development'
|
||||
VITE_USER_NODE_ENV = 'production'
|
||||
# VITE_USER_NODE_ENV = 'development'
|
||||
VITE_APP_BASE_URL = 'http://18.167.251.121:10086'
|
||||
VITE_APP_BASE_URL = 'https://www.api.aida.com.hk'
|
||||
|
||||
@@ -4,4 +4,5 @@ VITE_USER_NODE_ENV = 'production'
|
||||
# VITE_APP_BASE_URL = 'https://api.aida.com.hk'
|
||||
VITE_APP_BASE_URL = 'https://develop.api.aida.com.hk'
|
||||
|
||||
VITE_APP_BASE_URL = 'http://localhost:22170'
|
||||
|
||||
|
||||
@@ -44,6 +44,11 @@ select {
|
||||
border-radius: 4px;
|
||||
/* 设置圆角半径 */
|
||||
}
|
||||
select > option {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
select:focus-visible {
|
||||
border: 0.2rem solid #c4c4c4 !important;
|
||||
}
|
||||
@@ -270,6 +275,20 @@ li {
|
||||
color: #fff;
|
||||
background-color: #000;
|
||||
}
|
||||
.gallery_btn.forbidden {
|
||||
opacity: 0.7;
|
||||
}
|
||||
.gallery_btn.forbidden:hover {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
}
|
||||
.gallery_btn.forbiddenWhite {
|
||||
opacity: 0.7;
|
||||
}
|
||||
.gallery_btn.forbiddenWhite:hover {
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
}
|
||||
.gallery_btn.active {
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
@@ -2297,6 +2316,7 @@ textarea:focus {
|
||||
border-radius: 4px;
|
||||
height: 20rem;
|
||||
top: 0rem;
|
||||
flex: 1;
|
||||
border: 1px solid #dcdfe6;
|
||||
}
|
||||
.generage_btn_box {
|
||||
|
||||
@@ -42,6 +42,11 @@ select{
|
||||
height: 2.5rem;
|
||||
border: 0.2rem solid #c4c4c4 !important;
|
||||
border-radius: 4px; /* 设置圆角半径 */
|
||||
> option {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
}
|
||||
select:focus-visible{
|
||||
border: 0.2rem solid #c4c4c4 !important;
|
||||
@@ -247,6 +252,7 @@ input:focus{
|
||||
border-radius: 1.6rem;
|
||||
padding: 0 1.7rem;
|
||||
}
|
||||
|
||||
&.btnSamil{
|
||||
padding: 0rem 2rem;
|
||||
line-height: 4rem;
|
||||
@@ -271,6 +277,20 @@ input:focus{
|
||||
background-color: #000;
|
||||
}
|
||||
}
|
||||
&.forbidden{
|
||||
opacity: .7;
|
||||
}
|
||||
&.forbidden:hover{
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
}
|
||||
&.forbiddenWhite{
|
||||
opacity: .7;
|
||||
}
|
||||
&.forbiddenWhite:hover{
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
}
|
||||
&.active{
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
@@ -2179,6 +2199,7 @@ textarea:focus{
|
||||
border-radius: 4px;
|
||||
height: 20rem;
|
||||
top: 0rem;
|
||||
flex: 1;
|
||||
border: 1px solid #dcdfe6;
|
||||
}
|
||||
|
||||
|
||||
@@ -73,9 +73,9 @@ export default defineComponent({
|
||||
accountFollofFans.getListData.isShowMark = false
|
||||
if(rv.length == 0) {
|
||||
accountFollofFans.getListData.isNoData = true
|
||||
return
|
||||
}else{
|
||||
accountFollofFans.dataList.push(...rv)
|
||||
}
|
||||
accountFollofFans.dataList = rv
|
||||
}
|
||||
}).catch(() => {
|
||||
accountFollofFans.getListData.isShowMark = false
|
||||
@@ -96,13 +96,13 @@ export default defineComponent({
|
||||
})
|
||||
}
|
||||
let openOtherUsers = (item:any)=>{
|
||||
const routeUrl = router.resolve({
|
||||
path:'/home/otherUsers',
|
||||
query:{
|
||||
userId:item.senderId
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href,'_blank')
|
||||
// const routeUrl = router.resolve({
|
||||
// path:'/home/otherUsers',
|
||||
// query:{
|
||||
// userId:item.senderId
|
||||
// }
|
||||
// })
|
||||
// window.open(routeUrl.href,'_blank')
|
||||
}
|
||||
onMounted (()=>{
|
||||
accountFollofFans.getListData.isNoData = false
|
||||
|
||||
@@ -69,6 +69,7 @@ export default defineComponent({
|
||||
})
|
||||
let loadingDom:any = ref(null)
|
||||
let searchFollowFansList = ()=>{
|
||||
accountFollofFans.dataList = []
|
||||
accountFollofFans.getListData.page = 1
|
||||
getFollowFansList()
|
||||
}
|
||||
@@ -80,9 +81,9 @@ export default defineComponent({
|
||||
accountFollofFans.getListData.isShowMark = false
|
||||
if(rv.length == 0) {
|
||||
accountFollofFans.getListData.isNoData = true
|
||||
return
|
||||
}else{
|
||||
accountFollofFans.dataList.push(...rv)
|
||||
}
|
||||
accountFollofFans.dataList = rv
|
||||
}
|
||||
}).catch(() => {
|
||||
accountFollofFans.getListData.isShowMark = false
|
||||
@@ -104,13 +105,13 @@ export default defineComponent({
|
||||
})
|
||||
}
|
||||
let openOtherUsers = (item:any)=>{
|
||||
const routeUrl = router.resolve({
|
||||
path:'/home/otherUsers',
|
||||
query:{
|
||||
userId:item.senderId
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href,'_blank')
|
||||
// const routeUrl = router.resolve({
|
||||
// path:'/home/otherUsers',
|
||||
// query:{
|
||||
// userId:item.senderId
|
||||
// }
|
||||
// })
|
||||
// window.open(routeUrl.href,'_blank')
|
||||
}
|
||||
onMounted (()=>{
|
||||
accountFollofFans.getListData.isNoData = false
|
||||
|
||||
@@ -27,10 +27,10 @@
|
||||
<div v-show="!userDetail.accountExtendList?.Google" id="g_id_bind"></div>
|
||||
<div v-if="userDetail.accountExtendList?.Google" class="gallery_btn" @click="ungroupGoogleModel">{{ $t('frontPage.Unbind') }}</div>
|
||||
</div> -->
|
||||
<div class="gmail_btn">
|
||||
<div v-if="!userDetail.accountExtendList?.Google" class="gallery_btn">{{ $t('frontPage.BindNow') }}</div>
|
||||
<div v-show="!userDetail.accountExtendList?.Google" id="g_id_bind"></div>
|
||||
<div v-if="userDetail.accountExtendList?.Google" class="gallery_btn" @click="ungroupGoogleModel">{{ $t('frontPage.Unbind') }}</div>
|
||||
<div class="gmail_btn" @click="toGmailLogin">
|
||||
<div v-if="!userDetail.accountExtendList?.Google" class="gallery_btn forbidden">{{ $t('frontPage.BindNow') }}</div>
|
||||
<!-- <div v-show="!userDetail.accountExtendList?.Google" id="g_id_bind"></div> -->
|
||||
<div v-if="userDetail.accountExtendList?.Google" class="gallery_btn forbidden" @click="ungroupGoogleModel">{{ $t('frontPage.Unbind') }}</div>
|
||||
<!-- <div v-if="userDetail.accountExtendList?.Google" class="gallery_btn" @click="ungroupGoogleModel">{{ $t('frontPage.Unbind') }}</div> -->
|
||||
</div>
|
||||
</div>
|
||||
@@ -138,7 +138,11 @@ export default defineComponent({
|
||||
bindPageDom.bindEmail.init('Modify')
|
||||
|
||||
}
|
||||
const toGmailLogin = ()=>{
|
||||
message.info(t('account.canNotUtilize'))
|
||||
}
|
||||
onMounted(async ()=>{
|
||||
return
|
||||
let GOOGLE_CLIENT_ID = '29310152396-nnsd3h533fld665oguu8ovrt1nukmt46.apps.googleusercontent.com'
|
||||
var existingScript = document.querySelector(`script[src="${data.scriptSrc}"]`);
|
||||
if(!window.isAddGmail){
|
||||
@@ -202,6 +206,7 @@ export default defineComponent({
|
||||
ungroupGoogleModel,
|
||||
ungroupWeiXinModel,
|
||||
modifyEmail,
|
||||
toGmailLogin,
|
||||
}
|
||||
},
|
||||
data(){
|
||||
|
||||
@@ -71,9 +71,9 @@ export default defineComponent({
|
||||
accountMessage.isShowMark = false
|
||||
if(rv.content.length == 0) {
|
||||
accountMessage.isNoData = true
|
||||
return
|
||||
}else{
|
||||
accountMessage.dataList.push(...rv.content)
|
||||
}
|
||||
accountMessage.dataList = rv.content
|
||||
}).catch(() => {
|
||||
accountMessage.isShowMark = false
|
||||
accountMessage.isNoData = true
|
||||
@@ -95,13 +95,13 @@ export default defineComponent({
|
||||
})
|
||||
}
|
||||
let openOtherUsers = (item:any)=>{
|
||||
const routeUrl = router.resolve({
|
||||
path:'/home/otherUsers',
|
||||
query:{
|
||||
userId:item.senderId
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href,'_blank')
|
||||
// const routeUrl = router.resolve({
|
||||
// path:'/home/otherUsers',
|
||||
// query:{
|
||||
// userId:item.senderId
|
||||
// }
|
||||
// })
|
||||
// window.open(routeUrl.href,'_blank')
|
||||
}
|
||||
let openOtherWork = (item:any)=>{
|
||||
const routeUrl = router.resolve({
|
||||
|
||||
@@ -69,9 +69,9 @@ export default defineComponent({
|
||||
accountMessage.isShowMark = false
|
||||
if(rv.content.length == 0) {
|
||||
accountMessage.isNoData = true
|
||||
return
|
||||
}else{
|
||||
accountMessage.dataList.push(...rv.content)
|
||||
}
|
||||
accountMessage.dataList = rv.content
|
||||
}).catch(() => {
|
||||
accountMessage.isShowMark = false
|
||||
accountMessage.isNoData = true
|
||||
@@ -93,13 +93,13 @@ export default defineComponent({
|
||||
})
|
||||
}
|
||||
let openOtherUsers = (item:any)=>{
|
||||
const routeUrl = router.resolve({
|
||||
path:'/home/otherUsers',
|
||||
query:{
|
||||
userId:item.senderId
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href,'_blank')
|
||||
// const routeUrl = router.resolve({
|
||||
// path:'/home/otherUsers',
|
||||
// query:{
|
||||
// userId:item.senderId
|
||||
// }
|
||||
// })
|
||||
// window.open(routeUrl.href,'_blank')
|
||||
}
|
||||
|
||||
onMounted (()=>{
|
||||
|
||||
@@ -68,9 +68,9 @@ export default defineComponent({
|
||||
accountMessage.isShowMark = false
|
||||
if(rv.content.length == 0) {
|
||||
accountMessage.isNoData = true
|
||||
return
|
||||
}else{
|
||||
accountMessage.dataList.push(...rv.content)
|
||||
}
|
||||
accountMessage.dataList = rv.content
|
||||
}).catch(() => {
|
||||
accountMessage.isShowMark = false
|
||||
accountMessage.isNoData = true
|
||||
@@ -104,13 +104,13 @@ export default defineComponent({
|
||||
})
|
||||
}
|
||||
let openOtherUsers = (item:any)=>{
|
||||
const routeUrl = router.resolve({
|
||||
path:'/home/otherUsers',
|
||||
query:{
|
||||
userId:item.senderId
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href,'_blank')
|
||||
// const routeUrl = router.resolve({
|
||||
// path:'/home/otherUsers',
|
||||
// query:{
|
||||
// userId:item.senderId
|
||||
// }
|
||||
// })
|
||||
// window.open(routeUrl.href,'_blank')
|
||||
}
|
||||
onMounted (()=>{
|
||||
accountMessage.isNoData = false
|
||||
|
||||
@@ -56,14 +56,15 @@ export default defineComponent({
|
||||
}
|
||||
prop.getHistory(data).then((rv:any)=>{
|
||||
accountMessage.isShowMark = false
|
||||
|
||||
if(rv.content.length == 0) {
|
||||
accountMessage.isNoData = true
|
||||
return
|
||||
}else{
|
||||
rv.content.forEach((item:any) => {
|
||||
item.content = JSON.parse(item.content)
|
||||
});
|
||||
accountMessage.dataList.push(...rv.content)
|
||||
}
|
||||
rv.content.forEach((item:any) => {
|
||||
item.content = JSON.parse(item.content)
|
||||
});
|
||||
accountMessage.dataList = rv.content
|
||||
}).catch(() => {
|
||||
accountMessage.isShowMark = false
|
||||
accountMessage.isNoData = true
|
||||
|
||||
@@ -45,51 +45,51 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal_title_text">
|
||||
<div>{{ title.label }} User</div>
|
||||
<div>{{ title.label }} {{ $t('admin.User') }}</div>
|
||||
</div>
|
||||
<div class="allUserPoeration_center admin_page">
|
||||
<div class="admin_state_item">
|
||||
<span>{{ $t('adminSeAllUser.UserName') }}: <span>*</span></span>
|
||||
<span>{{ $t('admin.UserName') }}: <span>*</span></span>
|
||||
<input
|
||||
v-model="userName"
|
||||
placeholder="Please enter user name"
|
||||
:placeholder="$t('admin.enterUserName')"
|
||||
type="text"
|
||||
style="width: 250px"
|
||||
/>
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>{{ $t('adminSeAllUser.UserEmail') }}: <span>*</span></span>
|
||||
<span>{{ $t('admin.UserEmail') }}: <span>*</span></span>
|
||||
<input
|
||||
v-model="userEmail"
|
||||
placeholder="Please enter email"
|
||||
:placeholder="$t('admin.enterEmail')"
|
||||
type="text"
|
||||
style="width: 250px"
|
||||
/>
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>{{ $t('adminSeAllUser.Password') }}: <span>*</span></span>
|
||||
<span>{{ $t('admin.Password') }}: <span>*</span></span>
|
||||
<input
|
||||
@focus="focus"
|
||||
@blur="blur"
|
||||
v-model="password"
|
||||
placeholder="Please enter password"
|
||||
:placeholder="$t('admin.enterPassword')"
|
||||
type="password"
|
||||
style="width: 250px"
|
||||
/>
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>{{ $t('adminSeAllUser.MaximumCredits') }}:</span>
|
||||
<span>{{ $t('admin.MaximumCredits') }}:</span>
|
||||
<input
|
||||
v-model="credits"
|
||||
placeholder="Please enter credits"
|
||||
:placeholder="$t('admin.enterCredits')"
|
||||
type="text"
|
||||
style="width: 250px"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="allUserPoeration_btn admin_page">
|
||||
<div class="admin_search_item" @click="cancelDsign">{{ $t('adminSeAllUser.Close') }}</div>
|
||||
<div class="admin_search_item" @click="setOk">{{ $t('adminSeAllUser.OK') }}</div>
|
||||
<div class="admin_search_item" @click="cancelDsign">{{ $t('admin.Close') }}</div>
|
||||
<div class="admin_search_item" @click="setOk">{{ $t('admin.OK') }}</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
<div class="mark_loading" v-show="loadingShow">
|
||||
@@ -212,7 +212,7 @@ export default defineComponent({
|
||||
if (operations.title?.value == "Add") {
|
||||
data = setAddData();
|
||||
if (!isEmail(data.userEmail)) {
|
||||
message.info(t('adminSeAllUser.jsContent1'));
|
||||
message.info(t('admin.jsContent1'));
|
||||
return;
|
||||
}
|
||||
if (
|
||||
@@ -220,7 +220,7 @@ export default defineComponent({
|
||||
!data.userEmail ||
|
||||
!data.userPassword
|
||||
)
|
||||
return message.warning(t('adminSeAllUser.jsContent2'));
|
||||
return message.warning(t('admin.jsContent2'));
|
||||
Https.axiosPost(Https.httpUrls.addOrUpdateSubAccount, data).then(
|
||||
(rv) => {
|
||||
if (rv) {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<div class="admin_table_search">
|
||||
<div class="admin_state">
|
||||
<div class="admin_state_item">
|
||||
<span>{{ $t('adminSeAllUser.CreateTime') }}:</span>
|
||||
<span>{{ $t('admin.CreateTime') }}:</span>
|
||||
<a-range-picker
|
||||
style="width: 230px"
|
||||
class="range_picker"
|
||||
@@ -45,14 +45,14 @@
|
||||
/>
|
||||
</div> -->
|
||||
<div class="admin_state_item">
|
||||
<span>{{ $t('adminSeAllUser.UserName') }}:</span>
|
||||
<span>{{ $t('admin.UserName') }}:</span>
|
||||
<a-select
|
||||
v-model:value="ids"
|
||||
mode="multiple"
|
||||
style="width: 230px"
|
||||
:field-names="{ label: 'label', value: 'label' }"
|
||||
:filter-option="filterOption"
|
||||
placeholder="Select Item..."
|
||||
:placeholder="$t('admin.selectUserName')"
|
||||
max-tag-count="responsive"
|
||||
:options="allUserList"
|
||||
@keydown.enter="gettrialList"
|
||||
@@ -74,22 +74,22 @@
|
||||
</div>
|
||||
<div class="admin_search">
|
||||
<div class="admin_search_item" @click="searchHistoryList">
|
||||
{{ $t('adminSeAllUser.search') }}
|
||||
{{ $t('admin.search') }}
|
||||
</div>
|
||||
<div class="admin_search_item" @click="addhHistoryList">
|
||||
{{ $t('adminSeAllUser.add') }}
|
||||
{{ $t('admin.add') }}
|
||||
</div>
|
||||
<div class="admin_search_item" style="width: auto;padding: 0 2rem;" @click="downloadTemplate">
|
||||
{{ $t('adminSeAllUser.DownloadTemplate') }}
|
||||
{{ $t('admin.DownloadTemplate') }}
|
||||
</div>
|
||||
<div class="admin_search_item" style="width: auto;padding: 0 2rem;" @click="uploadTemplate">
|
||||
{{ $t('adminSeAllUser.UploadTemplate') }}
|
||||
{{ $t('admin.UploadTemplate') }}
|
||||
</div>
|
||||
<div class="admin_search_item" style="width: auto;padding: 0 2rem;" @click="ExportAccountData">
|
||||
{{ $t('adminSeAllUser.ExportAccountData') }}
|
||||
{{ $t('admin.ExportAccountData') }}
|
||||
</div>
|
||||
<div class="admin_search_item" style="width: auto;padding: 0 2rem;" @click="deleteList">
|
||||
{{ $t('adminSeAllUser.Delete') }}
|
||||
{{ $t('admin.Delete') }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="admin_state_list">
|
||||
@@ -97,19 +97,19 @@
|
||||
class="admin_state_list_item"
|
||||
@click="lastGeTrialList('year')"
|
||||
>
|
||||
{{ $t('adminSeAllUser.NearlyAYear') }}
|
||||
{{ $t('admin.NearlyAYear') }}
|
||||
</div>
|
||||
<div
|
||||
class="admin_state_list_item"
|
||||
@click="lastGeTrialList('month')"
|
||||
>
|
||||
{{ $t('adminSeAllUser.LastMonth') }}
|
||||
{{ $t('admin.LastMonth') }}
|
||||
</div>
|
||||
<div
|
||||
class="admin_state_list_item"
|
||||
@click="lastGeTrialList('week')"
|
||||
>
|
||||
{{ $t('adminSeAllUser.LastWeek') }}
|
||||
{{ $t('admin.LastWeek') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -140,13 +140,13 @@
|
||||
@click="setAagree(record)"
|
||||
style="margin-right: 2rem;"
|
||||
>
|
||||
{{ $t('adminSeAllUser.Edit') }}
|
||||
{{ $t('admin.Edit') }}
|
||||
</div>
|
||||
<div
|
||||
class="operate_item"
|
||||
@click="deleteAagree(record)"
|
||||
>
|
||||
{{ $t('adminSeAllUser.Delete') }}
|
||||
{{ $t('admin.Delete') }}
|
||||
</div>
|
||||
<!-- <div
|
||||
class="operate_item"
|
||||
@@ -222,7 +222,7 @@ export default defineComponent({
|
||||
const columns: any = computed(() => {
|
||||
return [
|
||||
{
|
||||
title: t("adminSeAllUser.UserId"),
|
||||
title: t("admin.UserId"),
|
||||
align: "center",
|
||||
dataIndex: "id",
|
||||
key: "id",
|
||||
@@ -231,7 +231,7 @@ export default defineComponent({
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: t("adminSeAllUser.Email"),
|
||||
title: t("admin.Email"),
|
||||
align: "center",
|
||||
dataIndex: "userEmail",
|
||||
key: "userEmail",
|
||||
@@ -239,7 +239,7 @@ export default defineComponent({
|
||||
ellipsis:true
|
||||
},
|
||||
{
|
||||
title: t("adminSeAllUser.UserName"),
|
||||
title: t("admin.UserName"),
|
||||
align: "center",
|
||||
dataIndex: "userName",
|
||||
key: "userName",
|
||||
@@ -254,15 +254,18 @@ export default defineComponent({
|
||||
// },
|
||||
},
|
||||
{
|
||||
title: t("adminSeAllUser.language"),
|
||||
title: t("admin.language"),
|
||||
align: "center",
|
||||
dataIndex: "language",
|
||||
key: "language",
|
||||
width:100,
|
||||
ellipsis:true,
|
||||
customRender: (record: any) => {
|
||||
return t(`admin.${record.text}`);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: t("adminSeAllUser.CreateDate"),
|
||||
title: t("admin.CreateDate"),
|
||||
align: "center",
|
||||
dataIndex: "createDate",
|
||||
key: "createDate",
|
||||
@@ -270,7 +273,7 @@ export default defineComponent({
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: t("adminSeAllUser.Credits"),
|
||||
title: t("admin.Credits"),
|
||||
align: "center",
|
||||
// width: 150,
|
||||
// minWidth: 100,
|
||||
@@ -282,7 +285,7 @@ export default defineComponent({
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: t("adminSeAllUser.CreditsUsage"),
|
||||
title: t("admin.CreditsUsage"),
|
||||
align: "center",
|
||||
dataIndex: "creditsUsage",
|
||||
key: "creditsUsage",
|
||||
@@ -290,7 +293,7 @@ export default defineComponent({
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: t("adminSeAllUser.CreditsUsageLimit"),
|
||||
title: t("admin.CreditsUsageLimit"),
|
||||
align: "center",
|
||||
dataIndex: "creditsUsageLimit",
|
||||
key: "creditsUsageLimit",
|
||||
@@ -298,7 +301,7 @@ export default defineComponent({
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: t("adminSeAllUser.Operations"),
|
||||
title: t("admin.Operations"),
|
||||
key: "operation",
|
||||
width:120,
|
||||
align: "center",
|
||||
@@ -414,11 +417,11 @@ export default defineComponent({
|
||||
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
|
||||
};
|
||||
let addhHistoryList = () => {
|
||||
allUserPoerationsVue.value.init({value:'Add',label:t('adminSeAllUser.add')},'')
|
||||
allUserPoerationsVue.value.init({value:'Add',label:t('admin.add')},'')
|
||||
};
|
||||
let allUserPoerationsVue = ref()
|
||||
let setAagree = (data:any) =>{
|
||||
allUserPoerationsVue.value.init({value:'Edit',label:t('adminSeAllUser.Edit')},data)
|
||||
allUserPoerationsVue.value.init({value:'Edit',label:t('admin.Edit')},data)
|
||||
}
|
||||
const downloadTemplate = ()=>{
|
||||
Https.axiosGet(Https.httpUrls.subAccountImportExcelDownload,{responseType: 'blob',env:{binary:true}}).then((rv:any)=>{
|
||||
@@ -451,7 +454,6 @@ export default defineComponent({
|
||||
fileInput.onchange = (event:any) => {
|
||||
const file = event.target.files[0]; // 获取选择的文件
|
||||
if (file) {
|
||||
console.log('Selected file:', file);
|
||||
let param = new FormData();
|
||||
param.append('file',file);
|
||||
let config:any = {headers:{'Content-Type':'multipart/form-data','Accept':'*/*' }}
|
||||
@@ -467,7 +469,7 @@ export default defineComponent({
|
||||
const confirmDelete = ()=>{
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
Modal.confirm({
|
||||
title: 'Are you sure you want to delete this item?',
|
||||
title: t('admin.jsDelete'),
|
||||
icon: createVNode(ExclamationCircleOutlined),
|
||||
okText: 'Yes',
|
||||
cancelText: 'No',
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<div class="admin_state">
|
||||
|
||||
<div class="admin_state_item">
|
||||
<span>{{ $t('adminSeDesignDetail.StartDate') }}:</span>
|
||||
<span>{{ $t('admin.StartDate') }}:</span>
|
||||
<a-range-picker
|
||||
style="width:250px"
|
||||
class="range_picker"
|
||||
@@ -23,27 +23,27 @@
|
||||
</a-range-picker>
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>{{ $t('adminSeDesignDetail.StartTime') }}:</span>
|
||||
<a-time-range-picker style="width:250px" class="range_picker" valueFormat="HH:mm:ss" v-model:value="rangeTimeValue" />
|
||||
<span>{{ $t('admin.StartTime') }}:</span>
|
||||
<a-time-range-picker style="width:250px" :placeholder="[$t('admin.startTime'), $t('admin.endTime'),]" class="range_picker" valueFormat="HH:mm:ss" v-model:value="rangeTimeValue" />
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>{{ $t('adminSeDesignDetail.Email') }}:</span>
|
||||
<span>{{ $t('admin.Email') }}:</span>
|
||||
<input
|
||||
v-model="email"
|
||||
placeholder="Please enter email"
|
||||
:placeholder="$t('admin.enterEmail')"
|
||||
@keydown.enter="gettrialList"
|
||||
type="text"
|
||||
style="width: 250px"
|
||||
/>
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>{{ $t('adminSeDesignDetail.UserName') }}:</span>
|
||||
<span>{{ $t('admin.UserName') }}:</span>
|
||||
<a-select
|
||||
v-model:value="ids"
|
||||
mode="multiple"
|
||||
style="width: 250px"
|
||||
:filter-option="filterOption"
|
||||
placeholder="Select Item..."
|
||||
:placeholder="$t('admin.selectUserName')"
|
||||
max-tag-count="responsive"
|
||||
:options="allUserList"
|
||||
@keydown.enter="gettrialList"
|
||||
@@ -51,7 +51,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="admin_search">
|
||||
<div class="admin_search_item" @click="searchHistoryList">Search</div>
|
||||
<div class="admin_search_item" @click="searchHistoryList">{{ $t('adminSeAllUser.search') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -92,7 +92,7 @@ export default defineComponent({
|
||||
const columns: any = computed(() => {
|
||||
return [
|
||||
{
|
||||
title: t('adminSeDesignDetail.Email'),
|
||||
title: t('admin.Email'),
|
||||
align: "center",
|
||||
dataIndex: "userEmail",
|
||||
key: "userEmail",
|
||||
@@ -100,7 +100,7 @@ export default defineComponent({
|
||||
fixed: "left",
|
||||
},
|
||||
{
|
||||
title: t('adminSeDesignDetail.UserId'),
|
||||
title: t('admin.UserId'),
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
dataIndex: "accountId",
|
||||
@@ -108,7 +108,7 @@ export default defineComponent({
|
||||
width:100,
|
||||
},
|
||||
{
|
||||
title: t('adminSeDesignDetail.UserName'),
|
||||
title: t('admin.UserName'),
|
||||
align: "center",
|
||||
ellipsis: 200,
|
||||
dataIndex: "userName",
|
||||
@@ -123,7 +123,7 @@ export default defineComponent({
|
||||
// },
|
||||
},
|
||||
{
|
||||
title: t('adminSeDesignDetail.Frequency'),
|
||||
title: t('admin.Frequency'),
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
dataIndex: "designTimes",
|
||||
@@ -131,7 +131,7 @@ export default defineComponent({
|
||||
width:100,
|
||||
},
|
||||
{
|
||||
title: t('adminSeDesignDetail.CreateTime'),
|
||||
title: t('admin.CreateTime'),
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
// width: 150,
|
||||
@@ -143,7 +143,7 @@ export default defineComponent({
|
||||
width:200,
|
||||
},
|
||||
{
|
||||
title: t('adminSeDesignDetail.Credits'),
|
||||
title: t('admin.Credits'),
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
// width: 150,
|
||||
|
||||
232
src/component/Administrator/SE/recentActiveChart.vue
Normal file
232
src/component/Administrator/SE/recentActiveChart.vue
Normal file
@@ -0,0 +1,232 @@
|
||||
<template>
|
||||
<div class="recentActiveChart admin_page">
|
||||
<div class="admin_table_search">
|
||||
<div class="admin_state">
|
||||
|
||||
<div class="admin_state_item">
|
||||
<span>{{ $t('admin.StartTime') }}:</span>
|
||||
<a-range-picker
|
||||
style="width:280px"
|
||||
class="range_picker"
|
||||
v-model:value="rangePickerValue"
|
||||
:allowClear="false"
|
||||
: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="admin_state_item">
|
||||
<span>{{ $t('admin.UserName') }}:</span>
|
||||
<a-select
|
||||
v-model:value="userIdList"
|
||||
mode="multiple"
|
||||
style="width: 280px"
|
||||
:filter-option="filterOption"
|
||||
:placeholder="$t('admin.selectUserName')"
|
||||
max-tag-count="responsive"
|
||||
:options="dataList"
|
||||
></a-select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="admin_search">
|
||||
<div class="admin_search_item" @click="searchHistoryList">Search</div>
|
||||
</div>
|
||||
<div class="admin_state_list">
|
||||
<div
|
||||
class="admin_state_list_item"
|
||||
@click="lastGeTrialList('year')"
|
||||
>
|
||||
{{ $t('admin.NearlyAYear') }}
|
||||
</div>
|
||||
<div
|
||||
class="admin_state_list_item"
|
||||
@click="lastGeTrialList('month')"
|
||||
>
|
||||
{{ $t('admin.LastMonth') }}
|
||||
</div>
|
||||
<div
|
||||
class="admin_state_list_item"
|
||||
@click="lastGeTrialList('week')"
|
||||
>
|
||||
{{ $t('admin.LastWeek') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="admin_table_content" ref="pageChartDom">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts">
|
||||
import { defineComponent, ref, createVNode, computed, reactive, toRefs, onMounted } from "vue";
|
||||
import { Https } from "@/tool/https";
|
||||
import { formatTime } from "@/tool/util";
|
||||
import * as echarts from 'echarts/core';
|
||||
import { TooltipComponent, LegendComponent } from 'echarts/components';
|
||||
import { PieChart } from 'echarts/charts';
|
||||
import { LabelLayout } from 'echarts/features';
|
||||
import { useStore } from "vuex";
|
||||
import { CanvasRenderer } from 'echarts/renderers';
|
||||
export default defineComponent({
|
||||
components: {
|
||||
},
|
||||
setup() {
|
||||
const store:any = useStore()
|
||||
let filter:any = reactive({
|
||||
dataList:computed(()=>{
|
||||
return store.state.adminPage.allUserList
|
||||
}),
|
||||
})
|
||||
|
||||
let filterData:any = reactive({
|
||||
rangePickerValue:[],
|
||||
userIdList:[]
|
||||
})
|
||||
//查询列表
|
||||
let searchHistoryList = ()=> {
|
||||
gettrialList();
|
||||
}
|
||||
//获取列表
|
||||
let gettrialList = async () =>{
|
||||
filter.tableLoading = true
|
||||
let startDate: any = filterData.rangePickerValue?.[0]
|
||||
? filterData.rangePickerValue[0]+' '+'00:00:00'
|
||||
: "";
|
||||
let endDate: any = filterData.rangePickerValue?.[1]
|
||||
? filterData.rangePickerValue[1]+' '+'23:59:59'
|
||||
: "";
|
||||
let data = {
|
||||
endTime:endDate,
|
||||
startTime:startDate,
|
||||
userIdList:filterData.userIdList.join(','),
|
||||
}
|
||||
Https.axiosGet(Https.httpUrls.getActiveUserFunc,{params:data}).then((rv: any) => {
|
||||
if (rv) {
|
||||
let data:any = []
|
||||
rv.names.forEach((item:any,index:number) => {
|
||||
let obj = {
|
||||
name : item,
|
||||
value:rv.values[index],
|
||||
}
|
||||
data.push(obj)
|
||||
});
|
||||
setEcharts(data)
|
||||
// this.workspaceItem.position = this.singleTypeList[0].label
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
let myChart:any
|
||||
let setEcharts = (data:any) =>{
|
||||
if (myChart) {
|
||||
myChart.setOption({
|
||||
series: [{
|
||||
data: data
|
||||
}]
|
||||
});
|
||||
}else{
|
||||
echarts.use([
|
||||
TooltipComponent,
|
||||
LegendComponent,
|
||||
PieChart,
|
||||
CanvasRenderer,
|
||||
LabelLayout
|
||||
]);
|
||||
var chartDom = pageChartDom.value;
|
||||
myChart = echarts.init(chartDom);
|
||||
var option;
|
||||
|
||||
option = {
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
top: '5%',
|
||||
left: 'center'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
type: 'pie',
|
||||
radius: ['40%', '70%'],
|
||||
avoidLabelOverlap: false,
|
||||
|
||||
itemStyle: {
|
||||
borderRadius: 10
|
||||
},
|
||||
label: {
|
||||
show: false,
|
||||
position: 'center'
|
||||
},
|
||||
emphasis: {
|
||||
label: {
|
||||
show: true,
|
||||
fontSize: 30,
|
||||
fontWeight: 'bold'
|
||||
},
|
||||
},
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
stillShowZeroSum:true,
|
||||
data: data
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
option && myChart.setOption(option);
|
||||
}
|
||||
|
||||
}
|
||||
let lastGeTrialList = (str:string)=>{
|
||||
let currentDate = new Date();
|
||||
let currentTimestamp = Math.floor(currentDate.getTime() / 1000);
|
||||
// 计算30天前的时间戳
|
||||
let thirtyDaysAgoTimestamp
|
||||
if(str == 'year'){
|
||||
thirtyDaysAgoTimestamp = currentTimestamp - (360 * 24 * 60 * 60);
|
||||
}else if(str == 'month'){
|
||||
thirtyDaysAgoTimestamp = currentTimestamp - (30 * 24 * 60 * 60);
|
||||
}else if(str == 'week'){
|
||||
thirtyDaysAgoTimestamp = currentTimestamp - (7 * 24 * 60 * 60);
|
||||
}
|
||||
filterData.rangePickerValue = [formatTime(thirtyDaysAgoTimestamp,'YYYY-MM-DD'),formatTime(currentTimestamp,'YYYY-MM-DD')]
|
||||
gettrialList();
|
||||
}
|
||||
let pageChartDom:any = ref()
|
||||
let filterOption = (input:any, option:any)=>{
|
||||
// 使用 option.label 进行搜索
|
||||
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
|
||||
}
|
||||
onMounted(()=>{
|
||||
lastGeTrialList('month')
|
||||
})
|
||||
return {
|
||||
...toRefs(filter),
|
||||
...toRefs(filterData),
|
||||
searchHistoryList,
|
||||
gettrialList,
|
||||
pageChartDom,
|
||||
lastGeTrialList,
|
||||
filterOption,
|
||||
};
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
};
|
||||
},
|
||||
|
||||
methods: {
|
||||
|
||||
},
|
||||
});
|
||||
</script>
|
||||
@@ -137,14 +137,14 @@ export default defineComponent({
|
||||
return str;
|
||||
},
|
||||
},
|
||||
// {
|
||||
// title: 'Frequency',
|
||||
// align: "center",
|
||||
// ellipsis: true,
|
||||
// dataIndex: "designTimes",
|
||||
// key: "designTimes",
|
||||
// width:100,
|
||||
// },
|
||||
{
|
||||
title: 'Frequency',
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
dataIndex: "designTimes",
|
||||
key: "designTimes",
|
||||
width:100,
|
||||
},
|
||||
{
|
||||
title: 'Country',
|
||||
align: "center",
|
||||
@@ -177,14 +177,14 @@ export default defineComponent({
|
||||
key: "givenName",
|
||||
width:100,
|
||||
},
|
||||
// {
|
||||
// title: 'Create Time',
|
||||
// align: "center",
|
||||
// ellipsis: true,
|
||||
// dataIndex: "createTime",
|
||||
// key: "createTime",
|
||||
// width:200,
|
||||
// },
|
||||
{
|
||||
title: 'Create Time',
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
dataIndex: "createTime",
|
||||
key: "createTime",
|
||||
width:200,
|
||||
},
|
||||
{
|
||||
title: 'Credits',
|
||||
align: "center",
|
||||
|
||||
@@ -48,7 +48,6 @@ const fillColorRef = ref(null);
|
||||
commandManager.setChangeCallback((info) => {
|
||||
canUndo.value = info.canUndo;
|
||||
canRedo.value = info.canRedo;
|
||||
|
||||
emit("undo-redo-status-changed", {
|
||||
canUndo: canUndo.value,
|
||||
canRedo: canRedo.value,
|
||||
|
||||
@@ -796,12 +796,20 @@ function handleChildLayersReorder(reorderData) {
|
||||
}
|
||||
|
||||
// 处理画布变更事件
|
||||
const changeCanvas = (command) => {
|
||||
const changeCanvas = async (command) => {
|
||||
const commandData = {
|
||||
isChange: command.canUndo || command.canRedo, // 是否有可撤销或可重做的操作
|
||||
...command, // 传递完整的命令数据
|
||||
};
|
||||
emit("changeCanvas", commandData);
|
||||
if(command.canUndo || command.canRedo){
|
||||
setTimeout(async ()=>{
|
||||
const imageData = await canvasManager.exportImage({
|
||||
restoreOpacityInRedGreen: true, // 恢复红绿图模式下的透明度
|
||||
});
|
||||
emit("trigger-red-green-mouseup", imageData);
|
||||
},100)
|
||||
}
|
||||
};
|
||||
|
||||
// 提供外部ref实例方法
|
||||
|
||||
@@ -210,8 +210,10 @@ export default defineComponent({
|
||||
|
||||
setRevocation()
|
||||
detailData.loadingShow = false
|
||||
if(rv.singleOverall == "single"){
|
||||
store.commit('DesignDetail/setDesignColthes',rv.clothes[0].id)
|
||||
}
|
||||
|
||||
store.commit('DesignDetail/setDesignColthes',rv.clothes[0].id)
|
||||
}
|
||||
|
||||
).catch(rv=>{
|
||||
@@ -455,6 +457,7 @@ export default defineComponent({
|
||||
canvasReload,
|
||||
}
|
||||
},
|
||||
|
||||
provide() {
|
||||
return {
|
||||
}
|
||||
|
||||
@@ -165,8 +165,12 @@ export default defineComponent({
|
||||
item.gradient = colorData.selectDetail.color.gradient
|
||||
}
|
||||
colorData.selectColor = item
|
||||
colorData.colorList.index = pushIndex + 1
|
||||
colorData.colorList.list[newVal][pushIndex + 1] = item
|
||||
let num = pushIndex
|
||||
if(colorData.allBoardData.colorBoards.length > 0){
|
||||
num += 1
|
||||
}
|
||||
colorData.colorList.index = num
|
||||
colorData.colorList.list[newVal][num] = item
|
||||
}
|
||||
|
||||
// for (let index = 0; index < 9; index++) {
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<div class="back" v-show="isEditPattern.value">
|
||||
<i class="fi fi-br-angle-left" @click="setBack"></i>
|
||||
</div>
|
||||
<modelNav @canvasReload="()=>$emit('canvasReload')" @addSketch="()=>$emit('addSketch')" @deleteItem="deleteItem"></modelNav>
|
||||
<modelNav @canvasReload="()=>$emit('canvasReload')" @addSketch="()=>$emit('addSketch')" @deleteItem="deleteItem" :isEditPattern="isEditPattern.value"></modelNav>
|
||||
</div>
|
||||
<div class="modelindex_right">
|
||||
<div class="detail_btn">
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<img :src="item.path" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div v-show="singleOveral.value == 'overall'" v-if="(currentDetailType == 'sketch' || currentDetailType == '') && designDetail.clothes.length < 5 " :class="{active:!selectDetail?.id && currentDetailType == 'sketch'}" class="modelNav_item add" @click="addSketch">
|
||||
<div v-show="singleOveral.value == 'overall'" v-if="(currentDetailType == 'sketch' || currentDetailType == '') && designDetail.clothes.length < 5 && !isEditPattern.value" :class="{active:!selectDetail?.id && currentDetailType == 'sketch'}" class="modelNav_item add" @click="addSketch">
|
||||
+
|
||||
</div>
|
||||
</div>
|
||||
@@ -31,6 +31,12 @@ export default defineComponent({
|
||||
position,
|
||||
},
|
||||
emits:['canvasReload','addSketch','deleteItem'],
|
||||
props:{
|
||||
isEditPattern:{
|
||||
type:Boolean,
|
||||
default:false,
|
||||
},
|
||||
},
|
||||
setup(props,{emit}) {
|
||||
const store = useStore();
|
||||
const {t} = useI18n()
|
||||
|
||||
@@ -18,11 +18,12 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="designOpenrtion_imgMask" v-if="!frontBack?.body?.path">
|
||||
<img :src="designDetail.currentFullBodyView || selectDetail.undividedLayer" style="object-fit: cover;" alt="">
|
||||
<img :src="designDetail?.undividedLayer || selectDetail?.path" style="object-fit: cover;" alt="">
|
||||
<!-- <img @load="setSelectSketch()" :src="designDetail?.currentFullBodyView || selectDetail?.undividedLayer" style="object-fit: cover;" alt=""> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="molepositon" :class="{active:imgDesignImg}">
|
||||
<div class="designOpenrtion_imgMask">
|
||||
<div class="molepositon imgDesignImg" :class="{active:imgDesignImg}">
|
||||
<div class="designOpenrtion_imgMask" style="width: 100%;height: 100%;">
|
||||
<div class="detail_modal_item_front">
|
||||
<img :src="designDetail.designItemUrl" alt="" style="object-fit: cover;">
|
||||
</div>
|
||||
@@ -55,6 +56,7 @@ export default defineComponent({
|
||||
const detailData = reactive({
|
||||
frontBack:computed(()=>store.state.DesignDetail.frontBack),
|
||||
designDetail:computed(()=>store.state.DesignDetail.designDetail),
|
||||
selectDetail:computed(()=>store.state.DesignDetail.selectDetail),
|
||||
isEditPattern:inject('isEditPattern') as any,
|
||||
singleOveral:inject('singleOveral') as any,
|
||||
detailBody:null as any,
|
||||
@@ -67,7 +69,7 @@ export default defineComponent({
|
||||
direction:'',
|
||||
})
|
||||
watch(()=>selectItem.selectDetail,(newValue,oldValue)=>{
|
||||
if(newValue.id == oldValue?.id)return
|
||||
if(!newValue && newValue?.id == oldValue?.id)return
|
||||
selectItem.imgDomIndex = detailData.frontBack.front.findIndex((item:any)=>item.id == newValue.id)
|
||||
},{immediate: true,})
|
||||
watch(()=>detailData.frontBack?.body?.path,(newVal)=>{
|
||||
@@ -80,6 +82,9 @@ export default defineComponent({
|
||||
let dom = document.querySelector('.molepositon .perview_img') as any
|
||||
if(!detailData.frontBack?.body?.path || !dom)return
|
||||
img.onload = () => {
|
||||
if(!detailData.selectDetail?.id){
|
||||
store.commit('DesignDetail/setDesignColthes',detailData.designDetail.clothes[0].id)
|
||||
}
|
||||
// resolve(img)
|
||||
sacle = dom.parentNode.offsetWidth / img.width
|
||||
detailData.frontBack.front.forEach((item:any,index:number) => {
|
||||
@@ -462,14 +467,28 @@ export default defineComponent({
|
||||
position: relative;
|
||||
display: none;
|
||||
&.active{
|
||||
display: block;
|
||||
display: flex;
|
||||
z-index: 2;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
&.imgDesignImg{
|
||||
> .designOpenrtion_imgMask{
|
||||
.detail_modal_item_front{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
img{
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
> .designOpenrtion_imgMask{
|
||||
width: auto;
|
||||
height: auto;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
// height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
@@ -491,9 +510,8 @@ export default defineComponent({
|
||||
width: 100%;
|
||||
img{
|
||||
width: 100%;
|
||||
// height: ;
|
||||
height: 100%;
|
||||
// width: 100%;
|
||||
// height: auto;
|
||||
float: left;
|
||||
user-select:none;
|
||||
-webkit-user-drag: none;
|
||||
|
||||
@@ -59,12 +59,12 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="img_block_item mannquin" v-show="probjects.type != 'singleProductDesign'">
|
||||
<div class="img_block_item mannquin" v-show="selectProbject.type != 'singleProductDesign'">
|
||||
<div class="title">
|
||||
<div>{{$t('collectionModal.Mannequin')}}</div>
|
||||
<i class="fi fi-rr-edit" @click="openCollection('mannequin')"></i>
|
||||
</div>
|
||||
<div class="mannquin_img_item" v-for="(model) in probjects?.model" :key="model">
|
||||
<div class="mannquin_img_item" v-for="(model) in selectProbject?.model" :key="model">
|
||||
<div class="all_img_item_block">
|
||||
<img class="all_img_content cover_img" :src="model?.url">
|
||||
</div>
|
||||
@@ -89,7 +89,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="img_block_item">
|
||||
<div class="lager_img_item" v-for="(marketing) in allBoardData.marketingSketchFiles" :key="marketing">
|
||||
<div class="all_img_item_block">
|
||||
@@ -107,6 +106,9 @@ import { useStore } from "vuex";
|
||||
export default defineComponent({
|
||||
components:{MoodTemplate},
|
||||
emits:['openCollection'],
|
||||
props:{
|
||||
|
||||
},
|
||||
setup(props, { emit }) {
|
||||
const store:any = useStore();
|
||||
let sketch:any = ref([[],[],[]])
|
||||
@@ -114,15 +116,18 @@ export default defineComponent({
|
||||
return store.state.UploadFilesModule.showSketchboard})
|
||||
let allBoardData:any = computed(()=>{
|
||||
return store.state.UploadFilesModule.allBoardData})
|
||||
let probjects:any = computed(()=>{
|
||||
return store.state.Workspace.probjects})
|
||||
// let probjects:any = computed(()=>{
|
||||
// return store.state.Workspace.probjects})
|
||||
const selectProbject = computed(()=>{
|
||||
return store.state.Workspace.probjects
|
||||
})
|
||||
const openCollection = (str:any)=>{
|
||||
emit('openCollection',str)
|
||||
}
|
||||
return {
|
||||
store,
|
||||
allBoardData,
|
||||
probjects,
|
||||
selectProbject,
|
||||
sketch,
|
||||
sketchList,
|
||||
openCollection,
|
||||
|
||||
@@ -203,7 +203,7 @@ export default defineComponent({
|
||||
registerModel:computed(()=>{
|
||||
return store.state.UserHabit.bindEmail.isBindEmail
|
||||
}),
|
||||
// registerModel:false,
|
||||
// registerModel:true,
|
||||
bindType:computed(()=>{
|
||||
return store.state.UserHabit.bindEmail.type
|
||||
}),
|
||||
|
||||
@@ -57,9 +57,23 @@
|
||||
</div>
|
||||
<div class="clearSlogan_center_btn_item">
|
||||
<div>{{ $t('createSlogan.FontFamily') }}</div>
|
||||
<select v-model="fontFamily" :style="{'font-family':fontFamily}">
|
||||
<option v-for="item in textFontFamilyList" :style="{'font-family':item.value}" :value="item.value">{{item.name}}</option>
|
||||
</select>
|
||||
<generalMenu :dataList="textFontFamilyList"
|
||||
:style="{
|
||||
'font-weight': '600',
|
||||
'padding': '0 1rem',
|
||||
'height': '4rem',
|
||||
}"
|
||||
selectWidth="12rem"
|
||||
selectSize="1.2rem"
|
||||
:isFontType="true"
|
||||
@setprintModel="(item)=>{fontFamily = item.value;}" :item="textFontFamilyList.filter((item)=>item.value === fontFamily)[0]"></generalMenu>
|
||||
|
||||
<!-- <select v-model="fontFamily" :style="{'font-family':fontFamily}">
|
||||
<option v-for="item in textFontFamilyList" :value="item.value">
|
||||
<div :style="{'font-family':item.value}">{{item.name}}</div>
|
||||
{{item.name}}
|
||||
</option>
|
||||
</select> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearSlogan_center_btn clearSlogan_center_item">
|
||||
@@ -93,11 +107,13 @@ import allOrder from "@/component/Pay/allOrder.vue";
|
||||
import creditsDetail from "@/component/Pay/creditsDetail.vue";
|
||||
import { JSSetRemoveImage } from "@/tool/canvasDrawing";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import generalMenu from "@/component/HomePage/generalMenu.vue";
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
creditsDetail,
|
||||
allOrder,
|
||||
generalMenu,
|
||||
},
|
||||
emits: ['setSloganData'],
|
||||
setup(props,{emit}) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="generalMenu_printModel">
|
||||
<div class="generalMenu_printModel" ref="containerRef">
|
||||
<div @click.stop="openPrintModel" :class="driverClass.class1" :style="{...$props.style_,'width':selectWidth}">
|
||||
<a-popover v-if="isCanvas">
|
||||
<template #content>
|
||||
@@ -10,46 +10,34 @@
|
||||
<span v-else>{{ item?.name }}</span>
|
||||
</a-popover>
|
||||
<div v-else>
|
||||
<span v-if="item?.label">{{ item?.label }}</span>
|
||||
<span v-else>{{ item?.name }}</span>
|
||||
<span v-if="item?.label" :style="{'font-family': isFontType?item?.value:'',fontSize:selectSize}">{{ item?.label }}</span>
|
||||
<span v-else :style="{'font-family': isFontType?item?.value:'',fontSize:selectSize}">{{ item?.name }}</span>
|
||||
</div>
|
||||
<div class="icon iconfont icon-xiala" :class="{active:openClick}"></div>
|
||||
</div>
|
||||
<ul :class="driverClass.class2" v-show="openClick" :style="{'width':selectWidth,...ulStyle}">
|
||||
<ul
|
||||
:class="driverClass.class2"
|
||||
v-show="openClick"
|
||||
:style="{
|
||||
'width': selectWidth,
|
||||
...ulStyle,
|
||||
...dropdownPositionStyle
|
||||
}"
|
||||
ref="dropdownRef"
|
||||
>
|
||||
<div>
|
||||
<li v-for="listItem,index in dataList" :class="{active:deleteItem == index,hover:((item?.label && item?.label == listItem?.label) || (item?.name && item?.name == listItem?.name))}" class="printModel_item" @click="setprintModel(listItem,index)">
|
||||
<a-popover placement="right" v-if="isCanvas">
|
||||
<template #content>
|
||||
<!-- <span v-if="item.img != -1 && index == dataList?.length -1 " class="icon iconfont icon-shanchu" style="cursor: pointer; position: absolute; right: 10px; top: 10px;" @click.stop="deleteFile(item)"></span> -->
|
||||
<img v-if="listItem.img != -1" style="width: 10rem;height: 10rem;object-fit: contain;" :src="item.img" alt="">
|
||||
<!-- <div v-else-if="item.img == -1" class="generalMenu_printModel_upload ">
|
||||
<i class="fi fi-br-upload input_border" style="width: 8rem; height: 8rem;padding: 0;" :title="$t('Generate.uploadTitle')">
|
||||
<a-upload
|
||||
style="height: 100%;"
|
||||
class="search_upImg"
|
||||
:capture="null"
|
||||
:action="uploadUrl + '/api/element/upload'"
|
||||
list-type="picture-card"
|
||||
:data="{
|
||||
...upload,
|
||||
}"
|
||||
:maxCount='1'
|
||||
:headers="{ Authorization: token }"
|
||||
accept=".jpg,.png,.jpeg,.bmp"
|
||||
@change="(file) => fileUploadChange(file)"
|
||||
>
|
||||
</a-upload>
|
||||
</i>
|
||||
</div> -->
|
||||
<span style="text-align: center;">{{ $t('Generate.referenceImage') }}</span>
|
||||
|
||||
</template>
|
||||
<span v-if="listItem?.label">{{ listItem?.label }}</span>
|
||||
<span v-else>{{ listItem?.name }}</span>
|
||||
</a-popover>
|
||||
<div v-else>
|
||||
<span v-if="listItem?.label">{{ listItem?.label }}</span>
|
||||
<span v-else>{{ listItem?.name }}</span>
|
||||
<span v-if="listItem?.label" :style="{'font-family': isFontType?listItem?.value:''}">{{ listItem?.label }}</span>
|
||||
<span v-else :style="{'font-family': isFontType?listItem?.value:''}">{{ listItem?.name }}</span>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
@@ -58,7 +46,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent,ref ,nextTick} from "vue";
|
||||
import { defineComponent, ref, nextTick, onMounted, onUnmounted, computed } from "vue";
|
||||
import { useStore } from "vuex";
|
||||
import { Https } from "@/tool/https";
|
||||
import { openGuide,driverObj__ } from "@/tool/guide";
|
||||
@@ -81,6 +69,14 @@ import { message, Upload, Modal } from "ant-design-vue";
|
||||
type:Boolean,
|
||||
default:false,
|
||||
},
|
||||
isFontType:{
|
||||
type:Boolean,
|
||||
default:true,
|
||||
},
|
||||
selectSize:{
|
||||
type:String,
|
||||
default:'1.8rem'
|
||||
},
|
||||
deleteItem:{
|
||||
type:Number,
|
||||
default:-1
|
||||
@@ -106,16 +102,81 @@ import { message, Upload, Modal } from "ant-design-vue";
|
||||
setup(props:any,{emit}){
|
||||
let selectIndex = ref(0)
|
||||
let openClick = ref(false)
|
||||
let containerRef = ref<HTMLElement | null>(null)
|
||||
let dropdownRef = ref<HTMLElement | null>(null)
|
||||
let dropdownPositionStyle = ref({})
|
||||
let store = useStore();
|
||||
|
||||
// 计算元素到屏幕底部的距离
|
||||
const getDistanceToBottom = (element: HTMLElement) => {
|
||||
const rect = element.getBoundingClientRect()
|
||||
return window.innerHeight - rect.bottom
|
||||
}
|
||||
|
||||
// 计算元素到屏幕顶部的距离
|
||||
const getDistanceToTop = (element: HTMLElement) => {
|
||||
const rect = element.getBoundingClientRect()
|
||||
return rect.top
|
||||
}
|
||||
|
||||
// 智能计算下拉菜单位置
|
||||
const calculateDropdownPosition = () => {
|
||||
if (!containerRef.value || !dropdownRef.value) return {}
|
||||
|
||||
const trigger = containerRef.value
|
||||
const dropdown = dropdownRef.value
|
||||
|
||||
const distanceToBottom = getDistanceToBottom(trigger)
|
||||
const distanceToTop = getDistanceToTop(trigger)
|
||||
const dropdownHeight = dropdown.offsetHeight || 200 // 默认高度
|
||||
|
||||
// 如果下方空间足够,正常向下展开
|
||||
if (distanceToBottom >= dropdownHeight) {
|
||||
return {
|
||||
top: '100%',
|
||||
bottom: 'auto',
|
||||
maxHeight: 'none',
|
||||
transformOrigin: 'top center'
|
||||
}
|
||||
}
|
||||
// 如果下方空间不足但上方空间足够,向上展开
|
||||
else if (distanceToTop >= dropdownHeight) {
|
||||
return {
|
||||
top: 'auto',
|
||||
bottom: '100%',
|
||||
maxHeight: 'none',
|
||||
transformOrigin: 'bottom center'
|
||||
}
|
||||
}
|
||||
// 如果上下空间都不足,向上展开并限制高度
|
||||
else {
|
||||
return {
|
||||
top: 'auto',
|
||||
bottom: '100%',
|
||||
maxHeight: `${distanceToTop - 20}px`, // 留出一些边距
|
||||
overflowY: 'auto',
|
||||
transformOrigin: 'bottom center'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 调整下拉菜单位置
|
||||
const adjustDropdownPosition = () => {
|
||||
dropdownPositionStyle.value = calculateDropdownPosition()
|
||||
}
|
||||
|
||||
let openPrintModel = ()=>{
|
||||
document.addEventListener('click',removePrintModel)
|
||||
document.addEventListener('click', removePrintModel)
|
||||
window.addEventListener('resize', handleResize)
|
||||
openClick.value = true
|
||||
nextTick().then(()=>{
|
||||
adjustDropdownPosition() // 打开时计算位置
|
||||
if(props.driver__.driver){
|
||||
driverObj__.moveNext()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
let setprintModel = (item:any,index:any)=>{
|
||||
if(props.deleteItem == index) return
|
||||
if(item.img == -1) return
|
||||
@@ -128,10 +189,37 @@ import { message, Upload, Modal } from "ant-design-vue";
|
||||
})
|
||||
emit('setprintModel',item)
|
||||
}
|
||||
|
||||
let removePrintModel = ()=>{
|
||||
openClick.value = false
|
||||
document.removeEventListener('click',removePrintModel)
|
||||
document.removeEventListener('click', removePrintModel)
|
||||
window.removeEventListener('resize', handleResize)
|
||||
}
|
||||
|
||||
// 窗口 resize 处理
|
||||
const handleResize = () => {
|
||||
if (openClick.value) {
|
||||
adjustDropdownPosition()
|
||||
}
|
||||
}
|
||||
|
||||
// 滚动处理
|
||||
const handleScroll = () => {
|
||||
if (openClick.value) {
|
||||
adjustDropdownPosition()
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
window.addEventListener('scroll', handleScroll, true)
|
||||
})
|
||||
|
||||
onUnmounted(() => {
|
||||
window.removeEventListener('scroll', handleScroll, true)
|
||||
document.removeEventListener('click', removePrintModel)
|
||||
window.removeEventListener('resize', handleResize)
|
||||
})
|
||||
|
||||
let fileUploadChange = (data: any)=>{
|
||||
let file = data.file;
|
||||
let bor = true
|
||||
@@ -148,23 +236,19 @@ import { message, Upload, Modal } from "ant-design-vue";
|
||||
}else{
|
||||
bor = false
|
||||
}
|
||||
|
||||
} else if (file.status === "error") {
|
||||
bor = false
|
||||
}
|
||||
if(!bor){
|
||||
// let res:any = JSON.parse(file.xhr.response);
|
||||
// props.dataList.forEach((item:any)=>{
|
||||
// if(item.img == -1){
|
||||
// }
|
||||
// })
|
||||
// message.warning(res.errMsg);
|
||||
// 错误处理
|
||||
}
|
||||
}
|
||||
|
||||
let deleteFile = (item:any)=>{
|
||||
item.img = -1
|
||||
emit('setprintModel',props.dataList[0])
|
||||
}
|
||||
|
||||
return {
|
||||
selectIndex,
|
||||
openClick,
|
||||
@@ -173,8 +257,10 @@ import { message, Upload, Modal } from "ant-design-vue";
|
||||
openPrintModel,
|
||||
fileUploadChange,
|
||||
deleteFile,
|
||||
containerRef,
|
||||
dropdownRef,
|
||||
dropdownPositionStyle
|
||||
}
|
||||
|
||||
},
|
||||
data(prop) {
|
||||
return {
|
||||
@@ -199,6 +285,7 @@ import { message, Upload, Modal } from "ant-design-vue";
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.ant-popover-inner-content{
|
||||
display: flex;
|
||||
@@ -206,11 +293,14 @@ import { message, Upload, Modal } from "ant-design-vue";
|
||||
align-items: center;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="less">
|
||||
//衣服类型下拉菜单
|
||||
.generalMenu_printModel{
|
||||
position: relative;
|
||||
margin-right: 2rem;
|
||||
height: 5rem;
|
||||
|
||||
.icon-xiala{
|
||||
margin-left: auto;
|
||||
transition: all .3s;
|
||||
@@ -218,8 +308,8 @@ import { message, Upload, Modal } from "ant-design-vue";
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
}
|
||||
|
||||
>div{
|
||||
// display: flex;
|
||||
display: block;
|
||||
width: 20rem;
|
||||
border-radius: 1rem;
|
||||
@@ -235,49 +325,62 @@ import { message, Upload, Modal } from "ant-design-vue";
|
||||
box-sizing: border-box;
|
||||
align-items: center;
|
||||
background: #fff;
|
||||
> div{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
> span{
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
>i{
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
|
||||
ul{
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: 20rem;
|
||||
margin-top: calc(.3rem*1.2);
|
||||
z-index: 10;
|
||||
margin-top: 0.36rem;
|
||||
z-index: 1000;
|
||||
overflow: hidden;
|
||||
border-radius: calc(1rem*1.2);
|
||||
border-radius: 1.2rem;
|
||||
background: #fff;
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
||||
transition: all 0.3s ease;
|
||||
|
||||
> div{
|
||||
overflow-y: auto;
|
||||
|
||||
height: 100%;
|
||||
max-height: 300px;
|
||||
}
|
||||
|
||||
li{
|
||||
// background: rgba(0,0,0,.2);
|
||||
background: #fff;
|
||||
line-height: 2;
|
||||
cursor: pointer;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
padding: 0 calc(1rem*1.2);
|
||||
padding: 0 1.2rem;
|
||||
transition: all 0.2s ease;
|
||||
position: relative;
|
||||
|
||||
span{
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
&.active{
|
||||
// opacity: .4;
|
||||
pointer-events: none;
|
||||
color: #a4a4a4 !important;
|
||||
background: #ebebeb !important;
|
||||
cursor: not-allowed;
|
||||
|
||||
}
|
||||
|
||||
&.hover{
|
||||
background: #f3f3f6;
|
||||
color: #000;
|
||||
@@ -287,14 +390,13 @@ import { message, Upload, Modal } from "ant-design-vue";
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 10px;
|
||||
z-index: 2;
|
||||
}
|
||||
}
|
||||
.printModel_item:hover{
|
||||
// background: rgba(0,0,0,.4);
|
||||
background: #f3f3f6;
|
||||
color: #000;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -89,22 +89,25 @@ export default defineComponent({
|
||||
newPostedMessage.isShowMark = false
|
||||
if(rv.content.length == 0) {
|
||||
newPostedMessage.isNoData = true
|
||||
return
|
||||
}else{
|
||||
rv.content.forEach((item:any) => {
|
||||
item.content = JSON.parse(item.content)
|
||||
});
|
||||
newPostedMessage.dataList.push(...rv.content)
|
||||
}
|
||||
newPostedMessage.dataList = rv.content
|
||||
}).catch(() => {
|
||||
newPostedMessage.isShowMark = false
|
||||
newPostedMessage.isNoData = true
|
||||
})
|
||||
}
|
||||
let openOtherUsers = (item:any)=>{
|
||||
const routeUrl = router.resolve({
|
||||
path:'/home/otherUsers',
|
||||
query:{
|
||||
userId:item.senderId
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href,'_blank')
|
||||
// const routeUrl = router.resolve({
|
||||
// path:'/home/otherUsers',
|
||||
// query:{
|
||||
// userId:item.senderId
|
||||
// }
|
||||
// })
|
||||
// window.open(routeUrl.href,'_blank')
|
||||
}
|
||||
let openOtherWork = (item:any)=>{
|
||||
const routeUrl = router.resolve({
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<template>
|
||||
<div class="Container">
|
||||
<!-- 谷歌登录 -->
|
||||
<div class="g_id_signin" id="g_id_signin">
|
||||
</div>
|
||||
<div class="icon">
|
||||
<!-- <div class="g_id_signin" id="g_id_signin">
|
||||
</div> -->
|
||||
<div class="icon" @click="toGmailLogin" style="opacity: .7;">
|
||||
<img src="@/assets/images/loginPage/gmailIcon.svg" alt="">
|
||||
<span>{{ $props.text }}</span>
|
||||
</div>
|
||||
@@ -70,6 +70,9 @@
|
||||
});
|
||||
}
|
||||
}
|
||||
const toGmailLogin = ()=>{
|
||||
message.info(t('account.canNotUtilize'))
|
||||
}
|
||||
onBeforeUnmount(()=>{
|
||||
var existingScript = document.querySelector(`script[src="${data.scriptSrc}"]`);
|
||||
if(existingScript){
|
||||
@@ -78,9 +81,10 @@
|
||||
}
|
||||
})
|
||||
onMounted(()=>{
|
||||
createGmailLogin()
|
||||
// createGmailLogin()
|
||||
})
|
||||
return {
|
||||
toGmailLogin,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
@@ -102,7 +102,12 @@
|
||||
<div class="login_form_title marign_top30">
|
||||
<label :class="{ active: emailStap == 2 }">
|
||||
<input :state="emailStap" type="checkbox" v-model="checked" />
|
||||
<span>I agree to the Terms, Privacy Policy, and Fees.</span>
|
||||
<span>
|
||||
I agree to the
|
||||
<a href="https://code-create.com.hk/aida-terms-and-conditions/" style="text-decoration: underline;color: #000;">Terms</a>,
|
||||
<a href="https://code-create.com.hk/privacy-policy/" style="text-decoration: underline;color: #000;">Privacy Policy</a>,
|
||||
and Fees.
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
<!-- <div class="thirdPartyLogin marign_top30">
|
||||
@@ -489,22 +494,7 @@ export default defineComponent({
|
||||
isCheckAgreement() {
|
||||
message.info("Agree to all terms, privacy fees and policies");
|
||||
},
|
||||
//微信登录
|
||||
wechatLogin(value: any) {
|
||||
let data = {
|
||||
code: value.code,
|
||||
type: 2,
|
||||
};
|
||||
this.loadingShow = true;
|
||||
Https.axiosGet(Https.httpUrls.parseWeChatCode, { params: data })
|
||||
.then((rv: any) => {
|
||||
this.loadingShow = false;
|
||||
this.setSuccessLogin(rv);
|
||||
})
|
||||
.catch((res) => {
|
||||
this.loadingShow = false;
|
||||
});
|
||||
},
|
||||
|
||||
//谷歌登录
|
||||
googelLogin(value: any) {
|
||||
let data = { credential: value, type: 2 };
|
||||
@@ -611,10 +601,6 @@ export default defineComponent({
|
||||
// },
|
||||
},
|
||||
mounted() {
|
||||
const data = this.$route.query;
|
||||
if (data?.state == "weiXin") {
|
||||
this.wechatLogin(data);
|
||||
}
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -85,7 +85,12 @@
|
||||
<div class="login_form_title marign_top40">
|
||||
<label :class="{ active: emailStap == 2 }">
|
||||
<input :state="emailStap" type="checkbox" v-model="checked" />
|
||||
<span>I agree to the Terms, Privacy Policy, and Fees.</span>
|
||||
<span>
|
||||
I agree to the
|
||||
<a href="https://code-create.com.hk/aida-terms-and-conditions/" style="text-decoration: underline;color: #000;">Terms</a>,
|
||||
<a href="https://code-create.com.hk/privacy-policy/" style="text-decoration: underline;color: #000;">Privacy Policy</a>,
|
||||
and Fees.
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
@@ -490,22 +495,6 @@ export default defineComponent({
|
||||
isCheckAgreement() {
|
||||
message.info("Agree to all terms, privacy fees and policies");
|
||||
},
|
||||
//微信登录
|
||||
wechatLogin(value: any) {
|
||||
let data = {
|
||||
code: value.code,
|
||||
type: 2,
|
||||
};
|
||||
this.loadingShow = true;
|
||||
Https.axiosGet(Https.httpUrls.parseWeChatCode, { params: data })
|
||||
.then((rv: any) => {
|
||||
this.loadingShow = false;
|
||||
this.setSuccessLogin(rv);
|
||||
})
|
||||
.catch((res) => {
|
||||
this.loadingShow = false;
|
||||
});
|
||||
},
|
||||
//谷歌登录
|
||||
googelLogin(value: any) {
|
||||
let data = { credential: value, type: 2 };
|
||||
@@ -612,10 +601,6 @@ export default defineComponent({
|
||||
// },
|
||||
},
|
||||
mounted() {
|
||||
const data = this.$route.query;
|
||||
if (data?.state == "weiXin") {
|
||||
this.wechatLogin(data);
|
||||
}
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -102,7 +102,12 @@
|
||||
<div class="login_form_title marign_top30">
|
||||
<label :class="{ active: emailStap == 2 }">
|
||||
<input :state="emailStap" type="checkbox" v-model="checked" />
|
||||
<span>I agree to the Terms, Privacy Policy, and Fees.</span>
|
||||
<span>
|
||||
I agree to the
|
||||
<a href="https://code-create.com.hk/aida-terms-and-conditions/" style="text-decoration: underline;color: #000;">Terms</a>,
|
||||
<a href="https://code-create.com.hk/privacy-policy/" style="text-decoration: underline;color: #000;">Privacy Policy</a>,
|
||||
and Fees.
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
<!-- <div class="thirdPartyLogin marign_top30">
|
||||
@@ -492,22 +497,6 @@ export default defineComponent({
|
||||
isCheckAgreement() {
|
||||
message.info("Agree to all terms, privacy fees and policies");
|
||||
},
|
||||
//微信登录
|
||||
wechatLogin(value: any) {
|
||||
let data = {
|
||||
code: value.code,
|
||||
type: 2,
|
||||
};
|
||||
this.loadingShow = true;
|
||||
Https.axiosGet(Https.httpUrls.parseWeChatCode, { params: data })
|
||||
.then((rv: any) => {
|
||||
this.loadingShow = false;
|
||||
this.setSuccessLogin(rv);
|
||||
})
|
||||
.catch((res) => {
|
||||
this.loadingShow = false;
|
||||
});
|
||||
},
|
||||
//谷歌登录
|
||||
googelLogin(value: any) {
|
||||
let data = { credential: value, type: 2 };
|
||||
@@ -614,10 +603,6 @@ export default defineComponent({
|
||||
// },
|
||||
},
|
||||
mounted() {
|
||||
const data = this.$route.query;
|
||||
if (data?.state == "weiXin") {
|
||||
this.wechatLogin(data);
|
||||
}
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -68,7 +68,7 @@ export default defineComponent({
|
||||
}
|
||||
const setWeiXin = ()=>{
|
||||
let http = window.location.href.replace(/^https?:\/\//, '')
|
||||
http = 'https://www.aida.com.hk'
|
||||
http = import.meta.env.VITE_USER_NODE_ENV == 'development'?'https://develop.aida.com.hk':'https://www.aida.com.hk'
|
||||
new WxLogin({
|
||||
self_redirect: false, //默认为false(保留当前二维码) true(当前二维码所在的地方通过iframe 内跳转到 redirect_uri)
|
||||
id: "wx_id_signin", //容器的id
|
||||
|
||||
@@ -608,13 +608,13 @@ export default defineComponent({
|
||||
})
|
||||
}
|
||||
let openOtherUsers = ()=>{
|
||||
const routeUrl = router.resolve({
|
||||
path:'/home/otherUsers',
|
||||
query:{
|
||||
userId:imgData.scaleImageData.accountId
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href,'_blank')
|
||||
// const routeUrl = router.resolve({
|
||||
// path:'/home/otherUsers',
|
||||
// query:{
|
||||
// userId:imgData.scaleImageData.accountId
|
||||
// }
|
||||
// })
|
||||
// window.open(routeUrl.href,'_blank')
|
||||
}
|
||||
watch(()=>imgData.scaleImageIndex,
|
||||
(newVal,oldVal)=>{
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<NewCollectionReview id="collectionReview" @openCollection="openCollection"></NewCollectionReview>
|
||||
<NewCollectionReview id="collectionReview" :probjects="selectProbject" @openCollection="openCollection"></NewCollectionReview>
|
||||
</div>
|
||||
</div>
|
||||
<div v-show="isMannequinShow" class="left_info_hint">
|
||||
|
||||
@@ -135,7 +135,6 @@
|
||||
:centerBox="option.centerBox"
|
||||
:height="option.height"
|
||||
:infoTrue="option.infoTrue"
|
||||
:limitMinSize="option.limitMinSize"
|
||||
:enlarge="option.enlarge"
|
||||
@real-time="realTime"
|
||||
:autoCropArea="1"
|
||||
@@ -831,7 +830,6 @@ export default defineComponent({
|
||||
this.locationList = JSON.parse(JSON.stringify(this.oldLocationList))
|
||||
// this.locationList = JSON.parse(JSON.stringify(this.locationList))
|
||||
},
|
||||
|
||||
submitPlacement(){
|
||||
// let cropper:any = this.$refs.cropper,
|
||||
// that = this
|
||||
@@ -937,7 +935,6 @@ export default defineComponent({
|
||||
cropper.changeScale(num);
|
||||
},
|
||||
async confrimSubmit(){
|
||||
console.log(this.printObject)
|
||||
let isCovered = true
|
||||
if(this.editOrUpload == 'edit'){
|
||||
await new Promise((resolve, reject) => {
|
||||
@@ -1125,12 +1122,15 @@ export default defineComponent({
|
||||
if(boolean){
|
||||
this.slider = 50
|
||||
let url
|
||||
if(this.printObject.url){
|
||||
if(this.printObject.url && !this.printObject.url.startsWith('blob:')){
|
||||
url = this.printObject.url
|
||||
}else{
|
||||
let cropper:any = this.$refs.cropper
|
||||
await cropper.getCropData(async (value:any) => {
|
||||
url = value
|
||||
url = await new Promise<void>((resolve, reject) => {
|
||||
cropper.getCropData((value:any) => {
|
||||
this.option.img = value
|
||||
resolve(value)
|
||||
})
|
||||
})
|
||||
}
|
||||
this.getImgDetail(url)
|
||||
|
||||
@@ -118,6 +118,7 @@ export default defineComponent({
|
||||
createProbject:inject('createProbject',()=>{}) as any,
|
||||
likeDesignList:[],
|
||||
canvasSelectList:[] as any,
|
||||
videoList:[] as any,
|
||||
canvasDetailData:null as any,
|
||||
unLikeList:[],
|
||||
locale:null as any,
|
||||
@@ -159,20 +160,17 @@ export default defineComponent({
|
||||
});
|
||||
});
|
||||
}else if(value == 'relight' || value == 'poseTransfer'){
|
||||
console.log(list)
|
||||
list.forEach((item:any) => {
|
||||
if(item.childList){
|
||||
item.childList.forEach((child:any) => {
|
||||
if(child.resultType == 'ToProductImage' || child.resultType == 'Relight'){
|
||||
fileList.push(child)
|
||||
}
|
||||
console.log(fileList)
|
||||
if(child.resultType == 'Relight' && value == 'relight'){
|
||||
likeList.push(child)
|
||||
}else if(child.resultType == 'PoseTransfer' && value == 'poseTransfer'){
|
||||
likeList.push(child)
|
||||
}
|
||||
console.log(likeList)
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -187,7 +185,6 @@ export default defineComponent({
|
||||
}else if(data.openType == 'relight'){
|
||||
store.commit("setRelightList", likeData);
|
||||
}else if(data.openType == 'poseTransfer'){
|
||||
console.log(likeData)
|
||||
store.commit("setPoseTransfer", likeData);
|
||||
}
|
||||
if(dataDom[value]?.openSetData)dataDom[value]?.openSetData(fileList)
|
||||
@@ -261,7 +258,7 @@ export default defineComponent({
|
||||
let obj = {
|
||||
value:itemStr.value,
|
||||
type:data.locale == "ENGLISH"?itemStr.name:itemStr.nameCn,
|
||||
imgList:list,
|
||||
imgList:list,
|
||||
}
|
||||
if(list.length > 0){
|
||||
data.canvasSelectList.push(obj)
|
||||
@@ -274,7 +271,11 @@ export default defineComponent({
|
||||
list.push({url:item.designOutfitUrl || item.url})
|
||||
if(item.childList.length > 0){
|
||||
item.childList.forEach((childItem)=>{
|
||||
list.push({url:childItem.designOutfitUrl || childItem.url})
|
||||
if(childItem.relationType == "PoseTransfer"){
|
||||
data.videoList.push({url:childItem.videoUrl})
|
||||
}else{
|
||||
list.push({url:(childItem?.designOutfitUrl || childItem?.url)})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
@@ -348,7 +349,14 @@ export default defineComponent({
|
||||
})
|
||||
})
|
||||
}
|
||||
console.log(img)
|
||||
data.videoList.forEach((imgItem:any,index:any)=>{
|
||||
let nameTail = imgItem.url?.split(".").pop().split("?").shift();
|
||||
img.push({
|
||||
imgUrl:imgItem.url,
|
||||
name:`video${index}.${nameTail?nameTail:'mp4'}`
|
||||
})
|
||||
})
|
||||
|
||||
if(img.length>0)downImg(img);
|
||||
}
|
||||
let getImgArrayBuffer = (url) => {
|
||||
@@ -412,7 +420,6 @@ export default defineComponent({
|
||||
const share = async ()=>{
|
||||
var imageDataURL = '';
|
||||
imageDataURL = await dataDom.editCanvas.exportImage({isContainBg:true,isContainFixed:false})
|
||||
console.log(imageDataURL)
|
||||
let value = {
|
||||
imgUrl:imageDataURL,
|
||||
userlikeGroupId:'',
|
||||
|
||||
@@ -166,7 +166,7 @@ export default defineComponent({
|
||||
portfolioName:rv.portfolioDTO?.portfolioName?rv.portfolioDTO?.portfolioName:'',
|
||||
tagsDTO:rv.portfolioDTO?.tagsDTO?rv.portfolioDTO?.tagsDTO:[],
|
||||
},
|
||||
model:[]
|
||||
// model:[]
|
||||
}
|
||||
let position = []
|
||||
if(storeData.sex == "Female"){
|
||||
@@ -516,7 +516,6 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
const newProject = (value:any)=>{
|
||||
settingGetHistory()
|
||||
emit('setNewProject')
|
||||
let chatModel = false
|
||||
if(value.newMode == 'chat'){
|
||||
@@ -524,7 +523,8 @@ export default defineComponent({
|
||||
}else{
|
||||
chatModel = false
|
||||
}
|
||||
router.push(`home?history=${value.id}&create=true&chatMode=${chatModel}`)
|
||||
router.push(`home?history=${value.id}&chatMode=${chatModel}`)
|
||||
settingGetHistory()
|
||||
data.chatData = value
|
||||
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ export default defineComponent({
|
||||
portfolioName:rv.portfolioDTO.portfolioName?rv.portfolioDTO.portfolioName:'',
|
||||
tagsDTO:rv.portfolioDTO.tagsDTO?rv.portfolioDTO.tagsDTO:[],
|
||||
},
|
||||
model:[]
|
||||
// model:[]
|
||||
}
|
||||
let position = []
|
||||
if(storeData.sex == "Female"){
|
||||
|
||||
@@ -227,8 +227,8 @@ export default defineComponent({
|
||||
let storeData = {
|
||||
name:rv.name,
|
||||
id:rv.id,
|
||||
type:rv.process == 'SERIES_DESIGN'?'seriesDesign':'singleProductDesign',
|
||||
httpType:rv.process,//项目类型
|
||||
// type:rv.process == 'SERIES_DESIGN'?'seriesDesign':'singleProductDesign',
|
||||
// httpType:rv.process,//项目类型
|
||||
ageGroup:rv.workspaceVO?.ageGroup,
|
||||
style:rv.workspaceVO?.style,
|
||||
styleId:rv.workspaceVO?.styleId,
|
||||
@@ -251,7 +251,11 @@ export default defineComponent({
|
||||
portfolioName:rv.portfolioDTO?.portfolioName?rv.portfolioDTO?.portfolioName:'',
|
||||
tagsDTO:rv.portfolioDTO?.tagsDTO?rv.portfolioDTO?.tagsDTO:[],
|
||||
},
|
||||
model:[]
|
||||
// model:[]
|
||||
}
|
||||
if(rv.process){
|
||||
storeData.type = rv.process == 'SERIES_DESIGN'?'seriesDesign':'singleProductDesign'
|
||||
storeData.httpType = rv.process
|
||||
}
|
||||
let position = []
|
||||
if(storeData.sex == "Female"){
|
||||
|
||||
@@ -793,6 +793,7 @@ export default {
|
||||
Interact: "互动",
|
||||
hisWorks: "他的作品",
|
||||
works: "作品",
|
||||
canNotUtilize: "此登录功能暂时不可用",
|
||||
//取消
|
||||
jsContent1: "太贵了",
|
||||
jsContent2: "系统不友好",
|
||||
@@ -1304,8 +1305,8 @@ export default {
|
||||
allUser:'所有用户',
|
||||
UserData:'用户数据',
|
||||
FunctionUseCHART:'功能使用图表',
|
||||
},
|
||||
adminSeAllUser:{
|
||||
ENGLISH:'英文',
|
||||
CHINESE_SIMPLIFIED:'简体中文',
|
||||
CreateTime:'创建时间',
|
||||
UserName:'用户名',
|
||||
search:'搜索',
|
||||
@@ -1331,17 +1332,19 @@ export default {
|
||||
MaximumCredits:'最大积分',
|
||||
Close:'关闭',
|
||||
OK:'确定',
|
||||
jsContent1:'邮箱格式有误',
|
||||
jsContent2:'请检查所有带 * 号的内容',
|
||||
},
|
||||
adminSeDesignDetail:{
|
||||
User:'用户',
|
||||
startTime:'开始时间',
|
||||
endTime:'结束时间',
|
||||
enterEmail:'请输入邮箱',
|
||||
selectUserName:'请选择用户',
|
||||
StartDate:'开始日期',
|
||||
StartTime:'开始时间',
|
||||
Email:'邮箱',
|
||||
UserName:'用户名',
|
||||
UserId:'用户ID',
|
||||
Frequency:'设计频率',
|
||||
CreateTime:'创建时间',
|
||||
Credits:'积分',
|
||||
enterUserName:'请输入用户名',
|
||||
enterPassword:'请输入密码',
|
||||
enterCredits:'请输入积分',
|
||||
jsContent1:'邮箱格式有误',
|
||||
jsContent2:'请检查所有带 * 号的内容',
|
||||
jsDelete:'确定删除这一项吗',
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import { en } from "element-plus/es/locales.mjs";
|
||||
|
||||
export default {
|
||||
Header: {
|
||||
hello: "hello",
|
||||
@@ -793,6 +795,7 @@ export default {
|
||||
Interact: "interact",
|
||||
hisWorks: "His works",
|
||||
works: "Works",
|
||||
canNotUtilize: "This login function is temporarily out of service.",
|
||||
//取消
|
||||
jsContent1: "Too expensive",
|
||||
jsContent2: "Sytem not user friendly",
|
||||
@@ -1302,10 +1305,10 @@ export default {
|
||||
},
|
||||
admin:{
|
||||
allUser:'All User',
|
||||
UserData:'User Data',
|
||||
UserData:'Design Frequency',
|
||||
FunctionUseCHART:'Function Use CHART',
|
||||
},
|
||||
adminSeAllUser:{
|
||||
ENGLISH:'English',
|
||||
CHINESE_SIMPLIFIED:'Chinese Simplified',
|
||||
CreateTime:'Create Time',
|
||||
UserName:'User Name',
|
||||
search:'Search',
|
||||
@@ -1320,7 +1323,7 @@ export default {
|
||||
Delete:'Delete',
|
||||
UserId:'User ID',
|
||||
Email:'Email',
|
||||
UserEmail:'Ucser Email',
|
||||
UserEmail:'User Email',
|
||||
language:'Language',
|
||||
CreateDate:'Create Date',
|
||||
Credits:'Credits',
|
||||
@@ -1331,17 +1334,19 @@ export default {
|
||||
MaximumCredits:'Maximum Credits',
|
||||
Close:'Close',
|
||||
OK:'OK',
|
||||
jsContent1:'The email format is incorrect',
|
||||
jsContent2:'Please check the input box marked with *',
|
||||
},
|
||||
adminSeDesignDetail:{
|
||||
User:'User',
|
||||
startTime:'Start Time',
|
||||
endTime:'End Time',
|
||||
enterEmail:'Please enter email',
|
||||
selectUserName:'Please select the user.',
|
||||
StartDate:'Start Date',
|
||||
StartTime:'Start Time',
|
||||
Email:'Email',
|
||||
UserName:'User Name',
|
||||
UserId:'User ID',
|
||||
Frequency:'Frequency',
|
||||
CreateTime:'Create Time',
|
||||
Credits:'Credits',
|
||||
enterUserName:'Please enter user name',
|
||||
enterPassword:'Please enter password',
|
||||
enterCredits:'Please enter credits',
|
||||
jsContent1:'The email format is incorrect',
|
||||
jsContent2:'Please check the input box marked with *',
|
||||
jsDelete:'Are you sure you want to delete this item?',
|
||||
},
|
||||
};
|
||||
|
||||
@@ -292,6 +292,13 @@ const routes: Array<RouteRecordRaw> = [
|
||||
meta: { enter: 3 },
|
||||
component: () =>
|
||||
import("@/component/Administrator/SE/designDetailList/index.vue"),
|
||||
},
|
||||
{
|
||||
path: "recentActiveChartSE",
|
||||
name: "recentActiveChartSE",
|
||||
meta: { enter: 3 },
|
||||
component: () =>
|
||||
import("@/component/Administrator/SE/recentActiveChart.vue"),
|
||||
},
|
||||
{
|
||||
path: "generateFrequencySE",
|
||||
|
||||
@@ -70,10 +70,12 @@ const Workspace : Module<DesignDetail,RootState> = {
|
||||
state.projectList = list
|
||||
},
|
||||
setProbject(state,data){
|
||||
console.log(123123,data)
|
||||
for (const key in data) {
|
||||
if(data[key] == undefined)continue
|
||||
state.probjects[key] = data[key]
|
||||
}
|
||||
console.log(state.probjects)
|
||||
},
|
||||
createProbject(state){
|
||||
state.probjects = {
|
||||
|
||||
@@ -24,7 +24,7 @@ const all = (t)=>{
|
||||
// },
|
||||
// ],
|
||||
},{
|
||||
name:'User data',
|
||||
name:'Design Frequency',
|
||||
route:'/administrator/testClickData',
|
||||
icon:'shenpi',
|
||||
expandIcon:'icon-xiala',
|
||||
@@ -177,13 +177,7 @@ const all = (t)=>{
|
||||
route:'/administrator/organization',
|
||||
key:'sub13',
|
||||
isShow:true,
|
||||
},{
|
||||
name:'Design Frequency',
|
||||
icon:'usetime',
|
||||
route:'/administrator/testClickDataSE',
|
||||
key:'sub14',
|
||||
isShow:true,
|
||||
},]
|
||||
}]
|
||||
}
|
||||
const schoolOrEnterprise = (t) =>{
|
||||
return[
|
||||
@@ -202,7 +196,7 @@ const schoolOrEnterprise = (t) =>{
|
||||
isShow:true,
|
||||
},{
|
||||
name:t('admin.FunctionUseCHART'),
|
||||
route:'/administrator/recentActiveChart',
|
||||
route:'/administrator/recentActiveChartSE',
|
||||
icon:'usetime',
|
||||
key:'sub3',
|
||||
isShow:true,
|
||||
|
||||
@@ -49,6 +49,7 @@ const filterHttpsUrl = [
|
||||
'/api/account/login',
|
||||
'/api/account/organizationNameSearch',
|
||||
'/api/account/designWorksRegisterCode',
|
||||
'/api/third/party/parseWeChatCode',
|
||||
'/api/account/sendEmail']
|
||||
//POST传参序列化(添加请求拦截器)
|
||||
axios.interceptors.request.use((config) => {
|
||||
|
||||
@@ -118,6 +118,7 @@ export default defineComponent({
|
||||
};
|
||||
let handleClick = (event:any) => {
|
||||
// state.selectedKeys = [Number(event.key)]
|
||||
console.log(event.item)
|
||||
state.nowPageName = event.item.name
|
||||
router.push({path:event.item.route})
|
||||
}
|
||||
|
||||
@@ -346,9 +346,9 @@ export default defineComponent({
|
||||
for (const key in opTypeList) {
|
||||
const element = opTypeList[key];
|
||||
homeMainData.openTypeList[key].label = element.label
|
||||
if(element?.length > 0){
|
||||
element.forEach((item,index)=>{
|
||||
homeMainData.openTypeList[key][index].label = item.label
|
||||
if(element.list?.length > 0){
|
||||
element.list.forEach((item,index)=>{
|
||||
homeMainData.openTypeList[key].list[index].label = item.label
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -534,7 +534,8 @@ export default defineComponent({
|
||||
})
|
||||
})
|
||||
onBeforeUnmount(()=>{
|
||||
MyWs.close()
|
||||
let imgParent = document.querySelector('.homeMain_max .detail .material_content_list_loding .historyPage_loading')
|
||||
if(Observer?.unobserve)Observer.unobserve(imgParent);
|
||||
})
|
||||
const setOpenType = (type,list)=>{
|
||||
if(homeMainData.openType == type){
|
||||
@@ -594,6 +595,9 @@ export default defineComponent({
|
||||
// router.push(`/home?history=${childItem.id}`)
|
||||
}
|
||||
const settingGetHistory = ()=>{
|
||||
if(homeMainData.historyData.page == 1){
|
||||
return
|
||||
}
|
||||
homeMainData.historyData.page = 1
|
||||
// homeMainData.openTypeList.history = {
|
||||
// icon:"fi-br-time-past",
|
||||
@@ -947,17 +951,18 @@ export default defineComponent({
|
||||
let url = 'https://aida-user-manual-chinese.super.site/'
|
||||
if(this.locale == 'ENGLISH'){
|
||||
url = 'https://code-create.com.hk/wp-content/uploads/2025/02/aida_3.0-Manual-2_5-EN.pdf'
|
||||
showViewVideo({url:'https://code-create.com.hk/wp-content/uploads/2025/02/AiDA-demo-video_2_5_EN.mp4'})
|
||||
showViewVideo({url:'https://aida.com.hk/video/user_manual_3_1_0.mp4'})
|
||||
}else{
|
||||
showViewVideo({url:'https://code-create.com.hk/wp-content/uploads/2025/02/AiDA-demo-video_2_5_CN.mp4'})
|
||||
showViewVideo({url:'https://aida.com.hk/video/user_manual_3_1_0.mp4'})
|
||||
}
|
||||
//打开视频
|
||||
const a = document.createElement('a');
|
||||
a.href = url;
|
||||
a.target = '_blank';
|
||||
// a.download = 'aida_3.0-Manual.pptx'; // 下载的文件名
|
||||
document.body.appendChild(a);
|
||||
a.click();
|
||||
this.toUserManual()
|
||||
// //打开视频
|
||||
// const a = document.createElement('a');
|
||||
// a.href = url;
|
||||
// a.target = '_blank';
|
||||
// // a.download = 'aida_3.0-Manual.pptx'; // 下载的文件名
|
||||
// document.body.appendChild(a);
|
||||
// a.click();
|
||||
},
|
||||
//登出
|
||||
async logout() {
|
||||
|
||||
@@ -62,6 +62,7 @@ import {
|
||||
createVNode,
|
||||
toRefs,
|
||||
reactive,
|
||||
onMounted
|
||||
} from "vue";
|
||||
import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
|
||||
import { Https } from "@/tool/https";
|
||||
@@ -75,6 +76,7 @@ import personal from "@/component/LoginPage/login/personal.vue";
|
||||
import { useRoute,useRouter } from 'vue-router';
|
||||
import school from "@/component/LoginPage/login/school.vue";
|
||||
import enterprise from "@/component/LoginPage/login/enterprise.vue";
|
||||
import { setCookie, WriteCookie } from "@/tool/cookie";
|
||||
export default defineComponent({
|
||||
components: {
|
||||
Works,
|
||||
@@ -87,6 +89,7 @@ export default defineComponent({
|
||||
setup(props, { emit }) {
|
||||
const store = useStore();
|
||||
const router = useRouter()
|
||||
const route = useRoute()
|
||||
const loginData = reactive({
|
||||
loginType: "",
|
||||
isMask: true,
|
||||
@@ -109,6 +112,67 @@ export default defineComponent({
|
||||
const toBack = ()=>{
|
||||
router.push('/Square')
|
||||
}
|
||||
const setSuccessLogin = (rv: any)=>{
|
||||
if (rv) {
|
||||
if (rv.systemUser == 4) {
|
||||
rv.systemUser = 1;
|
||||
}
|
||||
let isTest = rv.systemUser == 3 ? true : false;
|
||||
let isBeginner = rv?.isBeginner == 1 ? true : false;
|
||||
let token = rv.token;
|
||||
setCookie("isMurmur", false);
|
||||
setCookie("token", token);
|
||||
setCookie("isTest", isTest);
|
||||
setCookie("isBeginner", isBeginner);
|
||||
setCookie("isBeginnerNum", 0); //从第一步开始,机器人开始的话就是从第二部开始
|
||||
setCookie("userInfo", JSON.stringify(rv));
|
||||
let userid: any = {
|
||||
ueserId: rv.userId,
|
||||
systemUser: rv.systemUser,
|
||||
};
|
||||
if (rv.email) userid.email = rv.email;
|
||||
store.commit("upUserDetail", userid);
|
||||
if (window.innerWidth < 768) {
|
||||
message.info(
|
||||
"If you need to design, please log in using an iPad or computer."
|
||||
);
|
||||
turnToHomePage("/Square");
|
||||
} else {
|
||||
turnToHomePage("/home");
|
||||
}
|
||||
sessionStorage.setItem("isTimeOne", JSON.stringify(false)); //是否需要公告 提示 弹窗
|
||||
let randomNum: any =
|
||||
Math.floor(Math.random() * 9000000000000000) + 1000000000000000;
|
||||
sessionStorage.setItem("sessionId", randomNum);
|
||||
sessionStorage.setItem("record", JSON.stringify([]));
|
||||
}
|
||||
}
|
||||
const turnToHomePage = (str: any)=>{
|
||||
store.commit("clearAllData");
|
||||
store.commit("clearAllCollection");
|
||||
store.commit("setAllBoardDataChoose", {});
|
||||
store.commit("clearShowSketchboard", {});
|
||||
router.push(str);
|
||||
}
|
||||
const wechatLogin =(value: any)=>{
|
||||
let data = {
|
||||
code: value.code,
|
||||
type: 2,
|
||||
};
|
||||
Https.axiosGet(Https.httpUrls.parseWeChatCode, { params: data })
|
||||
.then((rv: any) => {
|
||||
setSuccessLogin(rv);
|
||||
})
|
||||
.catch((res) => {
|
||||
});
|
||||
}
|
||||
onMounted(()=>{
|
||||
const data = route.query;
|
||||
console.log(data)
|
||||
if (data?.state == "weiXin") {
|
||||
wechatLogin(data);
|
||||
}
|
||||
})
|
||||
return {
|
||||
...toRefs(dataDom),
|
||||
...toRefs(loginData),
|
||||
|
||||
@@ -11,7 +11,7 @@ import { ElementPlusResolver } from "unplugin-vue-components/resolvers";
|
||||
export default defineConfig(({ mode }) => {
|
||||
// 加载环境变量
|
||||
const env = loadEnv(mode, process.cwd(), "");
|
||||
|
||||
console.log(mode)
|
||||
return {
|
||||
resolve: {
|
||||
alias: {
|
||||
|
||||
Reference in New Issue
Block a user