Browse Source

修改查询窗口。

yangzhijie 4 năm trước cách đây
mục cha
commit
d53301099a

+ 49 - 19
examples/info/SearchWidgetExample.vue

@@ -1,17 +1,40 @@
 <template>
   <h1>搜索框</h1>
 
+  <h2>1. 部门选择</h2>
   <SearchWidget
     info-window-no="279750"
-    :field-value="parentOrganizationFieldValue"
-    :title-name="部门"
+    :field-value="fieldValue1"
+    title-name="部门"
     display-name="name"
-    :where-clause="parentOrganizationAdditionHql"
-    @value-changed="parentOrganizationValueChanged"
+    @value-changed="fieldValue1Changed"
   />
 
-  您选择的部门是: 
-  <span v-for="item, index in parentOrganizationFieldValue.displayValue" :key="index">
+  您选择的部门是:
+  <span
+    v-for="item, index in fieldValue1.displayValue"
+    :key="index"
+  >
+    {{ item }}
+  </span>
+
+  
+  <h2>2. 用户选择</h2>
+
+  <SearchWidget
+    info-window-no="050408"
+    :field-value="fieldValue2"
+    :where-clause-source="whereClauseSource2"
+    title-name="用户"
+    display-name="name"
+    @value-changed="fieldValue2Changed"
+  />
+
+  您选择的用户是:
+  <span
+    v-for="item, index in fieldValue2.displayValue"
+    :key="index"
+  >
     {{ item }}
   </span>
 </template>
