Browse Source

feat: 优化搜索下拉框逻辑,调整表单项渲染条件

yusheng 1 tuần trước cách đây
mục cha
commit
ad431ef58e
1 tập tin đã thay đổi với 89 bổ sung94 xóa
  1. 89 94
      src/BIZComponents/seekPage.vue

+ 89 - 94
src/BIZComponents/seekPage.vue

@@ -70,109 +70,106 @@
         </el-form-item>
       </el-form-item>
 
-      <el-form-item>
+      <el-form-item v-if="seekList.length > formLength">
         <el-dropdown
           ref="dropdownref"
           trigger="click"
           :hide-on-click="false"
-          v-model="dropdownVisible"
           @keydown.enter.native.stop="search"
         >
-          <div v-if="seekList.length > formLength">
-            <span class="el-dropdown-link">
-              更多选项<i class="el-icon-arrow-down el-icon--right"></i>
-            </span>
-            <el-dropdown-menu slot="dropdown">
-              <div class="padding">
-                <el-form label-position="left">
+          <span class="el-dropdown-link">
+            更多选项<i class="el-icon-arrow-down el-icon--right"></i>
+          </span>
+          <el-dropdown-menu slot="dropdown">
+            <div class="padding">
+              <el-form label-position="left">
+                <el-form-item
+                  v-for="(item, i) in deboListRow"
+                  :key="i"
+                  :inline="true"
+                  label-position="left"
+                >
                   <el-form-item
-                    v-for="(item, i) in deboListRow"
-                    :key="i"
+                    :label-width="
+                      item.labelWidth ? item.labelWidth : '90' + 'px'
+                    "
                     :inline="true"
-                    label-position="left"
+                    :label="item.label"
                   >
-                    <el-form-item
-                      :label-width="
-                        item.labelWidth ? item.labelWidth : '90' + 'px'
-                      "
-                      :inline="true"
-                      :label="item.label"
-                    >
-                      <div v-if="item.type == 'input'">
-                        <el-input
-                          clearable
-                          v-model="defaultWhere[item.value]"
-                          :placeholder="item.placeholder || '请输入内容'"
-                          :style="{
-                            width: item.width ? item.width + 'px' : '220px'
-                          }"
-                          @keydown.enter.native="() => search()"
-                          @keyup.enter.native="() => search()"
-                        />
-                      </div>
-                      <div v-if="item.type == 'select'">
-                        <el-select
-                          clearable
-                          v-model="defaultWhere[item.value]"
-                          :multiple="item.multiple ? item.multiple : false"
-                          :filterable="item.filterable ? item.filterable : true"
-                          :placeholder="item.placeholder || '请输入内容'"
-                          :style="{
-                            width: item.width ? item.width + 'px' : '220px'
-                          }"
-                          @visible-change="change"
-                          @change="handerChange"
-                        >
-                          <el-option
-                            v-for="(op, i) in item.planList"
-                            :label="op.label"
-                            :value="op.value"
-                            :key="i"
-                          ></el-option>
-                        </el-select>
-                      </div>
+                    <div v-if="item.type == 'input'">
+                      <el-input
+                        clearable
+                        v-model="defaultWhere[item.value]"
+                        :placeholder="item.placeholder || '请输入内容'"
+                        :style="{
+                          width: item.width ? item.width + 'px' : '220px'
+                        }"
+                        @keydown.enter.native="() => search()"
+                        @keyup.enter.native="() => search()"
+                      />
+                    </div>
+                    <div v-if="item.type == 'select'">
+                      <el-select
+                        clearable
+                        v-model="defaultWhere[item.value]"
+                        :multiple="item.multiple ? item.multiple : false"
+                        :filterable="item.filterable ? item.filterable : true"
+                        :placeholder="item.placeholder || '请输入内容'"
+                        :style="{
+                          width: item.width ? item.width + 'px' : '220px'
+                        }"
+                        @visible-change="change"
+                        @change="handerChange"
+                      >
+                        <el-option
+                          v-for="(op, i) in item.planList"
+                          :label="op.label"
+                          :value="op.value"
+                          :key="i"
+                        ></el-option>
+                      </el-select>
+                    </div>
 
-                      <div v-if="item.type == 'date'">
-                        <el-date-picker
-                          v-model="defaultWhere[item.value]"
-                          @blur="change"
-                          :type="item.dateType || 'daterange'"
-                          range-separator="至"
-                          start-placeholder="开始日期"
-                          end-placeholder="结束日期"
-                          value-format="yyyy-MM-dd HH:mm:ss"
-                          :style="{
-                            width: item.width ? item.width + 'px' : '280px'
-                          }"
-                        >
-                        </el-date-picker>
-                      </div>
-                      <div v-if="item.type == 'DictSelection'">
-                        <DictSelection
-                          v-model="defaultWhere[item.value]"
-                          :placeholder="item.placeholder || '请选择内容'"
-                          :multiple="item.multiple ? item.multiple : false"
-                          :style="{
-                            width: item.width ? item.width + 'px' : '220px'
-                          }"
-                          :dictName="item.dictName"
-                        />
-                      </div>
-                      <div v-if="item.type == 'deptSelect'">
-                        <deptSelect
-                          v-model="defaultWhere[item.value]"
-                          :placeholder="item.placeholder || '请选择'"
-                          :style="{
-                            width: item.width ? item.width + 'px' : '220px'
-                          }"
-                        ></deptSelect>
-                      </div>
-                    </el-form-item>
+                    <div v-if="item.type == 'date'">
+                      <el-date-picker
+                        v-model="defaultWhere[item.value]"
+                        @blur="change"
+                        :type="item.dateType || 'daterange'"
+                        range-separator="至"
+                        start-placeholder="开始日期"
+                        end-placeholder="结束日期"
+                        value-format="yyyy-MM-dd HH:mm:ss"
+                        :style="{
+                          width: item.width ? item.width + 'px' : '280px'
+                        }"
+                      >
+                      </el-date-picker>
+                    </div>
+                    <div v-if="item.type == 'DictSelection'">
+                      <DictSelection
+                        v-model="defaultWhere[item.value]"
+                        :placeholder="item.placeholder || '请选择内容'"
+                        :multiple="item.multiple ? item.multiple : false"
+                        :style="{
+                          width: item.width ? item.width + 'px' : '220px'
+                        }"
+                        :dictName="item.dictName"
+                      />
+                    </div>
+                    <div v-if="item.type == 'deptSelect'">
+                      <deptSelect
+                        v-model="defaultWhere[item.value]"
+                        :placeholder="item.placeholder || '请选择'"
+                        :style="{
+                          width: item.width ? item.width + 'px' : '220px'
+                        }"
+                      ></deptSelect>
+                    </div>
                   </el-form-item>
-                </el-form>
-              </div>
-            </el-dropdown-menu>
-          </div>
+                </el-form-item>
+              </el-form>
+            </div>
+          </el-dropdown-menu>
         </el-dropdown>
       </el-form-item>
 
@@ -248,7 +245,6 @@
     data() {
       return {
         defaultWhere: {},
-        dropdownVisible: true,
         deboListRow: [],
         seekListRow: []
       };
@@ -263,7 +259,6 @@
     created() {},
     methods: {
       change(visible) {
-        this.dropdownVisible = visible;
         this.$refs.dropdownref.show();
       },
       handerChange() {