This commit is contained in:
X1627315083
2025-09-03 16:36:06 +08:00
parent 8d73d6861b
commit dd3093656b
14 changed files with 139 additions and 77 deletions

40
components.d.ts vendored
View File

@@ -0,0 +1,40 @@
/* eslint-disable */
// @ts-nocheck
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399
// biome-ignore lint: disable
export {}
/* prettier-ignore */
declare module 'vue' {
export interface GlobalComponents {
ABadge: typeof import('ant-design-vue/es')['Badge']
ABreadcrumb: typeof import('ant-design-vue/es')['Breadcrumb']
ACheckbox: typeof import('ant-design-vue/es')['Checkbox']
ADatePicker: typeof import('ant-design-vue/es')['DatePicker']
ADrawer: typeof import('ant-design-vue/es')['Drawer']
AImage: typeof import('ant-design-vue/es')['Image']
AInputNumber: typeof import('ant-design-vue/es')['InputNumber']
AMenu: typeof import('ant-design-vue/es')['Menu']
AMenuItem: typeof import('ant-design-vue/es')['MenuItem']
AModal: typeof import('ant-design-vue/es')['Modal']
APagination: typeof import('ant-design-vue/es')['Pagination']
APopover: typeof import('ant-design-vue/es')['Popover']
ARangePicker: typeof import('ant-design-vue/es')['RangePicker']
ASelect: typeof import('ant-design-vue/es')['Select']
ASelectOption: typeof import('ant-design-vue/es')['SelectOption']
ASlider: typeof import('ant-design-vue/es')['Slider']
ASpace: typeof import('ant-design-vue/es')['Space']
ASpin: typeof import('ant-design-vue/es')['Spin']
ASubMenu: typeof import('ant-design-vue/es')['SubMenu']
ASwitch: typeof import('ant-design-vue/es')['Switch']
ATable: typeof import('ant-design-vue/es')['Table']
ATabPane: typeof import('ant-design-vue/es')['TabPane']
ATabs: typeof import('ant-design-vue/es')['Tabs']
ATimeRangePicker: typeof import('ant-design-vue/es')['TimeRangePicker']
AUpload: typeof import('ant-design-vue/es')['Upload']
ElCascader: typeof import('element-plus/es')['ElCascader']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
}
}

BIN
dist.7z

Binary file not shown.

View File

