-
-
+
+
+
+
{{ $props.text }}
@@ -25,8 +26,33 @@
},
setup(props, { emit }) {
const {t} = useI18n()
+ function decodeJWT(token) {
+
+ let base64Url = token.split(".")[1];
+ let base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/");
+ let jsonPayload = decodeURIComponent(
+ atob(base64)
+ .split("")
+ .map(function (c) {
+ return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
+ })
+ .join("")
+ );
+ return JSON.parse(jsonPayload);
+ }
const handleCredentialResponse = async (response) => {
// 获取回调响应的凭证数据 然后拿这个凭证给后台,后台jwt进行解析获取登录信息
+ console.log("Encoded JWT ID token: " + response.credential);
+ const responsePayload = decodeJWT(response.credential);
+ console.log("Decoded JWT ID token fields:");
+ console.log(" Full Name: " + responsePayload.name);
+ console.log(" Given Name: " + responsePayload.given_name);
+ console.log(" Family Name: " + responsePayload.family_name);
+ console.log(" Unique ID: " + responsePayload.sub);
+ console.log(" Profile image URL: " + responsePayload.picture);
+ console.log(" Email: " + responsePayload.email);
+
+
let code = response.credential
emit('googelLogin',code)
window.isAddGmail = false
@@ -36,10 +62,10 @@
scriptSrc:'https://accounts.google.com/gsi/client',
script:null
})
- console.log()
+ console.log(import.meta.env.VITE_USER_NODE_ENV)
let GOOGLE_CLIENT_ID
if(import.meta.env.VITE_USER_NODE_ENV == 'development'){
- GOOGLE_CLIENT_ID = '29310152396-c44dcsoksjirhn7vbo29p8u8n0sg4qps.apps.googleusercontent.com'
+ GOOGLE_CLIENT_ID = '157095842121-kdd1fdf8m8nudvj9sprstb2k2prnf9e4.apps.googleusercontent.com'
}else{
GOOGLE_CLIENT_ID = '29310152396-nnsd3h533fld665oguu8ovrt1nukmt46.apps.googleusercontent.com'
}
@@ -51,11 +77,11 @@
window.isAddGmail = true
await new Promise((resolve, reject) => {
const script = document.createElement("script");
- script.src = data.scriptSrc
script.onload=()=>{
resolve()
}
document.body.appendChild(script);
+ script.src = data.scriptSrc
})
}
window.google.accounts.id.initialize({
@@ -67,19 +93,19 @@
ux_mode:"popup",
itp_support:true,
});
+ console.log(document.querySelector('.Container #g_id_signin'))
window.google.accounts.id.renderButton(
- document.querySelector('.Container #g_id_signin'),
- {
- type:"standard",//icon为只有一个icon
- shape:"circle",
- theme:"outline",
- size:"large",
- logo_alignment:"center",
- });
+ document.querySelector('.Container #g_id_signin'),
+ {
+ type:"standard",//icon为只有一个icon
+ shape:"circle",
+ theme:"outline",
+ size:"large",
+ logo_alignment:"center",
+ });
}
}
const toGmailLogin = ()=>{
- console.log(12312)
message.info(t('account.canNotUtilize'))
}
onBeforeUnmount(()=>{
@@ -90,7 +116,7 @@
}
})
onMounted(()=>{
- // createGmailLogin()
+ createGmailLogin()
})
return {
toGmailLogin,
@@ -121,7 +147,6 @@
// width: 100%;
// height: 100%;
// }
-
// }
.icon{
// width: 40px;
@@ -135,7 +160,7 @@
box-sizing: border-box;
position: relative;
background: transparent;
- // pointer-events: none;
+ pointer-events: none;
background-color: #f5f5f5;
@media (max-width: 768px) {
border-radius: 2.5rem;
@@ -165,15 +190,20 @@
position: absolute;
width: 100%;
height: 100%;
- overflow: hidden;
+ // overflow: hidden;
top: 0;
left: 0;
- opacity: 0;
+ // opacity: 0;
.S9gUrf-YoZ4jf{
+
+
}
:deep(.S9gUrf-YoZ4jf){
width: 100%;
height: 100%;
+ iframe{
+ zoom: 3;
+ }
}
}
&:hover{
diff --git a/src/component/LoginPage/login/enterprise.vue b/src/component/LoginPage/login/enterprise.vue
index f5fd7522..a5391b45 100644
--- a/src/component/LoginPage/login/enterprise.vue
+++ b/src/component/LoginPage/login/enterprise.vue
@@ -105,7 +105,7 @@
I agree to the
Terms,
- Privacy Policy,
+ Privacy Policy,
and Fees.
diff --git a/src/component/LoginPage/login/personal.vue b/src/component/LoginPage/login/personal.vue
index 20a1f7ae..21ae761b 100644
--- a/src/component/LoginPage/login/personal.vue
+++ b/src/component/LoginPage/login/personal.vue
@@ -68,6 +68,7 @@
We’ve sent an code to your email {{ email }}
@@ -88,7 +89,7 @@
I agree to the
Terms,
- Privacy Policy,
+ Privacy Policy,
and Fees.
@@ -97,7 +98,9 @@
Sign in
@@ -302,6 +305,8 @@ export default defineComponent({
passwordType: "password",
userId: "",
loginTime: true,
+ animation: false,
+ inputCodeTime: null as any,
};
},
onBeforeUnmount() {
@@ -413,6 +418,16 @@ export default defineComponent({
submitPerLogin() {
//输入账号密码
if (this.emailStap >= 2) {
+ let verificationCodeInputDom:any = this.$refs.verificationCodeInputDom
+ let code = verificationCodeInputDom.getCtData.map(item => item).join('');
+ console.log(code)
+ if(code.length !== this.emailCode.length){
+ message.info("Please enter the complete verification code.");
+ }else{
+ this.submitEmailLogin(code)
+ }
+
+ //提交验证码
return;
} else {
if (!this.password) {
@@ -480,20 +495,23 @@ export default defineComponent({
//邮箱登录提交
submitEmailLogin(emailVerifyCode: any) {
- let data = {
- email: this.email,
- emailVerifyCode: emailVerifyCode,
- loginType: "EMAIL",
- userId: this.userId,
- };
- this.$emit('update:isMask',true)
- Https.axiosPost(Https.httpUrls.accountLogin, data)
- .then((rv: any) => {
- this.setSuccessLogin(rv);
- })
- .catch((res) => {
- this.$emit('update:isMask',false)
- });
+ clearTimeout(this.inputCodeTime)
+ this.inputCodeTime = setTimeout(()=>{
+ let data = {
+ email: this.email,
+ emailVerifyCode: emailVerifyCode,
+ loginType: "EMAIL",
+ userId: this.userId,
+ };
+ this.$emit('update:isMask',true)
+ Https.axiosPost(Https.httpUrls.accountLogin, data)
+ .then((rv: any) => {
+ this.setSuccessLogin(rv);
+ })
+ .catch((res) => {
+ this.$emit('update:isMask',false)
+ });
+ },1000)
},
isCheckAgreement() {
message.info("Agree to all terms, privacy fees and policies");
@@ -602,7 +620,15 @@ export default defineComponent({
// }
// );
// },
- },
+ loginBtnMousedown(){
+ this.animation = true
+ let mouseup = ()=>{
+ this.animation = false
+ document.removeEventListener('mouseup',mouseup)
+ }
+ document.addEventListener('mouseup',mouseup)
+ },
+},
mounted() {
},
});
@@ -763,13 +789,12 @@ export default defineComponent({
transition: all 0.3s;
margin-top: 5rem;
font-weight: 600;
-
+ &.active{
+ transform: scale(.9);
+ }
&:hover {
background: #3c3c3c;
}
- &[state="2"] {
- cursor: not-allowed;
- }
}
.NewAccount{
font-size: 1.6rem;
@@ -778,6 +803,8 @@ export default defineComponent({
margin-top: 1.2rem;
text-align: left;
cursor: pointer;
+ width: min-content;
+ white-space: nowrap;
}
.segmentation{
margin-top: 4rem;
diff --git a/src/component/LoginPage/login/school.vue b/src/component/LoginPage/login/school.vue
index 7435cc00..025290a7 100644
--- a/src/component/LoginPage/login/school.vue
+++ b/src/component/LoginPage/login/school.vue
@@ -90,6 +90,7 @@
We’ve sent an code to your email {{ email }}
-->
Sign in
@@ -302,6 +305,8 @@ export default defineComponent({
passwordType: "password",
userId: "",
loginTime: true,
+ animation: false,
+ inputCodeTime: null as any,
};
},
onBeforeUnmount() {
@@ -413,6 +418,16 @@ export default defineComponent({
submitPerLogin() {
//输入账号密码
if (this.emailStap >= 2) {
+ let verificationCodeInputDom:any = this.$refs.verificationCodeInputDom
+ let code = verificationCodeInputDom.getCtData.map(item => item).join('');
+ console.log(code)
+ if(code.length !== this.emailCode.length){
+ message.info("Please enter the complete verification code.");
+ }else{
+ this.submitEmailLogin(code)
+ }
+
+ //提交验证码
return;
} else {
if (!this.password) {
@@ -481,21 +496,24 @@ export default defineComponent({
//邮箱登录提交
submitEmailLogin(emailVerifyCode: any) {
- let data = {
- email: this.email,
- emailVerifyCode: emailVerifyCode,
- loginType: "EMAIL",
- userId: this.userId,
- organizationName: this.selectSchool,
- };
- this.$emit('update:isMask',true)
- Https.axiosPost(Https.httpUrls.accountLogin, data)
- .then((rv: any) => {
- this.setSuccessLogin(rv);
- })
- .catch((res) => {
- this.$emit('update:isMask',false)
- });
+ clearTimeout(this.inputCodeTime)
+ this.inputCodeTime = setTimeout(()=>{
+ let data = {
+ email: this.email,
+ emailVerifyCode: emailVerifyCode,
+ loginType: "EMAIL",
+ userId: this.userId,
+ organizationName: this.selectSchool,
+ };
+ this.$emit('update:isMask',true)
+ Https.axiosPost(Https.httpUrls.accountLogin, data)
+ .then((rv: any) => {
+ this.setSuccessLogin(rv);
+ })
+ .catch((res) => {
+ this.$emit('update:isMask',false)
+ });
+ },1000)
},
isCheckAgreement() {
message.info("Agree to all terms, privacy fees and policies");
@@ -604,6 +622,14 @@ export default defineComponent({
// }
// );
// },
+ loginBtnMousedown(){
+ this.animation = true
+ let mouseup = ()=>{
+ this.animation = false
+ document.removeEventListener('mouseup',mouseup)
+ }
+ document.addEventListener('mouseup',mouseup)
+ },
},
mounted() {
},
@@ -781,13 +807,12 @@ export default defineComponent({
transition: all 0.3s;
margin-top: 5rem;
font-weight: 600;
-
+ &.active{
+ transform: scale(.9);
+ }
&:hover {
background: #3c3c3c;
}
- &[state="2"] {
- cursor: not-allowed;
- }
}
.NewAccount{
font-size: 1.6rem;
@@ -796,6 +821,8 @@ export default defineComponent({
margin-top: 1.2rem;
text-align: left;
cursor: pointer;
+ width: min-content;
+ white-space: nowrap;
}
.segmentation{
margin-top: 4rem;
diff --git a/src/component/WorksPage/newScaleImage.vue b/src/component/WorksPage/newScaleImage.vue
index 9bec3fcc..49b1caad 100644
--- a/src/component/WorksPage/newScaleImage.vue
+++ b/src/component/WorksPage/newScaleImage.vue
@@ -440,6 +440,13 @@ export default defineComponent({
if(userDetail.value.systemList.indexOf(1) == -1){
return message.info(t('newScaleImage.jsContent1'))
}
+
+ const targetDate = new Date('2025-09-01T00:00:00');
+ // 解析输入日期字符串
+ const inputDate = new Date(imgData.scaleImageData.createDate);
+ if(inputDate < targetDate){
+ return message.info(t('newScaleImage.jsContent2'))
+ }
if(imgData.scaleImageData.openSource == 0){
return message.info(t('newScaleImage.jsContent2'))
}
diff --git a/src/component/home/design/collection/MoodboardUpload.vue b/src/component/home/design/collection/MoodboardUpload.vue
index 9cafb8d4..4fbaef2b 100644
--- a/src/component/home/design/collection/MoodboardUpload.vue
+++ b/src/component/home/design/collection/MoodboardUpload.vue
@@ -339,7 +339,7 @@ export default defineComponent({
},
deleteFile(item: any) {
- if(item.type_.type1 == 'generate' || item.type_.type1 == 'material'){
+ if(item?.type_?.type1 == 'generate' || item?.type_?.type1 == 'material'){
item.jsContent1 = this.t('uploadFile.jsContent1',{maxImg:8})
item.state = 'delete'
this.store.commit("addGenerateMaterialFils", item);
diff --git a/src/component/home/design/collection/PrintboardUpload.vue b/src/component/home/design/collection/PrintboardUpload.vue
index e92add64..d1d37d96 100644
--- a/src/component/home/design/collection/PrintboardUpload.vue
+++ b/src/component/home/design/collection/PrintboardUpload.vue
@@ -385,7 +385,7 @@ export default defineComponent({
deleteFile(item:any){
// this.fileList.splice(item, 1)
// this.store.commit('setPrintboardFile',this.fileList)
- if(item.type_.type1 == 'generate' || item.type_.type1 == 'material'){
+ if(item?.type_?.type1 == 'generate' || item?.type_?.type1 == 'material'){
item.jsContent1 = this.t('uploadFile.jsContent1',{maxImg:16})
item.state = 'delete'
this.store.commit("addGenerateMaterialFils", item);
@@ -610,7 +610,6 @@ export default defineComponent({
}
this.fileList.push(data)
}
- console.log(this.fileList)
this.store.commit('setPrintboardFile',this.fileList)
},
diff --git a/src/component/home/design/collection/more.vue b/src/component/home/design/collection/more.vue
index a912c326..1c77c9ce 100644
--- a/src/component/home/design/collection/more.vue
+++ b/src/component/home/design/collection/more.vue
@@ -124,6 +124,14 @@ export default defineComponent({
designType:props.item.resData.designType,
}
}else{
+ rv.imgUrl = rv.url
+ rv.category = props.item.category
+ rv.categoryValue = props.item.categoryValue
+ rv.resData = {
+ id:rv.id,
+ url:rv.url,
+ designType:props.item.resData.designType,
+ }
props.list.unshift(rv)
}
}
diff --git a/src/component/home/design/editDesignType/index.vue b/src/component/home/design/editDesignType/index.vue
index d03464f3..51d34141 100644
--- a/src/component/home/design/editDesignType/index.vue
+++ b/src/component/home/design/editDesignType/index.vue
@@ -812,31 +812,32 @@ methods: {
},
setImageIndex(index:any){
if(this.isNext)return
- let this_ = this
- if(this.isCanvas){
- this.isNext = true
- new Promise((resolve,reject)=>{
- Modal.confirm({
- title: this.t('scaleImage.submitCanvas'),
- icon: createVNode(ExclamationCircleOutlined),
- okText: 'Yes',
- cancelText: 'No',
- mask:false,
- centered:true,
- onOk() {
- this_.scaleImageIndex = index
- this_.isNext = false
- resolve('')
- },
- onCancel(){
- this_.isNext = false
- resolve('')
- }
- });
- })
- }else{
- this.scaleImageIndex = index
- }
+ // let this_ = this
+ // if(this.isCanvas){
+ // this.isNext = true
+ // new Promise((resolve,reject)=>{
+ // Modal.confirm({
+ // title: this.t('scaleImage.submitCanvas'),
+ // icon: createVNode(ExclamationCircleOutlined),
+ // okText: 'Yes',
+ // cancelText: 'No',
+ // mask:false,
+ // centered:true,
+ // onOk() {
+ // this_.scaleImageIndex = index
+ // this_.isNext = false
+ // resolve('')
+ // },
+ // onCancel(){
+ // this_.isNext = false
+ // resolve('')
+ // }
+ // });
+ // })
+ // }else{
+ // this.scaleImageIndex = index
+ // }
+ this.scaleImageIndex = index
},
LikeFile(item:any,str:string){
let parent:any = this.$parent
diff --git a/src/component/home/design/index.vue b/src/component/home/design/index.vue
index eb568b5c..d2cc27da 100644
--- a/src/component/home/design/index.vue
+++ b/src/component/home/design/index.vue
@@ -1591,12 +1591,10 @@ export default defineComponent({
//设计新的collection
async designNewCollection() {
clearTimeout(this.getDesignTime);
+ let probjects = this.store.state.Workspace.probjects
+
+ if(probjects.type == "seriesDesign" && probjects?.model?.length == 0)return message.info(this.t('collectionModal.jsContent7'));
let data = await this.getDesignData("");
- if(this.driver__.driver){
- nextTick().then(()=>{
- driverObj__.moveNext();
- })
- }
this.isShowMark = true
// this.store.commit("setLikeDesignCollectionList", []);
Https.axiosPost(Https.httpUrls.designCollection, data)
@@ -1911,7 +1909,7 @@ export default defineComponent({
if(design?.childList?.length > 0){
await new Promise((resolve, reject) => {
Modal.confirm({
- title: this.t('LibraryPage.jsContent11'),
+ title: this.t('HomeView.jsContent12'),
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
@@ -2117,13 +2115,14 @@ export default defineComponent({
type: string
) {
// if()
- if(this.isMove)return
+ if(this.isMove || this.isShowMark)return
this.store.commit('setOpenChatStatus',false)
if(design.resultType != "Design"){
this.selectEditBtn = design
this.setEditDesignType(collectionList,index,design.resultType,'edit',type)
return
}
+ this.isShowMark = true
design.designOutfitId = design.designPythonOutfitId?design.designPythonOutfitId:design.designOutfitId
let data = {
design: design,
@@ -2134,7 +2133,9 @@ export default defineComponent({
this.detailDestroy = true
nextTick(()=>{
let designDetail: any = this.$refs.designDetail;
- designDetail.showDesignDetailModal(data);
+ designDetail.showDesignDetailModal(data).then(()=>{
+ this.isShowMark = false
+ })
})
},
diff --git a/src/component/home/index.vue b/src/component/home/index.vue
index a3d521ea..316c361d 100644
--- a/src/component/home/index.vue
+++ b/src/component/home/index.vue
@@ -228,6 +228,7 @@ export default defineComponent({
let uploadElementData = {
str:'add',
list:rv.uploadElement,
+ isGetModule:true,
}
store.commit('setUploadElement',uploadElementData)
diff --git a/src/component/home/newProject/workspace.vue b/src/component/home/newProject/workspace.vue
index 8e613c1c..2e19c50b 100644
--- a/src/component/home/newProject/workspace.vue
+++ b/src/component/home/newProject/workspace.vue
@@ -43,7 +43,6 @@
{{$t('Habit.Brand')}}:
-
{{ $t('Habit.Select') }}
![]()
diff --git a/src/component/home/tools/deReconstruction/canvas/index.vue b/src/component/home/tools/deReconstruction/canvas/index.vue
index 0c6b8277..3e6ef56c 100644
--- a/src/component/home/tools/deReconstruction/canvas/index.vue
+++ b/src/component/home/tools/deReconstruction/canvas/index.vue
@@ -113,12 +113,16 @@ export default defineComponent({
return new Promise((res,rev)=>{
let img = new Image()
img.onload = ()=>{
- let wH = [1,1]
- let domHeight = dataDom.canvasBox.offsetHeight - 200
- let imgHeight = img.height
- wH = [1,domHeight/imgHeight]
- data.canvasConfig.width = img.width * wH[1]
- data.canvasConfig.height = domHeight
+ // let wH = [1,1]
+ // let domHeight = dataDom.canvasBox.offsetHeight - 200
+ // let imgHeight = img.height
+ // wH = [1,domHeight/imgHeight]
+ // data.canvasConfig.width = img.width * wH[1]
+ // data.canvasConfig.height = domHeight
+ data.canvasConfig.height = img.height
+ data.canvasConfig.width = img.width
+ data.canvasConfig.initZoom = true
+
data.canvasLoad = true
res('')
}
diff --git a/src/component/home/tools/poseTransfer/index.vue b/src/component/home/tools/poseTransfer/index.vue
index 509b32e2..beec7ced 100644
--- a/src/component/home/tools/poseTransfer/index.vue
+++ b/src/component/home/tools/poseTransfer/index.vue
@@ -39,8 +39,7 @@
}"
:headers="{ Authorization: token }"
:before-upload="beforeUpload"
- v-model:file-list="fileList"
- :multiple="true"
+ :multiple="!!upload.projectId"
accept=".jpg,.png,.jpeg,.bmp"
@change="(file) => fileUploadChange(file)"
>
@@ -136,6 +135,7 @@ import generalDrag from '@/component/modules/generalDrag.vue';
import { getUploadUrl,isMoible,getMinioUrl } from "@/tool/util";
import { getCookie,setCookie } from "@/tool/cookie";
import showViewVideo from "@/tool/mount";
+import router from '@/router';
export default defineComponent({
components:{
@@ -156,6 +156,7 @@ export default defineComponent({
setup(props,{emit}) {
const {t,locale} = useI18n()
const store = useStore();
+ const route = useRoute();
const data:any = reactive({
button:{
left:false,
@@ -305,6 +306,23 @@ export default defineComponent({
data.isGenerate = false
clearInterval(data.remGenerateTime)
data.remGenerate = false
+ if(res.errCode === 2){
+ Modal.confirm({
+ title: res.errMsg,
+ icon: createVNode(ExclamationCircleOutlined),
+ okText: 'Yes',
+ cancelText: 'No',
+ mask:false,
+ zIndex:99999,
+ centered:true,
+ onOk() {
+ store.commit("setUpgradePlan", true);
+ },
+ onCancel(){
+
+ }
+ });
+ }
})
}
const setGenerate = (dataList:any)=>{
@@ -328,6 +346,8 @@ export default defineComponent({
list = ''
clearInterval(data.generateTime)
clearInterval(data.remGenerateTime)
+ data.remGenerate = false
+ data.isGenerate = false
// if(list?.filter)list = list?.filter((item:any) => item !== element.taskId);
store.dispatch('getCredits')
}else if(element.status == 'Fail'){
@@ -381,6 +401,11 @@ export default defineComponent({
}
}
let isSelectObject = false
+ watch(()=>route?.query,(newVal)=>{
+ if(!newVal.id){
+ isSelectObject = false
+ }
+ },{immediate:true})
let beforeUpload = async (file: any)=>{
const isJpgOrPng =
file.type === "image/jpeg" ||
@@ -408,19 +433,21 @@ export default defineComponent({
if(res.errCode == 0){
file.imgUrl = res.data.url;
file.id = res.data.id
- data.fileList.forEach((listItem:any)=>listItem.isChecked = false)
data.currentList.forEach((listItem:any)=>listItem.isChecked = false)
- file.isChecked = true
file.type = 'ProductElement'
// if(props.productimgMenu.value == 'Relight'){
// file.type = "ToProductImage"
// }
data.selectImg = res.data
- data.fileList.filter((v: any) => v.status === "done");
+ // data.fileList.filter((v: any) => v.status === "done");
+ let storeData = {
+ str:'add',
+ list:[file]
+ }
+ store.commit('setUploadElement',storeData)
}else{
bor = false
}
- // this.showFileList = productImgData.fileList
} else if (file.status === "error") {
bor = false
}
@@ -548,6 +575,13 @@ export default defineComponent({
watch(()=>store.state.HomeStoreModule.uploadElement.length,(newVal,oldVal)=>{
if(props.isDesignPage)return
data.fileList = store.state.HomeStoreModule.uploadElement
+ data.fileList.forEach((listItem:any)=>{
+ if(listItem.id == data.selectImg.id){
+ listItem.isChecked = true
+ }else{
+ listItem.isChecked = false
+ }
+ })
})
watch(()=>data.noLikeList.length,(newVal,oldVal)=>{
nextTick(()=>{
diff --git a/src/component/home/tools/toProduct/index.vue b/src/component/home/tools/toProduct/index.vue
index 7aa2533b..573c9bf1 100644
--- a/src/component/home/tools/toProduct/index.vue
+++ b/src/component/home/tools/toProduct/index.vue
@@ -45,8 +45,7 @@
}"
:headers="{ Authorization: token }"
:before-upload="beforeUpload"
- v-model:file-list="fileList[productimgMenu.value]"
- :multiple="true"
+ :multiple="!!upload.projectId"
accept=".jpg,.png,.jpeg,.bmp"
@change="(file) => fileUploadChange(file)"
>
@@ -323,6 +322,9 @@ export default defineComponent({
watch(()=>store.state.HomeStoreModule.uploadElement.length,(newVal,oldVal)=>{
if(props.isDesignPage)return
productImgData.fileList[props.productimgMenu.value] = store.state.HomeStoreModule.uploadElement
+ if(productImgData.fileList[props.productimgMenu.value][0]){
+ productImgData.fileList[props.productimgMenu.value][0].isChecked = true
+ }
})
const productImgDom = reactive({
generalDragLeft:null as any,
@@ -423,6 +425,7 @@ export default defineComponent({
}
let fileUploadChange = (data: any)=> {
+ console.log(data)
let file = data.file;
let bor = true
if (file.status === "done") {
@@ -435,11 +438,16 @@ export default defineComponent({
// if(props.productimgMenu.value == 'Relight'){
// file.type = "ToProductImage"
// }
- productImgData.fileList[props.productimgMenu.value].filter((v: any) => v.status === "done");
+ let storeData = {
+ str:'add',
+ list:[file]
+ }
+ console.log(storeData)
+ console.log(1111)
+ store.commit('setUploadElement',storeData)
}else{
bor = false
}
- // this.showFileList = productImgData.fileList
} else if (file.status === "error") {
bor = false
}
@@ -466,11 +474,9 @@ export default defineComponent({
CollectionType:props.productimgMenu.value,
}
}
- return (isJpgOrPng && isLt2M) || Upload.LIST_IGNORE;
+ console.log(!!((isJpgOrPng && isLt2M && productImgData.selectObject.id) || Upload.LIST_IGNORE))
+ return !!((isJpgOrPng && isLt2M && productImgData.selectObject.id) || Upload.LIST_IGNORE);
}
- let deleteFile = (index:any)=>{
- productImgData.fileList[props.productimgMenu.value].splice(index,1)
- }
let setGenerate = (item:any)=>{
item.isChecked = !item.isChecked
}
@@ -563,6 +569,7 @@ export default defineComponent({
}else{
obj.elementId = item.id
obj.elementType = item.resultType || 'ProductElement'
+ obj.elementType = obj.elementType == 'Relight'?'ToProductImage':obj.elementType
}
obj.parentId = item?.parentId || item?.userLikeSortId,
selectArr.push(JSON.parse(JSON.stringify(obj)))
@@ -892,7 +899,6 @@ export default defineComponent({
setproduct,
fileUploadChange,
beforeUpload,
- deleteFile,
setGenerate,
setUploadDelete,
likeFile,
diff --git a/src/component/modules/generalMiniCanvas.vue b/src/component/modules/generalMiniCanvas.vue
index e9463578..eaf2be3d 100644
--- a/src/component/modules/generalMiniCanvas.vue
+++ b/src/component/modules/generalMiniCanvas.vue
@@ -87,7 +87,7 @@ export default defineComponent({
// dataDom.editCanvas.exportImage({isContainBg:props.source == 'detail',isContainFixed:true}).then((rv)=>{
// emit('submitBase64Data',rv)
// })
- dataDom.editCanvas.exportImage({isContainBg:true,isContainFixed:true}).then((rv)=>{
+ dataDom.editCanvas.exportImage({isContainBg:true,isContainFixed:true,isCropByBg:true}).then((rv)=>{
emit('submitBase64Data',rv)
})
}
@@ -135,12 +135,16 @@ export default defineComponent({
if(props.imgUrl){
let img = new Image()
img.onload = ()=>{
- let wH = [1,1]
- let domHeight = dataDom.canvasBox.offsetHeight - 200
- let imgHeight = img.height
- wH = [1,domHeight/imgHeight]
- data.canvasConfig.height = domHeight
- data.canvasConfig.width = wH[1] * img.width
+ // let wH = [1,1]
+ // let domHeight = dataDom.canvasBox.offsetHeight - 200
+ // let imgHeight = img.height
+ // wH = [1,domHeight/imgHeight]
+ // data.canvasConfig.height = domHeight
+ // data.canvasConfig.width = wH[1] * img.width
+ data.canvasConfig.height = img.height
+ data.canvasConfig.width = img.width
+ data.canvasConfig.initZoom = true
+
data.canvasLoad = true
// setTimeout(()=>{
// canvasLoadAddImg()
diff --git a/src/lang/cn.ts b/src/lang/cn.ts
index d093f37d..d716721b 100644
--- a/src/lang/cn.ts
+++ b/src/lang/cn.ts
@@ -239,6 +239,7 @@ export default {
jsContent9: "您确定要清除当前系列并重新开始吗?",
jsContent10: "二次创作的作品不允许使用'设计',但是您可以使用'重新设计'",
jsContent11: "取消喜欢后相关联的元素会被删除,确认要删除吗",
+ jsContent12: "你确定要删除选中元素和相关元素吗?",
},
ProductImg: {
productInput: "请输入关键词(例如款式、材质)",
@@ -582,6 +583,8 @@ export default {
jsContent2: "上传的文件不会保存,是否继续? ",
jsContent3: "您必须选择一种或多种颜色进行下一步。",
jsContent5: "我们检测到您的({str})上的PIN数量超过了八个,这可能会导致一些已钉住的项目未被使用。您是否仍要继续?",
+ jsContent6: "画布内容没有保存,请点击预保存后继续。",
+ jsContent7: "请至少选择一个模特",
},
DesignDetail: {
Details: "详情",
@@ -750,7 +753,8 @@ export default {
editUser: "修改个人信息",
notModifiable: "没有修改次数",
remainingModifications: "本月剩余次数:",
- Country: "国家",
+ plaseSelect:"请选择",
+ Country: "国家或地区",
CompanyName: "职业",
Status: "状态",
Valid: "有效",
@@ -1347,5 +1351,16 @@ export default {
jsContent1:'邮箱格式有误',
jsContent2:'请检查所有带 * 号的内容',
jsDelete:'确定删除这一项吗',
+ Design:'设计',
+ SingleDesign:'单品设计',
+ MoodBoard:'情绪版',
+ PrintBoard:'印花板',
+ SketchBoard:'线稿板',
+ Pattern:'设计',
+ Logo:'标志',
+ Slogan:'标语',
+ ToProductImage:'产品图',
+ Relight:'打光',
+ ChatRobot:'对话生成',
},
};
diff --git a/src/lang/en.ts b/src/lang/en.ts
index 88e55012..55b65536 100644
--- a/src/lang/en.ts
+++ b/src/lang/en.ts
@@ -241,6 +241,7 @@ export default {
jsContent9: "Are you sure to erase current collection and start over?",
jsContent10: "Re-created works are not allowed to use 'design', but you can use 'redesign'",
jsContent11: "By unliking this, all connected posts will be deleted. Are you sure you want to continue?",
+ jsContent12: "Are you sure about deleting the current brand DNA?",
},
ProductImg: {
productInput: "Enter keyword(style,texture)",
@@ -584,6 +585,8 @@ export default {
jsContent2: "The uploaded files will not be saved, being sure to continue? ",
jsContent3: "You must choose one or more colors for further process.",
jsContent5: "We've detected that the number of pins on your ({str}) exceeds eight, which may result in some pinned items not being used. Would you like to continue anyway?",
+ jsContent6: 'The content on the canvas has not been saved. Please click "Preview" to continue.',
+ jsContent7: "Please select at least one model.",
},
DesignDetail: {
Details: "Details",
@@ -752,7 +755,8 @@ export default {
editUser: "Change Information",
notModifiable: "Not modifiable",
remainingModifications: "Remaining this month:",
- Country: "Country",
+ plaseSelect:"Please select",
+ Country: "Country or Region",
CompanyName: "Occupation",
Status: "Status",
Valid: "Valid",
@@ -1349,5 +1353,16 @@ export default {
jsContent1:'The email format is incorrect',
jsContent2:'Please check the input box marked with *',
jsDelete:'Are you sure you want to delete this item?',
+ Design:'Design',
+ SingleDesign:'SingleDesign',
+ MoodBoard:'MoodBoard',
+ PrintBoard:'PrintBoard',
+ SketchBoard:'SketchBoard',
+ Pattern:'Pattern',
+ Logo:'Logo',
+ Slogan:'Slogan',
+ ToProductImage:'ToProductImage',
+ Relight:'Relight',
+ ChatRobot:'ChatRobot',
},
};
diff --git a/src/store/Detail/designDetail.ts b/src/store/Detail/designDetail.ts
index adcd1886..d5bfe898 100644
--- a/src/store/Detail/designDetail.ts
+++ b/src/store/Detail/designDetail.ts
@@ -1,5 +1,6 @@
import {Module} from 'vuex'
import {RootState} from '../index'
+import { forEach } from 'jszip'
interface DesignDetail{
designDetail:any,
@@ -28,6 +29,19 @@ const DesignDetail : Module
= {
currentPrintElement:null,
},
mutations:{
+ clearDetailData(state){
+ state.designDetail = null
+ state.designPreviewData = {}
+ state.frontBack = {
+ front:[],
+ back:[],
+ body:{},
+ }
+ state.selectDetail = null
+ state.printZIndex = -1
+ state.currentDetailType = ''
+ state.currentPrintElement = null
+ },
setDesignDetail(state,data){
if(data.others.length > 0 && data.others[0].type == "Body"){
state.frontBack.body = data.others[0]
@@ -58,11 +72,13 @@ const DesignDetail : Module = {
// front[index].style.zIndex = v.priority
front[index].id = v.id
front[index].undividedLayer = v.undividedLayer
+ front[index].undividedLayerWithSinglePrint = v?.undividedLayerWithSinglePrint
}else{
back[index] = v.layersObject[i]
back[index].style.zIndex = v.priority
back[index].id = v.id
back[index].undividedLayer = v.undividedLayer
+ back[index].undividedLayerWithSinglePrint = v?.undividedLayerWithSinglePrint
// back[index].style.zIndex = backIndex==0?v.layersObject[i]:backIndex++
}
if(state.printZIndex < v.priority){
@@ -138,7 +154,6 @@ const DesignDetail : Module = {
}
},
setDesignColthes(state,data){
- console.log(data)
if(!state.currentDetailType)state.currentDetailType = 'sketch'
//切换选择
// state.currentDetailType = ''
@@ -181,6 +196,7 @@ const DesignDetail : Module = {
trims:null,
type:null,
undividedLayer:null,
+ undividedLayerWithSinglePrint:null,
}
if(!state.currentDetailType)state.currentDetailType = 'sketch'
state.designDetail.clothes.forEach((item:any) => {
@@ -192,33 +208,36 @@ const DesignDetail : Module = {
},
async setPraeview(state,value){//preview
let data = value?.rv || value
- console.log(data,'preview')
let currentType = value?.currentType
if(state.designDetail.oldModel?.url)state.frontBack.body.path = state.designDetail.oldModel.url
if(value?.rv?.currentFullBodyView)state.designDetail.currentFullBodyView = value.rv.currentFullBodyView
for (let j = 0; j < data.clothes.length; j++) {
const item = data.clothes[j];
if(!item.id)continue
- if(item.id == state.selectDetail.id || state.selectDetail.newDetail?.sketch?.id == item.id){
-
- }
let id_:any
if(state.currentDetailType != 'models'){
- id_ = state.selectDetail.id || state.selectDetail.newDetail?.sketch?.id
+ if(data.clothes.length > 2){
+ //缺少字段临时添加
+ id_ = item.id || state.selectDetail.newDetail?.sketch?.id
+ }else{
+ id_ = state.selectDetail.id || state.selectDetail.newDetail?.sketch?.id
+ }
}else{
id_ = item.id
}
+ console.log(id_)
let el:any = document.querySelector('.molepositon .perview_img')
await new Promise((resolve, reject) => {
if(!state.frontBack?.body?.path){
state.frontBack.front[0].undividedLayer = value.rv.clothes[0].undividedLayer
+ state.frontBack.front[0].undividedLayerWithSinglePrint = value.rv.clothes[0]?.undividedLayerWithSinglePrint
resolve('')
}
const img = new Image();
img.src = state.frontBack.body.path;
img.onload = () => {
let scale:any = el.parentNode.offsetWidth / img.width;
- if(state.selectDetail.newDetail?.sketch?.id && !state.selectDetail.id){
+ if(state.selectDetail?.newDetail?.sketch?.id && !state.selectDetail.id){
state.frontBack.front.push({id:state.selectDetail.newDetail?.sketch?.id})
state.frontBack.back.push({id:state.selectDetail.newDetail?.sketch?.id})
}
@@ -230,7 +249,7 @@ const DesignDetail : Module = {
left:item.layersObject[i].position?.[1] * scale + 'px',
width:item.layersObject[i].imageSize?.[0] * scale + 'px',
height:item.layersObject[i].imageSize?.[1] * scale + 'px',
- zIndex:v?.style?.zIndex?v.style.zIndex:state.frontBack.front.length
+ zIndex:v?.style?.zIndex?v.style.zIndex:v.priority?v.priority:state.frontBack.front.length
}
item.layersObject[i].centers={
left:0,
@@ -242,11 +261,13 @@ const DesignDetail : Module = {
// state.frontBack.front[index].style.zIndex = v.priority
state.frontBack.front[index].id = item.id
state.frontBack.front[index].undividedLayer = item.undividedLayer
+ state.frontBack.front[index].undividedLayerWithSinglePrint = item?.undividedLayerWithSinglePrint
}else{
state.frontBack.back[index] = item.layersObject[i]
// state.frontBack.back[index].style.zIndex = v.priority
state.frontBack.back[index].id = item.id
state.frontBack.back[index].undividedLayer = item.undividedLayer
+ state.frontBack.back[index].undividedLayerWithSinglePrint = item?.undividedLayerWithSinglePrint
}
}
}
@@ -254,31 +275,89 @@ const DesignDetail : Module = {
resolve('')
};
})
- if(state.currentDetailType != 'models'){
- state.selectDetail.change = item.change
- if(state.selectDetail?.newDetail?.color){
- state.selectDetail.color = state.selectDetail?.newDetail?.color
- state.selectDetail.newDetail.color = null
+ let uploadDetail = (detailItem)=>{
+ detailItem.change = item.change
+ if(detailItem?.newDetail?.color && currentType != 'color'){
+ detailItem.color = detailItem?.newDetail?.color
+ detailItem.newDetail.color = null
}
if(item.partialDesign){
- state.selectDetail.partialDesign = item.partialDesign
+ detailItem.partialDesign = item.partialDesign
}
- state.selectDetail.designType = item.designType
- state.selectDetail.gradient = item.gradient
- state.selectDetail.layersObject = item.layersObject
- state.selectDetail.path = item.path
- state.selectDetail.minIOPath = item.minIOPath
- state.selectDetail.scale = [1,1]
- state.selectDetail.offset = [0,0]
- state.selectDetail.printObject = item.printObject
- state.selectDetail.trims = item.trims
- state.selectDetail.type = item.type
- state.selectDetail.undividedLayer = item.undividedLayer
- if(state.selectDetail.newDetail?.sketch?.id && !state.selectDetail.id){
- state.designDetail.clothes.push(state.selectDetail)
+ detailItem.designType = item.designType
+ detailItem.layersObject = item.layersObject
+ detailItem.path = item.path
+ detailItem.minIOPath = item.minIOPath
+ detailItem.scale = [1,1]
+ detailItem.offset = [0,0]
+ detailItem.printObject = item.printObject
+ detailItem.trims = item.trims
+ detailItem.type = item.type
+ detailItem.maskMinioUrl = item.layersObject?.[0]?.maskMinioUrl
+ detailItem.maskUrl = item.layersObject?.[0]?.maskUrl
+ detailItem.color = {
+ ...item.color,
+ rgba:{
+ r:item.color?.r,
+ g:item.color?.g,
+ b:item.color?.b,
+ },
+ gradient:item.gradient,
}
- state.selectDetail.id = item.id
- if(currentType)if(state.selectDetail.newDetail?.[currentType])delete state.selectDetail.newDetail[currentType]
+ detailItem.undividedLayer = item.undividedLayer
+ detailItem.undividedLayerWithSinglePrint = item?.undividedLayerWithSinglePrint
+ if(detailItem.newDetail?.sketch?.id && !detailItem.id){
+ state.designDetail.clothes.push(detailItem)
+ }
+ detailItem.id = item.id
+ if(currentType)if(detailItem.newDetail?.[currentType] && currentType != 'color')delete detailItem.newDetail[currentType]
+ }
+ if(data.clothes.length > 2){
+ state.designDetail.clothes.forEach((detailItem:any) => {
+ if(detailItem.id == id_){
+ uploadDetail(detailItem)
+ }
+ });
+ }else{
+ uploadDetail(state.selectDetail)
+ }
+
+ if(state.currentDetailType != 'models'){
+ // state.selectDetail.change = item.change
+ // if(state.selectDetail?.newDetail?.color && currentType != 'color'){
+ // state.selectDetail.color = state.selectDetail?.newDetail?.color
+ // state.selectDetail.newDetail.color = null
+ // }
+ // if(item.partialDesign){
+ // state.selectDetail.partialDesign = item.partialDesign
+ // }
+ // state.selectDetail.designType = item.designType
+ // state.selectDetail.layersObject = item.layersObject
+ // state.selectDetail.path = item.path
+ // state.selectDetail.minIOPath = item.minIOPath
+ // state.selectDetail.scale = [1,1]
+ // state.selectDetail.offset = [0,0]
+ // state.selectDetail.printObject = item.printObject
+ // state.selectDetail.trims = item.trims
+ // state.selectDetail.type = item.type
+ // state.selectDetail.maskMinioUrl = item.layersObject?.[0]?.maskMinioUrl
+ // state.selectDetail.maskUrl = item.layersObject?.[0]?.maskUrl
+ // state.selectDetail.color = {
+ // ...item.color,
+ // rgba:{
+ // r:item.color?.r,
+ // g:item.color?.g,
+ // b:item.color?.b,
+ // },
+ // gradient:item.gradient,
+ // }
+ // state.selectDetail.undividedLayer = item.undividedLayer
+ // state.selectDetail.undividedLayerWithSinglePrint = item?.undividedLayerWithSinglePrint
+ // if(state.selectDetail.newDetail?.sketch?.id && !state.selectDetail.id){
+ // state.designDetail.clothes.push(state.selectDetail)
+ // }
+ // state.selectDetail.id = item.id
+ // if(currentType)if(state.selectDetail.newDetail?.[currentType] && currentType != 'color')delete state.selectDetail.newDetail[currentType]
}
}
if(value.fun)value.fun()
diff --git a/src/store/homeStore/homeStore.ts b/src/store/homeStore/homeStore.ts
index 60a85efc..ef0780ef 100644
--- a/src/store/homeStore/homeStore.ts
+++ b/src/store/homeStore/homeStore.ts
@@ -95,6 +95,9 @@ const HomeStoreModule : Module = {
}
},
setUploadElement(state,data){
+ if(data?.isGetModule){
+ state.uploadElement = []
+ }
if(data.str == 'add'){
state.uploadElement.unshift(...data.list)
}else{
diff --git a/src/tool/https.js b/src/tool/https.js
index b20e8b98..139c3b9a 100644
--- a/src/tool/https.js
+++ b/src/tool/https.js
@@ -38,19 +38,7 @@ const CancelToken = axios.CancelToken;
const source = CancelToken.source();
// console.log(import.meta.env.VITE_APP_BASE_URL);
let isLoginTime = false
-const filterHttpsUrl = [
- // '/api/portfolio/page',
- '/api/account/resetPwd',
- '/api/portfolio/detail',
- '/api/account/preLogin',
- '/api/account/designWorksRegister',
- '/api/account/schoolLogin',
- '/api/account/enterpriseLogin',
- '/api/account/login',
- '/api/account/organizationNameSearch',
- '/api/account/designWorksRegisterCode',
- '/api/third/party/parseWeChatCode',
- '/api/account/sendEmail']
+
//POST传参序列化(添加请求拦截器)
axios.interceptors.request.use((config) => {
//在发送请求之前做某件事
@@ -63,23 +51,7 @@ axios.interceptors.request.use((config) => {
// config.data = JSON.stringify(config.data);
}
// config.headers.Authorization = 'Bearer-eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiIyIiwic3ViIjoie1wiaWRcIjoyLFwidXNlcm5hbWVcIjpcImxpcnNcIn0iLCJpYXQiOjE2NjU3NDEwODcsImlzcyI6IkRXSiIsImF1dGhvcml0aWVzIjoiW10iLCJleHAiOjE2NzQzODEwODd9.ShM9R_NNFD7oo1OvxrEgg7PFeWinOuAKkuInUCMQupp66s64Hhv8tN0Wwr83nIN4rHPqtn95wmd4msWcvaFYJA';
- if(filterHttpsUrl.indexOf(config.url) == -1){
- if (!getCookie('token')) {
- console.log('无Token,取消请求');
- if(!isLoginTime){
- isLoginTime = true
- router.replace('/')
- message.warning('Please login and try again~')
- setTimeout(()=>[
- isLoginTime = false
- ],2000)
- }
- return Promise.reject(new Error('缺少Token,请求被拦截')); // 阻止请求
- }
- config.headers.Authorization = getCookie('token');
- }else{
- config.headers.Authorization = '';
- }
+ config.headers.Authorization = getCookie('token');
return config;
},(error) =>{
return Promise.reject(error);
diff --git a/src/tool/listData.js b/src/tool/listData.js
index 258bcc6a..31c0bcde 100644
--- a/src/tool/listData.js
+++ b/src/tool/listData.js
@@ -339,7 +339,8 @@ const openTypeList = (t)=>{
label:t('LibraryPage.Mannequins'),
value:'Models',
router:'library=Models'
- },{
+ },
+ {
icon:'fi-ss-gem',
label:t('LibraryPage.brandDNA'),
value:'MyBrand',
diff --git a/src/views/HomeMain.vue b/src/views/HomeMain.vue
index d5c3aa97..3588b64a 100644
--- a/src/views/HomeMain.vue
+++ b/src/views/HomeMain.vue
@@ -240,11 +240,13 @@
-