Преглед изворни кода

数据模板配置默认查询条件逻辑bug修复,支持多值配置

cfort пре 2 година
родитељ
комит
8c8d31fb76

+ 127 - 120
src/business/platform/data/templatebuilder/right-aside/components/attr-list.vue

@@ -1,130 +1,137 @@
 <template>
-  <div class="panel panel-default">
-    <div class="panel-heading">列表</div>
-    <div class="panel-body">
-      <el-form
-        size="mini"
-        label-width="120px"
-        @submit.native.prevent
-      >
-        <el-form-item>
-          <template slot="label">初始化是否查询:</template>
-          <el-switch
-            v-model="attrs.init_query"
-            active-value="Y"
-            inactive-value="N"
-            @change="(value)=>handleData('init_query',value)"
-          />
-        </el-form-item>
-        <el-form-item>
-          <template slot="label">是否显示序号:</template>
-          <el-switch
-            v-model="attrs.indexRow"
-            :active-value="true"
-            :inactive-value="false"
-            @change="(value)=>handleData('index',value)"
-          />
-        </el-form-item>
-        <el-form-item>
-          <template slot="label">是否分页:</template>
-          <el-switch
-            v-model="attrs.need_page"
-            active-value="Y"
-            inactive-value="N"
-            @change="(value)=>handleData('need_page',value)"
-          />
-        </el-form-item>
-        <el-form-item v-if="attrs.need_page==='Y'">
-          <template slot="label">分页大小:</template>
-          <el-select
-            v-model="attrs.page_size"
-            placeholder="分页大小"
-            @change="(value)=>handleData('page_size',value)"
-          >
-            <el-option
-              v-for="item in pageSizeOptions"
-              :key="item"
-              :label="item"
-              :value="item"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item>
-          <template slot="label">表头提示语:</template>
-        <!--  <el-switch
-            v-model="attrs.display_field"
-            active-value="Y"
-            inactive-value="N"
-            @change="(value)=>handleData('display_field',value)"
-          /> -->
-          <el-input
-            placeholder="输入表头提示语"
-            v-model="attrs.display_field"
-            size="mini"
-            @change="(value)=>handleData('display_field',value)"
-            clearable>
-          </el-input>
-        </el-form-item>
+    <div class="panel panel-default">
+        <div class="panel-heading">列表</div>
+        <div class="panel-body">
+            <el-form
+                size="mini"
+                label-width="120px"
+                @submit.native.prevent
+            >
+                <el-form-item>
+                    <template slot="label">初始化是否查询:</template>
+                    <el-switch
+                        v-model="attrs.init_query"
+                        active-value="Y"
+                        inactive-value="N"
+                        @change="(value)=>handleData('init_query',value)"
+                    />
+                </el-form-item>
+                <el-form-item>
+                    <template slot="label">是否显示序号:</template>
+                    <el-switch
+                        v-model="attrs.indexRow"
+                        :active-value="true"
+                        :inactive-value="false"
+                        @change="(value)=>handleData('index',value)"
+                    />
+                </el-form-item>
+                <el-form-item>
+                    <template slot="label">是否分页:</template>
+                    <el-switch
+                        v-model="attrs.need_page"
+                        active-value="Y"
+                        inactive-value="N"
+                        @change="(value)=>handleData('need_page',value)"
+                    />
+                </el-form-item>
+                <el-form-item v-if="attrs.need_page==='Y'">
+                    <template slot="label">分页大小:</template>
+                    <el-select
+                        v-model="attrs.page_size"
+                        placeholder="分页大小"
+                        @change="(value)=>handleData('page_size',value)"
+                    >
+                        <el-option
+                            v-for="item in pageSizeOptions"
+                            :key="item"
+                            :label="item"
+                            :value="item"
+                        />
+                    </el-select>
+                </el-form-item>
+                <el-form-item>
+                    <template slot="label">表头提示语:</template>
+                    <!-- <el-switch
+                        v-model="attrs.display_field"
+                        active-value="Y"
+                        inactive-value="N"
+                        @change="(value)=>handleData('display_field',value)"
+                    /> -->
+                    <el-input
+                        v-model="attrs.display_field"
+                        placeholder="输入表头提示语"
+                        size="mini"
+                        clearable
+                        @change="(value)=>handleData('display_field',value)"
+                    />
+                </el-form-item>
 