@@ -453,10 +453,10 @@ watch(
display: flex;
flex-direction: column;
align-items: center;
gap: 15px;
gap: 1.5rem;
background: rgba(255, 255, 255, 0.8);
border-radius: 5px;
padding: 15px 3px;
padding: 1.5rem 3px;
box-shadow:
0 4px 20px rgba(0, 0, 0, 0.1),
0 0 0 1px rgba(0, 0, 0, 0.05);
@@ -478,8 +478,8 @@ watch(
// 笔刷大小预览相关样式
.brush-preview-container {
width: 110px;
height: 110px;
width: 11rem;
height: 11rem;
display: flex;
justify-content: center;
align-items: center;
@@ -492,12 +492,14 @@ watch(
.brush-size-preview {
border-radius: 50%;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
max-width: 100%;
max-height: 100%;
}
// 透明度预览相关样式
.opacity-preview {
width: 110px;
height: 110px;
width: 11rem;
height: 11rem;
border-radius: 6px;
overflow: hidden;
position: relative;
@@ -550,14 +552,14 @@ watch(
}
.control-btn {
width: 24px;
height: 24px;
width: 2.4rem;
height: 2.4rem;
border: none;
border-radius: 4px;
background: #f0f0f0;
color: #333;
cursor: pointer;
font-size: 16px;
font-size: 1.6rem;
display: flex;
align-items: center;
justify-content: center;
@@ -602,8 +604,8 @@ watch(
}
.current-color {
width: 32px;
height: 32px;
width: 3.2rem;
height: 3.2rem;
border-radius: 8px;
border: 2px solid #fff;
box-shadow:
@@ -638,7 +640,7 @@ watch(
}
.tooltip-title {
font-size: 16px;
font-size: 1.6rem;
color: #333;
font-weight: 600;
}
@@ -647,12 +649,12 @@ watch(
position: absolute;
right: 3px;
top: 3px;
width: 20px;
height: 20px;
width: 2rem;
height: 2rem;
border: none;
background: transparent;
color: #999;
font-size: 16px;
font-size: 1.6rem;
cursor: pointer;
display: flex;
align-items: center;

View File

@@ -516,8 +516,8 @@ onBeforeUnmount(() => {
display: flex;
align-items: center;
justify-content: center;
gap: 15px;
height: 150px;
gap: 1.5rem;
height: 15rem;
position: relative;
// margin-top: 8px;
// margin-bottom: 0px;
@@ -525,7 +525,7 @@ onBeforeUnmount(() => {
.slider-track {
position: relative;
width: 32px;
width: 3.2rem;
height: 100%;
background: rgba(0, 0, 0, 0.1);
border-radius: 4px;
@@ -544,7 +544,7 @@ onBeforeUnmount(() => {
.slider-thumb {
position: absolute;
width: 100%;
height: 16px;
height: 1.6rem;
background: #fff;
// border: 1px solid #2196f3;
border-radius: 3px;
@@ -560,13 +560,13 @@ onBeforeUnmount(() => {
// 添加iPad和移动设备的专有样式
@media (pointer: coarse) {
.slider-thumb {
height: 20px; // 在触摸设备上增加滑块尺寸,更容易点击
border-radius: 4px;
box-shadow: 0 0px 6px rgba(0, 0, 0, 0.5); // 更明显的阴影
height: 2rem; // 在触摸设备上增加滑块尺寸,更容易点击
border-radius: .4rem;
box-shadow: 0 0 .6rem rgba(0, 0, 0, 0.5); // 更明显的阴影
}
.slider-track {
width: 40px; // 在触摸设备上增加宽度
width: 4rem; // 在触摸设备上增加宽度
}
.slider-notch {
@@ -603,23 +603,23 @@ onBeforeUnmount(() => {
.slider-tooltip {
position: absolute;
left: calc(100% + 15px);
left: calc(100% + 1.5rem);
background: rgba(255, 255, 255, 0.95);
border-radius: 10px;
padding: 10px;
padding: 1rem;
box-shadow:
0 3px 12px rgba(0, 0, 0, 0.1),
0 0 0 1px rgba(0, 0, 0, 0.05);
min-width: 120px;
min-width: 12rem;
z-index: 10;
&::before {
content: "";
position: absolute;
left: -8px;
left: -.8rem;
top: 50%;
transform: translateY(-50%);
border-width: 8px 8px 8px 0;
border-width: .8rem .8rem .8rem 0;
border-style: solid;
border-color: transparent rgba(255, 255, 255, 0.95) transparent transparent;
}

View File

@@ -53,7 +53,7 @@
</div>
</div>
<div class="item model">
<div class="item model" >
<model
ref="model"
@canvasReload="canvasReload"
@@ -306,7 +306,8 @@ export default defineComponent({
// 406.90964
// ],
offset,
partialDesign:detailData.isEditPattern.value?list[i].partialDesign:{},
partialDesign:list[i].partialDesign || {},
// partialDesign:detailData.isEditPattern.value?list[i].partialDesign:{},
path:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.minIOPath:list[i].minIOPath,
printObject:(newData && detailData.currentDetailType == 'print' && isCurrent)?{prints:newData}:list[i].printObject?list[i].printObject:{prints:[]},
priority,

View File

@@ -4,7 +4,7 @@
<div class="designOpenrtion_print" v-for="item,index in frontBack.back" @mousedown.stop="itemMoveMousedown(index,getMousePosition($event,false))" @touchstart.passive="itemMoveMousedown(index,getMousePosition($event,true))" @click="setpitch(item,index)" :style="frontBack.front[index].style">
<img :style="item.imageUrl?'':'display:none;'" :src="item.imageUrl" alt="">
</div>
<img class="perview_img" ref="detailBody" :src="frontBack?.body?.path" :style="'width:'+ frontBack?.body?.layersObject?.[0].imageSize?.[0] +';height:' + frontBack?.body?.layersObject?.[0].imageSize?.[0] +';'" v-lazy="frontBack?.body?.layersObject?.[0].imageUrl || ''">
<img class="perview_img" @load="setPrintSize()" ref="detailBody" :src="frontBack?.body?.path" :style="'width:'+ frontBack?.body?.layersObject?.[0].imageSize?.[0] +';height:' + frontBack?.body?.layersObject?.[0].imageSize?.[0] +';'">
<div class="detail_modal_item_front" v-for="item,index in frontBack.front" @mousedown.stop="itemMoveMousedown(index,getMousePosition($event,false))" @touchstart.passive="itemMoveMousedown(index,getMousePosition($event,true))" @click="setpitch(item,index)" :style="item.style">
<img :src="item.imageUrl" alt="">
</div>
@@ -17,7 +17,7 @@
</ul>
</div>
</div>
<div class="designOpenrtion_imgMask" v-else>
<div class="designOpenrtion_imgMask" v-if="!frontBack?.body?.path">
<img :src="designDetail.currentFullBodyView || selectDetail.undividedLayer" style="object-fit: cover;" alt="">
</div>
</div>
@@ -71,39 +71,45 @@ export default defineComponent({
selectItem.imgDomIndex = detailData.frontBack.front.findIndex((item:any)=>item.id == newValue.id)
},{immediate: true,})
watch(()=>detailData.frontBack?.body?.path,(newVal)=>{
let sacle = 0
const img = new Image();
img.onload = () => {
// resolve(img)
sacle = detailData.detailBody.parentNode.offsetWidth / img.width
detailData.frontBack.front.forEach((item:any,index:number) => {
for (const key in item.style) {
if(key == 'zIndex')return
let value = item.style[key]
if(typeof value !== 'number'){
value = value.replace('px','')
item.style[key] = value
}else{
item.style[key] = value*sacle+'px'
setPrintSize()
})
const setPrintSize = ()=>{
nextTick(()=>{
let sacle = 0
const img = new Image();
let dom = document.querySelector('.molepositon .perview_img') as any
if(!detailData.frontBack?.body?.path || !dom)return
img.onload = () => {
// resolve(img)
sacle = dom.parentNode.offsetWidth / img.width
detailData.frontBack.front.forEach((item:any,index:number) => {
for (const key in item.style) {
if(key == 'zIndex')return
let value = item.style[key]
if(typeof value !== 'number'){
value = value.replace('px','')
item.style[key] = value
}else{
item.style[key] = value*sacle+'px'
}
// item.style[key] = value*sacle+'px'
}
// item.style[key] = value*sacle+'px'
}
for (const key in detailData.frontBack.back[index].style) {
if(key == 'zIndex')return
let value = detailData.frontBack.back[index].style[key]
if(typeof value !== 'number'){
value = value.replace('px','')
detailData.frontBack.back[index].style[key] = value
}else{
detailData.frontBack.back[index].style[key] = value*sacle+'px'
for (const key in detailData.frontBack.back[index].style) {
if(key == 'zIndex')return
let value = detailData.frontBack.back[index].style[key]
if(typeof value !== 'number'){
value = value.replace('px','')
detailData.frontBack.back[index].style[key] = value
}else{
detailData.frontBack.back[index].style[key] = value*sacle+'px'
}
// detailData.frontBack.back[index].style[key] = value*sacle+'px'
}
// detailData.frontBack.back[index].style[key] = value*sacle+'px'
}
});
};
img.src = newVal;
},{immediate: true,})
});
};
img.src = detailData.frontBack?.body?.path;
})
}
const getDetailListDom = reactive({
libraryList:null as any,
})
@@ -385,6 +391,7 @@ export default defineComponent({
...toRefs(selectItem),
...toRefs(getDetailListDom),
setPrintSize,
itemSizeMousedown,
itemMoveMousedown,
deleteNav,

View File

@@ -137,7 +137,7 @@
<div class="content" v-show="speedState && scene?.value != 'extract'">
<div v-for="item in speedList"
v-show="(type_.type2 == 'Moodboard' && item?.value != 'flux') ||
(type_.type2 == 'Sketchboard' && item?.value != 'flux' && item?.value != 'high') ||
(type_.type2 == 'Sketchboard' && item?.value != 'flux' && item?.value != 'wx') ||
(type_.type2 == 'Printboard' && item?.value != 'wx')"
:key="item.value" :class="{active:item.value == speedData.value}" @click.stop="setSpeed(item)" :title="item.title">{{ item.label }}</div>
</div>

View File

@@ -77,7 +77,9 @@
window.isAddGmail = false
}
})
createGmailLogin()
onMounted(()=>{
createGmailLogin()
})
return {
}
},

View File

@@ -9,7 +9,7 @@
<div class="generalModel_state" style="width: 20rem;" v-show="systemUser">
<div class="generalModel_state_item" style="margin: 0; width: 100%;">
<a-select
v-model:value="selectObject.style"
v-model:value="selectObjectStyle"
:options="mannequinStyleList"
@change="setWorkspaceStyle"
style="width:100%"
@@ -92,6 +92,7 @@ export default defineComponent({
modelList:[],
systemUser:true,
selectObject:computed(()=>store.state.Workspace.probjects),//选择的项目
selectObjectStyle:'',
mannequinStyleList:[] as any,
mannequinStyle:computed(()=>store.state.UserHabit.mannequinStyle),//女性衣服位置
})
@@ -108,6 +109,9 @@ export default defineComponent({
watch(()=>data.selectObject.sex,(newVal)=>{
getModel()
})
watch(()=>data.selectObject.style,(newVal)=>{
data.selectObjectStyle = JSON.parse(JSON.stringify(newVal))
},{immediate:true})
const dataDom = reactive({
habitSetStyle:null as any,
edit:null as any,
@@ -115,7 +119,7 @@ export default defineComponent({
const getModel = ()=>{
let value = {
sex:data.selectObject.sex,
style:data.selectObject?.style?data.selectObject?.style:'',
style:data.selectObjectStyle,
ageGroup:data.selectObject.ageGroup,
}
Https.axiosGet(Https.httpUrls.getMannequins,{params:value}).then((rv: any) => {
@@ -186,9 +190,9 @@ export default defineComponent({
dataDom.habitSetStyle.init(data.selectObject);
}
const setWorkspaceStyle = (item:any,value:any)=>{
data.selectObject.styleName = value.name
data.selectObject.style = value.value
data.selectObject.styleId = value.id
// data.selectObject.styleName = value.name
// data.selectObject.style = value.value
// data.selectObject.styleId = value.id
getModel()
}
const openSetData = ()=>{
@@ -246,7 +250,8 @@ export default defineComponent({
const confirmDeletePic = (item:any,index:any,nData:any)=>{
let newData = {
libraryIds:[item.id],
deleteModelConfirm:item.deleteModelConfirm?item.deleteModelConfirm : 0,
deleteModelConfirm:1,
// deleteModelConfirm:item.deleteModelConfirm?item.deleteModelConfirm : 0,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
}
if(nData)newData = nData

View File

@@ -223,6 +223,7 @@ export default defineComponent({
"id":data.selectObject.id,
"moduleList":moduleList,
}
data.isShowMark = true
Https.axiosPost(Https.httpUrls.getModuleContent,value).then(async (rv)=>{
if(rv.uploadElement){//toproduct、relight、poseTransfer
let uploadElementData = {

View File

@@ -201,13 +201,14 @@ export default defineComponent({
message.info(t('PrintboardUpload.jsContent7'))
return
}
console.log(data.selectObject)
let value = {
name:data.selectObject.name,
process:props.httpWorkflowType,
styleId:data.show.style?data.selectObject.styleId:null,
id:data.selectObject.id == -1?'':data.selectObject.id,
workspace:{
id:data.workspaceId?.id == -1?'':data.workspaceId?.id,
id:data.selectObject?.workspaceId == -1?'':data.selectObject?.workspaceId,
sex:data.selectObject.sex,
// sex:data.show.gender?data.selectObject.sex:null,
systemDesignerPercentage:data.show.systemDesigner?data.selectObject.systemDesignerPercentage:null,

View File

@@ -4,7 +4,6 @@
class="modalCanvas_modal generalModel"
v-model:visible="addDetails"
:footer="null"
:get-container="() => $refs.modalCanvas"
width="75%"
:maskClosable="false"
:centered="true"
@@ -77,6 +76,7 @@ export default defineComponent({
.modalCanvas{
width: 0;
height: 0;
position: fixed;
}
.modalCanvas_modal {
.closeIcon {

View File

@@ -118,7 +118,7 @@
</div>
</div>
<div class="segmentation"></div>
<div v-if="userDetail.systemUser != 0 || userDetail.systemUser != 3" @click="openUpgradeToPro" class="gallery_btn gallery_btn_radius" style="width: 100%;display: flex;justify-content: center;align-items: center;">
<div v-if="userDetail.systemUser == 0 || userDetail.systemUser == 3" @click="openUpgradeToPro" class="gallery_btn gallery_btn_radius" style="width: 100%;display: flex;justify-content: center;align-items: center;">
<i class="fi fi-br-dollar" style="margin-right: .6rem;display: flex;"></i>
{{$t('Header.openUpgrade')}}

View File

@@ -436,7 +436,7 @@
<div class="content" v-if="scene?.value != 'extract'" v-show="speedState">
<div v-for="item in speedList" :class="{active:item.value == speedData.value}"
v-show="(selectCode == 'Moodboard' && item?.value != 'flux') ||
(selectCode == 'Sketchboard' && item?.value != 'flux' && item?.value != 'high') ||
(selectCode == 'Sketchboard' && item?.value != 'flux' && item?.value != 'wx') ||
(selectCode == 'Printboard' && item?.value != 'wx')"
:key="item.value" @click.stop="setSpeed(item)" :title="item.title">{{ item.label }}</div>
</div>
@@ -729,7 +729,7 @@ export default defineComponent({
value:'wx',
},{
title:'',
label:t('speedList.generateFlux'),
label:t('speedList.toproductFlus'),
value:'high',
},{
title:'',
@@ -1030,7 +1030,10 @@ export default defineComponent({
this.getClass()
this.getSex()
},
beforeUnmount(){
this.store.commit('createDetail')
this.store.commit('createProbject')
},
methods:{