2025-04-01 09:03:51 +08:00

133 lines
3.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="JQ-orderBy justify-center">
<view class="flex" v-for="(item,index) in sortList" @click="change(index)" :key="index">
<text :style="{paddingRight: '10rpx',fontSize:size*2+'rpx',color:textColor}">{{item.text}}</text>
<view class="flex_col_bet">
<!-- #ifdef H5 -->
<svg t="1693467068237" class="icon" viewBox="0 0 1024 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="5600" :width="size" :height="size"
v-for="(ite,ind) in item.value" :style="ind==1? 'transform: rotate(180deg)':''"
v-if="sortType=='one'?(sortIndex==index?ind==sortArrIndex:ind==sortDefArrIndex):true">
<path d="M512 187.24L699.501 512 887 836.76H137L324.5 512z" p-id="5601"
:fill="sortIndex==index&&ind==sortArrIndex?sortStyle[0]:sortStyle[1]">
</path>
</svg>
<!-- #endif -->
<!-- #ifdef APP-PLUS || MP -->
<image v-for="(ite,ind) in item.value"
:style="{transform: ind==1? 'rotate(180deg)':'',width:32+'rpx',height:20+'rpx'}"
v-if="sortType=='one'?(sortIndex==index?ind==sortArrIndex:ind==sortDefArrIndex):true"
:src="sortIndex==index&&ind==sortArrIndex?'../../static/image/triangle-light.png':'../../static/image/triangle.png'"
mode=""></image>
<!-- #endif -->
</view>
</view>
</view>
</template>
<script>
/**
* JQ-orderBy 条件选择-排序
* @description 条件选择,升序降序
* @tutorial https://ext.dcloud.net.cn/plugin?id=14392
* @property {Number|String} sortDefIndex 默认选择的条件列表下标
* @property {Array} sortList 条件列表,举例:[{text: '按照价格排序',value: ['acs', 'desc'],}, {text: '按照编号排序',value: ['acs', 'desc'],}] value设置单项选择后的输出结果
* @@param {type} = [value]
* @property {Number|String} sortDefArrIndex 默认排序类型0 升序1降序
* @property {String} sortType 样式选择:默认两个箭头样式,'one'显示一个箭头
* @property {Array} sortStyle 箭头颜色:[0]高亮色 「仅H5支持」
* @property {Number|String} size 字体和箭头大小
* @property {String} textColor 字体颜色
* @event {Function} switchSort 选中发生变化触发
* @parameter 返回当前选择条件列表下标
* @parameter 返回当前条件下的排序value
*/
export default {
name: "JQ-orderBy",
props: {
sortDefIndex: {
type: [Number, String],
default: 0
},
sortList: {
type: Array,
default () {
return [{
text: '按照价格排序',
value: ['acs', 'desc'],
}, {
text: '按照编号排序',
value: ['acs', 'desc'],
}]
}
},
sortDefArrIndex: {
type: [Number, String],
default: 0
},
sortType: {
type: String,
default: ''
},
sortStyle: {
type: Array,
default () {
return ['#06EFA3', '#A6A6A6']
}
},
size: {
type: [Number, String],
default: 12
},
textColor: {
type: String,
default: '#4B4B4B'
}
},
data() {
return {
sortArrIndex: this.sortDefArrIndex,
sortIndex: this.sortDefIndex
};
},
created() {},
methods: {
change(index) {
if (this.sortIndex == index) {
this.sortArrIndex = (this.sortArrIndex ? 0 : 1)
} else {
this.sortIndex = index
this.sortArrIndex = this.sortDefArrIndex
}
// (返回当前选择条件列表下标,返回当前条件下的排序value)
this.$emit('switchSort', index, this.sortList[index].value[this.sortArrIndex])
}
}
}
</script>
<style lang="scss">
.JQ-orderBy {
width: 100%;
.flex {
display: flex;
justify-content: space-between;
align-items: center;
margin-right: 60rpx;
}
.flex_col_bet {
display: flex;
flex-direction: column;
justify-content: space-between;
flex-wrap: wrap;
}
}
.justify-center{
display: flex;
justify-content: center;
align-items: center;
}
</style>