parent
1fc917ae23
commit
a28750dc52
|
@ -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 {
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue