feat: 首次提交

This commit is contained in:
peerless_hero
2023-08-17 21:28:49 +08:00
parent 36f80fb971
commit ec1e5e16cd
571 changed files with 95322 additions and 0 deletions

View File

@ -0,0 +1,230 @@
<!--本文件由FirstUI授权予新疆天衡创新研究院有限公司手机号 18 6 1 4 07 254 9身份证尾号5A07X5专用请尊重知识产权勿私下传播违者追究法律责任-->
<template>
<view class="fui-filter__bar-wrap" :style="{height:height+'rpx',background:background}">
<view class="fui-filter__bar-item" :style="{height:height+'rpx'}" @tap.stop="handleClick(index)"
v-for="(item,index) in itemList" :key="index">
<text class="fui-filter__bar-text" :class="{'fui-fb__text-hidden':item.text.length>4}"
:style="{fontSize:size+'rpx',lineHeight:size+'rpx',color:item.value?activeColor:color}"
v-if="item.type!=='switch'">{{item.text}}</text>
<view v-if="item.type==='dropdown'" class="fui-filter__bar-icon"
:class="{'fui-fb__icon-rotate':item.active}">
<fui-icon name="arrowdown" :color="item.value?activeColor:color" :size="item.size || 32"></fui-icon>
</view>
<fui-icon name="screen" :size="item.size || 28" :color="item.value?activeColor:color"
v-if="item.type==='filter'"></fui-icon>
<!-- #ifndef APP-NVUE -->
<fui-icon v-if="item.type==='switch'" :name="item.switch===1?'classify':'list'"
:size="item.size || (item.switch===1?46:60)" :color="item.active?activeColor:color"></fui-icon>
<!-- #endif -->
<!-- #ifdef APP-NVUE -->
<fui-icon v-if="item.type==='switch'" :name="item.switch===1?'classify':'list'" :size="item.size || 48"
:color="item.active?activeColor:color"></fui-icon>
<!-- #endif -->
<fui-icon v-if="item.type==='sort'" :name="item.sort===1?'turningup':'turningdown'"
:color="item.value?activeColor:color" :size="item.size || 28"></fui-icon>
</view>
<view class="fui-filter__bar-line" v-if="isLine" :style="{background:lineColor}"></view>
</view>
</template>
<script>
//非easycom模式取消注释引入字体组件按实际路径进行调整
// import fuiIcon from "@/components/firstui/fui-icon/fui-icon.vue"
export default {
name: "fui-filter-bar",
emits: ['change'],
// components:{
// fuiIcon
// },
props: {
items: {
type: Array,
default () {
return []
}
},
coexist: {
type: Boolean,
default: false
},
height: {
type: [Number, String],
default: 88
},
background: {
type: String,
default: '#fff'
},
isLine: {
type: Boolean,
default: true
},
lineColor: {
type: String,
default: '#eee'
},
color: {
type: String,
default: '#7F7F7F'
},
activeColor: {
type: String,
default: '#181818'
},
size: {
type: [Number, String],
default: 28
}
},
watch: {
items(val) {
this.itemList = val
}
},
data() {
return {
itemList: []
};
},
created() {
this.itemList = this.items
},
methods: {
handleData(index) {
this.itemList.forEach((item, idx) => {
if (index !== idx && item.type !== 'filter' && item.type !== 'switch') {
if (item.type === 'sort') {
item.sort = 1;
}
item.active = false;
item.value = ''
}
})
},
handleClick(index) {
//dropdown、filter需要设置value来确定是否选中
let item = this.itemList[index]
//dropdown、text、switch、sort、filter
let type = item.type;
if (type === 'dropdown') {
this.$set(item, 'active', !item.active);
item.value && !this.coexist && this.handleData(index);
} else if (type === 'text') {
if (!this.coexist) {
if (item.active) return;
this.$set(item, 'active', true);
this.$set(item, 'value', item.text);
this.handleData(index);
} else {
if (item.active) {
this.$set(item, 'active', false);
this.$set(item, 'value', '');
} else {
this.$set(item, 'active', true);
this.$set(item, 'value', item.text);
}
}
} else if (type === 'switch') {
this.$set(item, 'switch', item.switch === 2 ? 1 : 2);
this.$set(item, 'active', false);
} else if (type === 'sort') {
//初次选中时为升序
if (item.value && item.sort) {
this.$set(item, 'sort', item.sort === 2 ? 1 : 2);
} else {
this.$set(item, 'sort', 1);
}
this.$set(item, 'value', item.sort === 1 ? 'asc' : 'desc');
!this.coexist && this.handleData(index);
}
setTimeout(() => {
this.$emit('change', {
index: index,
items: this.itemList
})
}, 0)
}
}
}
</script>
<style scoped>
.fui-filter__bar-wrap {
/* #ifndef APP-NVUE */
width: 100%;
display: flex;
/* #endif */
flex-direction: row;
align-items: center;
justify-content: space-between;
position: relative;
}
.fui-filter__bar-line {
position: absolute;
left: 0;
right: 0;
bottom: 0;
/* #ifdef APP-NVUE */
height: 0.5px;
z-index: -1;
/* #endif */
/* #ifndef APP-NVUE */
height: 1px;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
transform-origin: 0 100%;
z-index: 1;
pointer-events: none;
/* #endif */
}
.fui-filter__bar-item {
flex: 1;
/* #ifndef APP-NVUE */
display: flex;
flex-shrink: 0;
box-sizing: border-box;
/* #endif */
flex-direction: row;
align-items: center;
justify-content: center;
font-weight: normal;
/* #ifdef H5 */
cursor: pointer;
/* #endif */
overflow: hidden;
padding: 0 24rpx;
}
.fui-filter__bar-text {
/* #ifdef APP-NVUE */
lines: 1;
/* #endif */
/* #ifndef APP-NVUE */
white-space: nowrap;
display: block;
max-width: 90%;
/* #endif */
overflow: hidden;
text-overflow: ellipsis;
text-align: center;
}
/* #ifdef APP-NVUE */
.fui-fb__text-hidden {
flex: 1;
}
/* #endif */
.fui-filter__bar-icon {
transition: transform 0.25s;
transform: rotate(0deg);
}
.fui-fb__icon-rotate {
transform: rotate(180deg);
}
</style>