Merge branch 'dev_vite' of http://18.167.251.121:10003/aidlab/aida_front into dev_vite
This commit is contained in:
@@ -50,7 +50,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="item detailLeft" :class="{isEditPattern:isEditPattern.value}">
|
||||
<detailLeft v-if="currentDetailType"></detailLeft>
|
||||
<detailLeft v-if="currentDetailType" ref="detailLeft"></detailLeft>
|
||||
<!-- <detailLeft v-if="selectDetail && selectDetail.id && currentDetailType"></detailLeft> -->
|
||||
<div class="btn" style="margin: 0;" v-show="currentDetailType == 'color'">
|
||||
<div class="gallery_btn" @click="previwe">{{$t('DesignPrintOperation.Preview')}}</div>
|
||||
@@ -67,6 +67,7 @@
|
||||
@revocation="revocation"
|
||||
@oppositeRevocation="oppositeRevocation"
|
||||
@modelOnLoad="modelOnLoad"
|
||||
@sketchSysToLibrary="sketchSysToLibrary"
|
||||
></model>
|
||||
<div class="btn">
|
||||
<div class="gallery_btn" style="margin-right: 0;" @click="submit">{{$t('DesignPrintOperation.Submit')}}</div>
|
||||
@@ -136,6 +137,7 @@ export default defineComponent({
|
||||
model:null,
|
||||
canvasBox,
|
||||
detailRight,
|
||||
detailLeft:null as any,
|
||||
})
|
||||
const userDetail = computed(()=>{
|
||||
return store.state.UserHabit.userDetail
|
||||
@@ -491,6 +493,9 @@ export default defineComponent({
|
||||
store.commit('DesignDetail/setDesignDetail',detailData.designDetail)
|
||||
},1000)
|
||||
}
|
||||
const sketchSysToLibrary = ()=>{//系统sketch添加到library更新library
|
||||
detailDom.detailLeft.sketchSysToLibrary()
|
||||
}
|
||||
onMounted(()=>{
|
||||
window.addEventListener('resize', handleResize);
|
||||
})
|
||||
@@ -515,6 +520,7 @@ export default defineComponent({
|
||||
detailEdit,
|
||||
canvasReload,
|
||||
modelOnLoad,
|
||||
sketchSysToLibrary,
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
:clothing-image-opts="{
|
||||
imageMode:'contains',
|
||||
}"
|
||||
:hideCanvas="hideCanvas"
|
||||
ref="editCanvas">
|
||||
</editCanvas>
|
||||
<!-- <canvasContent ref="canvasContent"></canvasContent> -->
|
||||
@@ -37,6 +38,7 @@
|
||||
:clothing-image-opts="{
|
||||
imageMode:'contains',
|
||||
}"
|
||||
:hideCanvas="hideCanvas"
|
||||
ref="editCanvasBackFront">
|
||||
</editCanvas>
|
||||
</div>
|
||||
@@ -63,6 +65,7 @@ import { useStore } from "vuex";
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import editCanvas from "@/component/Canvas/CanvasEditor/index.vue";
|
||||
import { formatTime,segmentImage,getMinioUrl } from "@/tool/util";
|
||||
import { useRouter, useRoute } from 'vue-router'
|
||||
|
||||
export default defineComponent({
|
||||
components:{
|
||||
@@ -77,7 +80,7 @@ export default defineComponent({
|
||||
setup(props,{emit}) {
|
||||
const store = useStore();
|
||||
const {t} = useI18n();
|
||||
|
||||
const route = useRoute()
|
||||
const detailDom = reactive({
|
||||
editFrontBack:null as any,
|
||||
model:null,
|
||||
@@ -104,6 +107,7 @@ export default defineComponent({
|
||||
getCanvasIfEdit:inject('getCanvasIfEdit')as any,
|
||||
canvasInstance:null as any,
|
||||
canvasJSON:'',
|
||||
hideCanvas: computed(()=>store.state.Workspace.projectPath !== route.fullPath),
|
||||
})
|
||||
watch(()=>detailData.selectDetail,(newValue,oldValue)=>{
|
||||
detailData.imgDomIndex = detailData.frontBack.front.findIndex((item:any)=>item.id == newValue.id)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="detailLeft">
|
||||
<sketch v-show="currentDetailType == 'sketch'" @addDetail="addDetail"></sketch>
|
||||
<sketch v-show="currentDetailType == 'sketch'" ref="sketch" @addDetail="addDetail"></sketch>
|
||||
<print v-show="currentDetailType == 'print'"></print>
|
||||
<color v-if="currentDetailType == 'color'"></color>
|
||||
<element v-show="currentDetailType == 'element'"></element>
|
||||
@@ -42,6 +42,7 @@ export default defineComponent({
|
||||
})
|
||||
const getDetailListDom = reactive({
|
||||
addDetails:null as any,
|
||||
sketch:null as any,
|
||||
})
|
||||
const addDetail = () =>{
|
||||
let addDetails:any = getDetailListDom.addDetails
|
||||
@@ -53,6 +54,9 @@ export default defineComponent({
|
||||
detailData.selectDetail.newDetail.sketch = null
|
||||
}
|
||||
}
|
||||
const sketchSysToLibrary = ()=>{//系统sketch添加到library更新library
|
||||
getDetailListDom.sketch.sketchSysToLibrary()
|
||||
}
|
||||
|
||||
return{
|
||||
...toRefs(detailData),
|
||||
@@ -60,6 +64,7 @@ export default defineComponent({
|
||||
...toRefs(getDetailListDom),
|
||||
addDetail,
|
||||
setSloganData,
|
||||
sketchSysToLibrary,
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<i class="fi fi-rr-picture centent"></i>
|
||||
</div>
|
||||
</div>
|
||||
<selectList @selectImgItem="selectImgItem" source="detail" level1Type="Sketchboard" type="sketch" :catecoryList="sketchCatecoryList"></selectList>
|
||||
<selectList @selectImgItem="selectImgItem" source="detail" ref="selectList" level1Type="Sketchboard" type="sketch" :catecoryList="sketchCatecoryList"></selectList>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts">
|
||||
@@ -47,7 +47,7 @@ export default defineComponent({
|
||||
currentPage:1,
|
||||
})
|
||||
const getDetailListDom = reactive({
|
||||
libraryList:null as any,
|
||||
selectList:null as any,
|
||||
})
|
||||
const openCurrent = ()=>{
|
||||
detailData.selectTitle = 'current'
|
||||
@@ -55,9 +55,8 @@ export default defineComponent({
|
||||
const openUpload = ()=>{
|
||||
detailData.selectTitle = 'upload'
|
||||
}
|
||||
const openLibrary = ()=>{
|
||||
detailData.selectTitle = 'library'
|
||||
getDetailListDom.libraryList.init()
|
||||
const sketchSysToLibrary = ()=>{
|
||||
getDetailListDom.selectList.openLibrary()
|
||||
}
|
||||
const hasDuplicateId = (id:any)=>{
|
||||
let arr = detailData.designDetail.clothes
|
||||
@@ -96,7 +95,7 @@ export default defineComponent({
|
||||
|
||||
openCurrent,
|
||||
openUpload,
|
||||
openLibrary,
|
||||
sketchSysToLibrary,
|
||||
selectImgItem,
|
||||
openAddDetail,
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<div class="back" v-show="isEditPattern.value">
|
||||
<i class="fi fi-br-angle-left" @click="setBack"></i>
|
||||
</div>
|
||||
<modelNav @canvasReload="()=>$emit('canvasReload')" @addSketch="()=>$emit('addSketch')" @deleteItem="deleteItem"></modelNav>
|
||||
<modelNav @canvasReload="()=>$emit('canvasReload')" @addSketch="()=>$emit('addSketch')" @sketchSysToLibrary="()=>$emit('sketchSysToLibrary')" @deleteItem="deleteItem"></modelNav>
|
||||
</div>
|
||||
<div class="modelindex_right">
|
||||
<div class="detail_btn">
|
||||
@@ -26,7 +26,7 @@
|
||||
<i v-show="!body && deleteShow" class="fi fi-br-check" @click="deleteNav(1)"></i> -->
|
||||
|
||||
<!-- 层 -->
|
||||
<i :title="$t('DesignDetail.compareTitle')" @mousedown="mousedownDesignImg" @mouseup="mousedownDesignImg" @touchstart="mousedownDesignImg" @touchend="mousedownDesignImg">
|
||||
<i :title="$t('DesignDetail.compareTitle')" @mousedown="mousedownDesignImg" @mouseup="mousedownDesignImg" @touchstart.passive="mousedownDesignImg" @touchend.passive="mousedownDesignImg">
|
||||
<SvgIcon name="DetailCompare" size="30" />
|
||||
</i>
|
||||
|
||||
@@ -50,7 +50,7 @@ export default defineComponent({
|
||||
components:{
|
||||
position,modelNav
|
||||
},
|
||||
emits:['detailEdit','canvasReload','addSketch','revocation','oppositeRevocation','modelOnLoad'],
|
||||
emits:['detailEdit','canvasReload','addSketch','revocation','oppositeRevocation','modelOnLoad','sketchSysToLibrary'],
|
||||
setup(props,{emit}) {
|
||||
const {t} = useI18n()
|
||||
const store = useStore();
|
||||
|
||||
@@ -7,7 +7,10 @@
|
||||
@mousedown.stop="designMousedown(getMousePosition($event,false),item.uniqueId,'disLike')"
|
||||
@touchstart.passive="designMousedown(getMousePosition($event,true),item.uniqueId,'disLike')"
|
||||
@click="selectDetailItem(item,index)">
|
||||
<i class="fi fi-rr-trash" @click.stop="deleteDetailItem(item?.id)"></i>
|
||||
<div class="iconList">
|
||||
<i class="fi fi-rr-add" :class="{ active:item.scope == 'sys'}" @click.stop="sketchSystemToLibrary(item)"></i>
|
||||
<i class="fi fi-rr-trash" @click.stop="deleteDetailItem(item?.id)"></i>
|
||||
</div>
|
||||
<img :src="item.path" alt="">
|
||||
</div>
|
||||
</div>
|
||||
@@ -30,7 +33,7 @@ export default defineComponent({
|
||||
components:{
|
||||
position,
|
||||
},
|
||||
emits:['canvasReload','addSketch','deleteItem'],
|
||||
emits:['canvasReload','addSketch','deleteItem','sketchSysToLibrary'],
|
||||
props:{
|
||||
},
|
||||
setup(props,{emit}) {
|
||||
@@ -249,6 +252,17 @@ export default defineComponent({
|
||||
collItemSize.prentHeight = (collItemSize.padding + remValue) * elArr.length + 'px'
|
||||
moveItem()
|
||||
}
|
||||
const sketchSystemToLibrary = (item)=>{
|
||||
let value = {
|
||||
clothId:item.id,
|
||||
path:item.minIOPath
|
||||
}
|
||||
Https.axiosGet(Https.httpUrls.addSysSketchToLibrary,{params:value})
|
||||
.then((rv:any)=>{
|
||||
item.scope = 'user'
|
||||
emit('sketchSysToLibrary')
|
||||
})
|
||||
}
|
||||
let observers = null as any
|
||||
onMounted(()=>{
|
||||
observers = new ResizeObserver(entries => {
|
||||
@@ -269,6 +283,7 @@ export default defineComponent({
|
||||
designMousedown,
|
||||
addSketch,
|
||||
getMousePosition,
|
||||
sketchSystemToLibrary,
|
||||
}
|
||||
},
|
||||
|
||||
@@ -295,17 +310,35 @@ export default defineComponent({
|
||||
position: absolute;
|
||||
background: #fff;
|
||||
transition: top .3s;
|
||||
> i:not(.fi-bs-plus){
|
||||
display: none;
|
||||
> .iconList{
|
||||
position: absolute;
|
||||
right: 1rem;
|
||||
top: 1rem;
|
||||
cursor: pointer;
|
||||
font-size: 2rem;
|
||||
}
|
||||
&:hover{
|
||||
right: 1rem;
|
||||
display: none;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
> i{
|
||||
display: block;
|
||||
margin-bottom: .2rem;
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
> .fi-rr-add{
|
||||
pointer-events: none;
|
||||
color: #acacac;
|
||||
&.active{
|
||||
pointer-events: auto;
|
||||
color: #000;
|
||||
}
|
||||
}
|
||||
>i:not(.fi-rr-add){
|
||||
font-size: 2rem;
|
||||
}
|
||||
}
|
||||
i:not(.fi-bs-plus){
|
||||
}
|
||||
|
||||
&:hover{
|
||||
> .iconList{
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
&:last-child{
|
||||
|
||||
@@ -724,8 +724,9 @@ export default defineComponent({
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
generageAdd(data: any) {
|
||||
if (!data?.imgUrl) return
|
||||
generageAdd(value: any) {
|
||||
if (!value?.imgUrl) return
|
||||
const data = JSON.parse(JSON.stringify(value))
|
||||
data.type_ = this.type_
|
||||
data.type_.type1 = data.designType ? data.designType : this.type_.type1
|
||||
data.resData = JSON.parse(JSON.stringify(data))
|
||||
@@ -1204,13 +1205,14 @@ export default defineComponent({
|
||||
Https.axiosPost(Https.httpUrls.generateLike, data)
|
||||
.then(rv => {
|
||||
item.like = true
|
||||
item.libraryId = rv.libraryId
|
||||
})
|
||||
.catch(res => {})
|
||||
this.fileList[index].state = ''
|
||||
this.generageAdd(item)
|
||||
} else {
|
||||
this.fileList[index].state = 'delete'
|
||||
this.generageAdd(item)
|
||||
// this.generageAdd(item)
|
||||
let data = {
|
||||
generateDetailId: item.id,
|
||||
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone
|
||||
@@ -1218,6 +1220,7 @@ export default defineComponent({
|
||||
Https.axiosGet(Https.httpUrls.generateDislike, { params: data })
|
||||
.then(rv => {
|
||||
item.like = false
|
||||
item.libraryId = null
|
||||
})
|
||||
.catch(res => {})
|
||||
}
|
||||
|
||||
@@ -422,6 +422,8 @@ export default defineComponent({
|
||||
},
|
||||
//创建定时器
|
||||
createTimer() {
|
||||
clearInterval(this.timer);
|
||||
this.time = 60;
|
||||
this.timer = setInterval(() => {
|
||||
this.time--;
|
||||
if (!this.time) {
|
||||
|
||||
@@ -119,10 +119,22 @@ export default defineComponent({
|
||||
file.level2Type = cate.value;
|
||||
file.categoryValue = cate.value;
|
||||
file.category = cate.name;
|
||||
if(props.isSetSketchCategory){
|
||||
|
||||
console.log("libraryId:" + file.libraryId)
|
||||
if(file.libraryId){
|
||||
let data = {
|
||||
libraryId:[file.libraryId],
|
||||
level2Type:props.item.categoryValue,
|
||||
}
|
||||
Https.axiosPost(Https.httpUrls.setSketchLibrary,data).then(
|
||||
(rv: any) => {
|
||||
emit('upTypeSucced')
|
||||
}
|
||||
).catch((res)=>{
|
||||
});
|
||||
}else if(props.isSetSketchCategory){
|
||||
setSketchLibrary(props.item)
|
||||
}
|
||||
// this.store.commit("sketchGenerateFiles", this.fileList);
|
||||
|
||||
}
|
||||
let setSketchLibrary = (item:any)=>{
|
||||
|
||||
@@ -193,10 +193,56 @@
|
||||
<div v-show="frogetPasswordStep === 3">
|
||||
<div class="forget_passored_form_content">
|
||||
<div class="forget_passored_form_title">Password</div>
|
||||
<div v-show="passwordConditionShow" class="conditionShow">
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i
|
||||
v-show="!passwordCondition.length"
|
||||
class="fi fi-br-cross-small"
|
||||
></i>
|
||||
<i
|
||||
v-show="passwordCondition.length"
|
||||
class="fi fi-br-check"
|
||||
></i>
|
||||
</div>
|
||||
<div class="text">At least 8 characters long</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i
|
||||
v-show="!passwordCondition.special"
|
||||
class="fi fi-br-cross-small"
|
||||
></i>
|
||||
<i
|
||||
v-show="passwordCondition.special"
|
||||
class="fi fi-br-check"
|
||||
></i>
|
||||
</div>
|
||||
<div class="text">Must contain special characters</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i
|
||||
v-show="!passwordCondition.group"
|
||||
class="fi fi-br-cross-small"
|
||||
></i>
|
||||
<i
|
||||
v-show="passwordCondition.group"
|
||||
class="fi fi-br-check"
|
||||
></i>
|
||||
</div>
|
||||
<div class="text">
|
||||
Mix of uppercase, lowercase and numbers
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input
|
||||
class="forget_passored_form_input"
|
||||
placeholder="Enter a new password"
|
||||
v-model="newPassword"
|
||||
@focus="() => (passwordConditionShow = true)"
|
||||
@blur="() => (passwordConditionShow = false)"
|
||||
@input="passwordInput"
|
||||
@keydown.enter="submitResetPassword()"
|
||||
/>
|
||||
</div>
|
||||
@@ -302,6 +348,12 @@ export default defineComponent({
|
||||
passwordType: "password",
|
||||
userId: "",
|
||||
loginTime: true,
|
||||
passwordConditionShow:false,
|
||||
passwordCondition: {
|
||||
length: false,
|
||||
special: false,
|
||||
group: false,
|
||||
},
|
||||
};
|
||||
},
|
||||
onBeforeUnmount() {
|
||||
@@ -544,9 +596,26 @@ export default defineComponent({
|
||||
sessionStorage.setItem("sessionId", randomNum);
|
||||
sessionStorage.setItem("record", JSON.stringify([]));
|
||||
}
|
||||
},
|
||||
passwordInput(e) {
|
||||
this.isPassword(this.newPassword);
|
||||
},
|
||||
isPassword(password: any) {
|
||||
this.passwordCondition.length = /.{8,}/.test(password);
|
||||
this.passwordCondition.special =
|
||||
/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(password);
|
||||
this.passwordCondition.group =
|
||||
/[a-z]/.test(password) && /[A-Z]/.test(password) && /\d/.test(password);
|
||||
return Object.values(this.passwordCondition).filter(
|
||||
(value) => value === true
|
||||
).length;
|
||||
},
|
||||
//修改密码提交
|
||||
submitResetPassword() {
|
||||
if (this.isPassword(this.newPassword) < 3) {
|
||||
message.info("You must satisfy ALL password conditions to register.");
|
||||
return;
|
||||
}
|
||||
let data = {
|
||||
email: this.forgetPasswordEmail,
|
||||
emailVerifyCode: this.forgetEmailValue,
|
||||
@@ -563,6 +632,8 @@ export default defineComponent({
|
||||
|
||||
//创建定时器
|
||||
createTimer() {
|
||||
clearInterval(this.timer);
|
||||
this.time = 60;
|
||||
this.timer = setInterval(() => {
|
||||
this.time--;
|
||||
if (this.time <= 0) this.clearTimer(0);
|
||||
@@ -607,6 +678,36 @@ export default defineComponent({
|
||||
.login_page {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
.conditionShow {
|
||||
bottom: 0;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
left: auto;
|
||||
transform: translateY(-5rem);
|
||||
background: #404040;
|
||||
color: #fff;
|
||||
font-size: 1.4rem;
|
||||
padding: 2rem;
|
||||
border-radius: 2rem;
|
||||
z-index: 2;
|
||||
> .item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 0.5rem;
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
> .icon {
|
||||
margin-right: 1rem;
|
||||
i {
|
||||
display: flex;
|
||||
// &.fi-br-cross-small{
|
||||
// color: red;
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.page_content {
|
||||
.login_content {
|
||||
margin: 0 auto;
|
||||
|
||||
@@ -189,10 +189,56 @@
|
||||
<div v-show="frogetPasswordStep === 3">
|
||||
<div class="forget_passored_form_content">
|
||||
<div class="forget_passored_form_title">Password</div>
|
||||
<div v-show="passwordConditionShow" class="conditionShow">
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i
|
||||
v-show="!passwordCondition.length"
|
||||
class="fi fi-br-cross-small"
|
||||
></i>
|
||||
<i
|
||||
v-show="passwordCondition.length"
|
||||
class="fi fi-br-check"
|
||||
></i>
|
||||
</div>
|
||||
<div class="text">At least 8 characters long</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i
|
||||
v-show="!passwordCondition.special"
|
||||
class="fi fi-br-cross-small"
|
||||
></i>
|
||||
<i
|
||||
v-show="passwordCondition.special"
|
||||
class="fi fi-br-check"
|
||||
></i>
|
||||
</div>
|
||||
<div class="text">Must contain special characters</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i
|
||||
v-show="!passwordCondition.group"
|
||||
class="fi fi-br-cross-small"
|
||||
></i>
|
||||
<i
|
||||
v-show="passwordCondition.group"
|
||||
class="fi fi-br-check"
|
||||
></i>
|
||||
</div>
|
||||
<div class="text">
|
||||
Mix of uppercase, lowercase and numbers
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input
|
||||
class="forget_passored_form_input"
|
||||
placeholder="Enter a new password"
|
||||
v-model="newPassword"
|
||||
@focus="() => (passwordConditionShow = true)"
|
||||
@blur="() => (passwordConditionShow = false)"
|
||||
@input="passwordInput"
|
||||
@keydown.enter="submitResetPassword()"
|
||||
/>
|
||||
</div>
|
||||
@@ -258,6 +304,7 @@ import { useI18n } from "vue-i18n";
|
||||
import { setLang } from "@/tool/guide";
|
||||
import md5 from "md5";
|
||||
import router from "@/router";
|
||||
import { pass } from "three/tsl";
|
||||
export default defineComponent({
|
||||
components: {
|
||||
VerificationCodeInput,
|
||||
@@ -307,6 +354,12 @@ export default defineComponent({
|
||||
loginTime: true,
|
||||
animation: false,
|
||||
inputCodeTime: null as any,
|
||||
passwordConditionShow:false,
|
||||
passwordCondition: {
|
||||
length: false,
|
||||
special: false,
|
||||
group: false,
|
||||
},
|
||||
};
|
||||
},
|
||||
onBeforeUnmount() {
|
||||
@@ -413,14 +466,12 @@ export default defineComponent({
|
||||
checkRobot() {
|
||||
this.isCheckRobot = !this.isCheckRobot;
|
||||
},
|
||||
|
||||
//提交账号密码预先登录
|
||||
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{
|
||||
@@ -562,9 +613,26 @@ export default defineComponent({
|
||||
sessionStorage.setItem("sessionId", randomNum);
|
||||
sessionStorage.setItem("record", JSON.stringify([]));
|
||||
}
|
||||
},
|
||||
passwordInput(e) {
|
||||
this.isPassword(this.newPassword);
|
||||
},
|
||||
isPassword(password: any) {
|
||||
this.passwordCondition.length = /.{8,}/.test(password);
|
||||
this.passwordCondition.special =
|
||||
/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(password);
|
||||
this.passwordCondition.group =
|
||||
/[a-z]/.test(password) && /[A-Z]/.test(password) && /\d/.test(password);
|
||||
return Object.values(this.passwordCondition).filter(
|
||||
(value) => value === true
|
||||
).length;
|
||||
},
|
||||
//修改密码提交
|
||||
submitResetPassword() {
|
||||
if (this.isPassword(this.newPassword) < 3) {
|
||||
message.info("You must satisfy ALL password conditions to register.");
|
||||
return;
|
||||
}
|
||||
let data = {
|
||||
email: this.forgetPasswordEmail,
|
||||
emailVerifyCode: this.forgetEmailValue,
|
||||
@@ -581,6 +649,8 @@ export default defineComponent({
|
||||
|
||||
//创建定时器
|
||||
createTimer() {
|
||||
clearInterval(this.timer);
|
||||
this.time = 60;
|
||||
this.timer = setInterval(() => {
|
||||
this.time--;
|
||||
if (this.time <= 0) this.clearTimer(0);
|
||||
@@ -633,6 +703,36 @@ export default defineComponent({
|
||||
.login_page {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
.conditionShow {
|
||||
bottom: 0;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
left: auto;
|
||||
transform: translateY(-5rem);
|
||||
background: #404040;
|
||||
color: #fff;
|
||||
font-size: 1.4rem;
|
||||
padding: 2rem;
|
||||
border-radius: 2rem;
|
||||
z-index: 2;
|
||||
> .item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 0.5rem;
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
> .icon {
|
||||
margin-right: 1rem;
|
||||
i {
|
||||
display: flex;
|
||||
// &.fi-br-cross-small{
|
||||
// color: red;
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.page_content {
|
||||
.login_content {
|
||||
margin: 0 auto;
|
||||
@@ -718,7 +818,6 @@ export default defineComponent({
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.login_form_input {
|
||||
width: 100%;
|
||||
height: 6.75rem;
|
||||
@@ -885,7 +984,7 @@ export default defineComponent({
|
||||
|
||||
.forget_passored_form_content {
|
||||
margin-top: 3.5rem;
|
||||
|
||||
position: relative;
|
||||
.forget_passored_form_title {
|
||||
font-size: 2.4rem;
|
||||
font-weight: bold;
|
||||
|
||||
@@ -200,10 +200,56 @@
|
||||
<div v-show="frogetPasswordStep === 3">
|
||||
<div class="forget_passored_form_content">
|
||||
<div class="forget_passored_form_title">Password</div>
|
||||
<div v-show="passwordConditionShow" class="conditionShow">
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i
|
||||
v-show="!passwordCondition.length"
|
||||
class="fi fi-br-cross-small"
|
||||
></i>
|
||||
<i
|
||||
v-show="passwordCondition.length"
|
||||
class="fi fi-br-check"
|
||||
></i>
|
||||
</div>
|
||||
<div class="text">At least 8 characters long</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i
|
||||
v-show="!passwordCondition.special"
|
||||
class="fi fi-br-cross-small"
|
||||
></i>
|
||||
<i
|
||||
v-show="passwordCondition.special"
|
||||
class="fi fi-br-check"
|
||||
></i>
|
||||
</div>
|
||||
<div class="text">Must contain special characters</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i
|
||||
v-show="!passwordCondition.group"
|
||||
class="fi fi-br-cross-small"
|
||||
></i>
|
||||
<i
|
||||
v-show="passwordCondition.group"
|
||||
class="fi fi-br-check"
|
||||
></i>
|
||||
</div>
|
||||
<div class="text">
|
||||
Mix of uppercase, lowercase and numbers
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input
|
||||
class="forget_passored_form_input"
|
||||
placeholder="Enter a new password"
|
||||
v-model="newPassword"
|
||||
@focus="() => (passwordConditionShow = true)"
|
||||
@blur="() => (passwordConditionShow = false)"
|
||||
@input="passwordInput"
|
||||
@keydown.enter="submitResetPassword()"
|
||||
/>
|
||||
</div>
|
||||
@@ -315,6 +361,12 @@ export default defineComponent({
|
||||
loginTime: true,
|
||||
animation: false,
|
||||
inputCodeTime: null as any,
|
||||
passwordConditionShow:false,
|
||||
passwordCondition: {
|
||||
length: false,
|
||||
special: false,
|
||||
group: false,
|
||||
},
|
||||
};
|
||||
},
|
||||
onBeforeUnmount() {
|
||||
@@ -572,9 +624,26 @@ export default defineComponent({
|
||||
sessionStorage.setItem("sessionId", randomNum);
|
||||
sessionStorage.setItem("record", JSON.stringify([]));
|
||||
}
|
||||
},
|
||||
passwordInput(e) {
|
||||
this.isPassword(this.newPassword);
|
||||
},
|
||||
isPassword(password: any) {
|
||||
this.passwordCondition.length = /.{8,}/.test(password);
|
||||
this.passwordCondition.special =
|
||||
/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(password);
|
||||
this.passwordCondition.group =
|
||||
/[a-z]/.test(password) && /[A-Z]/.test(password) && /\d/.test(password);
|
||||
return Object.values(this.passwordCondition).filter(
|
||||
(value) => value === true
|
||||
).length;
|
||||
},
|
||||
//修改密码提交
|
||||
submitResetPassword() {
|
||||
if (this.isPassword(this.newPassword) < 3) {
|
||||
message.info("You must satisfy ALL password conditions to register.");
|
||||
return;
|
||||
}
|
||||
let data = {
|
||||
email: this.forgetPasswordEmail,
|
||||
emailVerifyCode: this.forgetEmailValue,
|
||||
@@ -591,6 +660,8 @@ export default defineComponent({
|
||||
|
||||
//创建定时器
|
||||
createTimer() {
|
||||
clearInterval(this.timer);
|
||||
this.time = 60;
|
||||
this.timer = setInterval(() => {
|
||||
this.time--;
|
||||
if (this.time <= 0) this.clearTimer(0);
|
||||
@@ -643,6 +714,36 @@ export default defineComponent({
|
||||
.login_page {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
.conditionShow {
|
||||
bottom: 0;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
left: auto;
|
||||
transform: translateY(-5rem);
|
||||
background: #404040;
|
||||
color: #fff;
|
||||
font-size: 1.4rem;
|
||||
padding: 2rem;
|
||||
border-radius: 2rem;
|
||||
z-index: 2;
|
||||
> .item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 0.5rem;
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
> .icon {
|
||||
margin-right: 1rem;
|
||||
i {
|
||||
display: flex;
|
||||
// &.fi-br-cross-small{
|
||||
// color: red;
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.page_content {
|
||||
.login_content {
|
||||
margin: 0 auto;
|
||||
|
||||
@@ -686,7 +686,7 @@ export default defineComponent({
|
||||
if(this.colorList[colorList.length - 1]?.gradient && this.colorList[colorList.length - 1]?.gradient?.selectIndex>-1 && this.colorList[colorList.length - 1]?.gradient?.gradientShow){
|
||||
this.selectColor = {rgba:this.colorList[colorList.length - 1].gradient.gradientList[colorList.length - 1].rgba,hex:hex} //顔色选择器默认颜色
|
||||
}else{
|
||||
this.selectColor = {rgba:this.colorList[colorList.length - 1].rgba,hex:hex} //顔色选择器默认颜色
|
||||
this.selectColor = {rgba:this.colorList[colorList.length - 1]?.rgba,hex:hex} //顔色选择器默认颜色
|
||||
}
|
||||
this.store.commit('setColorboardList',colorList)
|
||||
},
|
||||
|
||||
@@ -742,6 +742,8 @@ export default defineComponent({
|
||||
|
||||
//创建定时器
|
||||
createTimer() {
|
||||
clearInterval(this.timer);
|
||||
this.time = 60;
|
||||
this.timer = setInterval(() => {
|
||||
this.time--;
|
||||
if (!this.time) {
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
@canvasInit="canvasInit"
|
||||
@changeCanvas="changeCanvas"
|
||||
is-general
|
||||
:hideCanvas="hideCanvas"
|
||||
:isBackgroundChangeable="false"
|
||||
ref="editCanvas"></editCanvas>
|
||||
</div>
|
||||
@@ -26,6 +27,7 @@ import { Https } from "@/tool/https";
|
||||
import { useStore } from "vuex";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import editCanvas from "@/component/Canvas/CanvasEditor/index.vue";
|
||||
import { useRouter, useRoute } from 'vue-router'
|
||||
|
||||
|
||||
export default defineComponent({
|
||||
@@ -53,12 +55,14 @@ export default defineComponent({
|
||||
const isShowMark = ref(false)
|
||||
const component = reactive({
|
||||
})
|
||||
const route = useRoute()
|
||||
const data = reactive({
|
||||
canvasLoad:false,
|
||||
canvasJSON:computed(()=>store.state.HomeStoreModule.canvasData.canvas),
|
||||
canvasConfig:{
|
||||
|
||||
},
|
||||
hideCanvas: computed(()=>store.state.Workspace.projectPath !== route.fullPath),
|
||||
})
|
||||
watch(()=>data.canvasJSON,(newVal)=>{
|
||||
dataDom.editCanvas.loadJSON(newVal)
|
||||
|
||||
@@ -217,6 +217,7 @@ export const Https = {
|
||||
projectSaveOrUpdate:`/api/project/saveOrUpdate`, //History修改用户分组名
|
||||
historyChoose:`/api/history/choose`, //History choose
|
||||
getDesignDetail:`/api/design/detail/getDetail`,//查询design详情
|
||||
addSysSketchToLibrary:`/api/library/addSysSketchToLibrary`,//把系统衣服添加的library
|
||||
designSingleWithGradient:`/api/design/detail/designSingleWithGradient`,//查询需要更新mask列表
|
||||
getNextSysElement:'/api/design/detail/getNextSysElement',//切换系统的element
|
||||
detailPrintDot:'/api/design/detail/printDot',//print打点预览
|
||||
|
||||
@@ -1067,6 +1067,7 @@ export default defineComponent({
|
||||
Https.axiosPost(Https.httpUrls.generateLike, data).then(
|
||||
(rv) => {
|
||||
item.like = true
|
||||
item.libraryId = rv.libraryId
|
||||
}
|
||||
).catch(res=>{
|
||||
});
|
||||
@@ -1078,6 +1079,7 @@ export default defineComponent({
|
||||
Https.axiosGet(Https.httpUrls.generateDislike, {params:data}).then(
|
||||
(rv) => {
|
||||
item.like = false
|
||||
item.libraryId = null
|
||||
}
|
||||
).catch(res=>{
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user