This commit is contained in:
2023-10-11 17:34:14 +08:00
parent 98dc5cd8f7
commit 268ffecff7
35 changed files with 1947 additions and 878 deletions

View File

@@ -31,8 +31,6 @@ export default defineComponent({
top:this.$refs.imgbox.offsetTop,
scrollTop:this.$refs.scrollTop || 0,
}
console.log(this.imgBox)
},
methods:{
AddDian(color){
@@ -40,7 +38,6 @@ export default defineComponent({
this.intObj = {
color:color
}
console.log(this.intObj)
},
startMove(event){

View File

@@ -61,6 +61,7 @@
<div class="rename_submit_button" @click="confrimRename()">Submit</div>
</div>
</a-modal>
<RobotAssist></RobotAssist>
</div>
</template>
<script lang="ts">
@@ -70,11 +71,13 @@ import HistoryDetail from "@/component/Detail/HistoryDetail.vue";
import { Https } from "@/tool/https";
import { formatTime } from "@/tool/util"
import { Modal,message } from 'ant-design-vue';
import RobotAssist from "@/component/HomePage/RobotAssist.vue";
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
export default defineComponent({
components: {
HeaderComponent,
HistoryDetail,
RobotAssist
},
setup() {
let rangePickerValue:any = ref([])
@@ -224,6 +227,7 @@ export default defineComponent({
width: 100%;
height: 100%;
padding: 0 9rem;
overflow: hidden;
.page_content {
position: relative;

View File

@@ -1,9 +1,9 @@
<template>
<div class="home_page">
<HeaderComponent></HeaderComponent>
<div class="page_content">
<!-- <img class="page_content_bg" src="@/assets/images/homePage/bg.png" /> -->
<div class="page_content_body">
<HeaderComponent></HeaderComponent>
<div class="home_page_body">
<div class="home_page_left">
<div class="home_page_left_content">
@@ -44,6 +44,7 @@
</div>
</div>
<div class="home_page_right">
<div class="right_top">
<div class="right_top_left">
<div class="button_second" @click="designNewCollection()">
@@ -67,7 +68,9 @@
<div class="right_content_body">
<div class="right_content_img_block scroll_style">
<div class="right_content_img_item" v-mousewheel>
<div class="content_img_block" v-for="(
<!-- <draggable
group="people" > -->
<div class="content_img_block" v-for="(
design, index
) in designCollectionList" :key="design?.designItemId" @click="
designDetail(
@@ -87,6 +90,8 @@
)
"></div>
</div>
<!-- </draggable> -->
</div>
</div>
</div>
@@ -102,8 +107,8 @@
<div class="right_content_body">
<div class="right_content_img_block scroll_style">
<div class="right_content_img_item" v-mousewheel>
<div class="content_img_block" v-for="(
<div class="right_content_img_item" v-mousewheel id="right_content_img_block">
<!-- <div class="content_img_block" v-for="(
design, index
) in likeDesignCollectionList" :key="design?.id" @click="
designDetail(
@@ -123,6 +128,28 @@
index
)
"></div>
</div> -->
<div class="content_img_block" draggable
v-for="(design, index) in likeDesignCollectionList" :key="design.id"
@click="designDetail(
design,
index,
likeDesignCollectionList,
'like'
)"
@dragstart="dragstart($event, index)"
@dragover.prevent
@drop="dragDrop($event, index)">
<div class="content_img_flex">
<img class="content_img" v-lazy="design.designOutfitUrl"
:key="design.designOutfitUrl" />
</div>
<div class="icon iconfont icon-jushoucanggift icon_like" @click.stop="
dislikeDesignCollection(
design,
index
)
"></div>
</div>
</div>
</div>
@@ -171,7 +198,9 @@ import { useStore } from "vuex";
import { Https } from "@/tool/https";
import { rgbToHsv, dataURLtoBlob } from "@/tool/util";
import { LoadingOutlined } from "@ant-design/icons-vue";
import draggable from 'vuedraggable'
import JSZip from "jszip";
import { setCookie, getCookie, WriteCookie } from "@/tool/cookie";
const FileSaver = require("file-saver");
export default defineComponent({
@@ -182,6 +211,7 @@ export default defineComponent({
DesignDetail,
ExportNewCoolection,
RobotAssist,
draggable
},
setup() {
const store = useStore();
@@ -208,6 +238,7 @@ export default defineComponent({
width:'',
height:'',
}
let userInfo:any = {}
return {
store,
likeDesignCollectionList,
@@ -217,6 +248,7 @@ export default defineComponent({
designId,
contentImgMax,
contentImg,
userInfo,
};
},
data() {
@@ -237,9 +269,13 @@ export default defineComponent({
startDesignType: "design", //设计类型 design 和 resdesign
disLikeLoading: false, //不喜欢防抖
likeLoading: false, //喜欢防抖
dragIdx:0,
designRandom:'',
};
},
mounted() {
let userInfo:any = getCookie("userInfo")
this.userInfo = JSON.parse(userInfo);
this.store.dispatch('get_clothingType')
// console.log(this.store.state.UserHabit);
@@ -277,12 +313,12 @@ export default defineComponent({
parentWidth = parent.offsetWidth
})
el.addEventListener('mousewheel',(e:MouseEvent)=>{
if(0>(e as WheelEvent).deltaY){
if(0>(e as WheelEvent).deltaY && width>parentWidth){
num+=15
if(num >= 0){
num = 0
}
}else{
}else if(0<(e as WheelEvent).deltaY && width>parentWidth){
num-=15
if(num<=parentWidth - width){
num = parentWidth - width
@@ -296,7 +332,22 @@ export default defineComponent({
}
},
methods: {
addTeam (team:any) {
this.likeDesignCollectionList.push(team)
},
dragstart (e:any, index:any) {
this.dragIdx = index
},
dragDrop (e:any, index:any) {
let _teams = this.likeDesignCollectionList //将hotteams存起来
let _dragitem = _teams[this.dragIdx] //将被拖拽的那条数据存起来
_teams.splice(this.dragIdx, 1) //删除被拖拽的那条数据
_teams.splice(index, 0, _dragitem) //将被拖拽的那条数据放到数组中指定的位置
},
formatter(value: number) {
return `${value}%`;
@@ -379,14 +430,10 @@ export default defineComponent({
return;
}
let data = this.getDesignData("");
console.log(data);
Https.axiosPost(Https.httpUrls.designCollection, data)
.then((rv: any) => {
if (rv) {
console.log(rv);
this.store.commit(
"setDesignCollectionList",
rv.designCollectionItems
@@ -398,17 +445,17 @@ export default defineComponent({
rv.collectionId
);
this.store.commit("setDesignId", rv.designId);
this.showDesignMark = false;
this.designProgress = 0;
this.startDesignType = "design";
}
})
.catch((res) => {
this.showDesignMark = false;
});
this.getDesignProcess();
})
// setTimeout(() => {
this.getDesignProcess(this.designRandom);
// }, 1000);
},
//重新设计collection
resDesignCollection() {
let { colorBoards } =
@@ -428,7 +475,6 @@ export default defineComponent({
"setDesignCollectionList",
rv.designCollectionItems
);
this.showDesignMark = false;
(this.designProgress = 0),
(this.startDesignType = "resDesign");
}
@@ -436,7 +482,10 @@ export default defineComponent({
.catch((res) => {
this.showDesignMark = false;
});
this.getDesignProcess();
// setTimeout(() => {
this.getDesignProcess(this.designRandom);
// }, 1000);
},
getDesignData(designCollectionId: any) {
@@ -450,9 +499,8 @@ export default defineComponent({
marketingSketchFiles,
moodTemplateId,
} = this.store.state.UploadFilesModule.allBoardData;
// console.log(this.store.state.UploadFilesModule.allBoardData);
this.randomNum()
let workspace = this.store.state.Workspace.workspace
console.log(workspace);
let data: any = {
colorBoards: this.getColorBoard(colorBoards),
// marketingSketchs: this.getBoardId(marketingSketchFiles),
@@ -462,10 +510,13 @@ export default defineComponent({
switchCategory: !workspace.overallSingle ?"": workspace.position,
singleOverall: !workspace.overallSingle ? "overall" : "single",
systemScale: workspace.systemDesignerPercentage?workspace.systemDesignerPercentage*.01:.3,
templateId: 96,
// templateId: workspace.mannequinId?workspace.mannequinId:'',
// templateId: 3377,
templateId: workspace.mannequinId?workspace.mannequinId:'',
modelType:workspace.mannequinType,
modelSex:workspace.sex,
moodTemplateId: disposeMoodboard[0] ? String(disposeMoodboard[0].id) : null,
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
processId:this.designRandom
};
if (designCollectionId) {
data.collectionId = designCollectionId;
@@ -476,22 +527,40 @@ export default defineComponent({
},
//deisgn的进度
getDesignProcess() {
Https.axiosPost(Https.httpUrls.countDesignProcess, {}).then(
(rv: any) => {
if (rv < 1 && this.showDesignMark) {
this.designProgress = rv * 100;
setTimeout(() => {
this.getDesignProcess();
}, 1000);
}
getDesignProcess(num:any) {
Https.axiosGet(Https.httpUrls.designProcess,{params:{processId:num}}).then((rv: any) => {
if (rv) {
}
);
},
if (this.showDesignMark) {
this.designProgress = rv * 100;
if(rv == 100){
setTimeout(() => {
this.showDesignMark = false
this.designProgress = 0
}, 500);
}
setTimeout(() => {
this.getDesignProcess(num);
}, 500);
}
})
// Https.axiosPost(Https.httpUrls.designProcess, {}).then(
// (rv: any) => {
// if (rv < 1 && this.showDesignMark) {
// this.designProgress = rv * 100;
// setTimeout(() => {
// this.getDesignProcess();
// }, 1000);
// }
// }
// );
},
randomNum(){
this.designRandom = String(Math.floor(Math.random() * 9000000000000000) + 1000000000000000)
},
getBoardId(boardData: any) {
console.log(boardData);
let dataList = boardData.map((v: any) => {
let data: any = {
id: v.resData.id,
@@ -546,6 +615,7 @@ export default defineComponent({
designItemId: design.designItemId,
userGroupId: this.userGroupId,
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
designPythonOutfitId:design.designOutfitId?design.designOutfitId:design.designPythonOutfitId
};
if (this.likeLoading) {
return;
@@ -576,6 +646,7 @@ export default defineComponent({
dislikeDesignCollection(design: any, index: any) {
let data = {
designId: design.designId || this.designId,
designPythonOutfitId:design.designOutfitId,
groupDetailId: design.groupDetailId,
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
};
@@ -621,25 +692,31 @@ export default defineComponent({
dealHistoryChooseData(data: any, type: any) {
let collectionData = {
moodboardFiles: this.dealViewChooseData(
data.collection.moodBoards
data.collection.moodBoards,"Moodboard"
),
printboardFiles: this.dealViewChooseData(
data.collection.printBoards
data.collection.printBoards,"Printboard"
),
generatePrintFiles: [],
colorBoards: this.dealViewChooseColor(
data.collection.colorBoards
),
skecthboardFiles: this.dealViewChooseData(
data.collection.sketchBoards
sketchboardFiles: this.dealViewChooseData(
data.collection.sketchBoards,"Sketchboard"
),
marketingSketchFiles: this.dealViewChooseData(
data.collection.marketingSketchs
data.collection.marketingSketchs,""
),
moodTemplateId: data.collection.moodTemplateId,
disposeMoodboard: data.collection.moodTemplateId?[{
id:data.collection.moodTemplateId,
imgUrl:data.collection.moodTemplateUrl,
resData:{
name:data.collection.moodTemplateName,
}
}]:[]
};
this.store.commit("setAllBoardDataChoose", collectionData);
this.designCollectionId = this.store.commit(
this.store.commit(
"setDesignCollectionId",
data.collection.collectionId
);
@@ -650,7 +727,7 @@ export default defineComponent({
let data = {
...v,
groupDetailId: v.id,
designItemUrl: v.url,
designItemUrl: v.designOutfitUrl,
};
return data;
}
@@ -663,16 +740,20 @@ export default defineComponent({
},
//统一处理选择组的渲染数据
dealViewChooseData(data: any) {
dealViewChooseData(data: any,str:string) {
if (!data) {
return [];
}
let filesList = data.map((v: any) => {
let newData: any = {
imgUrl: v.url,
imgUrl: v.url?v.url:v.designOutfitUrl,
id: v.id,
status: "done",
resData: v,
type_:{
type1:'material',
type2:v.level1Type
}
};
if (v.level1Type === "Sketchboard") {
newData.pin = v.isPin;
@@ -707,13 +788,17 @@ export default defineComponent({
},
//导出合成图
exportCanvas() {
async exportCanvas() {
let collectionReview: any = document.querySelector(
"#exportNewCoolection"
);
let rightContentImgBlock: any = document.querySelector(
"#right_content_img_block"
);
let a = document.createElement("a");
this.isShowMark = true;
html2canvas(collectionReview, { useCORS: true, scale: 3 }).then(
let img:any = []
await html2canvas(collectionReview, { useCORS: true, scale: 3 }).then(
(canvas) => {
let blob: any = dataURLtoBlob(
canvas.toDataURL("image/png")
@@ -721,21 +806,18 @@ export default defineComponent({
let allBoardData: any =
this.store.state.UploadFilesModule.allBoardData;
let index = 0;
let img = [
{
img.push({
imgUrl: URL.createObjectURL(blob),
name: "collection.png",
},
];
})
for (let key in allBoardData) {
if (key !== "colorBoards" && key !== "moodTemplateId") {
for (let item of allBoardData[key]) {
let nameTail = item.imgUrl.split(".").pop();
// console.log(nameTail, 666);
let nameTail = item?.imgUrl?.split(".").pop().split("?").shift();
let data = {
imgUrl: item.imgUrl,
name:
item.resData.name +
item?.resData?.name +
index +
"." +
nameTail,
@@ -745,12 +827,54 @@ export default defineComponent({
}
}
}
this.downImg(img);
// a.setAttribute('href', URL.createObjectURL(blob));
// a.setAttribute('download', `collection.png`);
// a.click();
}
);
await html2canvas(rightContentImgBlock, { useCORS: true, scale: 3 }).then(
(canvas) => {
let blob: any = dataURLtoBlob(
canvas.toDataURL("image/png")
);
let allBoardData: any =
this.store.state.UploadFilesModule.allBoardData;
let index = 0;
img.push({
imgUrl: URL.createObjectURL(blob),
name: "achievement.png",
},)
this.likeDesignCollectionList.forEach((item:any) => {
let data = {
imgUrl:item.designItemUrl,
name:item.pictureName
}
img.push(data)
});
// for (let key in allBoardData) {
// if (key !== "colorBoards" && key !== "moodTemplateId") {
// for (let item of allBoardData[key]) {
// // console.log(item, 666);
// let nameTail = item.imgUrl.split(".").pop().split("?").shift();
// let data = {
// imgUrl: item.imgUrl,
// name:
// item?.resData?.name +
// index +
// "." +
// nameTail,
// };
// img.push(data);
// index++;
// }
// }
// }
}
);
this.downImg(img);
},
//打开图片详情
@@ -760,8 +884,8 @@ export default defineComponent({
collectionList: any,
type: string
) {
let designDetail: any = this.$refs.designDetail;
design.designOutfitId = design.designPythonOutfitId?design.designPythonOutfitId:design.designOutfitId
let data = {
design: design,
index: index,
@@ -821,7 +945,6 @@ export default defineComponent({
});
promises.push(promise);
}
Promise.all(promises)
.then(() => {
zip.generateAsync({ type: "blob" }).then((content: any) => {
@@ -843,6 +966,7 @@ export default defineComponent({
width: 100%;
height: 100%;
padding: 0 9rem;
overflow: hidden;
.page_content {
position: relative;
.page_content_body {
@@ -951,6 +1075,9 @@ export default defineComponent({
flex: 1;
height: 100%;
overflow: hidden;
display: flex;
flex-direction: column;
justify-content: space-between;
.right_top {
padding: 2rem 3.2rem 2rem 1.2rem;
display: flex;
@@ -997,7 +1124,6 @@ export default defineComponent({
}
}
}
.right_content_body {
padding: 0 1.8rem 0 1.2rem;
background: rgba(255, 255, 255, 0.2);
@@ -1015,13 +1141,15 @@ export default defineComponent({
>div{
display: flex;
padding: 0 2.8rem 0 0.9rem;
height: 100%;
align-items: center;
}
.content_img_block {
width: 20.1rem;
height: 37rem;
// height: 29.5rem;
margin-right: 3rem;
margin-bottom: 1rem;
// margin-bottom: 1rem;
display: inline-block;
position: relative;
vertical-align: top;

View File

@@ -52,6 +52,19 @@
<div class="librart_headr_right">
<div class="select_block" v-show="selectCode == 'Sketchboard' || selectCode == 'MarketingSketch'">
<a-select
ref="select"
v-model:value="sex"
:options="sexList"
@change="sexChange"
>
<template #suffixIcon
><span
class="icon iconfont icon-xiala"
style="color: #343579"
></span
></template>
</a-select>
<a-select
ref="select"
v-model:value="designType"
@@ -149,6 +162,8 @@
<a-spin size="large" />
</div>
<!-- 蒙层 end-->
<RobotAssist></RobotAssist>
</div>
</template>
<script lang="ts">
@@ -156,22 +171,25 @@ import { defineComponent ,ref,createVNode} from 'vue'
import HeaderComponent from "@/component/HomePage/Header.vue";
import ModelPlacement from '@/component/LibraryPage/ModelPlacement.vue';
import ModelPlacementMobile from '@/component/LibraryPage/ModelPlacementMobile.vue';
import RobotAssist from "@/component/HomePage/RobotAssist.vue";
import { Modal,message,Upload} from 'ant-design-vue';
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import {getUploadUrl,isMoible} from '@/tool/util'
import { useStore } from "vuex";
import { Https } from "@/tool/https";
export default defineComponent({
components: {
HeaderComponent,
ModelPlacement,
ModelPlacementMobile,
RobotAssist
},
setup() {
let menuList = ref([
{title:'Moodboard',code:'Moodboard',icon:'icon-moban',showChildren:false,children:[]},
{title:'Printboard',code:'Printboard',icon:'icon-dayin-dayinji',showChildren:false,children:[]},
{title:'Sketchboard',code:'SketchboardFirst',icon:'icon-sumiao',showChildren:false,children:[{title:'Apparel',code:'Sketchboard'}]},
{title:'Market Sketch',code:'MarketingSketch',icon:'icon-fuwushichang',showChildren:false,children:[]},
// {title:'Market Sketch',code:'MarketingSketch',icon:'icon-fuwushichang',showChildren:false,children:[]},
{title:'Mannequin',code:'Models',icon:'icon-mote',showChildren:false,children:[]},
])
@@ -179,27 +197,12 @@ export default defineComponent({
let selectCode:any = ref('Moodboard')
let searchPictureName = ref('')
let designType:any = ref('Outwear')
let disignTypeList = [
{
value: "Outwear",
label: "Outwear",
},
{
value: "Blouse",
label: "Blouse",
},
{
value: "Dress",
label: "Dress",
},
{
value: "Trousers",
label: "Trousers",
},
{
value: "Skirt",
label: "Skirt",
},
let sex:any = ref('Outwear')
let sexList:any = [
]
let disignTypeList:any = [
]
let imgList = ref([])
let currentPage:any = ref(1)
@@ -212,11 +215,14 @@ export default defineComponent({
let currentUploadFileNum:any = ref(0) //当次上传文件数量
let isShowMark:any = ref(false) //蒙层
let selectSingleImg:any = ref({}) //保存单个图片数据
let store = useStore();
return {
menuList,
selectImgList,
selectCode,
searchPictureName,
sexList,
sex,
disignTypeList,
designType,
imgList,
@@ -229,14 +235,57 @@ export default defineComponent({
uploadUrl,
currentUploadFileNum,
isShowMark,
selectSingleImg
selectSingleImg,
store
}
},
mounted(){
this.uploadUrl = getUploadUrl()
this.getLibraryList()
this.getSex()
this.getPosition()
},
methods:{
getSex(){
Https.axiosGet(Https.httpUrls.workspaceenumValues,{params:{enumName:'Sex'}}).then((rv: any) => {
if (rv) {
let arr:any = []
rv.forEach((item:any) => {
let obj = {
value:item.name,
label:item.name,
}
arr.push(obj)
});
this.sex = arr[0].value
this.sexList = arr
}
})
},
async getPosition(){
let params
if(this.sex == 'Female'){
params = 'FemalePosition'
}else{
params = 'MalePosition'
}
await Https.axiosGet(Https.httpUrls.workspaceenumValues,{params:{enumName:params}}).then((rv: any) => {
if (rv) {
let arr:any = []
rv.forEach((item:any) => {
let obj = {
value:item.name,
label:item.name,
}
arr.push(obj)
});
this.designType = arr[0].value
this.disignTypeList = arr
// this.workspaceItem.position = this.singleTypeList[0].label
}
})
},
selectMenuItem(menu:any,index:any){
if(menu.children?.length){ //证明是有子菜单
menu.showChildren = !menu.showChildren
@@ -246,6 +295,7 @@ export default defineComponent({
this.total = 0,
this.searchPictureName = ''
this.imgList = [],
this.sex = 'Female',
this.designType = 'Outwear',
this.selectImgList = []
this.selectSingleImg = {}
@@ -253,7 +303,9 @@ export default defineComponent({
}
},
sexChange(){
this.getPosition()
},
handleChange(){
this.getLibraryList()
},
@@ -418,6 +470,8 @@ export default defineComponent({
file:event.file,
level1Type:this.selectCode,
level2Type:designType,
sex:this.sex,
modelType:'',
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
}
this.isShowMark = true
@@ -443,6 +497,7 @@ export default defineComponent({
level1Type:this.selectCode,
level2Type:designType,
page:this.currentPage,
modelSex:this.sex?this.sex:'',
pictureName:this.searchPictureName,
size:this.pageSize,
}
@@ -479,6 +534,7 @@ export default defineComponent({
<style lang="less">
.library_page {
width: 100%;
overflow: hidden;
height: 100%;
padding: 0 9rem;
.page_content {
@@ -626,11 +682,13 @@ export default defineComponent({
.librart_headr_right{
display: flex;
align-items: center;
.select_block{
background: #FFFFFF;
// background: #FFFFFF;
color: #1A1A1A !important;
.ant-select{
}
.icon-xiala{
color: #1A1A1A !important;
}

View File

@@ -140,7 +140,10 @@
<!-- 邮箱登录 end -->
<div class="login_content_right">
<img src="https://www.aida.com.hk/download/aida_V2_images/image/login-right-image.jpg" alt="">
<img
src="@/assets/images/loginPage/aida_logo_centent.jpg"
/>
<!-- <img src="https://www.aida.com.hk/download/aida_V2_images/image/login-right-image.jpg" alt=""> -->
</div>
</div>