-        <el-form-item>
-          <template slot="label">表单名称:</template>
-          <el-input
-            placeholder="输入表单名称"
-            v-model="attrs.form_name"
-            size="mini"
-            @change="(value)=>handleData('form_name',value)"
-            clearable>
-          </el-input>
-        </el-form-item>
+                <el-form-item>
+                    <template slot="label">表单名称:</template>
+                    <el-input
+                        v-model="attrs.form_name"
+                        placeholder="输入表单名称"
+                        size="mini"
+                        clearable
+                        @change="(value)=>handleData('form_name',value)"
+                    />
+                </el-form-item>
 
-        <el-form-item>
-          <template slot="label">管理列主题名:</template>
-         <!-- <el-switch
-            v-model="attrs.manage_effect"
-            active-value="Y"
-            inactive-value="N"
-            active-text="按钮"
-            inactive-text="默认"
-            @change="(value)=>handleData('manage_effect',value)"
-          /> -->
-
-          <el-input
-            placeholder="输入管理主题"
-            v-model="attrs.manage_effect"
-            size="mini"
-             @change="(value)=>handleData('manage_effect',value)"
-            clearable>
-          </el-input>
-
-
-        </el-form-item>
-      </el-form>
+                <el-form-item>
+                    <template slot="label">管理列主题名:</template>
+                    <!-- <el-switch
+                        v-model="attrs.manage_effect"
+                        active-value="Y"
+                        inactive-value="N"
+                        active-text="按钮"
+                        inactive-text="默认"
+                        @change="(value)=>handleData('manage_effect',value)"
+                    /> -->
+                    <el-input
+                        v-model="attrs.manage_effect"
+                        placeholder="输入管理主题"
+                        size="mini"
+                        clearable
+                        @change="(value)=>handleData('manage_effect',value)"
+                    />
+                </el-form-item>
+                <el-form-item>
+                    <template slot="label">管理列宽:</template>
+                    <el-input
+                        v-model="attrs.col_width"
+                        placeholder="请输入管理列宽(数值)"
+                        size="mini"
+                        clearable
+                        @change="(value)=>handleData('col_width',value)"
+                    />
+                </el-form-item>
+            </el-form>
+        </div>
     </div>
-  </div>
 </template>
 <script>
 export default {
-  props: {
-    data: Object
-  },
-  data() {
-    return {
-      attrs: {},
-      pageSizeOptions: [10, 20, 50, 100]
-    }
-  },
-  watch: {
-    'data.attrs': {
-      handler: function(val, oldVal) {
-        this.attrs = this.data.attrs || {}
-      },
-      immediate: true
-    }
-  },
-  methods: {
-    handleData(key, value) {
-      this.$emit('input', key, value)
+    props: {
+        data: Object
+    },
+    data () {
+        return {
+            attrs: {},
+            pageSizeOptions: [10, 20, 50, 100]
+        }
+    },
+    watch: {
+        'data.attrs': {
+            handler: function (val, oldVal) {
+                this.attrs = this.data.attrs || {}
+            },
+            immediate: true
+        }
+    },
+    methods: {
+        handleData (key, value) {
+            this.$emit('input', key, value)
+        }
     }
-  }
 }
 </script>

+ 33 - 39
src/business/platform/data/templatebuilder/right-aside/editors/query-column.vue

@@ -8,43 +8,38 @@
         class="template-query-column"
         @submit.native.prevent
     >
-
         <el-form-item label="显示名称" prop="label">
             <el-input v-model="formData.label" placeholder="显示名称" />
         </el-form-item>
-
         <template v-if="datasetType === 'thirdparty'">
             <!-- <el-form-item label="参数类型">
-        <el-select v-model="formData.paramType" placeholder="">
-          <el-option
-            v-for="item in paramTypeOptions"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          />
-        </el-select>
-      </el-form-item>
-      <template v-if="formData.paramType ==='arrayObject'">
-        <el-form-item label="绑定参数根">
-          <ibps-tree-select
-            v-model="formData.paramRoot"
-            :data="datasetData"
-            :props="{
-              children: 'children',
-              label: 'name'
-            }"
-            display-mode="path"
-            node-key="name"
-            placeholder="请选择"
-          />
-        </el-form-item>
-        <el-form-item label="绑定参数key">
-          <el-input v-model="formData.paramKey" placeholder="绑定参数key" />
-        </el-form-item>
-        <el-form-item label="绑定参数key值">
-          <el-input v-model="formData.paramValue" placeholder="绑定参数key值" />
-        </el-form-item>
-      </template> -->
+                <el-select v-model="formData.paramType" placeholder="">
+                    <el-option
+                        v-for="item in paramTypeOptions"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                    />
+                </el-select>
+            </el-form-item>
+            <template v-if="formData.paramType ==='arrayObject'">
+                <el-form-item label="绑定参数根">
+                    <ibps-tree-select
+                        v-model="formData.paramRoot"
+                        :data="datasetData"
+                        :props="{children: 'children', label: 'name'}"
+                        display-mode="path"
+                        node-key="name"
+                        placeholder="请选择"
+                    />
+                </el-form-item>
+                <el-form-item label="绑定参数key">
+                    <el-input v-model="formData.paramKey" placeholder="绑定参数key" />
+                </el-form-item>
+                <el-form-item label="绑定参数key值">
+                    <el-input v-model="formData.paramValue" placeholder="绑定参数key值" />
+                </el-form-item>
+            </template> -->
             <el-form-item label="标识(name)" prop="name">
                 <el-input v-model="formData.name" placeholder="标识(name)" />
             </el-form-item>
