Files
aida_front/src/component/HomePage/sketchCategory.vue

250 lines
5.0 KiB
Vue
Raw Normal View History

<template>
<div class="operate_file_block">
<div class="select_img_type">
<div
class="select_category"
2024-04-25 15:08:43 +08:00
:class="driverClass.class1"
@click.stop="showFileCategory(item)"
>
2025-06-03 14:57:18 +08:00
{{ item.category || item?.level2TypeEnum?.value }}
<div
2024-06-17 09:39:01 +08:00
v-show="!isSpread"
:class="[
'icon',
'iconfont',
'icon-xiala',
item.categoryShow
? 'icon_rotate'
: '',
]"
></div>
</div>
<div
class="category_list"
v-show="item.categoryShow"
2024-06-17 09:39:01 +08:00
v-if="!isSpread"
2024-08-14 16:02:55 +08:00
:class="[driver__?'showEvents':'',driverClass.class2]"
>
<div
:class="[
'category_item',
2024-06-24 09:47:59 +08:00
item.categoryValue == cate.value
? 'select_category_item'
: '',
]"
v-for="(
cate, index
) in disignTypeList"
:key="index"
2024-06-01 10:02:21 +08:00
@click.stop="
selectFileCategory(
item,
cate
)
"
>
{{ cate.name }}
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
2025-02-17 09:34:28 +08:00
import { defineComponent,ref ,nextTick, computed,watch, onMounted} from "vue";
import { Https } from "@/tool/https";
import { openGuide,driverObj__ } from "@/tool/guide";
export default defineComponent({
name:'filterComponent',
2024-06-17 09:39:01 +08:00
emits:['upTypeSucced'],
props:{
disignTypeList:{
2024-06-17 09:39:01 +08:00
type:Object,
default:{}
},
item:{
type:Object
},
generateList:{
type:Array
},
allCategory:{
type:Array,
default:[]
},
isSetSketchCategory:{
type:Boolean,
default:false,
},
2025-07-19 14:04:48 +08:00
upDataType:{
type:String,
default:'library',
},
2024-06-17 09:39:01 +08:00
isSpread:{
type:Boolean,
default:false,
},
driver__:{
type:Boolean,
default:false,
2024-04-25 15:08:43 +08:00
},
driverClass:{
type:Object,
default:{class1:'',class2:''},
}
},
2024-06-17 09:39:01 +08:00
setup(props:any,{emit}){
let data = ''
let showFileCategory = (file:any)=> {
nextTick().then(()=>{
2024-04-25 15:08:43 +08:00
if(props.driver__){
driverObj__.moveNext()
}
})
2024-08-14 16:02:55 +08:00
if(props.isSpread)return
file.categoryShow = true;
document.addEventListener("click", hiddenFileCategory);
}
let hiddenFileCategory = () => {
for (let item of props.generateList) {
item.categoryShow = false;
}
document.removeEventListener("click", hiddenFileCategory);
}
let selectFileCategory = (file: any, cate: any) => {
for (let item of props.generateList) {
item.categoryShow = false;
}
file.level2Type = cate.value;
2024-06-24 09:47:59 +08:00
file.categoryValue = cate.value;
file.category = cate.name;
if(props.isSetSketchCategory){
setSketchLibrary(props.item)
}
// this.store.commit("sketchGenerateFiles", this.fileList);
}
let setSketchLibrary = (item:any)=>{
2024-06-17 09:39:01 +08:00
2025-07-19 14:04:48 +08:00
if(props.upDataType == 'element'){
let data = {
elementId:item.id,
level2Type:item.categoryValue,
}
Https.axiosGet(Https.httpUrls.updateElementLevel2Type,{params:data}).then(
(rv: any) => {
emit('upTypeSucced')
}
).catch((res)=>{
});
}else{
let data = {
libraryId:[item.id],
level2Type:item.categoryValue,
}
Https.axiosPost(Https.httpUrls.setSketchLibrary,data).then(
(rv: any) => {
emit('upTypeSucced')
}
).catch((res)=>{
});
}
}
const getCategory = (item)=>{
}
2025-02-17 09:34:28 +08:00
onMounted(()=>{
if(!props.item.category || !props.item.categoryValue){
let arr = props.allCategory || props.catecoryList
arr.forEach((item:any) => {
2025-02-17 09:34:28 +08:00
if(item.value == props.item.level2Type){
props.item.category = item.name
props.item.categoryValue = item.value
}
});
}
})
return {
showFileCategory,
selectFileCategory,
}
},
});
</script>
2024-06-02 20:35:24 +08:00
<style lang="less" scoped>
//衣服类型下拉菜单
.operate_file_block{
width: 100%;
height: 3rem;
font-size: 1.6rem;
color: #FFFFFF;
position: absolute;
left: 0;
bottom: 0;
.select_img_type{
height: 100%;
line-height: 3rem;
text-align: center;
background: rgba(0,0,0,0.6);
position: relative;
overflow: initial !important;
.select_category{
display: flex;
align-items: center;
justify-content: center;
.icon-xiala{
margin-left: 0.8rem;
}
}
.icon_rotate{
-moz-transform:rotate(180deg);
-webkit-transform:rotate(180deg);
transform: rotate(180deg);
animation-direction: 0.5s;
}
.category_list{
position: absolute;
width: 100%;
cursor: pointer;
position: absolute;
// top: 3.1rem;
margin-top: .2rem;
left: 0;
// background: rgba(0,0,0,0.4);
background-color: rgb(177 177 177);
2025-06-03 14:57:18 +08:00
border: 1px solid #000;
border-radius: 0.8rem;
// overflow: hidden;
z-index: 3;
height: 9rem;
overflow-x: hidden;
&.category_list::-webkit-scrollbar{display: none;}
.category_item{
text-align: left;
font-size: 1.4rem;
padding: 1rem 1.5rem;
line-height: 1.6rem;
font-weight: 600;
color: #595959;
&.select_category_item{
background: linear-gradient(-137deg, #eeefdb, #e7dbed);
}
&:hover{
background: linear-gradient(-137deg, #eeefdb, #e7dbed);
}
}
}
}
}
</style>