lrf402788946 4 tahun lalu
induk
melakukan
af835ea0a3
3 mengubah file dengan 40 tambahan dan 23 penghapusan
  1. 5 2
      components/filter-page-table.md
  2. 34 20
      components/filter-page-table.vue
  3. 1 1
      config/menu-config.js

+ 5 - 2
components/filter-page-table.md

@@ -1,5 +1,4 @@
-# 组件文档说明
-## data-table.vue
+## filter-page-table.vue
 #### prop
 |参数|类型|默认值|是否必填|说明|
 |:-:|:-:|:-:|:-:|:-:|
@@ -27,6 +26,9 @@
 |filter|String|`-`|否|如果填写,则这个字段会查询,这里只填写类型,input/select,select的选项在options插槽中使用|
 |selected|Array|`-`|false|多选选项的数据|
 |showTip|Boolean|false|否|是否使用tooltip显示过长内容|
+|filterReturn|Boolean|`-`|否|针对这个选项需要在选择后就做些逻辑处理时,改成true,然后再使用filterReturn方法处理,(例如二级联动的情况)|
+|notable|Boolean|false/undefined|否|不需要在表格中显示|
+|selected|Array|`-`|false|多选选项的数据|
 
 >opera
 >>
@@ -45,3 +47,4 @@
 |:-:|:-:|:-:|
 |handleSelect|Array[object]|返回选择的内容|
 |query|{skip,limit,...info}|分页查询,及条件查询|
+|filterReturn|{data,prop}|查询条件栏过滤条件中filterReturn字段为true的回调方法|

+ 34 - 20
components/filter-page-table.vue

@@ -3,7 +3,15 @@
     <el-form :model="searchInfo" :inline="true" style="padding:0.9rem 1.875rem ;" size="mini" v-if="useFilter">
       <el-form-item v-for="(item, index) in filterList" :key="index">
         <template v-if="item.filter === 'select'">
-          <el-select v-model="searchInfo[item.prop]" size="mini" clearable filterable :placeholder="`请选择${item.label}`" @clear="toClear(item.prop)">
+          <el-select
+            v-model="searchInfo[item.prop]"
+            size="mini"
+            clearable
+            filterable
+            :placeholder="`请选择${item.label}`"
+            @clear="toClear(item.prop)"
+            @change="data => filterReturn(data, item)"
+          >
             <slot name="options" v-bind="{ item }"></slot>
           </el-select>
         </template>
@@ -44,25 +52,27 @@
     >
       <el-table-column type="selection" width="55" v-if="select" prop="id" :reserve-selection="true"> </el-table-column>
       <template v-for="(item, index) in fields">
-        <template v-if="item.custom">
-          <el-table-column :key="index" align="center" :label="item.label" v-bind="item.options">
-            <template v-slot="{ row }">
-              <slot name="custom" v-bind="{ item, row }"></slot>
-            </template>
-          </el-table-column>
-        </template>
-        <template v-else>
-          <el-table-column
-            :key="index"
-            align="center"
-            :label="item.label"
-            :prop="item.prop"
-            :formatter="toFormatter"
-            sortable
-            v-bind="item.options"
-            :show-overflow-tooltip="item.showTip"
-          >
-          </el-table-column>
+        <template v-if="!item.notable">
+          <template v-if="item.custom">
+            <el-table-column :key="index" align="center" :label="item.label" v-bind="item.options">
+              <template v-slot="{ row }">
+                <slot name="custom" v-bind="{ item, row }"></slot>
+              </template>
+            </el-table-column>
+          </template>
+          <template v-else>
+            <el-table-column
+              :key="index"
+              align="center"
+              :label="item.label"
+              :prop="item.prop"
+              :formatter="toFormatter"
+              sortable
+              v-bind="item.options"
+              :show-overflow-tooltip="item.showTip"
+            >
+            </el-table-column>
+          </template>
         </template>
       </template>
       <template v-if="opera.length > 0">
@@ -254,6 +264,10 @@ export default {
     toClear(prop) {
       delete this.searchInfo[prop];
     },
+    filterReturn(data, item) {
+      let { prop, filterReturn } = item;
+      if (filterReturn) this.$emit('filterReturn', { data, prop });
+    },
   },
   watch: {
     selected: {

+ 1 - 1
config/menu-config.js

@@ -246,7 +246,7 @@ export const menu = [
       },
       {
         //班主任不需要
-        path: '/train/plan/lesson',
+        path: '/train/plan/term/lesson',
         name: '课表管理',
         module: 'center',
       },