@@ -60,7 +55,7 @@
             <el-switch v-model="formData.same" active-value="Y" inactive-value="N" />
         </el-form-item>
         <el-form-item label="默认值">
-            <el-input v-model="formData.default_value" placeholder="默认值" />
+            <el-input v-model="formData.default_value" placeholder="请输入查询字段默认值,多值以&分割" />
         </el-form-item>
         <!--控件类型-->
         <template v-if="formData.same === 'N'">
@@ -167,7 +162,6 @@
                         type="valueSource"
                     />
                 </el-form-item>
-
                 <el-form-item>
                     <div slot="label">关联配置</div>
                     <div class="el-form-item__content">
@@ -281,9 +275,9 @@ export default {
 </script>
 
 <style lang="scss">
-.template-query-column {
-  .el-select {
-    width: 100%;
-  }
-}
+    .template-query-column {
+        .el-select {
+            width: 100%;
+        }
+    }
 </style>

+ 22 - 16
src/business/platform/data/templaterender/templates/list.vue

@@ -780,25 +780,31 @@ export default {
          */
         getFormatParams (outerKey) {
             let formParams = {}
-            var refSerchForm = this.$refs['searchForm']
+            const refSerchForm = this.$refs['searchForm']
             if (refSerchForm) {
+                // 首次查询使用模板配置的默认查询条件
                 if (!this.hadDoSearch) {
-                    for (const iterator of this.template.query_columns) {
-                        if (iterator.default_value && (iterator.default_value !== '' || iterator.default_value.length !== 0)) {
-                            const getBuildSearchForm = this.buildSearchForm(iterator)
-                            if (!Array.isArray(iterator.default_value) || !Array.isArray(getBuildSearchForm.prop)) {
-                            // 非数组
-                                refSerchForm.params[getBuildSearchForm.prop] = iterator.default_value
-                            } else {
-                                refSerchForm.params[getBuildSearchForm.prop[0]] = iterator.default_value[0]
-                                refSerchForm.params[getBuildSearchForm.prop[1]] = iterator.default_value[1]
-                                const getmodelValueArr = this.listConfig.searchForm.forms.filter(fi => {
-                                    return fi.label === iterator.label
-                                })
-                                refSerchForm.params[getmodelValueArr[0].modelValue] = [iterator.default_value[0], iterator.default_value[1]]
-                            }
+                    const range = ['datePicker', 'dateRange', 'numberRange']
+                    const multiple = ['radio', 'checkbox', 'select']
+                    const { query_columns = [] } = this.template || {}
+                    const defaultValueField = query_columns.filter(i => i.default_value)
+                    defaultValueField.forEach(item => {
+                        const getBuildSearchForm = this.buildSearchForm(item)
+                        const val = item.default_value.split('&')
+                        if (range.includes(item.field_type)) {
+                            // 非多选,传值为数组类型控件
+                            refSerchForm.params[getBuildSearchForm.prop[0]] = val[0]
+                            refSerchForm.params[getBuildSearchForm.prop[1]] = val[1]
+                            refSerchForm.params[getBuildSearchForm.modelValue] = val
+                            // 用于渲染查询表单值
+                            refSerchForm.params['daterange-prefix4'] = val
+                        } else if (multiple.includes(item.field_type)) {
+                            // 多选,且传值为数组类型控件
+                            refSerchForm.params[getBuildSearchForm.prop] = val
+                        } else {
+                            refSerchForm.params[getBuildSearchForm.prop] = item.default_value
                         }
-                    }
+                    })
                 }
 
                 formParams = refSerchForm.getSearcFormData() || {}