2024-05-22 10:45:52 +08:00
|
|
|
<template>
|
|
|
|
|
<a-modal
|
2025-05-28 10:28:07 +08:00
|
|
|
class="setBrandDNA_modal generalModel"
|
|
|
|
|
v-model:visible="setBrandDNA"
|
2024-05-22 10:45:52 +08:00
|
|
|
:footer="null"
|
|
|
|
|
width="50%"
|
|
|
|
|
:maskClosable="false"
|
|
|
|
|
:centered="true"
|
|
|
|
|
:closable="false"
|
2024-12-11 16:26:36 +08:00
|
|
|
:mask="true"
|
2024-05-22 10:45:52 +08:00
|
|
|
:keyboard="false"
|
|
|
|
|
:destroyOnClose="true"
|
2024-12-11 16:26:36 +08:00
|
|
|
:zIndex="1000"
|
2024-05-22 10:45:52 +08:00
|
|
|
>
|
|
|
|
|
<div class="generalModel_btn">
|
|
|
|
|
<div class="generalModel_closeIcon" @click.stop="cancelDsign()">
|
2024-12-11 16:26:36 +08:00
|
|
|
<svg width="46" height="46" viewBox="0 0 46 46" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2025-01-07 17:15:28 +08:00
|
|
|
<circle cx="23" cy="23" r="23" fill="white" fill-opacity="0.3"/>
|
|
|
|
|
<rect x="32.5063" y="12" width="3" height="29" rx="1.5" transform="rotate(45 32.5063 12)" fill="white"/>
|
|
|
|
|
<rect x="34.6274" y="32.5059" width="3" height="29" rx="1.5" transform="rotate(135 34.6274 32.5059)" fill="white"/>
|
|
|
|
|
</svg>
|
|
|
|
|
|
2024-05-22 10:45:52 +08:00
|
|
|
</div>
|
|
|
|
|
</div>
|
2025-05-28 10:28:07 +08:00
|
|
|
<div class="setBrandDNA_content">
|
2024-05-22 10:45:52 +08:00
|
|
|
<div class="modal_title_text">
|
2025-06-26 15:41:08 +08:00
|
|
|
<div>Brand</div>
|
2024-05-22 10:45:52 +08:00
|
|
|
<div class="modal_title_text_intro"></div>
|
|
|
|
|
</div>
|
2025-05-28 10:28:07 +08:00
|
|
|
<div class="setBrandDNA_content_bottom">
|
|
|
|
|
<div class="content_bottom_item" v-for="item in styleList">
|
|
|
|
|
<div class="content_bottom_item_border" :class="{active:item.id == selectStyle.id}" @click="setItemSelect(item)">
|
|
|
|
|
{{ item.brandName}}
|
2024-05-22 10:45:52 +08:00
|
|
|
</div>
|
|
|
|
|
</div>
|
2025-05-28 10:28:07 +08:00
|
|
|
<div v-show="!isNoData" class="material_content_list_loding">
|
|
|
|
|
<span class="page_loading" v-show="!isShowLoading"></span>
|
|
|
|
|
<span v-show="isShowLoading">
|
|
|
|
|
<a-spin size="large" />
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
<img v-show="isNoData && isNull" src="@/assets/images/homePage/null_img.png">
|
2024-05-22 10:45:52 +08:00
|
|
|
</div>
|
2025-05-28 10:28:07 +08:00
|
|
|
<div class="setBrandDNA_ok">
|
2024-06-20 10:36:45 +08:00
|
|
|
<div class="started_btn" @click="setClear()">
|
2024-06-21 10:30:09 +08:00
|
|
|
{{ $t('Habit.Clear') }}
|
2024-06-20 10:36:45 +08:00
|
|
|
</div>
|
2024-06-27 17:37:49 +08:00
|
|
|
<div class="started_btn" @click="setOk()">
|
|
|
|
|
OK
|
|
|
|
|
</div>
|
2024-05-22 10:45:52 +08:00
|
|
|
</div>
|
2024-06-20 10:36:45 +08:00
|
|
|
|
2024-05-22 10:45:52 +08:00
|
|
|
</div>
|
|
|
|
|
</a-modal>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script lang="ts">
|
2025-05-28 10:28:07 +08:00
|
|
|
import { defineComponent,watch,createVNode, h, ref ,toRefs,onMounted,reactive,triggerRef, nextTick} from "vue";
|
2024-06-20 10:36:45 +08:00
|
|
|
import { message,Modal } from "ant-design-vue";
|
|
|
|
|
import { LoadingOutlined ,ExclamationCircleOutlined} from "@ant-design/icons-vue";
|
|
|
|
|
|
2024-05-22 10:45:52 +08:00
|
|
|
import { Https } from "@/tool/https";
|
|
|
|
|
// import domTurnImg from '@/tool/domTurnImg'
|
|
|
|
|
import { downloadIamge } from "@/tool/util";
|
2024-06-21 10:30:09 +08:00
|
|
|
import { useI18n } from "vue-i18n";
|
2024-05-22 10:45:52 +08:00
|
|
|
export default defineComponent({
|
2025-05-28 10:28:07 +08:00
|
|
|
emits:['setWorkspaceBrandDNA'],
|
2025-04-01 15:25:15 +08:00
|
|
|
props:{
|
|
|
|
|
},
|
2024-05-22 10:45:52 +08:00
|
|
|
setup(props,{emit}) {
|
2025-05-28 10:28:07 +08:00
|
|
|
let setBrandDNA: any = ref(false);//弹窗
|
|
|
|
|
let setBrandDNAMask:any = ref(false)//弹窗遮罩
|
2024-06-20 10:36:45 +08:00
|
|
|
let oldDataId = ''
|
2025-05-28 10:28:07 +08:00
|
|
|
let setBrandDNAData:any = reactive({
|
2024-05-22 10:45:52 +08:00
|
|
|
styleList:[],
|
2024-06-17 09:39:01 +08:00
|
|
|
selectStyle:{
|
|
|
|
|
name:'',
|
|
|
|
|
id:'',
|
|
|
|
|
},
|
2025-05-28 10:28:07 +08:00
|
|
|
isNoData:false,
|
|
|
|
|
isShowLoading:false,
|
|
|
|
|
isNull:false,
|
|
|
|
|
page:1,
|
|
|
|
|
size:10,
|
|
|
|
|
observer:null,
|
2024-05-22 10:45:52 +08:00
|
|
|
})
|
2024-06-21 10:30:09 +08:00
|
|
|
const {t} = useI18n()
|
2024-05-22 10:45:52 +08:00
|
|
|
let getStyleList = ()=>{
|
2025-05-28 10:28:07 +08:00
|
|
|
let data = {
|
|
|
|
|
page:setBrandDNAData.page,
|
|
|
|
|
size:setBrandDNAData.size,
|
|
|
|
|
}
|
|
|
|
|
setBrandDNAData.isShowLoading = true
|
|
|
|
|
Https.axiosPost( Https.httpUrls.brandDNAPage, data).then(
|
2024-05-22 10:45:52 +08:00
|
|
|
(rv) => {
|
2025-05-28 10:28:07 +08:00
|
|
|
if(data.page == 1 && rv.content.length == 0){
|
|
|
|
|
setBrandDNAData.isNull = true
|
|
|
|
|
}else{
|
|
|
|
|
setBrandDNAData.isNull = false
|
|
|
|
|
}
|
|
|
|
|
if (rv.content.length > 0) {
|
|
|
|
|
setBrandDNAData.isNull = false
|
|
|
|
|
setBrandDNAData.styleList.push(...rv.content)
|
|
|
|
|
} else {
|
|
|
|
|
setBrandDNAData.isNoData = true
|
|
|
|
|
}
|
|
|
|
|
setBrandDNAData.isShowLoading = false
|
2024-05-22 10:45:52 +08:00
|
|
|
}
|
|
|
|
|
).catch(res=>{
|
2025-05-28 10:28:07 +08:00
|
|
|
setBrandDNAData.isShowMark = false
|
|
|
|
|
if(data.page == 1){
|
|
|
|
|
setBrandDNAData.isNull = true
|
|
|
|
|
}
|
|
|
|
|
setBrandDNAData.isNoData = true
|
2024-05-22 10:45:52 +08:00
|
|
|
});
|
|
|
|
|
}
|
2025-05-28 10:28:07 +08:00
|
|
|
let setPorfolioDom = ()=>{
|
|
|
|
|
setBrandDNAData.observer = new IntersectionObserver(
|
|
|
|
|
(entries, observer) => {
|
|
|
|
|
// 如果不是相交,则直接返回
|
|
|
|
|
if (!entries[0].intersectionRatio) return;
|
|
|
|
|
getStyleList()
|
|
|
|
|
console.log(123)
|
|
|
|
|
setBrandDNAData.page += 1
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
}
|
2024-06-17 09:39:01 +08:00
|
|
|
let init = (data:any)=>{
|
2025-05-28 10:28:07 +08:00
|
|
|
setBrandDNA.value = true
|
|
|
|
|
oldDataId = data.userBrandDna
|
|
|
|
|
setBrandDNAData.selectStyle.id = data.userBrandDna
|
|
|
|
|
nextTick(()=>{
|
|
|
|
|
let imgParent:any = document.querySelector('.setBrandDNA_modal .material_content_list_loding .page_loading')
|
|
|
|
|
setBrandDNAData.observer.observe(imgParent)
|
|
|
|
|
})
|
2024-05-22 10:45:52 +08:00
|
|
|
}
|
|
|
|
|
let setCover = (item:any)=>{
|
2025-05-28 10:28:07 +08:00
|
|
|
setBrandDNAData.subPublishDate.coverId = item.designOutfitId
|
|
|
|
|
setBrandDNAData.selectDate.url = item.url
|
2024-05-22 10:45:52 +08:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
let cleardata = ()=>{
|
2025-05-28 10:28:07 +08:00
|
|
|
setBrandDNA.value = false
|
|
|
|
|
setBrandDNAData.observer.disconnect();
|
2024-05-22 10:45:52 +08:00
|
|
|
}
|
|
|
|
|
let cancelDsign = ()=>{
|
|
|
|
|
cleardata()
|
|
|
|
|
}
|
|
|
|
|
let setOk= ()=>{
|
2024-06-20 10:36:45 +08:00
|
|
|
let data = {
|
2025-05-28 10:28:07 +08:00
|
|
|
id:setBrandDNAData.selectStyle.id,
|
|
|
|
|
name:setBrandDNAData.selectStyle.name,
|
|
|
|
|
img:setBrandDNAData.selectStyle.img,
|
2024-06-20 10:36:45 +08:00
|
|
|
isRevampModel:false,
|
|
|
|
|
}
|
|
|
|
|
if(oldDataId == data.id){
|
|
|
|
|
cleardata()
|
|
|
|
|
}else{
|
2025-05-28 10:28:07 +08:00
|
|
|
emit('setWorkspaceBrandDNA',data)
|
2025-04-01 15:25:15 +08:00
|
|
|
cleardata()
|
2024-06-20 10:36:45 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
let setClear = ()=>{
|
2025-05-28 10:28:07 +08:00
|
|
|
setBrandDNAData.selectStyle.id = ''
|
|
|
|
|
setBrandDNAData.selectStyle.name = ''
|
|
|
|
|
setBrandDNAData.selectStyle.img = ''
|
2024-05-22 10:45:52 +08:00
|
|
|
}
|
|
|
|
|
let setItemSelect = (item:any)=>{
|
2025-05-28 10:28:07 +08:00
|
|
|
setBrandDNAData.selectStyle.id = item.id
|
|
|
|
|
setBrandDNAData.selectStyle.name = item.brandName
|
|
|
|
|
setBrandDNAData.selectStyle.img = item.minioUrl
|
2024-05-22 10:45:52 +08:00
|
|
|
}
|
2025-05-28 10:28:07 +08:00
|
|
|
onMounted(()=>{
|
|
|
|
|
setBrandDNAData.isShowLoading = false
|
|
|
|
|
setBrandDNAData.isNoData = false
|
|
|
|
|
setPorfolioDom()
|
|
|
|
|
})
|
2024-05-22 10:45:52 +08:00
|
|
|
return {
|
2025-05-28 10:28:07 +08:00
|
|
|
setBrandDNA,
|
|
|
|
|
setBrandDNAMask,
|
|
|
|
|
...toRefs(setBrandDNAData),
|
2024-05-22 10:45:52 +08:00
|
|
|
init,
|
|
|
|
|
setCover,
|
|
|
|
|
cancelDsign,
|
|
|
|
|
setItemSelect,
|
|
|
|
|
setOk,
|
2024-06-20 10:36:45 +08:00
|
|
|
setClear,
|
2024-05-22 10:45:52 +08:00
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
// moodTemplateId: "", //模板id
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
directives:{
|
|
|
|
|
},
|
|
|
|
|
mounted() {
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="less">
|
2025-05-28 10:28:07 +08:00
|
|
|
.setBrandDNA_modal {
|
2024-06-17 09:39:01 +08:00
|
|
|
&.generalModel{
|
|
|
|
|
.ant-modal-body {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-05-28 10:28:07 +08:00
|
|
|
.setBrandDNA_content{
|
2024-05-22 10:45:52 +08:00
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
height: 100%;
|
2025-05-28 10:28:07 +08:00
|
|
|
.setBrandDNA_content_bottom{
|
2024-05-22 10:45:52 +08:00
|
|
|
--border-color: #c4c4c4;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex: 1;
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
align-content: flex-start;
|
2025-05-28 10:28:07 +08:00
|
|
|
> .material_content_list_loding{
|
|
|
|
|
text-align: center;
|
|
|
|
|
height: 50px;
|
|
|
|
|
width: 100%;
|
|
|
|
|
.page_loading{
|
|
|
|
|
display: block;
|
|
|
|
|
width: 50px;
|
|
|
|
|
height: 50px;
|
|
|
|
|
margin: 0 auto;
|
|
|
|
|
}
|
|
|
|
|
img{
|
|
|
|
|
height: calc(10rem*1.2);
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-05-22 10:45:52 +08:00
|
|
|
.content_bottom_item{
|
|
|
|
|
width: calc((100% / 4) - (.8 * 1rem));
|
|
|
|
|
// width: calc(100% / 4);
|
|
|
|
|
// padding: 0 1rem;
|
|
|
|
|
border-radius: 2rem;
|
|
|
|
|
margin-right: 1rem;
|
|
|
|
|
margin-bottom: 1rem;
|
|
|
|
|
height: 10rem;
|
|
|
|
|
background: #f3f3f3;
|
|
|
|
|
position: relative;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
.content_bottom_item_border {
|
|
|
|
|
position: absolute;
|
|
|
|
|
inset: .2rem;
|
|
|
|
|
background: #f3f3f3;
|
|
|
|
|
border-radius: 2rem;
|
|
|
|
|
color: #595959;
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
font-size: 2rem;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
align-items: center;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.content_bottom_item:nth-child(4n){
|
|
|
|
|
margin-right: 0rem;
|
|
|
|
|
}
|
|
|
|
|
.content_bottom_item::before {
|
|
|
|
|
content: '';
|
|
|
|
|
position: absolute;
|
|
|
|
|
width: calc(100% + .2rem);
|
|
|
|
|
height: calc(100% + .2rem);
|
|
|
|
|
top: 50%;
|
|
|
|
|
left: 50%;
|
|
|
|
|
border-radius: 2rem;
|
|
|
|
|
transform: translate(-50%, -50%);
|
2025-04-09 14:09:19 +08:00
|
|
|
background: radial-gradient(50px circle at var(--x) var(--y),#000 0,transparent 100%);;
|
2024-05-22 10:45:52 +08:00
|
|
|
}
|
|
|
|
|
.content_bottom_item .active{
|
2025-04-09 14:09:19 +08:00
|
|
|
background: #000;
|
2024-05-22 10:45:52 +08:00
|
|
|
color: #fff;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-05-28 10:28:07 +08:00
|
|
|
.setBrandDNA_ok{
|
2024-05-22 10:45:52 +08:00
|
|
|
width: 60%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
margin: 0 auto;
|
2024-06-20 10:36:45 +08:00
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-around;
|
|
|
|
|
>div{
|
|
|
|
|
width: 40%;
|
|
|
|
|
}
|
2024-05-22 10:45:52 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
</style>
|