|
|
@@ -0,0 +1,121 @@
|
|
|
+<template>
|
|
|
+ <div class="list-filter-container">
|
|
|
+ <el-select
|
|
|
+ class="select"
|
|
|
+ size="small"
|
|
|
+ v-model="assignment"
|
|
|
+ @change="handleFilterChange">
|
|
|
+ <el-option
|
|
|
+ v-for="item in assignmentOptions"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ <el-select
|
|
|
+ class="select"
|
|
|
+ size="small"
|
|
|
+ v-model="status"
|
|
|
+ @change="handleFilterChange"
|
|
|
+ style="margin-left: 10px">
|
|
|
+ <el-option
|
|
|
+ v-for="item in statusOptions"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ <el-select
|
|
|
+ class="select"
|
|
|
+ size="small"
|
|
|
+ v-model="sort"
|
|
|
+ style="margin-left: auto"
|
|
|
+ @change="handleFilterChange">
|
|
|
+ <el-option
|
|
|
+ v-for="item in sortOptions"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+export default {
|
|
|
+ name: 'ListFilter',
|
|
|
+ props: {
|
|
|
+ assignmentOptions: {
|
|
|
+ type: Array,
|
|
|
+ default() {
|
|
|
+ return [{
|
|
|
+ value: 0,
|
|
|
+ label: '全部',
|
|
|
+ }, {
|
|
|
+ value: 1,
|
|
|
+ label: '分配到我',
|
|
|
+ }];
|
|
|
+ },
|
|
|
+ },
|
|
|
+ statusOptions: {
|
|
|
+ type: Array,
|
|
|
+ default() {
|
|
|
+ return [{
|
|
|
+ value: 0,
|
|
|
+ label: '全部状态',
|
|
|
+ }, {
|
|
|
+ value: 1,
|
|
|
+ label: '已完成',
|
|
|
+ }, {
|
|
|
+ value: 2,
|
|
|
+ label: '进行中',
|
|
|
+ }];
|
|
|
+ },
|
|
|
+ },
|
|
|
+ sortOptions: {
|
|
|
+ type: Array,
|
|
|
+ default() {
|
|
|
+ return [{
|
|
|
+ value: 0,
|
|
|
+ label: '默认排序',
|
|
|
+ }, {
|
|
|
+ value: 1,
|
|
|
+ label: '创建时间',
|
|
|
+ }, {
|
|
|
+ value: 2,
|
|
|
+ label: '优先级',
|
|
|
+ }];
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ assignment: 0,
|
|
|
+ status: 0,
|
|
|
+ sort: 0,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ handleFilterChange() {
|
|
|
+ this.$emit('filter-change', {
|
|
|
+ assignment: this.assignment,
|
|
|
+ status: this.status,
|
|
|
+ sort: this.sort,
|
|
|
+ });
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.list-filter-container{
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ justify-content: start;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+.select{
|
|
|
+ width: 130px;
|
|
|
+}
|
|
|
+</style>
|