Merge remote-tracking branch 'origin/StableVersion' into dev_vite

This commit is contained in:
X1627315083
2025-09-04 09:28:39 +08:00
20 changed files with 149 additions and 87 deletions

BIN
dist.7z

Binary file not shown.

View File

@@ -184,6 +184,14 @@ export default defineComponent({
label:'trial',
value:'3',
},
{
label: "userInEvent",
value: "4",
},
{
label: "Edu Admin",
value: "7",
},
]);
let init = (funStr,data)=>{
operations.operationsModal = true

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

@@ -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,12 +71,17 @@ export default defineComponent({
selectItem.imgDomIndex = detailData.frontBack.front.findIndex((item:any)=>item.id == newValue.id)
},{immediate: true,})
watch(()=>detailData.frontBack?.body?.path,(newVal)=>{
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 = detailData.detailBody.parentNode.offsetWidth / img.width
sacle = dom.parentNode.offsetWidth / img.width
detailData.frontBack.front.forEach((item:any,index:number) => {
for (const key in item.style) {
if(key == 'zIndex')return
@@ -102,8 +107,9 @@ export default defineComponent({
}
});
};
img.src = newVal;
},{immediate: true,})
img.src = detailData.frontBack?.body?.path;
})
}
const getDetailListDom = reactive({
libraryList:null as any,
})
@@ -253,12 +259,13 @@ export default defineComponent({
}else{
resolve(true)
isModal = false
isOpen = true
}
}).then((rv)=>{
})
if(isOpen){
store.commit('DesignDetail/setDesignColthes',detailData.frontBack.front[index].id)
emit('canvasReload')
store.commit('DesignDetail/setDesignColthes',detailData.frontBack.front[index].id)
return
}
@@ -385,6 +392,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

@@ -34,7 +34,7 @@
script:null
})
let GOOGLE_CLIENT_ID = '29310152396-nnsd3h533fld665oguu8ovrt1nukmt46.apps.googleusercontent.com'
// let GOOGLE_CLIENT_ID = '399537927614-3sd3rs9p79doocsrff7gm5m1f3chvmn2.apps.googleusercontent.com'
// let GOOGLE_CLIENT_ID = '29310152396-c44dcsoksjirhn7vbo29p8u8n0sg4qps.apps.googleusercontent.com'
// 使用谷歌登录的api
const createGmailLogin = async ()=>{
var existingScript = document.querySelector(`script[src="${data.scriptSrc}"]`);
@@ -77,7 +77,9 @@
window.isAddGmail = false
}
})
onMounted(()=>{
createGmailLogin()
})
return {
}
},

View File

@@ -299,7 +299,9 @@ export default defineComponent({
loginTime: true,
};
},
onBeforeUnmount() {
this.clearTimer();
},
methods: {
changeLoginType(type: string) {
this.loginType = type;

View File

@@ -299,7 +299,9 @@ export default defineComponent({
loginTime: true,
};
},
onBeforeUnmount() {
this.clearTimer();
},
methods: {
changeLoginType(type: string) {
this.loginType = type;

View File

@@ -299,7 +299,9 @@ export default defineComponent({
loginTime: true,
};
},
onBeforeUnmount() {
this.clearTimer();
},
methods: {
changeLoginType(type: string) {
this.loginType = type;

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

@@ -139,6 +139,7 @@ const DesignDetail : Module<DesignDetail,RootState> = {
}
},
setDesignColthes(state,data){
console.log(data)
if(!state.currentDetailType)state.currentDetailType = 'sketch'
//切换选择
// state.currentDetailType = ''

View File

@@ -177,7 +177,13 @@ const all = (t)=>{
route:'/administrator/organization',
key:'sub13',
isShow:true,
}]
},{
name:'Design Frequency',
icon:'usetime',
route:'/administrator/designFrequency',
key:'sub14',
isShow:true,
},]
}
const schoolOrEnterprise = (t) =>{
return[
@@ -194,6 +200,19 @@ const schoolOrEnterprise = (t) =>{
icon:'usetime',
key:'sub2',
isShow:true,
},{
name:'Function Use CHART',
route:'/administrator/recentActiveChart',
icon:'usetime',
key:'sub3',
isShow:true,
},
{
name:'Design Frequency',
icon:'usetime',
route:'/administrator/designFrequency',
key:'sub4',
isShow:true,
},
// {
// name:'Credits Detail',
@@ -215,7 +234,8 @@ const schoolOrEnterprise = (t) =>{
// route:'/administrator/designFrequency',
// key:'sub5',
// isShow:true,
// },{
// },
// {
// name:'Generate Frequency',
// icon:'usetime',
// route:'/administrator/generateFrequency',

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

@@ -214,13 +214,17 @@ export default defineComponent({
}
});
let getPorfolio = ()=>{
let data = filter.getListDate
let data = {
...filter.getListDate
}
if(filter.isShowMark && !filter.isNoData)return
filter.isShowMark = true
// if(prop.otherUsers){
data.accountId = store.state.UserHabit.userDetail.userId
// }
if(data.getMyPortfolio == 1 || data.getLikePortfolio == 1){
data.accountId = store.state.UserHabit.userDetail.userId
}
Https.axiosPost(Https.httpUrls.getPorfolio, data)
.then((rv) => {
if(data.page == 1 && rv.content.length == 0){

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:{