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