除了颜色选择图片,注册页面

This commit is contained in:
X1627315083
2024-06-26 17:26:31 +08:00
parent 15077d37ea
commit c661454590
43 changed files with 1494 additions and 271 deletions

View File

@@ -123,9 +123,8 @@
<img src="#" :title="pantongNameList[index]">
</div>
</div>
<div class="started_btn upload_color_btn" v-show="selectColorList.length>0" @click="()=>isSelectSuccessively = !isSelectSuccessively">{{isSelectSuccessively?$t('ColorboardUpload.SelectSuccessively'):$t('ColorboardUpload.SelectSeparately')}}</div>
</div>
</div>
<div class="right_content_line">
<div class="upload_right_header">
@@ -201,6 +200,7 @@ export default defineComponent({
selectIndex:-1,
gradientShow:false,
})
let isSelectSuccessively = ref(false)
return {
fileList,
colorList,
@@ -209,6 +209,7 @@ export default defineComponent({
driver__,
t,
gradient,
isSelectSuccessively,
}
},
watch:{
@@ -487,16 +488,16 @@ export default defineComponent({
this.selectColor = {rgba:{r:color[0],g:color[1],b:color[2],a:1},hex:colorHex}
// console.log(this.colorList);
// console.log(selectColorList);
let colorListIndex = []
this.colorList.forEach((item,index)=>{
if(!item.rgba){
colorListIndex.push(index)
}
})
for (let index = 0; index < selectColorList.length; index++) {
this.colorList[colorListIndex[0]] = selectColorList[index]
colorListIndex.splice(0,1)
}
// let colorListIndex = []
// this.colorList.forEach((item,index)=>{
// if(!item.rgba){
// colorListIndex.push(index)
// }
// })
// for (let index = 0; index < selectColorList.length; index++) {
// this.colorList[colorListIndex[0]] = selectColorList[index]
// colorListIndex.splice(0,1)
// }
nextTick().then(()=>{
if(this.driver__.driver){
driverObj__.moveNext()
@@ -524,10 +525,21 @@ export default defineComponent({
},
setUplpadColor(color){
nextTick().then(()=>{
this.selectColor = color
if(this.driver__.driver){
driverObj__.moveNext()
if(this.isSelectSuccessively){
for (let index = 0; index < this.colorList.length; index++) {
if(!this.colorList[index].rgba){
this.selectIndex = index
this.selectColor = color
break
}
}
}else{
this.selectColor = color
if(this.driver__.driver){
driverObj__.moveNext()
}
}
})
},
@@ -746,7 +758,7 @@ export default defineComponent({
}
let colorList =this.colorList.filter((v) => v && Object.keys(v).length)
this.setColorboardList(colorList)
}
},
}
})
</script>
@@ -834,10 +846,12 @@ export default defineComponent({
.right_content_line{
padding-left: calc(3rem*1.2);
position: relative;
padding-right: calc(5rem*1.2);
padding-right: calc(3rem*1.2);
margin-right: 2.4rem;
.upload_centetn{
overflow-x: hidden;
height: calc(100% - 4.4rem*1.2);
padding-bottom: 4rem;
}
.upload_centetn::-webkit-scrollbar {
display: none;
@@ -923,6 +937,13 @@ export default defineComponent({
}
}
}
.upload_color_btn{
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: 0;
white-space: nowrap;
}
.color_setting_block{
margin: auto;
background: linear-gradient(70deg, #eee4f3, #f3f4e6);

View File

@@ -205,7 +205,7 @@
<div><span class="icon iconfont icon-zhuyi"></span>{{ $t('exportModel.insufficient') }}</div>
</div>
<div class="exportCanvasBox_left_btn">
<div class="subitOkPreviewBtn" :class="{active:allBoardData.printboardFiles.length<=0}" :title="allBoardData.printboardFiles.length<=0?$t('exportModel.jsContent2'):''" @click="setHDExport">{{ $t('exportModel.HDExport') }}</div>
<!-- <div class="subitOkPreviewBtn" :class="{active:allBoardData.printboardFiles.length<=0}" :title="allBoardData.printboardFiles.length<=0?$t('exportModel.jsContent2'):''" @click="setHDExport">{{ $t('exportModel.HDExport') }}</div> -->
<div class="subitOkPreviewBtn" @click="setSubmit">{{ $t('exportModel.Save') }}</div>
<div class="subitOkPreviewBtn" @click="setShare">{{ $t('exportModel.Share') }}</div>
<div class="subitOkPreviewBtn Guide_1_32" @click="setExport">{{ $t('exportModel.Export') }}</div>
@@ -289,7 +289,7 @@
<div class="generalModelOperate_btn_ok" :class="[credits < (allExportSR.filter(item=> item.checked ).length*5)?'active':'']" @click="setExportSR">OK</div>
</div>
</a-modal>
<publish ref="publish"></publish>
<publish ref="publish" @setPublish="setSubmit"></publish>
</a-modal>
</template>
<script>
@@ -573,6 +573,8 @@ export default defineComponent({
isShowMark.value = false
}
updateCanvasState('')//加载完成后记录一下
setOperation('move')
closeNav.value.tool = true
if(driver__.value.driver){
driverObj__.moveNext()
}

View File

@@ -39,12 +39,12 @@
</div>
</div>
</div>
<a-popover>
<!-- <a-popover>
<template #content>
<p>Seed</p>
</template>
<input class="search_seed" max="9999" v-show="scene?.value == 'Logo'" @input="ifSeedValue" v-model="searchPictureSeed" type="Number" placeholder='Seed' min="0">
</a-popover>
</a-popover> -->
<input
class="search_input"
@@ -244,6 +244,7 @@ export default defineComponent({
let remGenerate:any = ref(false)
let remGenerateTime:any = ref()
let styleRecommend:any = inject('styleRecommend')
let generateLevel2Type = ''
return {
searchPictureName,
searchPictureSeed,
@@ -270,6 +271,7 @@ export default defineComponent({
remGenerate,
remGenerateTime,
styleRecommend,
generateLevel2Type,
};
},
data(prop) {
@@ -431,6 +433,9 @@ export default defineComponent({
sloganText = this.searchPictureName
if(this.upload.level1Type == "Sketchboard"){
level2Type = this.sketchboardList?.[0]?.categoryValue?this.sketchboardList[0].categoryValue:''
if(this.workspace.styleName){
sloganText = `${this.workspace.styleName},${sloganText}`
}
}else if(this.upload.level1Type == "Printboard"){
level2Type = this.scene?.value
if(level2Type == 'Slogan' && this.searchPictureName == ''){
@@ -440,7 +445,7 @@ export default defineComponent({
sloganText = `${this.printModel.value},${sloganText}`
}
if(!base64 && level2Type == 'Slogan'){
message.info('请绘制Slogan');
message.info(this.t('Generate.jsContent10'));
return
}
}
@@ -459,6 +464,7 @@ export default defineComponent({
gender:this.workspace.sexEnum.value,
sloganBase64:base64,
}
this.generateLevel2Type = data.level2Type
this.isGenerate = true
this.remGenerateTime = setTimeout(()=>{
this.remGenerate = true
@@ -484,6 +490,7 @@ export default defineComponent({
}
).catch(res=>{
this.generateLevel2Type = ''
this.isGenerate = false
clearInterval(this.remGenerateTime)
this.remGenerate = false
@@ -534,6 +541,7 @@ export default defineComponent({
clearInterval(this.remGenerateTime)
this.remGenerate = false
this.isGenerate = false
this.generateLevel2Type = ''
}
}
}
@@ -542,6 +550,7 @@ export default defineComponent({
clearInterval(this.remGenerateTime)
this.isGenerate = false
this.remGenerate = false
this.generateLevel2Type = ''
});
},1000)
},
@@ -552,7 +561,16 @@ export default defineComponent({
clearInterval(this.generateTime)
if(this.generateProceedList){
let str = this.generateProceedList.map((obj:any) => obj.taskId).join(',');
let data = {uniqueId:str,userId:this?.userInfo?.userId,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone}
let type = 'Generate'
if(this.generateLevel2Type == 'Logo'){
type = 'Logo'
}
let data = {
uniqueId:str,
userId:this?.userInfo?.userId,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
type: type
}
Https.axiosGet(Https.httpUrls.generateStopWaiting, {params:data}).then(
(rv) => {
this.generateProceedList = []
@@ -576,6 +594,7 @@ export default defineComponent({
}
if(this.upload.level1Type == "Moodboard"){
this.styleRecommend.push(value)
this.styleRecommend = [...new Set(this.styleRecommend)]
}
this.searchPictureName += str + value
},
@@ -674,6 +693,10 @@ export default defineComponent({
this.sketchboardList = data
},
deleteFile(item: any) {
if(this.scene?.value == 'Slogan' && this.type_.type2 == 'Printboard'){
let createSlogan:any = this.$refs.createSlogan
createSlogan.isDeleteSlogan = true
}
this.sketchboardList.splice(item, 1);
// if((this.sketchboardList.length<2 && this.moodboarList.length == 0) || this.sketchboardList.length == 0){
// this.printModel = {
@@ -721,7 +744,8 @@ export default defineComponent({
}
},
deleteGenerate(index:any){
if(this.isGenerate)return
// if(this.isGenerate)return
let num = this.fileList.length
let _this = this
Modal.confirm({
title: this.t('LibraryPage.jsContent1'),
@@ -731,7 +755,8 @@ export default defineComponent({
mask:false,
centered:true,
onOk() {
_this.fileList.splice(index,1)
let a = _this.fileList.length - num
_this.fileList.splice(index-a,1)
}
});
},

View File

@@ -315,7 +315,7 @@ export default defineComponent({
(rv) => {
if(rv){
if(rv.isTutorial){
if(rv?.isTutorial){
this.record.push({
state:1,
str:this.t('RobotAssist.jsContent5'),

View File

@@ -95,7 +95,7 @@ export default defineComponent({
value:'SR',
})
let getTaskTime:any = null
let isShowMark:any = false
let isShowMark:any = ref(false)
return {
...toRefs(filter),
store,

View File

@@ -240,7 +240,7 @@ export default defineComponent({
}
let httpsUrl
if(this.modeOfPayment == 'paypal'){
httpsUrl = Https.httpUrls.payAlipay+`/${this.price.num}?returnUrl=${url}`
httpsUrl = Https.httpUrls.payPaypal+`/${this.price.num}?returnUrl=${url}`
}else{
httpsUrl = Https.httpUrls.payAlipayHK+`?amount=${this.price.num}&wallet=${this.modeOfPaymentDetail}`
}

View File

@@ -27,10 +27,10 @@
<div>Color</div>
<input type="color" v-model="fill">
</div>
<div class="clearSlogan_center_btn_item">
<!-- <div class="clearSlogan_center_btn_item">
<div>font Size</div>
<input type="Number" v-model="fontSize">
</div>
</div> -->
<div class="clearSlogan_center_btn_item">
<div>Font Align</div>
<ul>
@@ -105,6 +105,7 @@ export default defineComponent({
let scale = 2;
let exportWH = 512
let canvasWH = ref(0);
let isDeleteSlogan = ref(false)
let textData = reactive({
fill:'#000000',
fontSize:'51',
@@ -149,6 +150,13 @@ export default defineComponent({
canvasWH.value = height
scale = exportWH/canvasWH.value
let oldCanvasDom = canvasBox.querySelector('.canvas-container')
if(isDeleteSlogan.value && oldCanvasDom){
oldCanvasDom.remove()
canvas.remove(textbox);
canvas.dispose();
oldCanvasDom = null
isDeleteSlogan.value = false
}
// if(oldCanvasDom)oldCanvasDom.remove()
if(!oldCanvasDom){
var canvasDom = document.createElement("canvas");
@@ -160,7 +168,6 @@ export default defineComponent({
isDrawingMode: false, // 开启绘图模式
});
canvas.on('object:moving',canvasMoving)
setTextFun('请输入\n一段话吧~')
}
@@ -268,8 +275,8 @@ export default defineComponent({
dom.style.left = domXY.x+'px'
dom.style.top = (domXY.y + 5)+'px'
}
let textbox
let setTextFun = (str)=>{
let textbox
textbox = new fabric.IText(str, {
fontSize: 20,
textAlign:'center'
@@ -360,6 +367,7 @@ export default defineComponent({
...toRefs(textData),
...toRefs(textDataList),
textBtnShow,
isDeleteSlogan,
t,
init,
setTextFun,

View File

@@ -0,0 +1,59 @@
<!-- <template>
<a-image
class="fullScreenImg"
:src="src"
/>
</template> -->
<template>
<a-image
class="fullScreenImg"
:width="width"
:src="src"
/>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
export default defineComponent({
name: 'fullScreenImg',
props:{
width:{
type:String,
default:'100%'
},
center:{
type:Boolean,
default:false
},
src:{
type:String,
default:''
},
},
setup() {
return {};
},
});
</script>
<style lang='less'>
.ant-image{
height: 100%;
.fullScreenImg{
width: 100%;
cursor: zoom-in;
&.active{
}
}
.ant-image-mask{
display: none;
}
}
.ant-image-preview-mask{
.ant-image-preview-body{
.ant-image-preview-operations{
background: rgba(0, 0, 0, .5);
}
}
}
</style>

View File

@@ -112,7 +112,7 @@
{{$t('Generate.Close')}}
</div>
</div>
<div class="input_clear started_btn">清空</div>
<!-- <div class="input_clear started_btn" @click="clearPrductimg">{{$t('ProductImg.Clear')}}</div> -->
</div>
</div>
<div class="productImg_right">
@@ -123,11 +123,14 @@
<div class="productImg_right_item_like">
<i class="fi fi-rr-heart" @click.stop="likeFile(item,'like',index)"></i>
</div>
<div class="productImg_right_item_scale">
<div class="productImg_right_item_scale iconLeft">
<i class="fi fi-bs-expand-arrows-alt" @click.stop="setScaleImage(generateList[productimgMenu.value],index)"></i>
</div>
<div class="productImg_right_item_menu iconLeft">
<i class="fi fi-rr-circle-ellipsis" @click.stop="setScaleImage(generateList[productimgMenu.value],index)"></i>
<i class="fi fi-rr-circle-ellipsis" @click.stop="setMenuShow(item)"></i>
<ul v-show="item.menuShow">
<li v-for="menuItem,index in productimgMenuList" v-show="index != 0" @click.stop="setMenu(menuItem,item)" :key="menuItem.value">{{ menuItem.label }}</li>
</ul>
</div>
</div>
</div>
@@ -136,15 +139,15 @@
<div class="button_second" @click="setExport">{{$t('ProductImg.Export')}}</div>
</div>
<div class="productImg_right_item_box generalScroll" v-mousewheel>
<div class="productImg_right_item" v-for="item,index in likeList[productimgMenu.value]" :key="item">
<div class="productImg_right_item" v-for="item,index in likeList" :key="item">
<img :src="item.url" alt="">
<div class="productImg_right_item_like iconLeft">
<div class="productImg_right_item_like">
<i class="fi fi-sr-heart" @click.stop="likeFile(item,'noLike',index)"></i>
</div>
<div class="productImg_right_item_scale iconLeft">
<i class="fi fi-bs-expand-arrows-alt" @click.stop="setScaleImage(likeList[productimgMenu.value],index)"></i>
<i class="fi fi-bs-expand-arrows-alt" @click.stop="setScaleImage(likeList,index)"></i>
</div>
<div class="productImg_right_item_menu">
<div class="productImg_right_item_menu iconLeft">
<i class="fi fi-rr-circle-ellipsis" @click.stop="setMenuShow(item)"></i>
<ul v-show="item.menuShow">
<li v-for="menuItem,index in productimgMenuList" v-show="index != 0" @click.stop="setMenu(menuItem,item)" :key="menuItem.value">{{ menuItem.label }}</li>
@@ -202,15 +205,15 @@ export default defineComponent({
isProductimg:false,//开始生成
selectProductimgList:[],
generateList:{},
likeList:{},
likeList:[],
})
let productimgMenuList = ref([
{
value:'ProductImage',
label:useI18n().t('ProductImg.ProductImage')
},{
value:'ProductImage1',
label:'123123'
value:'Relight',
label:useI18n().t('ProductImg.Relight')
}
])
let productimgMenu:any = ref(productimgMenuList.value[0])
@@ -242,7 +245,7 @@ export default defineComponent({
rv.forEach((item:any) => {
item.imgUrl = item.url
});
productImgData.likeList[productimgMenu.value.value] = rv
productImgData.likeList = rv
}
).catch(res=>{
});
@@ -263,7 +266,7 @@ export default defineComponent({
let cleardata = ()=>{
productImg.value = false
productImgData.isShowMark = false
productImgData.likeList = {}
productImgData.likeList = []
productImgData.generateList = {}
productimgMenu.value = productimgMenuList.value[0]
}
@@ -278,6 +281,9 @@ export default defineComponent({
file.id = res.data.id
file.isChecked = true
file.type = 'ProductElement'
if(productimgMenu.value.value == 'Relight'){
file.type = "ToProductImage"
}
productImgData.fileList[productimgMenu.value.value].filter((v: any) => v.status === "done");
}else{
bor = false
@@ -322,17 +328,14 @@ export default defineComponent({
Https.axiosPost(url, data).then(
(rv) => {
if(str == 'like'){
if(!productImgData.likeList[productimgMenu.value.value]){
productImgData.likeList[productimgMenu.value.value] = []
}
productImgData.likeList[productimgMenu.value.value].push(item)
productImgData.likeList.push(item)
productImgData.generateList[productimgMenu.value.value].splice(index,1)
}else{
if(!productImgData.generateList[productimgMenu.value.value]){
productImgData.generateList[productimgMenu.value.value] = []
}
productImgData.generateList[productimgMenu.value.value].push(item)
productImgData.likeList[productimgMenu.value.value].splice(index,1)
productImgData.likeList.splice(index,1)
}
}
@@ -341,11 +344,7 @@ export default defineComponent({
}
let setExport = ()=>{
let imgList:any = []
productimgMenuList.value.forEach((item:any)=>{
if(productImgData.likeList[item.value]){
imgList.push(...productImgData.likeList[item.value])
}
})
imgList = productImgData.likeList
let data = {
key:'FinalizeImage',
imgList:imgList,
@@ -386,6 +385,10 @@ export default defineComponent({
if(item.isChecked){
obj.elementId = item.designOutfitId
obj.elementType = 'DesignOutfit'
if(productimgMenu.value.value == 'Relight'){
obj.elementId = item.id
obj.elementType = 'ToProductImage'
}
selectArr.push(JSON.parse(JSON.stringify(obj)))
}
})
@@ -404,7 +407,11 @@ export default defineComponent({
remPrductimgTime = setTimeout(()=>{
productImgData.remProductimg = true
},10000)
Https.axiosPost(Https.httpUrls.toProduct, data).then(
let url = Https.httpUrls.toProduct
if(productimgMenu.value.value == 'Relight'){
url = Https.httpUrls.relight
}
Https.axiosPost(url, data).then(
(rv) => {
let arr:any = []
rv.forEach((item:any)=>{
@@ -424,10 +431,15 @@ export default defineComponent({
let data = dataList
let dataNum = dataList.length
let state = true
let url = Https.httpUrls.toProductImageResult
if(productimgMenu.value.value == 'Relight'){
url = Https.httpUrls.relightResult
}
prductimgTime = setInterval(()=>{
if(!state)return
state = false
Https.axiosPost(Https.httpUrls.toProductImageResult, data).then(
Https.axiosPost(url, data).then(
(rv) => {
state = true
if(productImgData.isProductimg){//防止取消后有正在执行的获取状态
@@ -499,6 +511,7 @@ export default defineComponent({
selectList.value[productimgMenu.value.value] = []
}
if(selectList.value[menuItem.value].indexOf(item) == -1){
item.isChecked = true
selectList.value[menuItem.value].push(item)
}
generalIsMenuShow.menuShow = false
@@ -507,6 +520,9 @@ export default defineComponent({
generalIsMenuShow.menuShow = false
generalIsMenuShow = {}
document.removeEventListener('click',removeMenuShow)
}
let clearPrductimg = ()=>{
}
//超分
let setTask = (data:any)=>{
@@ -538,6 +554,7 @@ export default defineComponent({
setScaleImage,
setMenu,
setMenuShow,
clearPrductimg,
setTask,
};
},
@@ -725,7 +742,7 @@ export default defineComponent({
justify-content: space-around;
.input_box{
flex: 0;
margin-left: auto;
}
.started_btn{
// width: 13rem;
@@ -760,9 +777,16 @@ export default defineComponent({
.productImg_right_item_like,.productImg_right_item_scale,.productImg_right_item_menu{
display: none;
position: absolute;
top: 1rem;
top: 2rem;
right: 2rem;
cursor: pointer;
width: 3rem;
height: 3rem;
background: #fff;
align-items: center;
justify-content: center;
border-radius: .5rem;
border: .1rem solid #ccc;
.fi-sr-heart{
color: red;
}
@@ -771,12 +795,15 @@ export default defineComponent({
ul{
top: 100%;
position: absolute;
width: 10rem;
width: 13rem;
left: 0;
text-align: center;
border-radius: calc(1rem*1.2);
overflow: hidden;
z-index: 3;
li{
background: #cccccc;
padding: .5rem 1rem;
}
li:hover{
// background: rgba(0,0,0,.4);
@@ -790,12 +817,12 @@ export default defineComponent({
right: auto;
}
.productImg_right_item_scale{
top: 4rem;
top: 6rem;
}
}
.productImg_right_item:hover{
.productImg_right_item_like,.productImg_right_item_scale,.productImg_right_item_menu{
display: block;
display: flex;
}
}
.productImg_right_item:last-child{

View File

@@ -20,8 +20,8 @@
</div>
</div>
<div class="scaleImage_content">
<img v-if="isComparison" :src="scaleImageList[scaleImageIndex]?.sourceUrl">
<img :src="scaleImageList[scaleImageIndex]?.imgUrl">
<!-- <img v-if="isComparison" :src="scaleImageList[scaleImageIndex]?.url"> -->
<div class="img_operate_block" v-if="isLike">
<i v-if="!scaleImageList[scaleImageIndex]?.like" class="fi fi-rr-heart operate_icon" @click.stop="LikeFile(scaleImageList[scaleImageIndex],'like')"></i>
<i v-else class="fi fi-sr-heart operate_icon" :adminLike="!!scaleImageList[scaleImageIndex]?.like" @click.stop="LikeFile(scaleImageList[scaleImageIndex],'noLike')"></i>