UP scFilterBar 2.6

1:修复下拉选项丢失
2:增加自定义日期过滤类型
3:增加是否重复过滤
This commit is contained in:
sc 2023-02-07 14:11:35 +08:00
parent 1fc917ae23
commit a28750dc52
3 changed files with 36 additions and 12 deletions

View File

@ -1,10 +1,10 @@
<!-- <!--
* @Descripttion: 过滤器V2 * @Descripttion: 过滤器V2
* @version: 2.5 * @version: 2.6
* @Author: sakuya * @Author: sakuya
* @Date: 2021年7月30日14:48:41 * @Date: 2021年7月30日14:48:41
* @LastEditors: sakuya * @LastEditors: sakuya
* @LastEditTime: 2022年5月13日21:15:44 * @LastEditTime: 2023年2月7日09:46:45
--> -->
<template> <template>
@ -39,10 +39,10 @@
</colgroup> </colgroup>
<tr v-for="(item,index) in filter" :key="index"> <tr v-for="(item,index) in filter" :key="index">
<td> <td>
<el-tag>{{index+1}}</el-tag> <el-tag :disable-transitions="true">{{index+1}}</el-tag>
</td> </td>
<td> <td>
<py-select v-model="item.field" :options="fields" placeholder="过滤字段" filterable @change="fieldChange(item)"> <py-select v-model="item.field" :options="fields" :filter="filter" placeholder="过滤字段" filterable @change="fieldChange(item)">
</py-select> </py-select>
</td> </td>
<td v-if="showOperator"> <td v-if="showOperator">
@ -66,6 +66,8 @@
<el-date-picker v-if="item.field.type=='datetime'" v-model="item.value" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" :placeholder="item.field.placeholder||'请选择日期'" style="width: 100%;"></el-date-picker> <el-date-picker v-if="item.field.type=='datetime'" v-model="item.value" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" :placeholder="item.field.placeholder||'请选择日期'" style="width: 100%;"></el-date-picker>
<!-- 日期时间范围 --> <!-- 日期时间范围 -->
<el-date-picker v-if="item.field.type=='datetimerange'" v-model="item.value" type="datetimerange" value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="开始日期" end-placeholder="结束日期" style="width: 100%;"></el-date-picker> <el-date-picker v-if="item.field.type=='datetimerange'" v-model="item.value" type="datetimerange" value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="开始日期" end-placeholder="结束日期" style="width: 100%;"></el-date-picker>
<!-- 自定义日期 -->
<el-date-picker v-if="item.field.type=='customDate'" v-model="item.value" :type="item.field.extend.dateType||'date'" :value-format="item.field.extend.valueFormat" :placeholder="item.field.placeholder||'请选择'" start-placeholder="开始日期" end-placeholder="结束日期" style="width: 100%;"></el-date-picker>
<!-- 开关 --> <!-- 开关 -->
<el-switch v-if="item.field.type=='switch'" v-model="item.value" active-value="1" inactive-value="0"></el-switch> <el-switch v-if="item.field.type=='switch'" v-model="item.value" active-value="1" inactive-value="0"></el-switch>
<!-- 标签 --> <!-- 标签 -->
@ -156,11 +158,13 @@
}, },
// //
addFilter(){ addFilter(){
if(this.fields.length<=0){ //
var filterArr = this.fields.filter(field => !this.filter.some(item => field.value == item.field.value && !item.field.repeat))
if(this.fields.length<=0 || filterArr.length<=0){
this.$message.warning('无过滤项'); this.$message.warning('无过滤项');
return false return false
} }
const filterNum = this.fields[this.filter.length] || this.fields[0] const filterNum = filterArr[0]
this.filter.push({ this.filter.push({
field: filterNum, field: filterNum,
operator: filterNum.operator || 'include', operator: filterNum.operator || 'include',
@ -196,8 +200,9 @@
}, },
// //
async remoteMethod(query, item){ async remoteMethod(query, item){
//request if(!item.field.extend.request) {
if(!item.field.extend.request) return; return false;
}
if(query !== ''){ if(query !== ''){
item.selectLoading = true; item.selectLoading = true;
try { try {

View File

@ -9,7 +9,7 @@
<template> <template>
<el-select v-bind="$attrs" :filter-method="filterMethod" @visible-change="visibleChange"> <el-select v-bind="$attrs" :filter-method="filterMethod" @visible-change="visibleChange">
<el-option v-for="field in optionsList" :key="field.value" :label="field.label" :value="field"></el-option> <el-option v-for="field in optionsList" :key="field.value" :label="field.label" :value="field" :disabled="isDisabled(field.value)"></el-option>
</el-select> </el-select>
</template> </template>
@ -18,7 +18,8 @@
export default { export default {
props: { props: {
options: { type: Array, default: () => [] } options: { type: Array, default: () => [] },
filter: { type: Array, default: () => [] }
}, },
data() { data() {
return { return {
@ -45,6 +46,13 @@
if(isopen){ if(isopen){
this.optionsList = this.optionsList_ this.optionsList = this.optionsList_
} }
},
isDisabled(key){
if(this.filter.find(item => item.field.value == key && !item.field.repeat)){
return true
}else{
return false
}
} }
} }
} }

View File

@ -133,9 +133,10 @@
] ]
}, },
{ {
label: '开关', label: '开关(可重复)',
value: 'switch', value: 'switch',
type: 'switch', type: 'switch',
repeat: true,
operator: '=' operator: '='
}, },
{ {
@ -158,6 +159,16 @@
label: '日期范围', label: '日期范围',
value: 'date2', value: 'date2',
type: 'daterange' type: 'daterange'
},
{
label: '自定义日期',
value: 'date3',
type: 'customDate',
placeholder: '请选择月份',
extend: {
dateType: 'month',
valueFormat: 'YYYY-MM'
}
} }
] ]
} }