Просмотр исходного кода

1. 修复查询窗口的BUG。 2. 修复提示的BUG。

yangzhijie 4 лет назад
Родитель
Сommit
be7648e8c6

+ 1 - 1
examples/App.vue

@@ -66,7 +66,7 @@
             <a href="#/desktop/process-report/123456">流程报表</a>
             <a href="#/desktop/process-report/123456">流程报表</a>
           </li>
           </li>
           <li>
           <li>
-            <a href="#/desktop/info/123456">查询窗口</a>
+            <a href="#/desktop/info/040602">查询窗口</a>
           </li>
           </li>
           <li>
           <li>
             <a href="#/doc-generator-selected">生单界面</a>
             <a href="#/doc-generator-selected">生单界面</a>

+ 1 - 1
examples/main.js

@@ -1,7 +1,7 @@
 import {createApp} from 'vue';
 import {createApp} from 'vue';
 import {createRouter, createWebHashHistory} from 'vue-router';
 import {createRouter, createWebHashHistory} from 'vue-router';
 import { createI18n } from 'vue-i18n/dist/vue-i18n.cjs.js';
 import { createI18n } from 'vue-i18n/dist/vue-i18n.cjs.js';
-import {VTooltip} from 'v-tooltip';
+import VTooltip from 'v-tooltip';
 import mRouter from './route/index.js';
 import mRouter from './route/index.js';
 import App from './App.vue';
 import App from './App.vue';
 
 

+ 15 - 14
packages/index.js