@@ -28,31 +51,38 @@ export default {
   },
   data: function () {
     return {
-
-
-      parentOrganizationFieldValue: {
+      fieldValue1: {
         displayValue: [],
         fieldType: 'Key',
         id: null,
       },
 
-
-      /**
-             * 上级部门发生修改
-             */
-      parentOrganizationValueChanged: function (newFieldValue) {
-        var _self = this;
-        _self.parentOrganizationFieldValue = newFieldValue;
-        _self.organization.parentId = newFieldValue.id;
+      fieldValue2: {
+        id: null,
+        displayValue: [''],
+        fieldType: 'Key',
       },
 
-      parentOrganizationAdditionHql: 'id IN (:EnvOrganizationIdList)',
+      whereClauseSource2: {
+        customerDataDimensions:[{
+          fieldName: 'client.id',
+          dataDimensionTypeNo: '202201191757',
+          defaultDataDimensionTypeValueNo: '1',
+        }],
+      },
 
     };
   },
 
   methods: {
-        
+    
+    fieldValue1Changed: function (newFieldValue) {
+      this.fieldValue1 = newFieldValue;
+    },
+
+    fieldValue2Changed: function(newFieldValue){
+      this.fieldValue2 = newFieldValue;
+    },
   },
 };
 </script>

+ 0 - 3
packages/index.js

@@ -21,7 +21,6 @@ import ProcessReportResultPreview from './process/process-report-result-preview.
 
 
 import DocGenerator from './info/doc-generator.js';
-import InfoSearchWidget from './info/info-search-widget.js';
 import SearchWidget from './info/search-widget.js';
 import SearchAutoCompleteWidget from './info/search-auto-complete-widget.js';
 
@@ -74,7 +73,6 @@ const components = [
   ProcessReportResult,
   ProcessReportResultPreview,
   DocGenerator,
-  InfoSearchWidget,
   SearchWidget,
   SearchAutoCompleteWidget,
   PrintEpc,
@@ -148,7 +146,6 @@ export default {
   ProcessReport,
   ProcessReportResult,
   ProcessReportResultPreview,
-  InfoSearchWidget,
   SearchWidget,
   SearchAutoCompleteWidget,
   PrintEpc,

+ 0 - 8
packages/info/info-search-widget.js

@@ -1,8 +0,0 @@
-
-import InfoSearchWidget from './src/InfoSearchWidget.vue';
-
-InfoSearchWidget.install = function(Vue) {
-  Vue.component(InfoSearchWidget.name, InfoSearchWidget);
-};
-
-export default InfoSearchWidget;

+ 7 - 2
packages/info/src/InfoMultiSearchWidget.vue

@@ -31,7 +31,7 @@
         <div>{{ infoWindowDto.name }}</div>
       </template>
       <template #default>
-        <!-- <InfoWindow
+        <InfoWindow
           ref="info"
           :field-value="fieldValue"
           :where-clause-source="whereClauseSource"
@@ -39,13 +39,15 @@
           :info-window-no="infoWindowNo"
           @data-selected="dataSelected"
           @delete-selected="deleteSelected"
-        /> -->
+        />
       </template>
     </Modal>
     <Loading v-if="loading" />
   </div>
 </template>
 <script>
+import { defineAsyncComponent } from 'vue';
+
 var Modal = require('../../modal/src/Modal.vue').default;
 // var InfoWindow = require('./InfoWindow.vue').default;
 var Loading = require('../../loading/src/Loading.vue').default;
@@ -55,6 +57,9 @@ export default {
   components: {
     Modal, 
     // InfoWindow, 
+    InfoWindow: defineAsyncComponent(() =>
+      import('./InfoWindow.vue'),
+    ),
     Loading,
   },
   props: {

+ 0 - 300
packages/info/src/InfoSearchWidget.vue

@@ -1,300 +0,0 @@
-<template>
-  <div class="input-group">
-    <input
-      aria-describedby="addon"
-      type="text"
-      class="form-control input-search"
-      :class="validInput"
-      :value="searchText"
-      placeholder="请选择内容"
-      @input="textChange($event)"
-      @keyup.up="selectUp"
-      @keyup.down="selectDown"
-      @keyup.enter="selectEnter"
-      @keyup.esc="autoCompleteVisible = false"
-    />
-    <span
-      class="input-group-addon"
-      @click="showSearchDialog"
-    >
-      <span class="glyphicon glyphicon-search" />
-    </span>
-    <Modal
-      v-model:show="modal"
-      :full="true"
-      @ok="searchDialogOk"
-      @cancel="searchDialogCancel"
-    >
-      <template #header>
-        <div>{{ titleName }}</div>
-      </template>
-      <!-- <template #default> -->
-      <!-- <InfoWindow
-          v-if="showSubInfoWindow"
-          ref="info"
-          :infoWindowNo="infoWindowNo"
-          :where-clause-source="whereClauseSource"
-          :field-value="fieldValue"
-          :is-search-widget="true"
-          @data-selected="dataSelected"
-        /> -->
-      <!-- </template> -->
-    </Modal>
-    <SearchAutoCompleteWidget
-      ref="autoComplete"
-      v-model:show="autoCompleteVisible"
-      :info-window-no="infoWindowNo"
-      :where-clause-source="whereClauseSource"
-      class="auto-complete"
-      @select-data="dataSelected"
-    />
-
-    <Loading v-if="loading" />
-  </div>
-</template>
-<script>
-
-var Modal = require('../../modal/src/Modal.vue').default;
-var SearchAutoCompleteWidget = require('./SearchAutoCompleteWidget.vue').default;
-var Loading = require('../../loading/src/Loading.vue').default;
-
-export default {
-  // infoWindowNo: 查询窗口Id
-  // fieldValue: 显示的值
-  // fieldValue:{
-  //		displayValue: ['Jack'],
-  //		fieldType: 'Key',
-  //		id: 1
-  // }
-  // titleName: 弹出窗口的标题
-  // displayName: 文本框中显示的字段
-  name: 'InfoSearchWidget',
-
-  components: {
-    Modal, SearchAutoCompleteWidget, Loading,
-  },
-  props: {
-    /**
-     * 编号
-     */
-    'infoWindowNo':{
-      type: String,
-      default: null,
-    }, 
-    /**
-     * 显示的值
-     */
-    'fieldValue': {
-      type: Object,
-      default: null,
-    },
-    /**
-     * 弹出窗口的标题
-     */
-    'titleName':
-    {
-      type: String,
-      default: null,
-    }, 
-    'displayName':
-    {
-      type: String,
-      default: null,
-    }, 
-    'whereClauseSource':
-    {
-      type: Object,
-      default: null,
-    }, 
-  },
-
-  emits: ['valueChanged', 'dataSelected'],
-
-  data: function () {
-    return {
-      isVisible: [],
-      searchText: '',
-      leftPosition: 0,
-      showSubInfoWindow: false,	// 显示子查询窗口
-      loading: false,
-      modal: false,
-      autoCompleteVisible: false,
-    };
-  },
-
-  computed: {
-    titleNames: function () {
-      let labelNames = '';
-      if (this.field != null || this.field.name != null || this.field.name.length > 0) {
-        labelNames = this.field.name.split(',');
-      }
-      this.reCalVisible();
-      return labelNames;
-    },
-
-
-    /**
-         * 是否是有效的数据
-         */
-    validInput: function () {
-      var isValid = true;
-      if (this.searchText != undefined && this.searchText.length > 0) {
-        if (this.fieldValue != undefined && (this.fieldValue.id == undefined || this.fieldValue.id <= 0)) {
-          isValid = false;
-        } else if (this.fieldValue != undefined && (this.fieldValue.displayValue != undefined && this.fieldValue.displayValue[0] != this.searchText)) {
-          isValid = false;
-        }
-      }
-
-      return {
-        'invalid-input': isValid == false,
-      };
-    },
-  },
-
-  watch: {
-    redraw: function () {
-      console.log('searchWidgetRedraw');
-      this.reCalVisible();
-    },
-
-    fieldValue: {
-      handler(currentValue, oldValue) {
-        console.log('currentValue:' + JSON.stringify(currentValue));
-        this.searchText = this.initSearchText(currentValue);
-        console.log('searchText:' + this.searchText);
-      },
-      deep: true,
-    },
-
-  },
-
-  mounted: function () {
-    this.searchText = this.initSearchText(this.fieldValue);
-  },
-
-  methods: {
-    selectDown: function () {
-      this.$refs.autoComplete.selectDown();
-    },
-
-    selectUp: function () {
-      this.$refs.autoComplete.selectUp();
-    },
-
-    selectEnter: function () {
-      var _self = this;
-
-      var data = _self.$refs.autoComplete.getSelectData();
-      if (data != undefined) {
-        _self.dataSelected(data);
-        _self.autoCompleteVisible = false;
-      } else {
-        if (_self.searchText == undefined || _self.searchText.length == 0) {
-          if (_self.autoCompleteVisible == true) {
-            _self.autoCompleteVisible = false;
-          } else {
-            _self.$refs.autoComplete.initSearch('');
-          }
-        }
-      }
-    },
-
-    // 显示搜索对话框
-    showSearchDialog: function () {
-      var _self = this;
-      this.modal=true;
-
-      _self.autoCompleteVisible = false;
-    },
-
-    /**
-         * 搜索框【确定】按钮点击事件
-         */
-    searchDialogOk: function () {
-      var _self = this;
-      var selectedModelDatas = _self.$refs.info.getSelectedModelDatas();
-      if (selectedModelDatas != undefined || selectedModelDatas.length > 0) {
-        // 选中了数据,更新数据
-        _self.dataSelected(selectedModelDatas[0]);
-      }
-      this.showSubInfoWindow = false;
-    },
-
-    searchDialogCancel: function () {
-
-      this.showSubInfoWindow = false;
-    },
-
-    // 输入的文本发生改变
-    textChange: function (e) {
-      var text = e.target.value;
-      console.log('textChange: ' + text);
-      if (text == undefined || text.length == 0) {
-        var newFieldValue = {
-          id: null,
-          displayValue: [],
-          fieldType: 'Key',
-        };
-        this.$emit('valueChanged', newFieldValue);
-      }
-      this.$refs.autoComplete.initSearch(text);
-    },
-
-    // 数据已经选择
-    dataSelected: function (modelData) {
-      var _self = this;
-      this.modal=false;
-
-      _self.autoCompleteVisible = false;
-
-      if (modelData == undefined) {
-        return;
-      }
-
-      console.log('已经选择了数据:' + modelData.id);
-
-      var newFieldValue = {
-        id: modelData.id,
-        displayValue: [modelData.data[_self.displayName].displayValue[0]],
-        fieldType: 'Key',
-      };
-
-      if (newFieldValue.displayValue.length > 0) {
-        _self.searchText = newFieldValue.displayValue[0];
-      }
-      this.$emit('valueChanged', newFieldValue);
-      this.$emit('dataSelected', modelData);
-    },
-
-    initSearchText: function (tempFieldValue) {
-      if (tempFieldValue == undefined || tempFieldValue.displayValue == undefined || tempFieldValue.displayValue.length == 0) {
-        return '';
-      } else {
-        return tempFieldValue.displayValue[0];
-      }
-    },
-  },
-};
-</script>
-
-<style scoped>
-.auto-complete {
-    left: 0px;
-    top: 34px;
-}
-
-.input-search {
-    width: 160px !important;
-}
-
-.input-group {
-    width: 200px !important;
-}
-
-.invalid-input {
-    color: #fff;
-    background-color: #d9534f;
-    border-color: #d43f3a;
-}
-</style>

+ 4 - 4
packages/info/src/QueryConditionComplex.vue

@@ -91,7 +91,7 @@
               @value-changed="tabValueChanged($event, item, 'value1')"
             />
 
-            <InfoSearchWidget
+            <SearchWidget
               v-if="item.displayType =='SearchBoxEditor'"
               :where-clause-source="{'infoFilterField': {'infoWindowNo': infoWindowNo, 'fieldName' : item.fieldValue}}"
               :info-window-no="item.infoWindowNo"
@@ -199,7 +199,7 @@
             />
 
             <!--单选number类型-->
-            <InfoSearchWidget
+            <SearchWidget
               v-if="item.displayType =='SearchBoxEditor'"
               :where-clause-source="{'infoFilterField': {'infoWindowNo': infoWindowNo, 'fieldName' : item.fieldValue}}"
               :info-window-no="item.infoWindowNo"
@@ -256,7 +256,7 @@
 
 var EnumSelectWidgetInfo = require('./EnumSelectWidgetInfo.vue').default;
 var DateTimeV2 = require('../../datetime-v2/src/DateTimeV2.vue').default;
-var InfoSearchWidget = require('./InfoSearchWidget.vue').default;
+var SearchWidget = require('./SearchWidget.vue').default;
 var InfoMultiSearchWidget = require('./InfoMultiSearchWidget.vue').default;
 var YearPicker = require('../../year-picker/src/YearPicker.vue').default;
 var DateWidget = require('../../date/src/Date.vue').default;
@@ -268,7 +268,7 @@ export default {
   components: {
     EnumSelectWidgetInfo,
     DateTimeV2,
-    InfoSearchWidget,
+    SearchWidget,
     InfoMultiSearchWidget,
     DateWidget,
     VueMonthlyPicker,

+ 18 - 5
packages/info/src/SearchWidget.vue

@@ -4,8 +4,8 @@
       aria-describedby="addon"
       type="text"
       class="form-control"
-      :class="validInput"
       style="border-top-right-radius: 0; border-bottom-right-radius: 0;"
+      :class="validInput"
       :value="searchText"
       :readonly="readonly"
       @input="textChange($event)"
@@ -62,19 +62,23 @@
   </div>
 </template>
 
-
 <script>
+import { defineAsyncComponent } from 'vue';
 var Modal = require('../../modal/src/Modal.vue').default;
 var InfoWindow = require('./InfoWindow.vue').default;
 var SearchAutoCompleteWidget = require('./SearchAutoCompleteWidget.vue').default;
 var Loading = require('../../loading/src/Loading.vue').default;
 
 export default {
+
   name: 'SearchWidget',
 
   components: {
     Modal, 
-    InfoWindow, 
+    // InfoWindow, 
+    InfoWindow: defineAsyncComponent(() =>
+      import('./InfoWindow.vue'),
+    ),
     SearchAutoCompleteWidget, 
     Loading,
   },
@@ -86,6 +90,15 @@ export default {
       type: String,
       default: null,
     },
+    
+    /**
+     * 显示的值
+     * fieldValue:{
+     *    displayValue: ['Jack'],
+     *    fieldType: 'Key',
+     *    id: 1
+     * }
+     */
     'fieldValue': {
       type: Object,
       default: null,
@@ -144,8 +157,8 @@ export default {
 
 
     /**
-             * 是否是有效的数据
-             */
+     * 是否是有效的数据
+     */
     validInput: function () {
       var _self = this;
       var isValid = true;

+ 6 - 2
packages/process/src/MultiSearchWidget.vue

@@ -48,11 +48,11 @@
             @cancel="searchDialogCancel"
           >
             <template #default>
-              <!-- <InfoWindow
+              <InfoWindow
                 ref="infoWindow"
                 :info-window-no="infoWindowNo"
                 @data-selected="dataSelected"
-              /> -->
+              />
             </template>
 
             <template #header>
@@ -129,6 +129,7 @@
   </div>
 </template>
 <script>
+import { defineAsyncComponent } from 'vue';
 var Modal = require('../../modal/src/Modal.vue').default;
 // var InfoWindow = require('../../info/src/InfoWindow.vue').default;
 var Common = require('../../common/Common.js').default;
@@ -138,6 +139,9 @@ export default {
   components: {
     Modal, 
     // InfoWindow,
+    InfoWindow: defineAsyncComponent(() =>
+      import('../../info/src/InfoWindow.vue'),
+    ),
   },
   props: {
     'infoWindowNo':{