diff --git a/src/assets/iconfont2/iconfont.css b/src/assets/iconfont2/iconfont.css new file mode 100644 index 00000000..fec3bb25 --- /dev/null +++ b/src/assets/iconfont2/iconfont.css @@ -0,0 +1,17 @@ +@font-face { + font-family: "iconfont"; /* Project id */ + src: url('iconfont.ttf?t=1697613542954') format('truetype'); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 1.6rem; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-a-waitao_changkuanwaitao11x:before { + content: "\e66c"; +} + diff --git a/src/assets/iconfont2/iconfont.ttf b/src/assets/iconfont2/iconfont.ttf new file mode 100644 index 00000000..5f9def81 Binary files /dev/null and b/src/assets/iconfont2/iconfont.ttf differ diff --git a/src/assets/images/homePage/111111.png b/src/assets/images/homePage/111111.png new file mode 100644 index 00000000..ac6e516e Binary files /dev/null and b/src/assets/images/homePage/111111.png differ diff --git a/src/assets/style/style.css b/src/assets/style/style.css index ea7b38eb..533dad59 100644 --- a/src/assets/style/style.css +++ b/src/assets/style/style.css @@ -5,6 +5,7 @@ body, padding: 0; height: 100%; font-family: 'Roboto', sans-serif; + overflow: hidden; } input { outline: none; @@ -97,7 +98,7 @@ li { padding: 0.5rem 2rem; display: inline-block; border-radius: 2rem; - font-size: 12px; + font-size: 1.2rem; color: #fff; background-color: #39215b; cursor: pointer; @@ -209,12 +210,14 @@ li { } .collection_modal .ant-modal-body, .design_detail_modal_component .ant-modal-body, -.designOpenrtion_modal .ant-modal-body { +.designOpenrtion_modal .ant-modal-body, +.library_page .ant-modal-body { overflow-y: hidden; } .collection_modal .design_title_text, .design_detail_modal_component .design_title_text, -.designOpenrtion_modal .design_title_text { +.designOpenrtion_modal .design_title_text, +.library_page .design_title_text { font-size: 1.8rem; font-weight: 900; color: rgba(0, 0, 0, 0.65); @@ -223,41 +226,47 @@ li { } .collection_modal .design_title_text .design_title_text_intro, .design_detail_modal_component .design_title_text .design_title_text_intro, -.designOpenrtion_modal .design_title_text .design_title_text_intro { +.designOpenrtion_modal .design_title_text .design_title_text_intro, +.library_page .design_title_text .design_title_text_intro { font-size: 1.2rem; font-weight: 400; color: rgba(0, 0, 0, 0.45); } .collection_modal .ant-upload.ant-upload-select-picture-card, .design_detail_modal_component .ant-upload.ant-upload-select-picture-card, -.designOpenrtion_modal .ant-upload.ant-upload-select-picture-card { +.designOpenrtion_modal .ant-upload.ant-upload-select-picture-card, +.library_page .ant-upload.ant-upload-select-picture-card { background: #FFFFFF; width: 6rem; height: 6rem; border: 0.3rem solid #ededed; - border-radius: 10px; + border-radius: 1rem; margin: 0; } .collection_modal .ant-upload.ant-upload-select-picture-card .upload_tip_block .icon-jiahao, .design_detail_modal_component .ant-upload.ant-upload-select-picture-card .upload_tip_block .icon-jiahao, -.designOpenrtion_modal .ant-upload.ant-upload-select-picture-card .upload_tip_block .icon-jiahao { +.designOpenrtion_modal .ant-upload.ant-upload-select-picture-card .upload_tip_block .icon-jiahao, +.library_page .ant-upload.ant-upload-select-picture-card .upload_tip_block .icon-jiahao { font-size: 3.2rem; color: #B7B7B7; } .collection_modal .ant-upload.ant-upload-select-picture-card .ant-upload-text, .design_detail_modal_component .ant-upload.ant-upload-select-picture-card .ant-upload-text, -.designOpenrtion_modal .ant-upload.ant-upload-select-picture-card .ant-upload-text { +.designOpenrtion_modal .ant-upload.ant-upload-select-picture-card .ant-upload-text, +.library_page .ant-upload.ant-upload-select-picture-card .ant-upload-text { font-size: 1.6rem; color: #B7B7B7; } .collection_modal .ant-upload-list-picture-card-container, .design_detail_modal_component .ant-upload-list-picture-card-container, -.designOpenrtion_modal .ant-upload-list-picture-card-container { +.designOpenrtion_modal .ant-upload-list-picture-card-container, +.library_page .ant-upload-list-picture-card-container { display: none !important; } .collection_modal .ant-upload-picture-card-wrapper, .design_detail_modal_component .ant-upload-picture-card-wrapper, -.designOpenrtion_modal .ant-upload-picture-card-wrapper { +.designOpenrtion_modal .ant-upload-picture-card-wrapper, +.library_page .ant-upload-picture-card-wrapper { width: auto; vertical-align: top; } @@ -305,11 +314,18 @@ li { transform: translateX(-50%); padding: 0.5rem 2rem; border-radius: 2rem; - font-size: 12px; + font-size: 1.2rem; display: inline-block; } +.ant-upload { + font-size: 1.4rem; +} +i { + font-size: 1.4rem; +} .collection_modal_body .input_box, -.design_detail_modal_component .input_box { +.design_detail_modal_component .input_box, +.library_page .input_box { display: flex; align-items: center; position: sticky; @@ -320,8 +336,8 @@ li { z-index: 2; } .collection_modal_body .input_box input, -.design_detail_modal_component .input_box input { - font-size: 12px; +.design_detail_modal_component .input_box input, +.library_page .input_box input { border-radius: 0.5rem; width: 70%; border: 1px solid rgba(0, 0, 0, 0.15); @@ -331,28 +347,56 @@ li { font-weight: 400; } .collection_modal_body .input_box inputinput:-moz-placeholder, -.design_detail_modal_component .input_box inputinput:-moz-placeholder { +.design_detail_modal_component .input_box inputinput:-moz-placeholder, +.library_page .input_box inputinput:-moz-placeholder { color: rgba(0, 0, 0, 0.15); } .collection_modal_body .input_box inputinput:-ms-input-placeholder, -.design_detail_modal_component .input_box inputinput:-ms-input-placeholder { +.design_detail_modal_component .input_box inputinput:-ms-input-placeholder, +.library_page .input_box inputinput:-ms-input-placeholder { color: rgba(0, 0, 0, 0.15); } .collection_modal_body .input_box inputinput::-webkit-input-placeholder, -.design_detail_modal_component .input_box inputinput::-webkit-input-placeholder { +.design_detail_modal_component .input_box inputinput::-webkit-input-placeholder, +.library_page .input_box inputinput::-webkit-input-placeholder { color: rgba(0, 0, 0, 0.15); } +.collection_modal_body .input_box span, +.design_detail_modal_component .input_box span, +.library_page .input_box span { + position: absolute; + bottom: 0rem; + font-size: 1.2rem; + color: red; + opacity: 0; + transform: scale(0.7); + transform-origin: left bottom; +} +.collection_modal_body .input_box.active input, +.design_detail_modal_component .input_box.active input, +.library_page .input_box.active input { + border: 1px solid #ff0001; + box-shadow: 0px 0px 3px 1px rgba(255, 0, 0, 0.2); +} +.collection_modal_body .input_box.active span, +.design_detail_modal_component .input_box.active span, +.library_page .input_box.active span { + opacity: 1; +} .collection_modal_body .input_box .generage_btn, -.design_detail_modal_component .input_box .generage_btn { +.design_detail_modal_component .input_box .generage_btn, +.library_page .input_box .generage_btn { margin: 0 auto; } .collection_modal_body .upload_item, -.design_detail_modal_component .upload_item { +.design_detail_modal_component .upload_item, +.library_page .upload_item { display: flex; flex-wrap: wrap; } .collection_modal_body .upload_item .upload_file_item, -.design_detail_modal_component .upload_item .upload_file_item { +.design_detail_modal_component .upload_item .upload_file_item, +.library_page .upload_item .upload_file_item { margin: 0 2rem 2rem 0; display: inline-block; width: 10rem; @@ -360,31 +404,53 @@ li { border: 1px solid #f5f5f5; vertical-align: top; position: relative; + cursor: pointer; +} +.collection_modal_body .upload_item .upload_file_item.active, +.design_detail_modal_component .upload_item .upload_file_item.active, +.library_page .upload_item .upload_file_item.active { + opacity: 0.5; + border-radius: 1rem; + transform: scale(0.9); +} +.collection_modal_body .upload_item .upload_file_item.active .delete_file_block, +.design_detail_modal_component .upload_item .upload_file_item.active .delete_file_block, +.library_page .upload_item .upload_file_item.active .delete_file_block { + pointer-events: none; +} +.collection_modal_body .upload_item .upload_file_item.active .operate_file_block, +.design_detail_modal_component .upload_item .upload_file_item.active .operate_file_block, +.library_page .upload_item .upload_file_item.active .operate_file_block { + pointer-events: none; } .collection_modal_body .upload_item .upload_file_item.upload_component, -.design_detail_modal_component .upload_item .upload_file_item.upload_component { +.design_detail_modal_component .upload_item .upload_file_item.upload_component, +.library_page .upload_item .upload_file_item.upload_component { border: none; display: flex; align-items: center; justify-content: center; } .collection_modal_body .upload_item .upload_file_item :deep(.ant-upload-picture-card-wrapper), -.design_detail_modal_component .upload_item .upload_file_item :deep(.ant-upload-picture-card-wrapper) { +.design_detail_modal_component .upload_item .upload_file_item :deep(.ant-upload-picture-card-wrapper), +.library_page .upload_item .upload_file_item :deep(.ant-upload-picture-card-wrapper) { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } .collection_modal_body .upload_item .upload_file_item :deep(.ant-upload-select-picture-card), -.design_detail_modal_component .upload_item .upload_file_item :deep(.ant-upload-select-picture-card) { +.design_detail_modal_component .upload_item .upload_file_item :deep(.ant-upload-select-picture-card), +.library_page .upload_item .upload_file_item :deep(.ant-upload-select-picture-card) { width: 6rem; height: 6rem; border: 0.3rem solid #ededed; - border-radius: 10px; + border-radius: 1rem; margin: 0; } .collection_modal_body .upload_item .upload_file_item .upload_file_item_content, -.design_detail_modal_component .upload_item .upload_file_item .upload_file_item_content { +.design_detail_modal_component .upload_item .upload_file_item .upload_file_item_content, +.library_page .upload_item .upload_file_item .upload_file_item_content { display: flex; align-items: center; justify-content: center; @@ -393,17 +459,22 @@ li { position: relative; } .collection_modal_body .upload_item .upload_file_item .upload_file_item_content:hover .delete_file_block, -.design_detail_modal_component .upload_item .upload_file_item .upload_file_item_content:hover .delete_file_block { +.design_detail_modal_component .upload_item .upload_file_item .upload_file_item_content:hover .delete_file_block, +.library_page .upload_item .upload_file_item .upload_file_item_content:hover .delete_file_block { display: block; } .collection_modal_body .upload_item .upload_file_item .upload_file_item_content .upload_img, -.design_detail_modal_component .upload_item .upload_file_item .upload_file_item_content .upload_img { +.design_detail_modal_component .upload_item .upload_file_item .upload_file_item_content .upload_img, +.library_page .upload_item .upload_file_item .upload_file_item_content .upload_img { display: block; height: 100%; - width: 100%; + width: auto; + max-width: 100%; + object-fit: cover; } .collection_modal_body .upload_item .upload_file_item .upload_file_item_content .delete_file_block, -.design_detail_modal_component .upload_item .upload_file_item .upload_file_item_content .delete_file_block { +.design_detail_modal_component .upload_item .upload_file_item .upload_file_item_content .delete_file_block, +.library_page .upload_item .upload_file_item .upload_file_item_content .delete_file_block { display: none; width: 100%; cursor: pointer; @@ -417,12 +488,33 @@ li { left: 0; bottom: 0; } +.collection_modal_body .upload_item .upload_file_item .upload_file_item_content .delete_file_block.rightTop, +.design_detail_modal_component .upload_item .upload_file_item .upload_file_item_content .delete_file_block.rightTop, +.library_page .upload_item .upload_file_item .upload_file_item_content .delete_file_block.rightTop { + width: 3.2rem; + height: 3.2rem; + background: rgba(0, 0, 0, 0.6); + border-radius: 0.4rem; + position: absolute; + top: 0.9rem; + right: 0.9rem; + text-align: center; + line-height: 3.2rem; + left: auto; +} +.collection_modal_body .upload_item .upload_file_item .upload_file_item_content .delete_file_block.rightTop .icon-shanchu, +.design_detail_modal_component .upload_item .upload_file_item .upload_file_item_content .delete_file_block.rightTop .icon-shanchu, +.library_page .upload_item .upload_file_item .upload_file_item_content .delete_file_block.rightTop .icon-shanchu { + font-size: 1.6rem; + color: #fff; +} .collection_modal_body .upload_item .upload_file_item .upload_img_icon, -.design_detail_modal_component .upload_item .upload_file_item .upload_img_icon { +.design_detail_modal_component .upload_item .upload_file_item .upload_img_icon, +.library_page .upload_item .upload_file_item .upload_img_icon { width: 4.6rem; } .cut_pricture_modal .ant-modal-content { - border-radius: 10px; + border-radius: 1rem; } .cut_pricture_modal .ant-modal-body { height: 65rem; diff --git a/src/assets/style/style.less b/src/assets/style/style.less index faf36735..38e9dc60 100644 --- a/src/assets/style/style.less +++ b/src/assets/style/style.less @@ -4,6 +4,7 @@ html,body,#app{ padding: 0; height: 100%; font-family: 'Roboto', sans-serif; + overflow: hidden; // --antd-wave-shadow-color: #341e57; } input{ @@ -107,7 +108,7 @@ ul,li{ padding: .5rem 2rem; display: inline-block; border-radius: 2rem; - font-size: 12px; + font-size: 1.2rem; color: #fff; background-color: #39215b; cursor: pointer; @@ -254,7 +255,7 @@ ul,li{ margin-top:.5rem; } //collection 弹窗 -.collection_modal,.design_detail_modal_component,.designOpenrtion_modal{ +.collection_modal,.design_detail_modal_component,.designOpenrtion_modal,.library_page{ .ant-modal-body{ overflow-y: hidden; @@ -276,7 +277,7 @@ ul,li{ width: 6rem; height: 6rem; border: 0.3rem solid #ededed; - border-radius: 10px; + border-radius: 1rem; margin: 0; .upload_tip_block{ .icon-jiahao{ @@ -340,13 +341,19 @@ ul,li{ transform: translateX(-50%); padding: .5rem 2rem; border-radius: 2rem; - font-size: 12px; + font-size: 1.2rem; display: inline-block; } } +.ant-upload{ + font-size: 1.4rem; +} +i{ + font-size: 1.4rem; +} //设计input和上传按钮样式 -.collection_modal_body,.design_detail_modal_component{ +.collection_modal_body,.design_detail_modal_component,.library_page{ .input_box{ display: flex; align-items: center; @@ -357,7 +364,7 @@ ul,li{ padding-bottom: 2rem; z-index: 2; input{ - font-size: 12px; + font-size: 1.2rem; border-radius: .5rem; width: 70%; border: 1px solid rgba(0,0,0,.15); @@ -377,6 +384,25 @@ ul,li{ color: rgba(0,0,0,.15); } } + span{ + position: absolute; + bottom: 0rem; + font-size: 1.2rem; + color: red; + opacity: 0; + transform: scale(.7); + transform-origin: left bottom; + } + &.active{ + input{ + // color: rgb(255, 0, .7); + border: 1px solid rgb(255, 0, .7); + box-shadow: 0px 0px 3px 1px rgba(255, 0, 0, 0.2); + } + span{ + opacity: 1; + } + } .generage_btn{ margin: 0 auto; } @@ -396,6 +422,22 @@ ul,li{ border: 1px solid #f5f5f5; vertical-align: top; position: relative; + cursor: pointer; + + &.active { + opacity: 0.5; + // border: 2px solid; + border-radius: 1rem; + transform: scale(0.9); + .delete_file_block{ + pointer-events:none; + } + .operate_file_block{ + pointer-events:none; + } + img { + } + } &.upload_component { border: none; display: flex; @@ -412,7 +454,7 @@ ul,li{ width: 6rem; height: 6rem; border: 0.3rem solid #ededed; - border-radius: 10px; + border-radius: 1rem; margin: 0; } .upload_file_item_content { @@ -430,7 +472,9 @@ ul,li{ .upload_img { display: block; height: 100%; - width: 100%; + width: auto; + max-width: 100%; + object-fit: cover; } .delete_file_block { @@ -446,6 +490,22 @@ ul,li{ position: absolute; left: 0; bottom: 0; + &.rightTop { + width: 3.2rem; + height: 3.2rem; + background: rgba(0, 0, 0, 0.6); + border-radius: 0.4rem; + position: absolute; + top: 0.9rem; + right: 0.9rem; + text-align: center; + line-height: 3.2rem; + left: auto; + .icon-shanchu { + font-size: 1.6rem; + color: #fff; + } + } } } @@ -459,7 +519,7 @@ ul,li{ //剪裁弹窗 .cut_pricture_modal{ .ant-modal-content{ - border-radius: 10px; + border-radius: 1rem; } .ant-modal-body{ height: 65rem; diff --git a/src/component/Detail/DesignDetail.vue b/src/component/Detail/DesignDetail.vue index f206b52e..eb41c359 100644 --- a/src/component/Detail/DesignDetail.vue +++ b/src/component/Detail/DesignDetail.vue @@ -19,10 +19,7 @@
-
@@ -45,6 +42,8 @@ + +
@@ -82,7 +81,7 @@
-
Current Print
+
Current Color
@@ -103,7 +102,8 @@
- + +
@@ -127,6 +127,7 @@ import { defineComponent,computed,ref,provide } from 'vue' import ElementReplace from '@/component/Detail/ElementReplace.vue' import DesignDetailAlter from '@/component/Detail/DesignDetailAlter.vue' +import magnifyingGlass from '@/component/Detail/magnifyingGlass.vue' import AccessoryReplace from '@/component/Detail/AccessoryReplaceModal.vue' import setDesignItem from '@/component/Detail/setDesignItem.vue' import Draggable from 'vuedraggable' @@ -142,6 +143,7 @@ export default defineComponent({ Draggable, DesignDetailAlter, setDesignItem, + magnifyingGlass, }, setup() { const store = useStore(); @@ -171,6 +173,7 @@ export default defineComponent({ let designOutfitId = ref() let userInfo:any = {} let ifSubmit = ref(false) + let designItemDetailUrl = ref({}) return{ designItemDetail, store, @@ -183,7 +186,8 @@ export default defineComponent({ designItemId, designOutfitId, userInfo, - ifSubmit + ifSubmit, + designItemDetailUrl } }, data(){ @@ -198,18 +202,19 @@ export default defineComponent({ }, watch:{ designItemDetail:{ - handler: function(newVal,oldVal) { + handler: async function(newVal,oldVal) { let designItemDetail = JSON.parse(JSON.stringify(this.store.state.DesignDetailModule.designItemDetail)) - console.log(designItemDetail); - this.ifSubmit = designItemDetail.ifSubmit?designItemDetail.ifSubmit:false - this.current = JSON.parse(JSON.stringify(designItemDetail?.clothes?.[this.currentIndex])) + this.current = JSON?.parse(JSON?.stringify(designItemDetail?.clothes?.[this?.currentIndex])) if(designItemDetail.others[0].layersObject.length != 0){ this.body = false }else{ this.body = true } - this.setImgSize() + await this.setImgSize() + this.designItemDetailUrl = designItemDetail.currentFullBodyView?designItemDetail.currentFullBodyView:designItemDetail.designItemUrl + console.log(this.designItemDetailUrl); + } }, currentIndex:{ @@ -266,9 +271,11 @@ export default defineComponent({ this.designOrder = false let DesignDetailAlter:any = this.$refs.DesignDetailAlter DesignDetailAlter.terminate() - + this.designItemDetail = {} + this.frontBack = {} }else{ - this.designShowPrview = 1 + this.designShowPrview = 1; + this.designItemDetailUrl = {} } }, @@ -619,7 +626,7 @@ export default defineComponent({ .ant-modal-content{ - border-radius: 10px; + border-radius: 1rem; // overflow: hidden; .ant-modal-header{ background-color: #fff; @@ -699,7 +706,7 @@ export default defineComponent({ .detail_modal_body{ position: relative; // max-width: 245px; - // width: 100%; + width: 100%; height: 100%; .detail_modal_body_nav{ display: flex; @@ -745,7 +752,9 @@ export default defineComponent({ cursor: pointer; position: absolute; img{ - width: 100%; + // width: 100%; + max-height: 100%; + width: auto; } &.active{ top: 50%; @@ -788,7 +797,7 @@ export default defineComponent({ } &.fi-rr-edit{ left: 0; - top: 20px; + top: 3rem; } &.fi-rr-copy{ top: 0; @@ -804,11 +813,14 @@ export default defineComponent({ position: relative; .detail_modal_right_top{ width: 100%; - height: calc(100% - 3.9rem); + height: 100%; background: #fff; overflow-y: auto; - + display: flex; + flex-direction: column; .clothes_detail_item{ + // margin-bottom: 5rem; + flex: 1; .centent_div{ display: flex; cursor: pointer; diff --git a/src/component/Detail/DesignDetailAlter.vue b/src/component/Detail/DesignDetailAlter.vue index c9825498..fbce40de 100644 --- a/src/component/Detail/DesignDetailAlter.vue +++ b/src/component/Detail/DesignDetailAlter.vue @@ -398,7 +398,6 @@ export default defineComponent({ function callback(entries, observer) { entries.forEach((entry) => { if (entry.isIntersecting) { - console.log(11); this_.getLibraryList() } else { } @@ -494,12 +493,11 @@ export default defineComponent({ rgba:{ r:Number(arr.r), g:Number(arr.g), - b:Number(arr.g), + b:Number(arr.b), a:Number(arr.a?arr.a:1), }, hex:this.rgbaToHex([arr.r,arr.g,arr.b,arr.a?arr.a:1]) } - this.uploadList = [] if (num == 1) { this.selectCode = 'Sketchboard' @@ -589,21 +587,20 @@ export default defineComponent({ this.select = false DesignDetailEnd.selectIndex = 0 DesignDetailEnd.type_ = 0 + this.colorFileList = [] + this.selectColorList = [] }, //切换整体衣服 changePlace(){ this.uploadList = [] let DesignDetailEnd = this.$refs.DesignDetailEnd - this.select = false - DesignDetailEnd.type_ = 0 this.uploadList = [] this.apparelList = [] this.printList = [] - this.select = false DesignDetailEnd.colorList = [{},{},{},{},{},{},{},{}] - DesignDetailEnd.selectIndex = 0 DesignDetailEnd.sketchImg={} + this.terminate() }, // this.getLibraryList('Moodboard') // this.getLibraryList('Printboard') @@ -849,51 +846,60 @@ export default defineComponent({ this.colorFileList.push(file) setTimeout(async ()=>{ - const colorThief = new ColorThief(); - let colorImage = this.$refs.colorImage - let domImg = colorImage[0]; - let color = colorThief.getColor(domImg) - let colorHex = this.rgbaToHex(color) - let selectColorList = []; - let selectColor = colorThief.getPalette(domImg,9) - //排序 - let obj = { - max : 30, - min: 30, - } - let colorSort - await GO.setColor(selectColor,file.imgUrl,obj).then( - (rv) => { - if(rv){ - colorSort = rv.ratio - } + const img = new Image(); + let colorImage = this.$refs.colorImage + img.src = colorImage[0].src; + + img.onload = async () => { + const colorThief = new ColorThief(); + // let domImg = colorImage[0]; + // let color = colorThief.getColor(img) + // let colorHex = this.rgbaToHex(color) + let selectColorList = []; + let selectColor = colorThief.getPalette(img,8) + //排序 + let obj = { + max : 5, + min: 5, } - ) - colorSort.sort((a, b) => { - var a_num = a.ratio; - var b_num = b.ratio; - return b_num - a_num; - }); - selectColor = [] - colorSort.forEach(v=>{ - selectColor.push(v.rgb) - }) - - selectColor = selectColor.join('&') - selectColor = selectColor.split("&") - let colorLi = [] - new Set(selectColor).forEach((item)=>{ - colorLi.push(item.split(",")) - }) - colorLi.forEach(element => { - let colorLiHex = this.rgbaToHex(element) - selectColorList.push( - {rgba:{r:element[0],g:element[1],b:element[2],a:1},hex:colorLiHex} + let colorSort + await GO.setColor(selectColor,file.imgUrl,obj).then( + (rv) => { + if(rv){ + colorSort = rv.ratio + } + } ) - }); - this.selectColorList = selectColorList - this.getHsvColor(selectColorList) - this.selectColor = {rgba:{r:color[0],g:color[1],b:color[2],a:1},hex:colorHex} + colorSort.sort((a, b) => { + var a_num = a.ratio; + var b_num = b.ratio; + return b_num - a_num; + }); + selectColor = [] + colorSort.forEach(v=>{ + selectColor.push(v.rgb) + }) + selectColor = selectColor.join('&') + selectColor = selectColor.split("&") + let color = selectColor[0].split(',') + let colorHex = this.rgbaToHex(color) + + let colorLi = [] + new Set(selectColor).forEach((item)=>{ + colorLi.push(item.split(",")) + }) + colorLi.forEach(element => { + let colorLiHex = this.rgbaToHex(element) + selectColorList.push( + {rgba:{r:element[0],g:element[1],b:element[2],a:1},hex:colorLiHex} + ) + }); + this.selectColorList = selectColorList + // this.getHsvColor(selectColorList) + this.selectColor = {rgba:{r:color[0],g:color[1],b:color[2],a:1},hex:colorHex} + }; + + },100) }; // 转化为base64S @@ -1081,18 +1087,20 @@ export default defineComponent({ max-height: 100%; } .operate_file_block{ - height: 2.5rem; + height: 1.5rem; .select_img_type{ + line-height: 1; .select_category{ - zoom: .8; + zoom: .6; + height: 100%; .icon-xiala{ zoom: .8; } } .category_list{ - margin-top: -.4rem; + margin-top: .1rem; .category_item{ - zoom: .8; + zoom: .7; } } } diff --git a/src/component/Detail/DesignDetailEnd.vue b/src/component/Detail/DesignDetailEnd.vue index fe6605b3..5026c905 100644 --- a/src/component/Detail/DesignDetailEnd.vue +++ b/src/component/Detail/DesignDetailEnd.vue @@ -45,14 +45,14 @@ Single
-
+
@@ -332,6 +332,15 @@ export default defineComponent({ display: flex; justify-content: space-between; height: 14rem; + >div{ + display: flex; + flex-direction: column; + .print_left,.print_right{ + display: flex; + flex: 1; + align-items: center; + } + } .print_left{ position: relative; img{ @@ -362,6 +371,7 @@ export default defineComponent({ } } .print_right{ + .habit_Overal_Single { display: flex; align-items: center; @@ -424,6 +434,12 @@ export default defineComponent({ border: 0.1rem solid #DCDCEC; height: 8.5rem; width: 7rem; + overflow: hidden; + @media screen and (max-width: 1440px) { + &.modal_img_item { + line-height: 1.2; + } + } box-sizing: border-box; .color_content{ width: 100%; diff --git a/src/component/Detail/DesignPrintOperation.vue b/src/component/Detail/DesignPrintOperation.vue index 40d08bc2..140789e9 100644 --- a/src/component/Detail/DesignPrintOperation.vue +++ b/src/component/Detail/DesignPrintOperation.vue @@ -195,23 +195,27 @@ export default defineComponent({ var info = el.getBoundingClientRect(); let eX = info.x + info.width / 2; let eY = info.y + info.height / 2; - document.addEventListener('mousemove', (e) => { - if (mouse) { - let X = eX - let Y = eY - let x = e.clientX - X - let y = Y - e.clientY - angle = Math.atan2(x,y)*(180 / Math.PI) - elParent.firstElementChild.style.transform = "rotateZ("+ angle + "deg)" - el.style.transform = "rotateZ("+ angle + "deg)" + let mousemove = (e) => { + if (mouse) { + let X = eX + let Y = eY + let x = e.clientX - X + let y = Y - e.clientY + angle = Math.atan2(x,y)*(180 / Math.PI) + elParent.firstElementChild.style.transform = "rotateZ("+ angle + "deg)" + el.style.transform = "rotateZ("+ angle + "deg)" + } } - }); + document.addEventListener('mousemove', mousemove); // 添加鼠标松开事件监听器 - document.addEventListener('mouseup', () => { - value.instance.printStyleList[0].transform.rotateZ = angle + let mouseup = () => { + value.instance.printStyleList[value?.value[0]].transform.rotateZ = angle // console.log(value.instance.printStyleList); mouse = false; - }); + document.removeEventListener('mouseup',mouseup) + document.removeEventListener('mousemove',mousemove) + } + document.addEventListener('mouseup', mouseup); }); } @@ -426,8 +430,8 @@ export default defineComponent({ this.printAmount = 1 return } - if(this.printAmount > 10){ - this.printAmount = 10 + if(this.printAmount > 20){ + this.printAmount = 20 return } let printTiemNum @@ -472,8 +476,8 @@ export default defineComponent({ let scale = width / this.print.width.replace(/px/g,'') // let x = sketch.width-Number(this.print.width.replace(/px/g,'')) // let y = sketch.height-Number(this.print.height.replace(/px/g,'')) - let x = sketch?.width-20 - let y = sketch?.height-20 + let x = sketch?.width-this.print.width.replace(/px/g,'')*scale + let y = sketch?.height-this.print.height.replace(/px/g,'')*scale this.printStyleList[index]={ centers:{ left:0, @@ -490,7 +494,8 @@ export default defineComponent({ }, transform:{ // scale:scale<.2?.2:scale,//0.2-3 - rotateZ:rotateZ1-rotateZ2, + // rotateZ:rotateZ1-rotateZ2, + rotateZ:this.printStyleList[index].transform.rotateZ!=0?this.printStyleList[index].transform.rotateZ:0 }, designOpenrtionBtn:false } @@ -503,14 +508,22 @@ export default defineComponent({ let scale scale = (this.print.width.replace(/px/g,'')*sketchNum/this.print.width.replace(/px/g,'')) let zIndex = 1 + let left = item.location[0]/sketchNum+'px' + let top = item.location[1]/sketchNum+'px' + if(sketch.offsetWidth < item.location[0]/sketchNum){ + left = sketch.offsetWidth +'px' + } + if(sketch.offsetHeight < item.location[1]/sketchNum){ + top = sketch.offsetHeight +'px' + } this.printStyleList[index]={ centers:{ left:0, top:0, }, style:{ - left:item.location[0]/sketchNum+'px', - top:item.location[1]/sketchNum+'px', + left:left, + top:top, right:"auto", bottom:"auto", width:this.print.width.replace(/px/g,'')/sketchNum*item.scale+'px', diff --git a/src/component/Detail/habit.vue b/src/component/Detail/habit.vue index aa5584ee..dc0e58aa 100644 --- a/src/component/Detail/habit.vue +++ b/src/component/Detail/habit.vue @@ -173,8 +173,8 @@ export default defineComponent({ workSpaceName:"工作台1", putName:false, systemDesignerPercentage:30, - position:'Outwear', - sex:'Female', + position:'', + sex:'', overallSingle:false, mannequinUrl:'', mannequinType:'', @@ -261,7 +261,6 @@ export default defineComponent({ async mounted() { this.getworkspace() this.getSex() - this.getPosition() }, directives:{ fade:{ @@ -311,6 +310,7 @@ export default defineComponent({ arr.push(obj) }); this.sex = arr + this.getPosition() } }) @@ -333,7 +333,9 @@ export default defineComponent({ arr.push(obj) }); this.singleTypeList = arr - this.workspaceItem.position = this.singleTypeList[0].label + if(this.workspaceItem.overallSingle){ + this.workspaceItem.position = this.singleTypeList[0].label + } } }) }, @@ -371,6 +373,8 @@ export default defineComponent({ getDetail(id:any){// Https.axiosGet(Https.httpUrls.workspaceDetail,{params:{id:id}}).then((rv: any) => { if (rv) { + this.getworkspace() + } }) }, @@ -391,14 +395,13 @@ export default defineComponent({ }, putWorkspace(data:any,index:any){//修改workspace - console.log(index); - Https.axiosPost(Https.httpUrls.workspacesaveOrUpdate,data).then((rv: any) => { if (rv) { if(index){ this.getDetail(index) + }else{ + this.getworkspace() } - this.getworkspace() } }) }, diff --git a/src/component/Detail/magnifyingGlass.vue b/src/component/Detail/magnifyingGlass.vue new file mode 100644 index 00000000..af4ee5c4 --- /dev/null +++ b/src/component/Detail/magnifyingGlass.vue @@ -0,0 +1,119 @@ + + + diff --git a/src/component/HomePage/ColorboardUpload.vue b/src/component/HomePage/ColorboardUpload.vue index 996c34a0..be6e2e7a 100644 --- a/src/component/HomePage/ColorboardUpload.vue +++ b/src/component/HomePage/ColorboardUpload.vue @@ -299,52 +299,57 @@ export default defineComponent({ file.status = 'done' this.fileList.push(file) setTimeout(async ()=>{ + const img = new Image(); + let colorImage = this.$refs.colorImage + img.src = colorImage[0].src; const colorThief = new ColorThief(); - let colorImage = this.$refs.colorImage - let domImg = colorImage[0]; - // let color = colorThief.getColor(domImg) - let selectColorList = []; - let selectColor = colorThief.getPalette(domImg,9) - //排序 - let obj = { - max : 5, - min: 5, - } - let colorSort - await GO.setColor(selectColor,file.imgUrl,obj).then( - (rv) => { - if(rv){ - colorSort = rv.ratio - } + img.onload = async () => { + let domImg = colorImage[0]; + // let color = colorThief.getColor(domImg) + let selectColorList = []; + let selectColor = colorThief.getPalette(img,9) + //排序 + let obj = { + max : 5, + min: 5, } - ) - colorSort.sort((a, b) => { - var a_num = a.ratio; - var b_num = b.ratio; - return b_num - a_num; - }); - selectColor = [] - colorSort.forEach(v=>{ - selectColor.push(v.rgb) - }) - selectColor = selectColor.join('&') - selectColor = selectColor.split("&") - let color = selectColor[0].split(',') - let colorHex = this.rgbaToHex(color) - let colorLi = [] - new Set(selectColor).forEach((item)=>{ - colorLi.push(item.split(",")) - }) - colorLi.forEach(element => { - let colorLiHex = this.rgbaToHex(element) - selectColorList.push( - {rgba:{r:element[0],g:element[1],b:element[2],a:1},hex:colorLiHex} + let colorSort + await GO.setColor(selectColor,file.imgUrl,obj).then( + (rv) => { + if(rv){ + colorSort = rv.ratio + } + } ) - }); - this.selectColorList = selectColorList - this.getHsvColor(selectColorList) - - this.selectColor = {rgba:{r:color[0],g:color[1],b:color[2],a:1},hex:colorHex} + colorSort.sort((a, b) => { + var a_num = a.ratio; + var b_num = b.ratio; + return b_num - a_num; + }); + selectColor = [] + colorSort.forEach(v=>{ + selectColor.push(v.rgb) + }) + selectColor = selectColor.join('&') + selectColor = selectColor.split("&") + let color = selectColor[0].split(',') + let colorHex = this.rgbaToHex(color) + let colorLi = [] + new Set(selectColor).forEach((item)=>{ + colorLi.push(item.split(",")) + }) + colorLi.forEach(element => { + let colorLiHex = this.rgbaToHex(element) + selectColorList.push( + {rgba:{r:element[0],g:element[1],b:element[2],a:1},hex:colorLiHex} + ) + }); + this.selectColorList = selectColorList + this.getHsvColor(selectColorList) + + this.selectColor = {rgba:{r:color[0],g:color[1],b:color[2],a:1},hex:colorHex} + }; + },100) }; // 转化为base64S @@ -667,7 +672,7 @@ export default defineComponent({ width: auto; background: #f0eaee; - border-radius: 10px; + border-radius: 1rem; overflow: hidden; // box-shadow: 2px 2px 8px #000; box-shadow: 2px 2px 8px rgba(0,0,0,.3); diff --git a/src/component/HomePage/Cropper.vue b/src/component/HomePage/Cropper.vue index 211c5657..6e3423f3 100644 --- a/src/component/HomePage/Cropper.vue +++ b/src/component/HomePage/Cropper.vue @@ -55,13 +55,13 @@ -
+
@@ -280,7 +280,8 @@ export default defineComponent({ } .cut_picture_right{ - width: 39.2rem; + // width: 39.2rem; + width: 52rem; height: 100%; background: #fff; border-radius: 2rem; @@ -309,7 +310,8 @@ export default defineComponent({ .cut_picture_review_item{ width: 100%; - height: 50%; + // height: 50%; + height: 100%; position: relative; .cut_picture_review_content{ @@ -317,7 +319,7 @@ export default defineComponent({ position: absolute; left: 50%; top: 50%; - transform: scale(0.45) translate(-50%, -50%); + transform: scale(0.8) translate(-50%, -50%); background: rgba(91,94,105,0.8); box-shadow: 0 0.2rem 0.5rem 0 rgba(216,213,239,0.3); border-radius: 1rem; diff --git a/src/component/HomePage/Generate.vue b/src/component/HomePage/Generate.vue index 8d4f8d2f..cb0ab19e 100644 --- a/src/component/HomePage/Generate.vue +++ b/src/component/HomePage/Generate.vue @@ -39,14 +39,18 @@ -
+
Generate
+ The entered content exceeds the maximum length. +
@@ -179,7 +183,7 @@ import { getCookie } from "@/tool/cookie"; import { getUploadUrl } from "@/tool/util"; import { forEach } from "jszip"; export default defineComponent({ - props: ["msg"], + props: ["msg",'sketchCatecoryList'], setup() { // console.log(prop.msg); let checkbox = ref([ @@ -219,10 +223,12 @@ export default defineComponent({ num:1, optype:false, }) - let sketchCatecoryList:any = ref([]) + // let sketchCatecoryList:any = ref([]) let workspace:any = ref({}) let loadingShow = ref(false) + let inputShow = ref(false) + let inputTime = ref() return { imgList, selectImgList, @@ -244,8 +250,10 @@ export default defineComponent({ checkboxImage, printModel, loadingShow, - sketchCatecoryList, - workspace + // sketchCatecoryList, + workspace, + inputShow, + inputTime, }; }, data(prop) { @@ -281,6 +289,7 @@ export default defineComponent({ // this.store.commit("addGenerateFils", this.fileList); this.token = getCookie("token") || ""; this.uploadUrl = getUploadUrl(); + this.workspace = this.store.state.Workspace.workspace }, computed: { getSketchLabel(value: any) { @@ -347,6 +356,20 @@ export default defineComponent({ ); return } + if(this.searchPictureName){ + let arr = this.searchPictureName.split(/\s+/).length + if(arr > 75){ + message.warning( + "The entered content exceeds the maximum length." + ); + return + } + }else{ + message.warning( + "Please enter content" + ); + return + } let data = { generateType:'text', designType:'', @@ -356,6 +379,7 @@ export default defineComponent({ text:this.searchPictureName, timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone, version:this.printModel.num,//为1就是Print + gender:'', } this.loadingShow = true Https.axiosPost(Https.httpUrls.sketchAndPrintGenerate, data).then( @@ -378,6 +402,21 @@ export default defineComponent({ this.loadingShow = false }); }, + ifMaximumLength(e){ + clearTimeout(this.inputTime) + let inputBox = document.getElementsByClassName('generate')[0].getElementsByClassName('input_box')[0] + let input = inputBox.getElementsByClassName('search_input')[0] + this.inputTime = setTimeout(()=>{ + // let num1 = ((input as HTMLInputElement).value.match(/ /g) || []).length + // let num2 = (input as HTMLInputElement).value.split(' ').length + if(this.searchPictureName.split(/\s+/).length > 75){ + this.inputShow = true + }else{ + this.inputShow = false + } + },500) + }, + fileUploadChange(data: any) { let file = data.file; if (file.status === "done") { @@ -387,7 +426,7 @@ export default defineComponent({ file.resData = res.data; file.type_ = "upload"; file.id_ = GO.id++; - file.category = this.sketchCatecoryList[0].value; + file.category = this.sketchCatecoryList?.[0]?.value; let fileList = this.sketchboardList.filter( (v: any) => v.status === "done" ); @@ -509,7 +548,7 @@ export default defineComponent({ .generate { flex: 1; // height: 30rem; - overflow-x: hidden; + // overflow-x: hidden; border-right: 1px solid #e5e5e5; &.generate::-webkit-scrollbar { display: none; @@ -622,20 +661,20 @@ export default defineComponent({ } .upload_item { .upload_file_item { - &.active { - opacity: 0.5; - // border: 2px solid; - border-radius: 1rem; - transform: scale(0.9); - .delete_file_block{ - pointer-events:none; - } - .operate_file_block{ - pointer-events:none; - } - img { - } - } + // &.active { + // opacity: 0.5; + // // border: 2px solid; + // border-radius: 1rem; + // transform: scale(0.9); + // .delete_file_block{ + // pointer-events:none; + // } + // .operate_file_block{ + // pointer-events:none; + // } + // img { + // } + // } &.forbidden{ cursor:not-allowed; img{ diff --git a/src/component/HomePage/Material.vue b/src/component/HomePage/Material.vue index a4c2350d..50295281 100644 --- a/src/component/HomePage/Material.vue +++ b/src/component/HomePage/Material.vue @@ -86,7 +86,7 @@ import { useStore } from "vuex"; import GO from '@/tool/GO'; export default defineComponent({ - props: ["msg"], + props: ["msg",'disignTypeList'], setup(prop) { let myMaterialModalShow = ref(false) let imgList = ref([ @@ -99,9 +99,9 @@ export default defineComponent({ let total = ref(0) let searcMaterialhName:any = ref('') //搜索名字 let designType:any = ref(null) - let disignTypeList:any = ref([ + // let disignTypeList:any = ref([ - ]) + // ]) let workspace:any = ref({}) return{ myMaterialModalShow, @@ -114,7 +114,7 @@ export default defineComponent({ total, searcMaterialhName, designType, - disignTypeList, + // disignTypeList, workspace } }, @@ -261,7 +261,6 @@ export default defineComponent({ }) this.store.commit("addGenerateMaterialFils", imgData); }, - //改变页码 changePage(current: number, pageSize: number){ this.currentPage = current diff --git a/src/component/HomePage/MoodboardUpload.vue b/src/component/HomePage/MoodboardUpload.vue index bc0ac664..33fd1357 100644 --- a/src/component/HomePage/MoodboardUpload.vue +++ b/src/component/HomePage/MoodboardUpload.vue @@ -34,7 +34,7 @@ >
+ { return store.state.UploadFilesModule.disposeMoodboard }) + let uploading:any = ref([]) return { fileList, + showFileList, lessenList, templateModal, templateFileList, @@ -182,7 +186,8 @@ export default defineComponent({ layoutList, layoutOpen, loadingShow, - modalImg + modalImg, + uploading }; }, data() { @@ -223,8 +228,16 @@ export default defineComponent({ watch:{ fileList:{ handler(newVal:any,oldVal:any){ - console.log(newVal,oldVal); + // console.log(111); + // if(this.uploading.length { @@ -295,6 +309,7 @@ export default defineComponent({ } message.error(file.name + "upload failed"); } + }, beforeUpload(file: any) { const isJpgOrPng = @@ -351,6 +366,8 @@ export default defineComponent({ material:[] as any, moodboard:[] as any, } + console.log(disposeMoodboard); + arr.forEach((v:any)=>{ if(v.type_.type1 == 'generate'){ setboard.generate.push(v) @@ -360,7 +377,6 @@ export default defineComponent({ setboard.moodboard.push(v) } }) - this.store.commit("setMoodboardGenerateFiles", setboard.generate); this.store.commit("setMoodboardMaterialFiles", setboard.material); this.store.commit("setMoodboardFile", setboard.moodboard); @@ -547,12 +563,15 @@ export default defineComponent({ .modal_img_item{ width: 4rem; height: 4rem; + text-align: center; margin: 0 1rem 1rem 0; position: relative; cursor: pointer; img{ - width: 100%; + width: auto; height: 100%; + max-width: 100%; + object-fit: cover; } .checked{ position: absolute; diff --git a/src/component/HomePage/PrintboardUpload.vue b/src/component/HomePage/PrintboardUpload.vue index 80a4e4ff..bb09b21d 100644 --- a/src/component/HomePage/PrintboardUpload.vue +++ b/src/component/HomePage/PrintboardUpload.vue @@ -99,9 +99,10 @@