@@ -92,20 +92,21 @@ const install = function (app, opts = {}) {
     
     
   // Vue.use(VueI18n);
   // Vue.use(VueI18n);
 
 
-  // Vue.mixin({
-  //   beforeCreate() {
-  //     var _self = this;
-  //     // 这里为了防止 beforeCreate 比 vue-i18n 的 beforeCreate 先执行导致 this.$i18n 为空
-  //     this.$nextTick(() => {
-  //       // 判断是否为根节点,合并国际化信息
-  //       //if (this.$root === this && this.$i18n) {
-  //       if (this.$i18n) {
-  //         _self.$i18n.mergeLocaleMessage('zh-CN', langZhCn);
-  //         _self.$i18n.mergeLocaleMessage('en-US', langEnUs);
-  //       }
-  //     });
-  //   },
-  // });
+  app.mixin({
+    beforeCreate() {
+      var _self = this;
+      // 这里为了防止 beforeCreate 比 vue-i18n 的 beforeCreate 先执行导致 this.$i18n 为空
+      this.$nextTick(() => {
+        // 判断是否为根节点,合并国际化信息
+        //if (this.$root === this && this.$i18n) {
+        console.log('install pc-component-v3 i18n.');
+        if (this.$i18n) {
+          _self.$i18n.mergeLocaleMessage('zh-CN', langZhCn);
+          _self.$i18n.mergeLocaleMessage('en-US', langEnUs);
+        }
+      });
+    },
+  });
 
 
   // locale.use(opts.locale);
   // locale.use(opts.locale);
   // locale.i18n(opts.i18n);
   // locale.i18n(opts.i18n);

+ 59 - 60
packages/info/src/InfoHeader.vue

@@ -23,35 +23,36 @@
           >
           >
             <span class="glyphicon glyphicon-list-alt" />
             <span class="glyphicon glyphicon-list-alt" />
           </button>
           </button>
-          <vuedraggable
-            v-if="infoFilterFieldsClone != undefined"
-            v-model="infoFilterFieldsClone"
-            class="dropdown-menu"
-            aria-labelledby="dropdownMenuQueryFilter"
-            @change="filterFieldSortChaned()"
-            @click="stopPropagation($event)"
-          >
-            <div
-              v-for="(item) in infoFilterFieldsClone"
-              :key="item.key" style="margin-left: 15px;margin-right: 15px;"
+
+          <template v-if="infoFilterFieldsClone != null">
+            <draggable
+              v-model="infoFilterFieldsClone"
+              item-key="key"
+              class="dropdown-menu"
+              @change="filterFieldSortChaned()"
+              @click="stopPropagation($event)"
             >
             >
-              <div class="column">
-                <input
-                  :id="'InfoForm' + '_' + infoWindowNo + '_' + item.fieldName"
-                  v-model="item.isShow"
-                  class="isShow-checkbox"
-                  type="checkbox"
-                  :disabled="item.mandatory && item.isShow"
-                  @change="visibleChanged(item)"
-                />
-                <label
-                  :for="'InfoForm' + '_' + infoWindowNo + '_' + item.fieldName"
-                  class="column-name"
-                  :class="{'column-red' : item.mandatory == true}"
-                >{{ item.name }}</label>
-              </div>
-            </div>
-          </vuedraggable>
+              <template #item="{element}">
+                <div style="margin-left: 15px;margin-right: 15px;">
+                  <div class="column">
+                    <input
+                      :id="'InfoForm' + '_' + infoWindowNo + '_' + element.fieldName"
+                      v-model="element.isShow"
+                      class="isShow-checkbox"
+                      type="checkbox"
+                      :disabled="element.mandatory && element.isShow"
+                      @change="visibleChanged(element)"
+                    />
+                    <label
+                      :for="'InfoForm' + '_' + infoWindowNo + '_' + element.fieldName"
+                      class="column-name"
+                      :class="{'column-red' : element.mandatory == true}"
+                    >{{ element.name }}</label>
+                  </div>
+                </div>
+              </template>
+            </draggable>
+          </template>
         </div>
         </div>
 
 
         <div class="dropdown float-left dropdown-infoGrid">
         <div class="dropdown float-left dropdown-infoGrid">
@@ -66,35 +67,35 @@
             <span class="glyphicon glyphicon-calendar" />
             <span class="glyphicon glyphicon-calendar" />
           </button>
           </button>
 
 
-          <vuedraggable
-            v-if="infoGridFieldsClone != undefined"
-            v-model="infoGridFieldsClone"
-            class="dropdown-menu"
-            aria-labelledby="dropdownMenuQueryFilter2"
-            draggable=".info-grid-column-dragable"
-            @change="gridFieldSortChaned()" @click="stopPropagation($event)"
-          >
-            <div
-              v-for="(item) in infoGridFieldsClone"
-              :key="item.key" style="margin-left: 15px;margin-right: 15px;" class="info-grid-column-dragable"
+          <template v-if="infoGridFieldsClone != null">
+            <draggable
+              v-model="infoGridFieldsClone"
+              item-key="key"
+              class="dropdown-menu"
+              @change="gridFieldSortChaned()" 
+              @click="stopPropagation($event)"
             >
             >
-              <div class="column">
-                <input
-                  :id="'InfoGrid' + '_' + infoWindowNo + '_' + item.fieldName"
-                  v-model="item.isShow"
-                  class="isShow-checkbox"
-                  type="checkbox"
-                  :disabled="item.mandatory && item.isShow"
-                  @change="gridFieldvisibleChanged(item)"
-                />
-                <label
-                  :for="'InfoGrid' + '_' + infoWindowNo + '_' + item.fieldName"
-                  class="column-name"
-                  :class="{'column-red' : item.mandatory == true}"
-                >{{ item.name }}</label>
-              </div>
-            </div>
-          </vuedraggable>
+              <template #item="{element}">
+                <div style="margin-left: 15px;margin-right: 15px;">
+                  <div class="column">
+                    <input
+                      :id="'InfoGrid' + '_' + infoWindowNo + '_' + element.fieldName"
+                      v-model="element.isShow"
+                      class="isShow-checkbox"
+                      type="checkbox"
+                      :disabled="element.mandatory && element.isShow"
+                      @change="gridFieldvisibleChanged(element)"
+                    />
+                    <label
+                      :for="'InfoGrid' + '_' + infoWindowNo + '_' + element.fieldName"
+                      class="column-name"
+                      :class="{'column-red' : element.mandatory == true}"
+                    >{{ element.name }}</label>
+                  </div>
+                </div>
+              </template>
+            </draggable>
+          </template>
         </div>
         </div>
         <button
         <button
           v-if="htmlHelpUrl != undefined && htmlHelpUrl != ''"
           v-if="htmlHelpUrl != undefined && htmlHelpUrl != ''"
@@ -110,15 +111,13 @@
 
 
 <script>
 <script>
 
 
-var InfoUtil = require('./InfoUtil.js').default;
-
-import vuedraggable from 'vuedraggable';
+import draggable from 'vuedraggable';
 
 
 export default {
 export default {
 
 
 
 
   components: {
   components: {
-    vuedraggable,
+    draggable,
   },
   },
   props: {
   props: {
     'infoFilterFields': {
     'infoFilterFields': {

+ 18 - 12
packages/info/src/QueryCondition.vue

@@ -73,11 +73,11 @@ export default {
 
 
   props: {
   props: {
     'infoFilterFields': {
     'infoFilterFields': {
-      type: Object,
+      type: Array,
       default: null,
       default: null,
     },
     },
     'infoButtons': {
     'infoButtons': {
-      type: Object,
+      type: Array,
       default: null,
       default: null,
     },
     },
     'isSearchWidget':{
     'isSearchWidget':{
@@ -109,21 +109,27 @@ export default {
       _self.filterFields = [];
       _self.filterFields = [];
     },
     },
 
 
-    infoFilterFields: function (currentValue, oldValue) {
-      var _self = this;
+    infoFilterFields: {
+      deep: true,
+      handler: function (currentValue, oldValue) {
+        var _self = this;
 
 
-      _self.filterFields.splice(0, _self.filterFields.length);
+        _self.filterFields.splice(0, _self.filterFields.length);
 
 
-      if (currentValue == undefined) {
-        return;
-      }
+        if (currentValue == undefined) {
+          return;
+        }
 
 
-      var cloneInfoFilterFields = InfoWindowUtil.cloneInfoFilterFields(currentValue);
+        var cloneInfoFilterFields = InfoWindowUtil.cloneInfoFilterFields(currentValue);
 
 
-      for (var i = 0, len = cloneInfoFilterFields.length; i < len; i++) {
-        _self.filterFields.push(cloneInfoFilterFields[i]);
-      }
+        for (var i = 0, len = cloneInfoFilterFields.length; i < len; i++) {
+          _self.filterFields.push(cloneInfoFilterFields[i]);
+        }
+      },
     },
     },
+    
+    
+    
   },
   },
 
 
   methods: {
   methods: {

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

@@ -277,11 +277,11 @@ export default {
 
 
   props: {
   props: {
     'filterFields': {
     'filterFields': {
-      type: Object,
+      type: Array,
       default: null,
       default: null,
     },
     },
     'infoButtons': {
     'infoButtons': {
-      type: Object,
+      type: Array,
       default: null,
       default: null,
     },
     },
     'isSearchWidget':{
     'isSearchWidget':{

+ 2 - 2
packages/info/src/QueryConditionSimple.vue

@@ -65,11 +65,11 @@ export default {
 
 
   props: {
   props: {
     'infoFilterFields': {
     'infoFilterFields': {
-      type: Object,
+      type: Array,
       default: null,
       default: null,
     },
     },
     'infoButtons': {
     'infoButtons': {
-      type: Object,
+      type: Array,
       default: null,
       default: null,
     }, 
     }, 
     'isSearchWidget':{
     'isSearchWidget':{

+ 1 - 7
webpack.base.js

@@ -56,13 +56,7 @@ module.exports = {
     jquery: 'window.$',
     jquery: 'window.$',
     $: 'window.$',
     $: 'window.$',
     bootstrap: 'bootstrap',
     bootstrap: 'bootstrap',
-    moment: 'moment',
-    // 不将vue代码打包进我们的组件库代码中,如果将vue代码打包进组件库中则会报错
-    vue: 'vue',
-    'vue-i18n': 'vue-i18n',
-    'vue-router': 'vue-router',
-    'v-tooltip': 'v-tooltip',
-    'vuedraggable': 'vuedraggable'
+    moment: 'moment'
   },
   },
   plugins: [
   plugins: [
     new VueLoaderPlugin(),
     new VueLoaderPlugin(),

+ 9 - 0
webpack.dev.js

@@ -14,6 +14,15 @@ module.exports = WebpackMerge.merge(baseConfig, {
   devServer: {
   devServer: {
     port: 8086,
     port: 8086,
     historyApiFallback: true,
     historyApiFallback: true,
+    proxy: {
+      '/api': {
+          //要访问的跨域的域名
+          target: 'http://127.0.0.1:83/',
+          ws: true, // 是否启用websockets
+          //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样客户端端和服务端进行数据的交互就不会有跨域问题
+          changOrigin: true,
+      }
+    }
   },
   },
   devtool: 'source-map',
   devtool: 'source-map',
   plugins: (module.exports.plugins || []).concat([
   plugins: (module.exports.plugins || []).concat([

+ 12 - 1
webpack.lib.js

@@ -27,5 +27,16 @@ module.exports = WebpackMerge.merge(baseConfig,{
     // new webpack.LoaderOptionsPlugin({
     // new webpack.LoaderOptionsPlugin({
     //   minimize: false
     //   minimize: false
     // })
     // })
-  ])
+  ]),
+  // 不把第三方库打包到bundle中
+  externals: (module.exports.externals || []).concat(
+    {
+      // 不将vue代码打包进我们的组件库代码中,如果将vue代码打包进组件库中则会报错
+      vue: 'vue',
+      'vue-i18n': 'vue-i18n',
+      'vue-router': 'vue-router',
+      'v-tooltip': 'v-tooltip',
+      'vuedraggable': 'vuedraggable'
+    }
+  ),
 });
 });