Merge branch 'dev_vite' of http://18.167.251.121:10003/aidlab/aida_front into dev_vite

This commit is contained in:
李志鹏
2025-10-14 09:54:54 +08:00
7 changed files with 46 additions and 17 deletions

View File

@@ -25,13 +25,15 @@
<div class="molepositon imgDesignImg" :class="{active:imgDesignImg}"> <div class="molepositon imgDesignImg" :class="{active:imgDesignImg}">
<div class="designOpenrtion_imgMask" style="width: 100%;height: 100%;"> <div class="designOpenrtion_imgMask" style="width: 100%;height: 100%;">
<div class="detail_modal_item_front"> <div class="detail_modal_item_front">
<img :src="designDetail.designItemUrl" alt="" style="object-fit: cover;"> <img
:style="{width:observerWH.width+'px',height:observerWH.height+'px'}"
:src="designDetail.designItemUrl" alt="" style="object-fit: cover;">
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent,computed,inject,watch,nextTick,createVNode,toRefs, reactive} from 'vue' import { defineComponent,computed,inject,watch,nextTick,createVNode,toRefs, reactive, onUnmounted} from 'vue'
// import setDesignItem from '@/component/Detail/setDesignItem2.vue' // import setDesignItem from '@/component/Detail/setDesignItem2.vue'
import { ExclamationCircleOutlined } from '@ant-design/icons-vue'; import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import { Https } from "@/tool/https"; import { Https } from "@/tool/https";
@@ -60,6 +62,11 @@ export default defineComponent({
isEditPattern:inject('isEditPattern') as any, isEditPattern:inject('isEditPattern') as any,
singleOveral:inject('singleOveral') as any, singleOveral:inject('singleOveral') as any,
detailBody:null as any, detailBody:null as any,
observer:null as any,
observerWH:{
width:0,
height:0,
},
}) })
const selectItem = reactive({ const selectItem = reactive({
selectDetail:computed(()=>store.state.DesignDetail.selectDetail), selectDetail:computed(()=>store.state.DesignDetail.selectDetail),
@@ -82,6 +89,21 @@ export default defineComponent({
let dom = document.querySelector('.molepositon .perview_img') as any let dom = document.querySelector('.molepositon .perview_img') as any
if(!detailData.frontBack?.body?.path || !dom)return if(!detailData.frontBack?.body?.path || !dom)return
img.onload = () => { img.onload = () => {
//监听模特图片宽度设置整体图片宽度
if (detailData.observer) {
detailData.observer.disconnect()
}
detailData.observerWH.width = dom.width
detailData.observerWH.height = dom.height
detailData.observer = new ResizeObserver((entries) => {
if(entries[0].contentRect.width == 0)return
detailData.observerWH.width = Math.floor(entries[0].contentRect.width)
detailData.observerWH.height = Math.floor(entries[0].contentRect.height)
console.log(detailData.observerWH)
})
detailData.observer.observe(dom)
if(detailData.designDetail.clothes.length == 0){ if(detailData.designDetail.clothes.length == 0){
store.commit('DesignDetail/addDesignColthes') store.commit('DesignDetail/addDesignColthes')
emit('addSketch') emit('addSketch')
@@ -401,6 +423,11 @@ export default defineComponent({
}; };
img.src = url; img.src = url;
} }
onUnmounted(()=>{
if (detailData.observer) {
detailData.observer.disconnect()
}
})
return{ return{
...toRefs(detailData), ...toRefs(detailData),
...toRefs(selectItem), ...toRefs(selectItem),
@@ -416,6 +443,7 @@ export default defineComponent({
updataPosition, updataPosition,
} }
}, },
directives:{ directives:{
detailBody:{ detailBody:{
mounted (el,data:any) { mounted (el,data:any) {

View File

@@ -907,7 +907,7 @@ export default defineComponent({
this.isGenerate = false this.isGenerate = false
clearInterval(this.remGenerateTime) clearInterval(this.remGenerateTime)
this.remGenerate = false this.remGenerate = false
this.fileList = this.fileList.filter((item: any) => item.status !== '')
if (res.errCode === 2) { if (res.errCode === 2) {
let this_ = this let this_ = this
Modal.confirm({ Modal.confirm({
@@ -994,6 +994,7 @@ export default defineComponent({
} }
}) })
.catch(res => { .catch(res => {
this.fileList = this.fileList.filter((item: any) => item.status !== '')
clearInterval(this.generateTime) clearInterval(this.generateTime)
clearInterval(this.remGenerateTime) clearInterval(this.remGenerateTime)
this.isGenerate = false this.isGenerate = false

View File

@@ -141,7 +141,6 @@ export default defineComponent({
publish:null as any, publish:null as any,
}) as any }) as any
const init = async (value:any,list:any,t:any,locale:any)=>{ const init = async (value:any,list:any,t:any,locale:any)=>{
store.commit('toolsClear')
data.t = t data.t = t
data.locale = locale.value data.locale = locale.value
data.designTools = true data.designTools = true
@@ -188,6 +187,7 @@ export default defineComponent({
str:'add', str:'add',
index:-1, index:-1,
} }
store.commit('toolsClear')
if(data.openType == 'toProduct'){ if(data.openType == 'toProduct'){
store.commit("setToProductImage", likeData); store.commit("setToProductImage", likeData);
}else if(data.openType == 'relight'){ }else if(data.openType == 'relight'){

View File

@@ -62,11 +62,13 @@ export default defineComponent({
newPorject:null as any, newPorject:null as any,
chatDom:null as any, chatDom:null as any,
}) })
watch(() => data.selectObject.styleId,()=>{ //切换风格更新模特 更新设置交互变更
if((data.selectObject?.id == route.query?.history) && route.query?.history){ // watch(() => data.selectObject.styleId,(newVal,oldVal)=>{
getHistory(route.query.history) // if(newVal == oldVal || !oldVal)return
} // if((data.selectObject?.id == route.query?.history) && route.query?.history){
}) // getHistory(route.query.history)
// }
// })
watch(() => route.query, watch(() => route.query,
(query:any, oldQuery:any) => { (query:any, oldQuery:any) => {
@@ -121,14 +123,11 @@ export default defineComponent({
store.commit("clearAllBoardData",item); store.commit("clearAllBoardData",item);
}) })
} }
const getHistory = (id:any)=>{ const getHistory = (id:any)=>{
let value = { let value = {
id, id,
} }
if(!id)return if(!id)return data.isShowMark = false
data.isShowMark = false
Https.axiosPost(Https.httpUrls.selectHistoryProject,value).then((rv: any) => { Https.axiosPost(Https.httpUrls.selectHistoryProject,value).then((rv: any) => {
setProjectData(rv) setProjectData(rv)
}).catch((res)=>{ }).catch((res)=>{
@@ -177,7 +176,6 @@ export default defineComponent({
data.selectObject.positionList = position data.selectObject.positionList = position
storeData.positionList = position storeData.positionList = position
store.commit('setProbject',storeData) store.commit('setProbject',storeData)
// setChatData() // setChatData()
if(route.name == 'tools'){ if(route.name == 'tools'){
getCollection('tools',null) getCollection('tools',null)
@@ -224,6 +222,7 @@ export default defineComponent({
} }
data.isShowMark = true data.isShowMark = true
Https.axiosPost(Https.httpUrls.getModuleContent,value).then(async (rv)=>{ Https.axiosPost(Https.httpUrls.getModuleContent,value).then(async (rv)=>{
store.commit('clearAllCollection')
if(rv.uploadElement){//toproduct、relight、poseTransfer if(rv.uploadElement){//toproduct、relight、poseTransfer
let uploadElementData = { let uploadElementData = {
str:'add', str:'add',

View File

@@ -19,7 +19,7 @@
<img :src="item.imgUrl || item.url" alt=""> <img :src="item.imgUrl || item.url" alt="">
<a-checkbox v-model:checked="item.isChecked"></a-checkbox> <a-checkbox v-model:checked="item.isChecked"></a-checkbox>
</div> --> </div> -->
<div class="item" :class="[item?.isChecked?'active':'']" v-for="item,index in fileList[productimgMenu.value]" @click="setGenerate(item)"> <div class="item" :class="[item?.isChecked?'active':'']" v-for="item,index in fileList[productimgMenu.value]" @click="setGenerate(item)" :key="item.id">
<div class="" v-if="item.status == 'uploading'" style="display: flex;align-items: center;"> <div class="" v-if="item.status == 'uploading'" style="display: flex;align-items: center;">
<a-spin size="large" /> <a-spin size="large" />
</div> </div>

View File

@@ -4,12 +4,11 @@
<div class="item" v-show="showMark" :style="likeStyle"> <div class="item" v-show="showMark" :style="likeStyle">
<a-spin size="large" class="content_img_flex"></a-spin> <a-spin size="large" class="content_img_flex"></a-spin>
</div> </div>
<div v-for="item in list" :key="item.id" class="item" <div v-for="item in list" :key="item" class="item"
:style="likeStyle" :style="likeStyle"
@mousedown.stop="designMousedown(getMousePosition($event,false),item.id,'disLike')" @mousedown.stop="designMousedown(getMousePosition($event,false),item.id,'disLike')"
@touchstart.passive="designMousedown(getMousePosition($event,true),item.id,'disLike')" @touchstart.passive="designMousedown(getMousePosition($event,true),item.id,'disLike')"
> >
<img v-if="item.url" <img v-if="item.url"
:class="[isVideo?'video':'']" :class="[isVideo?'video':'']"
@mouseenter.stop="gifPlay($event,item)" @mouseenter.stop="gifPlay($event,item)"

View File

@@ -1785,6 +1785,7 @@ export default defineComponent({
this.isGenerate[selectCodeStr] = false this.isGenerate[selectCodeStr] = false
clearInterval(this.remGenerateTime[selectCodeStr]) clearInterval(this.remGenerateTime[selectCodeStr])
this.remGenerate[selectCodeStr] = false this.remGenerate[selectCodeStr] = false
this.generateList[selectCodeStr] = this.generateList[selectCodeStr].filter((item: any) => item.status !== '')
if(res.errCode === 2){ if(res.errCode === 2){
let this_ = this let this_ = this
Modal.confirm({ Modal.confirm({
@@ -1853,6 +1854,7 @@ export default defineComponent({
} }
} }
).catch(res=>{ ).catch(res=>{
this.generateList[selectCodeStr] = this.generateList[selectCodeStr].filter((item: any) => item.status !== '')
clearInterval(this.generateTime[str]) clearInterval(this.generateTime[str])
clearInterval(this.remGenerateTime[str]) clearInterval(this.remGenerateTime[str])
// this.isShowMark = false // this.isShowMark = false