Ver Fonte

Merge branch 'master' of https://a.leanwo.com:3000/prodog-client-2023/client-base-v4

liuyanpeng há 1 ano atrás
pai
commit
ec350e1a8d

+ 20 - 2
src/window1/tabFormEdit/TabFormFieldEdit.vue

@@ -244,7 +244,16 @@
         :readonly="isReadOnly"
         @value-changed="valueChanged"
       />
-
+      <div v-if="fieldUtil.isGridButtonEditor(field)" style="display: inline-block">
+        <template v-for="tabFormButtonItem in field.tabFormButtonDtos" :key="tabFormButtonItem.name">
+          <a-button
+            v-if="tabFormButtonItem.action === 'OPEN_NEW_VIEW_EDIT'" type="link"
+            @click="openNewViewEdit(tabFormButtonItem)"
+          >
+            {{ tabFormButtonItem.name }}
+          </a-button>
+        </template>
+      </div>
       <p v-show="!validateMandatory" class="required-mark required-error">
         该字段为必填字段
       </p>
@@ -536,7 +545,16 @@ export default {
       return this.modelData.data[this.field.fieldName].displayValue[this.field.entityFieldIndex];
     },
 
-
+    /**
+     * 打开新界面编辑
+     * @param tabButton 
+     */
+    openNewViewEdit:function(tabButton){
+      //打开新界面编辑Url
+      var openNewViewEditUrl = tabButton.openNewViewEditUrl;
+      //modelData过去,编辑完成后把modelData带回来
+      //待开发
+    },
     // 值改变事件
     valueChanged: function (newFieldValue) {
       // this.fieldValue = newFieldValue;

+ 307 - 4
src/window1/tabFormView/TabFormFieldView.vue

@@ -32,7 +32,8 @@
             !fieldUtil.isFileType(field) &&
             !fieldUtil.isRichTextAreaEditor(field) &&
             !fieldUtil.isNumberType(field) && 
-            !fieldUtil.isButtonType(field) 
+            !fieldUtil.isButtonType(field) && 
+            !fieldUtil.isGridButtonEditor(field)             
         "
         v-tooltip.left="getFieldStringValue()"
         class="form-control-static input-group-item"
@@ -183,16 +184,62 @@
           @execute-callout="executeCallout"
         />
       </div>
+      
+      <div v-if="fieldUtil.isGridButtonEditor(field)" style="display: inline-block">
+        <template v-for="(tabFormButtonItem, index) in field.tabFormButtonDtos" :key="tabFormButtonItem.name">
+          <template v-if="visible[index]">
+            <a-button v-if="tabFormButtonItem.action === 'EDIT'" type="link" @click="editRecord">
+              {{ tabFormButtonItem.name
+              }}
+            </a-button>
+            <a-button
+              v-if="tabFormButtonItem.action === 'RUN_PROCESS_REPORT'" type="link"
+              @click="execute(tabFormButtonItem)"
+            >
+              {{ tabFormButtonItem.name }}
+            </a-button>
+            <a-button
+              v-if="tabFormButtonItem.action === 'OPEN_CUSTOMER_WINDOW'" type="link"
+              @click="execute(tabFormButtonItem)"
+            >
+              {{ tabFormButtonItem.name }}
+            </a-button>
+            <a-button
+              v-if="tabFormButtonItem.action === 'OPEN_HTML_WINDOW'" type="link"
+              @click="execute(tabFormButtonItem)"
+            >
+              {{ tabFormButtonItem.name }}
+            </a-button>
+            <a-button
+              v-if="tabFormButtonItem.action === 'OPEN_REMOTE_COMPONENT_MODULE_IN_MODAL'" type="link"
+              @click="openRemoteComponentModule(tabFormButtonItem)"
+            >
+              {{ tabFormButtonItem.name }}
+            </a-button>
+            <a-button
+              v-if="tabFormButtonItem.action === 'OPEN_NEW_VIEW_EDIT'" type="link"
+              @click="openNewViewEdit(tabFormButtonItem)"
+            >
+              {{ tabFormButtonItem.name }}
+            </a-button>
+          </template>
+        </template>
+      </div>
     </div>
   </div>
+  <component :is="modal1Component" v-model:open="modal1Open" :class-name="className" :model-data="modelData" @refresh-data="refreshDatas" />
 </template>
 
 <script>
+import {
+  ref,
+  defineAsyncComponent,
+} from 'vue';
 import fieldUtil from '../../resource/dictionary/FieldUtil.js';
 import WindowClientUtil from '../../resource/dictionary/WindowClientUtil.js';
 import Language from '../../common/Language.js';
 import Context from '../common/Context.js';
-
+import { Spin as ASpin, Empty as AEmpty } from 'ant-design-vue';
 import EnumSelectWidget from '../tabFormWidget/EnumSelectWidget.vue';
 import SelectWidget from '../tabFormWidget/SelectWidget.vue';
 import EnumRadioGroupWidget from '../tabFormWidget/EnumRadioGroupWidget.vue';
@@ -204,7 +251,12 @@ import ImageViewWidget from '../tabFormWidget/ImageViewWidget.vue';
 import ImageListViewWidget from '../tabFormWidget/ImageListViewWidget.vue';
 import JsUtil from '../../common/JsUtil.js';
 import { SqlApi } from 'pc-component-v3';
-import { Notify, Uuid } from 'pc-component-v3';
+import { Notify, Uuid , CssUtil} from 'pc-component-v3';
+import Common from '../../common/Common.js';
+import CustomerWindowResource from '../../api/dic/CustomerWindowResource.js';
+import HtmlWindowResource from '../../api/dic/HtmlWindowResource.js';
+import ProcessReportResource from '../../api/dic/ProcessReportResource.js';
+
 export default {
   components: {
     ImageViewWidget,
@@ -215,6 +267,10 @@ export default {
     VideoListWidget,
     FileListWidget,
     ButtonWidget,
+    Common,
+    CustomerWindowResource,
+    HtmlWindowResource,
+    ProcessReportResource,
   },
 
   props: {
@@ -248,7 +304,7 @@ export default {
     },
   },
 
-  emits: ['executeCallout'],
+  emits: ['executeCallout', 'refreshDatas'],
 
   data: function () {
     this.Language = Language;
@@ -266,6 +322,9 @@ export default {
       fieldValue: fieldValue,
       fieldUtil: fieldUtil,
       showField: true, // 显示字段
+      visible:[],
+      modal1Open: false,
+      modal1Component: null,
     };
   },
 
@@ -355,6 +414,19 @@ export default {
         this.showLogical();
       },
     },
+    'field.tabFormButtonDtos': {
+
+      immediate: true,
+      handler(curVal, oldVal) {
+        const _self = this;
+        this.visible.splice(0, this.visible.length);
+        if (curVal != null) {
+          curVal.forEach(item => {
+            _self.visible.push(true);
+          });
+        }
+      },
+    },
   },
 
   mounted: function () {
@@ -372,7 +444,238 @@ export default {
     executeCallout: function (field) {
       this.$emit('executeCallout', field);
     },
+    refreshDatas: function () {
+      this.$emit('refreshDatas');
+    },
+    /**
+     * 打开新界面编辑
+     * @param tabButton 
+     */
+    openNewViewEdit:function(tabButton){
+      //打开新界面编辑Url
+      var openNewViewEditUrl = tabButton.openNewViewEditUrl;
+      //传递modelData,调接口
+      //待开发
+    },
+    /**
+     * 远程加载ES VUE组件模块,并在模态框中打开。
+     * @param jsUrl js路径
+     * @param cssUrl css路径
+     */
+    openRemoteComponentModule: function (tabButton) {
+      var _self = this;
+      let jsUrl = tabButton.remoteComponentModuleJsUrl;
+      let cssUrl = tabButton.remoteComponentModuleCssUrl;
+
+      // 显示模态框
+      // 异步的加载js组件
+      //let jsUrl = './static/client-eam-module-v3/dist/AssetCheckCreate.js';
+      //let cssUrl = './static/client-eam-module-v3/dist/AssetCheckCreate.css';
+
+      if (cssUrl != null && cssUrl.length > 0) {
+        let cssUrlHash = _self.getHash(cssUrl);
+        CssUtil.dynamicLoadCss(cssUrl, cssUrlHash);
+      }
+      // webpackIgnore:设置为 true 时,禁用动态导入解析。
+      // const testAsyncRemoteComponent  = await import(/* webpackIgnore: true */ jsUrl);
+
+      // console.log(testAsyncRemoteComponent);
+      if (jsUrl != null && jsUrl.length > 0) {
+        const testAsyncRemoteComponent = defineAsyncComponent({
+          // 加载函数
+          loader: () => {
+            return import(/* webpackIgnore: true */ jsUrl);
+          },
+          // 加载异步组件时使用的组件
+          loadingComponent: ASpin,
+          // 展示加载组件前的延迟时间,默认为 200ms
+          delay: 200,
+          // 加载失败后展示的组件
+          errorComponent: AEmpty,
+          // 如果提供了一个 timeout 时间限制,并超时了
+          // 也会显示这里配置的报错组件,默认值是:Infinity
+          timeout: 10000,
+        });
+
+        _self.modal1Component = testAsyncRemoteComponent;
+        _self.modal1Open = true;
+        console.log(_self.modal1Component);
+      }
+    },
+
+    //跳转或执行流程
+    execute: function (tabButton) {
+      var _self = this;
+      _self.tabButtonModel = tabButton;
+      if (tabButton.customerWindowNo != undefined && tabButton.customerWindowNo != '') {
+        CustomerWindowResource.uniqueByNo(tabButton.customerWindowNo).then(
+          successData => {
+            if (successData.errorCode == 0) {
+              tabButton.customerWindowRouteUrl = successData.data.routeUrl;
+              if (tabButton.customerWindowNo == '20221101_151823') {
+                localStorage.setItem('AssetInstance_ComplexFilterParams', JSON.stringify(_self.complexFilterParams));
+                localStorage.setItem('AssetInstance_SimpleFilterParams', _self.simpleFilterParams);
+              }
+              //跳转到tabButton.routeUrl
+              _self.switchFormRoute(tabButton);
+            }else{
+              Notify.error(_self.$t('lang.Notify.error'), successData.errorMessage, true);
+            }
+            
+          },
+          errorData => {
+            Common.processException(errorData);
+          },
+        );
+      } else if (
+        tabButton.processReportNo != undefined &&
+      tabButton.processReportNo != ''
+      ) {
+      // 判断流程报表是否有参数
+      // 如果有参数则直接跳转到流程和报表的界面。
+        if (tabButton.routerRedirect == undefined || tabButton.routerRedirect == false) {
+          if (tabButton.tipsTitle == undefined || tabButton.tipsTitle.length == 0) {
+            _self.executeProcess();
+          } else {
+            _self.titleModal = true;
+          }
+        } else {
+          this.$router.push({
+            path: '/desktop/process-report/' + tabButton.processReportNo,
+          });
+        }
+      } else if (tabButton.htmlWindowNo != undefined) {
+        HtmlWindowResource.uniqueByNo(tabButton.htmlWindowNo).then(
+          response => {
+            if (response.errorCode != 0) {
+              Notify.error(_self.$t('lang.Notify.dataDictionaryError'), response.errorMessage, true);
+              return;
+            }
+
+            const htmlWindowDto = response.data;
+            if (htmlWindowDto != undefined) {
+              var htmlWindowUrl = htmlWindowDto.htmlFileName;
+              var autoCloseInterval = htmlWindowDto.autoCloseInterval;
+              var regExp = new RegExp('[{].*?[}]', 'g');
+              var result = htmlWindowUrl.match(regExp);
+              if (htmlWindowUrl != undefined && htmlWindowUrl != '') {
+                for (var index = 0, len = result.length; index < len; index++) {
+                  var tempResult = result[index];
+                  console.log('{' + tempResult + '}匹配');
+                  if (tempResult == '{URL}') {
+                    htmlWindowUrl = htmlWindowUrl.replace(
+                      '{URL}',
+                      Common.getHostPageBaseURL(),
+                    );
+                  } else if (tempResult == '{RecordIds}') {
+                    var recordId = _self.modelData.id;
+                    htmlWindowUrl = htmlWindowUrl.replace('{RecordIds}', recordId);
+                  } else if (tempResult == '{Token}') {
+                    htmlWindowUrl = htmlWindowUrl.replace('{Token}', Common.getToken());
+                  } else {
+                    if (_self.selectedModelDatas.length == 0) {
+                      Notify.error(_self.$t('lang.Notify.error'), _self.$t('lang.tabButton.describe3'), true);
+                      return;
+                    } else if (_self.selectedModelDatas.length > 1) {
+                      Notify.error(_self.$t('lang.Notify.error'), _self.$t('lang.tabButton.describe2'), true);
+                      return;
+                    }
+                    var tempResult1 = tempResult.replace('{', '').replace('}', '');
+                    htmlWindowUrl = htmlWindowUrl.replace(
+                      tempResult,
+                      _self.getFirstSelectModelDataFieldValue(tempResult1),
+                    );
+                  }
+                }
+
+                var openWindow = window.open(htmlWindowUrl);
+
+                // 自动关闭
+                if (autoCloseInterval != undefined) {
+                  setTimeout(function () {
+                    openWindow.close();
+                    openWindow = undefined;
+                  }, autoCloseInterval * 1000);
+                }
+              }
+            }
+          },
+          errorData => {
+            Common.processException(errorData);
+          },
+        );
+      }
+    },
+    // 执行流程
+    executeProcess: function () {
+      var _self = this;
+      var ids = [_self.modelData.id];
+      ProcessReportResource.runProcessByIds(_self.tabButtonModel.processReportNo, ids).then(
+        successData => {
+          _self.modal = true;
+          _self.processReportResult = successData;
+
+          if (
+            _self.processReportResult.reportResults != undefined &&
+          _self.processReportResult.reportResults.length > 0
+          ) {
+            _self.processReportResult.reportResults.forEach(function (item, index) {
+              if (item.reportDefinitionType !== 'ExcelReport') {
+                item.previewIndex = 1;
+              } else {
+                item.previewIndex = 2;
+              }
+              if (index == 0) {
+                item.showPreview = true;
+              } else {
+                item.showPreview = false;
+              }
+            });
+          }
+          _self.titleModal = false;
+          _self.refreshDatas();
+        },
+        errorData => {
+          _self.titleModal = false;
+          Common.processException(errorData);
+        },
+      );
+    // }
+    },
+    // 切换到Form表单的路由
+    switchFormRoute: function (tabButton) {
+      const _self = this;
+      var routeDate = {
+        path: tabButton.customerWindowRouteUrl,
+        params: {
+          modelData: this.modelData,
+        },
+      };
+      // 请勿修改,会影响生单的功能
+      var uuid = _self.uuid;
+      if (uuid != undefined) {
+        routeDate.path = routeDate.path + '/' + uuid;
+      }
+
+      const frameUrl = Common.getRedirectUrl(
+        '#' + routeDate.path,
+      );
 
+      // 供子页面iframe调用,修改modelData,(举例:生单界面修改参数)。
+      // window.modelDataChanged = this.modelDataChanged;
+
+      // window.getModelData = this.getModelData;
+      let modelData = JSON.stringify(this.modelData);
+      console.log(modelData);
+      localStorage.setItem(_self.uuid + '#GenerateDocumentTool', modelData);
+
+      var iWidth = 1280;//弹出窗口的宽度;
+      var iHeight = 720; //弹出窗口的高度;
+      var iTop = (window.screen.availHeight - 30 - iHeight) / 2;//获得窗口的垂直位置;
+      var iLeft = (window.screen.availWidth - 10 - iWidth) / 2; //获得窗口的水平位置;
+      window.open(frameUrl, '_blank', 'height=' + iHeight + ',innerHeight=' + iHeight + ',width=' + iWidth + ',innerWidth=' + iWidth + ',top=' + iTop + ',left=' + iLeft + ',toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no');
+    // window.open(frameUrl);
+    },
     // 获取String字符串
     getFieldStringValue: function () {
       var value = '';

+ 23 - 2
src/window1/tabGridView/CellTextItem.vue

@@ -116,6 +116,12 @@
           >
             {{ tabGridButtonItem.name }}
           </a-button>
+          <a-button
+            v-if="tabGridButtonItem.action === 'OPEN_NEW_VIEW_EDIT'" type="link"
+            @click="openNewViewEdit(tabGridButtonItem)"
+          >
+            {{ tabGridButtonItem.name }}
+          </a-button>
         </template>
       </template>
     </div>
@@ -224,6 +230,10 @@ export default {
       type: String,
       default: null,
     },
+    index:{
+      type: Number,
+      default: null,
+    },
   },
   emits: ['executeCallout', 'deleteRecord', 'refreshDatas', 'editRecord', 'readRecord'],
 
@@ -522,10 +532,10 @@ export default {
     },
     // 改变表格行元素的编辑状态
     editRecord: function () {
-      this.$emit('editRecord');
+      this.$emit('editRecord', this.modelData, this.index);
     },
     readRecord: function () {
-      this.$emit('readRecord');
+      this.$emit('readRecord', true, this.modelData, this.index);
     },
 
 
@@ -576,6 +586,17 @@ export default {
       }
     },
 
+    /**
+     * 打开新界面编辑
+     * @param tabButton 
+     */
+    openNewViewEdit:function(tabButton){
+      //打开新界面编辑Url
+      var openNewViewEditUrl = tabButton.openNewViewEditUrl;
+      //传递modelData,调接口
+      //待开发
+    },
+
     /**
      * 获取字符串的哈希值
      * @param input

+ 6 - 5
src/window1/tabGridView/GridBody.vue

@@ -73,7 +73,8 @@
               :grid-field-item="gridFieldItem" :model-data="modelData" :class-name="className"
               :simple-filter-params="simpleFilterParams" :complex-filter-params="complexFilterParams"
               :model-datas="modelDatas" :js-url="jsUrl"
-              @execute-callout="executeCallout(gridFieldItem)" @delete-record="deleteRecord" @refresh-datas="refreshDatas"
+              :index="index" @execute-callout="executeCallout(gridFieldItem)" @delete-record="deleteRecord"
+              @refresh-datas="refreshDatas"
               @edit-record="editRecord"
               @read-record="readRecord"
             />
@@ -379,12 +380,12 @@ export default {
     },
 
     // 改变表格行元素的编辑状态
-    editRecord: function () {
-      this.$emit('editRecord');
+    editRecord: function (modelData, index) {
+      this.$emit('editRecord', modelData, index);
     },
 
-    readRecord: function () {
-      this.$emit('readRecord');
+    readRecord: function (isRead, modelData, index) {
+      this.$emit('readRecord', isRead, modelData, index);
     },
 
     clickModelData: function () {

+ 53 - 51
src/window1/tabGridView/TabGridEdit.vue

@@ -1091,58 +1091,58 @@ export default {
         );
       } else {
         // 如果存在子页签,则进入到新建的界面
-        if (_self.window.tabs != undefined && _self.window.tabs.length > 1) {
-          var currPage = _self.pagination.current_page;
-          var currIndex = (currPage - 1) * Common.pageSize + index + 1;
-          var totalCount = _self.pagination.total;
+        // if (_self.window.tabs != undefined && _self.window.tabs.length > 1) {
+        var currPage = _self.pagination.current_page;
+        var currIndex = (currPage - 1) * Common.pageSize + index + 1;
+        var totalCount = _self.pagination.total;
 
 
-          _self.dynamicComponentParam = {
-            viewType: 'edit',
-            curdWindowNo: _self.windowNo,
-            tabIndex: _self.tabIndex,
-            modelDataId: modelData.id,
-            currentPage: currPage,
-            currentIndex: currIndex,
-            totalRecords: totalCount,
-            isRestoreData: _self.isRestoreData,
-            uuid: _self.uuid,
-          };
-          _self.dynamicComponent = 'CurdWindowModal';
-          _self.dynamicComponentOpen = true;
+        _self.dynamicComponentParam = {
+          viewType: 'edit',
+          curdWindowNo: _self.windowNo,
+          tabIndex: _self.tabIndex,
+          modelDataId: modelData.id,
+          currentPage: currPage,
+          currentIndex: currIndex,
+          totalRecords: totalCount,
+          isRestoreData: _self.isRestoreData,
+          uuid: _self.uuid,
+        };
+        _self.dynamicComponent = 'CurdWindowModal';
+        _self.dynamicComponentOpen = true;
 
 
-          // this.$router.push(
-          //   'window-edit/edit/' +
-          //   this.windowNo +
-          //   '/' +
-          //   this.tabIndex +
-          //   '/' +
-          //   modelData.id +
-          //   '?currPage=' +
-          //   currPage +
-          //   '&currIndex=' +
-          //   currIndex +
-          //   '&totalCount=' +
-          //   totalCount +
-          //   '&uuid=' +
-          //   this.uuid +
-          //   '&isRestoreData=' +
-          //   _self.isRestoreData,
-          // );
-        } else {
-          if (!modelData.editMode) {
-            modelData.editMode = true;
-          } else {
-            this.saveTabData(modelData, index, true);
-          }
-          modelData.changed = true;
-          _self.dataChanged = true;
-          let index1 = this.modelDatas.indexOf(modelData);
-          if (index1 != -1) {
-            this.modelDatas[index1] = modelData;
-          }
-        }
+        // this.$router.push(
+        //   'window-edit/edit/' +
+        //   this.windowNo +
+        //   '/' +
+        //   this.tabIndex +
+        //   '/' +
+        //   modelData.id +
+        //   '?currPage=' +
+        //   currPage +
+        //   '&currIndex=' +
+        //   currIndex +
+        //   '&totalCount=' +
+        //   totalCount +
+        //   '&uuid=' +
+        //   this.uuid +
+        //   '&isRestoreData=' +
+        //   _self.isRestoreData,
+        // );
+        // } else {
+        //   if (!modelData.editMode) {
+        //     modelData.editMode = true;
+        //   } else {
+        //     this.saveTabData(modelData, index, true);
+        //   }
+        //   modelData.changed = true;
+        //   _self.dataChanged = true;
+        //   let index1 = this.modelDatas.indexOf(modelData);
+        //   if (index1 != -1) {
+        //     this.modelDatas[index1] = modelData;
+        //   }
+        // }
       }
     },
 
@@ -1202,13 +1202,13 @@ export default {
     readRecord: function (isRead, modelData, index) {
       this.nowModelIndex = index + 1;
       var _self = this;
-      const readModelData = !_self.checkDatas ? modelData : _self.checkDatas.modelData;
+      const readModelData = modelData;
       if (readModelData.editMode == true) {
         return;
       }
       if (isRead) {
         var currPage = _self.pagination.current_page;
-        var currIndex = (currPage - 1) * Common.pageSize + _self.checkDatas.index + 1;
+        var currIndex = (currPage - 1) * Common.pageSize + index + 1;
         var totalCount = _self.pagination.total;
 
         var customerWindowUrl = _self.tab.customerWindowUrl;
@@ -1236,13 +1236,15 @@ export default {
           if (readModelData.data['category']) {
             categoryValue = readModelData.data['category'];
             displayValue = categoryValue['displayValue'];
+            categoryNo = displayValue[displayValue.length - 1];
           } else if (readModelData.data['assetCategory']) {
             categoryValue = readModelData.data['assetCategory'];
             displayValue = categoryValue['displayValue'];
+            categoryNo = displayValue[displayValue.length - 1];
           } else {
             categoryNo = this.windowNo;
           }
-          categoryNo = displayValue[displayValue.length - 1];
+          
 
           _self.dynamicComponentParam = {
             viewType: 'view',

+ 13 - 13
webpack.dev.js

@@ -62,78 +62,78 @@ module.exports = WebpackMerge.merge(baseConfig, {
     
     proxy: {
       '/api': {
-        target: 'http://192.168.1.113:10022/',
+        target: 'http://192.168.1.8:10025/',
         ws: false,
         changeOrigin: true,
         secure:true,
       },
       '/static': {
-        target: 'http://192.168.1.113:10022/',
+        target: 'http://192.168.1.8:10025/',
         ws: false,
         changeOrigin: true,
         secure:true,
       },
       '/content': {
-        target: 'http://192.168.1.113:10022/',
+        target: 'http://192.168.1.8:10025/',
         ws: false,
         changeOrigin: true,
         secure:true,
       },
       '/dashboard': {
-        target: 'http://192.168.1.113:10022/',
+        target: 'http://192.168.1.8:10025/',
         ws: false,
         changeOrigin: true,
         secure:true,
       },
       '/assets': {
-        target: 'http://192.168.1.113:10022/',
+        target: 'http://192.168.1.8:10025/',
         ws: false,
         changeOrigin: true,
         secure:true,
       },
       '/mock': {
-        target: 'http://192.168.1.113:10022/',
+        target: 'http://192.168.1.8:10025/',
         ws: false,
         changeOrigin: true,
         secure:true,
       },
       '/authApi': {
-        target: 'http://192.168.1.113:10022/',
+        target: 'http://192.168.1.8:10025/',
         ws: false,
         changeOrigin: true,
         secure:true,
       },
       '/Dictionary': {
-        target: 'http://192.168.1.113:10022/',
+        target: 'http://192.168.1.8:10025/',
         ws: false,
         changeOrigin: true,
         secure:true,
       },
       '/Files': {
-        target: 'http://192.168.1.113:10022/',
+        target: 'http://192.168.1.8:10025/',
         ws: false,
         changeOrigin: true,
         secure:true,
       },
       '/WebSocket': {
-        target: 'http://192.168.1.113:10022/',
+        target: 'http://192.168.1.8:10025/',
         ws: true,
         changeOrigin: true,
       },
       '/TrainVideo': {
-        target: 'http://192.168.1.113:10022/',
+        target: 'http://192.168.1.8:10025/',
         ws: true,
         changeOrigin: true,
       },
       '/module': {
-        target: 'http://192.168.1.113:10022/',
+        target: 'http://192.168.1.8:10025/',
         ws: true,
         changeOrigin: true,
         secure:true,
       },
     },
     client: {
-      overlay: false //解决ResizeObserver loop completed with undelivered notifications
+      overlay: false, //解决ResizeObserver loop completed with undelivered notifications
     },
   },