Files
aida_front/src/component/modules/setBrandDNA.vue

293 lines
6.9 KiB
Vue
Raw Normal View History

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>