Bläddra i källkod

修复仪表盘不能显示的BUG,修复审批界面。

杨志杰 3 år sedan
förälder
incheckning
ddd79ee2e3

+ 2 - 2
package.json

@@ -1,7 +1,7 @@
 {
   "name": "client-base-v4",
   "description": "Leanwo Prodog Client",
-  "version": "3.0.23",
+  "version": "3.0.24",
   "author": "yangzhijie1488 <yangzhijie1488@163.com>",
   "scripts": {
     "dev": "cross-env webpack serve --config ./webpack.dev.js",
@@ -20,7 +20,7 @@
     "dayjs": "^1.11.6",
     "dingtalk-jsapi": "^2.10.3",
     "moment": "^2.29.4",
-    "pc-component-v3": "^1.0.44",
+    "pc-component-v3": "^1.0.49",
     "v-tooltip": "^4.0.0-beta.17",
     "vue-request": "^1.2.4",
     "vue-select": "^4.0.0-beta.6",

+ 25 - 30
src/dashboard/Dashboard.vue

@@ -12,20 +12,23 @@
 <script>
 
 import { defineComponent } from 'vue';
-import { Notify, Uuid } from 'pc-component-v3';
+
 
 
 import Common from '../common/Common.js';
-//import AssetDashboardClient from '../../dashboard/eam/AssetDashboardClient.vue';
-//import AssetDashboardOrg from '../../dashboard/eam/AssetDashboardOrg.vue';
+
+
+import { CssUtil } from 'pc-component-v3';
+import { JsUtil } from 'pc-component-v3';
+
+
 
 export default defineComponent({
 	
   name: 'DashboardPage',
 	
   components: {
-    //AssetDashboardClient,
-    //AssetDashboardOrg,
+    
   },
   data() {
     return {
@@ -39,11 +42,11 @@ export default defineComponent({
   },
 
   beforeUnmount: function(){
-    //if(this.dashboardArray != null && this.dashboardArray.length > 0){
-    //  this.dashboardArray.forEach(item => {
-    //    CssUtil.dynamicUnloadCss(item.componentName);
-    //  });
-    //}
+    if(this.dashboardArray != null && this.dashboardArray.length > 0){
+      this.dashboardArray.forEach(item => {
+        CssUtil.dynamicUnloadCss(item.componentName);
+      });
+    }
   },
 
   methods: {
@@ -85,21 +88,18 @@ export default defineComponent({
       if(dashboards != null && dashboards.length > 0) {
         dashboards.forEach(function(item) {
           console.log(item);
+          // const jsUrl = '' + '/DictionaryBase/Dashboard/BASE/2020080401.js';
+          //const jsUrl = '/DictionaryAsset/Dashboard/EAM/20220309_095250.js';
           const componentName = item.componentName;
 
-          let vueName = null;
-          if(item.vueName != null && item.vueName != undefined) {
-            vueName = item.vueName;
-            let promise = null;
-            
-            promise = new Promise((resolve, reject) => {
-              // import('../../../../Dictionary' + vueName).then(remoteComponent => {
-              //   resolve(remoteComponent);
-              // }).catch(error => {
-              //   reject(error);
-              // });
-            });
-           
+          if(item.cssUrl != null && item.cssUrl != undefined) {
+            CssUtil.dynamicLoadCss(item.cssUrl, componentName);
+          }
+
+          let jsUrl = null;
+          if(item.jsUrl != null && item.jsUrl != undefined) {
+            jsUrl = item.jsUrl;
+            let promise = JsUtil.dynamicLoadJsModule(jsUrl);
             promise.then(remoteComponent => {
               console.log('remoteComponent:' + remoteComponent.default.name);
               if(componentName !== remoteComponent.default.name){
@@ -107,21 +107,16 @@ export default defineComponent({
                 console.error(errorMessage);
                 Notify.error('仪表盘定义错误', errorMessage, false);
               }
+
+
               window.app.component(componentName, remoteComponent.default);
               var item1 = {
                 no: componentName,
                 componentName: componentName,
-                sortNo: item.sortNo,
               };
               
               console.log(_self.dashboardArray);
               _self.dashboardArray.push(item1);
-
-              function sortFunction(a, b){
-                return a.sortNo - b.sortNo;
-              }
-
-              _self.dashboardArray.sort(sortFunction);
             }, errorData => {
               console.error(errorData);
             });

+ 153 - 0
src/dashboard/DashboardStatic.vue

@@ -0,0 +1,153 @@
+<template>
+  <div>
+    <template v-for="(item, index) in dashboardArray" :key="item.no">
+      <component
+        :is="item.componentName == undefined ? '' : item.componentName"
+        :dashboard="item" @collapse="collapse($event)" @remove="remove(index)"
+      />
+    </template>
+  </div>
+</template>
+
+<script>
+
+import { defineComponent } from 'vue';
+import { Notify, Uuid } from 'pc-component-v3';
+
+
+import Common from '../common/Common.js';
+//import AssetDashboardClient from '../../dashboard/eam/AssetDashboardClient.vue';
+//import AssetDashboardOrg from '../../dashboard/eam/AssetDashboardOrg.vue';
+
+export default defineComponent({
+	
+  name: 'DashboardPage',
+	
+  components: {
+    //AssetDashboardClient,
+    //AssetDashboardOrg,
+  },
+  data() {
+    return {
+      dashboardArray: [],
+      moduleDtos: [],
+    };
+  },
+
+  mounted: function() {
+    this.loadData();
+  },
+
+  beforeUnmount: function(){
+    //if(this.dashboardArray != null && this.dashboardArray.length > 0){
+    //  this.dashboardArray.forEach(item => {
+    //    CssUtil.dynamicUnloadCss(item.componentName);
+    //  });
+    //}
+  },
+
+  methods: {
+
+    loadData() {
+      var _self = this;
+      $.ajax({
+        url: Common.getApiURL('dashboardResource/listDashBoard'),
+        type: 'get',
+        dataType: 'json',
+        beforeSend: function(request) {
+          Common.addTokenToRequest(request);
+        },
+        success: function(data) {
+          _self.dynamicInit(data);
+        },
+        error: function(XMLHttpRequest, textStatus, errorThrown) {
+          Common.processException(XMLHttpRequest, textStatus, errorThrown);
+        },
+      });
+    },
+
+    collapse: function(params) {
+      var contentElement = params[0];
+      contentElement.slideToggle();
+    },
+
+    remove: function(index) {
+      var _self = this;
+      _self.dashboardArray.splice(index, 1);
+    },
+
+    /**
+		 * 动态初始化仪表盘
+		 */
+    dynamicInit: function(dashboards) {
+      let _self = this;
+
+      if(dashboards != null && dashboards.length > 0) {
+        dashboards.forEach(function(item) {
+          console.log(item);
+          const componentName = item.componentName;
+
+          let vueName = null;
+          if(item.vueName != null && item.vueName != undefined) {
+            vueName = item.vueName;
+            let promise = null;
+            
+            promise = new Promise((resolve, reject) => {
+              // import('../../../../Dictionary' + vueName).then(remoteComponent => {
+              //   resolve(remoteComponent);
+              // }).catch(error => {
+              //   reject(error);
+              // });
+            });
+           
+            promise.then(remoteComponent => {
+              console.log('remoteComponent:' + remoteComponent.default.name);
+              if(componentName !== remoteComponent.default.name){
+                let errorMessage = '数据字典-仪表盘中部件名称定义的是' + componentName + ',但是程序中name定义的是' + remoteComponent.default.name + ',两者必须相同。';
+                console.error(errorMessage);
+                Notify.error('仪表盘定义错误', errorMessage, false);
+              }
+              window.app.component(componentName, remoteComponent.default);
+              var item1 = {
+                no: componentName,
+                componentName: componentName,
+                sortNo: item.sortNo,
+              };
+              
+              console.log(_self.dashboardArray);
+              _self.dashboardArray.push(item1);
+
+              function sortFunction(a, b){
+                return a.sortNo - b.sortNo;
+              }
+
+              _self.dashboardArray.sort(sortFunction);
+            }, errorData => {
+              console.error(errorData);
+            });
+          }
+        });
+      }
+    },
+
+  },
+});
+
+</script>
+
+<style scoped>
+	
+ul.dropdown-menu>li {
+	padding-left: 1em;
+}
+
+ul.dropdown-menu>li:hover {
+	background-color: gray;
+	cursor: pointer;
+	color: white;
+}
+
+div.dropdown {
+	margin-bottom: 20px;
+}
+</style>

+ 14 - 16
src/workflow/ApprovedWorkflow.vue

@@ -22,13 +22,13 @@
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date
+          <DateTime
             v-model="startAfter"
           />
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date
+          <DateTime
             v-model="startBefore"
           />
         </div>
@@ -43,13 +43,13 @@
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date
+          <DateTime
             v-model="finishAfter"
           />
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date
+          <DateTime
             v-model="finishBefore"
           />
         </div>
@@ -207,6 +207,8 @@ import FrameWindow from '../widget/FrameWindow.vue';
 import WindowService from '../common/WindowService.js';
 import { Notify, Uuid } from 'pc-component-v3';
 import TaskOpenUtil from './TaskOpenUtil.js';
+import * as dayjs from 'dayjs';
+
 
 export default {
 
@@ -245,12 +247,10 @@ export default {
     init: function () {
       var _self = this;
       _self.loading=true;
-      _self.defaultStartAfter = new Date();
-      _self.defaultStartAfter.setYear(2000);
-      _self.defaultStartBefore = new Date();
-      _self.defaultFinishAfter = new Date();
-      _self.defaultFinishAfter.setYear(2000);
-      _self.defaultFinishBefore = new Date();
+      _self.defaultStartAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultStartBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultFinishAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultFinishBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
       _self.taskQueryParam = {
         'condition': '',         //查询条件(主题、文件编码、正文内容、审批意见).
         'startAfter': _self.defaultStartAfter,
@@ -397,12 +397,10 @@ export default {
       var _self = this;
       _self.userName = '';
       _self.taskQueryParam.condition = '';
-      _self.defaultStartAfter = new Date();
-      _self.defaultStartAfter.setYear(2000);
-      _self.defaultStartBefore = new Date();
-      _self.defaultFinishAfter = new Date();
-      _self.defaultFinishAfter.setYear(2000);
-      _self.defaultFinishBefore = new Date();
+      _self.defaultStartAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultStartBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultFinishAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultFinishBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
       _self.startAfter = '';
       _self.startBefore = '';
       _self.finishAfter = '';

+ 13 - 16
src/workflow/CopyTaskWorkflow.vue

@@ -22,11 +22,11 @@
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date v-model="startAfter" />
+          <DateTime v-model="startAfter" />
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date v-model="startBefore" />
+          <DateTime v-model="startBefore" />
         </div>
       </div>
 
@@ -39,11 +39,11 @@
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date v-model="finishAfter" />
+          <DateTime v-model="finishAfter" />
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date v-model="finishBefore" />
+          <DateTime v-model="finishBefore" />
         </div>
       </div>
 
@@ -186,6 +186,7 @@ import Common from '../common/Common.js';
 import WindowService from '../common/WindowService.js';
 import TaskOpenUtil from './TaskOpenUtil.js';
 import { Notify, Uuid } from 'pc-component-v3';
+import * as dayjs from 'dayjs';
 
 export default {
 
@@ -225,12 +226,10 @@ export default {
     init: function () {
       var _self = this;
       _self.loading = true;
-      _self.defaultStartAfter = new Date();
-      _self.defaultStartAfter.setYear(2000);
-      _self.defaultStartBefore = new Date();
-      _self.defaultFinishAfter = new Date();
-      _self.defaultFinishAfter.setYear(2000);
-      _self.defaultFinishBefore = new Date();
+      _self.defaultStartAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultStartBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultFinishAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultFinishBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
       _self.taskQueryParam = {
         condition: '', //查询条件(主题、文件编码、正文内容、审批意见).
         startAfter: _self.defaultStartAfter,
@@ -388,12 +387,10 @@ export default {
       var _self = this;
       _self.userName = '';
       _self.taskQueryParam.condition = '';
-      _self.defaultStartAfter = new Date();
-      _self.defaultStartAfter.setYear(2000);
-      _self.defaultStartBefore = new Date();
-      _self.defaultFinishAfter = new Date();
-      _self.defaultFinishAfter.setYear(2000);
-      _self.defaultFinishBefore = new Date();
+      _self.defaultStartAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultStartBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultFinishAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultFinishBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
       _self.startAfter = '';
       _self.startBefore = '';
       _self.finishAfter = '';

+ 13 - 16
src/workflow/MyApplyWorkflow.vue

@@ -22,13 +22,13 @@
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date
+          <DateTime
             v-model="startAfter"
           />
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date
+          <DateTime
             v-model="startBefore"
           />
         </div>
@@ -43,13 +43,13 @@
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date
+          <DateTime
             v-model="finishAfter"
           />
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date
+          <DateTime
             v-model="finishBefore"
           />
         </div>
@@ -189,6 +189,7 @@ import Common from '../common/Common.js';
 
 
 import { Uuid} from 'pc-component-v3';
+import * as dayjs from 'dayjs';
 
 
 
@@ -229,12 +230,10 @@ export default {
     init: function () {
       var _self = this;
       _self.loading=true;
-      _self.defaultStartAfter = new Date();
-      _self.defaultStartAfter.setYear(2000);
-      _self.defaultStartBefore = new Date();
-      _self.defaultFinishAfter = new Date();
-      _self.defaultFinishAfter.setYear(2000);
-      _self.defaultFinishBefore = new Date();
+      _self.defaultStartAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultStartBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultFinishAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultFinishBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
       _self.taskQueryParam = {
         'condition': '',         //查询条件(主题、文件编码、正文内容、审批意见).
         'startAfter': _self.defaultStartAfter,
@@ -377,12 +376,10 @@ export default {
       var _self = this;
       _self.userName = '';
       _self.taskQueryParam.condition = '';
-      _self.defaultStartAfter = new Date();
-      _self.defaultStartAfter.setYear(2000);
-      _self.defaultStartBefore = new Date();
-      _self.defaultFinishAfter = new Date();
-      _self.defaultFinishAfter.setYear(2000);
-      _self.defaultFinishBefore = new Date();
+      _self.defaultStartAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultStartBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultFinishAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultFinishBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
       _self.startAfter = '';
       _self.startBefore = '';
       _self.finishAfter = '';

+ 7 - 8
src/workflow/NeedApproveWorkflow.vue

@@ -22,13 +22,13 @@
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date
+          <DateTime
             v-model="startAfter"
           />
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date
+          <DateTime
             v-model="startBefore"
           />
         </div>
@@ -165,6 +165,7 @@ import WorkflowResource from '../api/workflow/WorkflowResource.js';
 import CustomerTask from './CustomerTask.vue';
 import { Notify, Uuid } from 'pc-component-v3';
 import TaskOpenUtil from './TaskOpenUtil.js';
+import * as dayjs from 'dayjs';
 
 export default {
 
@@ -202,9 +203,8 @@ export default {
     init: function () {
       var _self = this;
       _self.loading=true;
-      _self.defaultStartAfter = new Date();
-      _self.defaultStartAfter.setYear(2000);
-      _self.defaultStartBefore = new Date();
+      _self.defaultStartAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultStartBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
       _self.taskQueryParam = {
         'condition': '',         //查询条件(主题、文件编码、正文内容、审批意见).
         'startAfter': _self.defaultStartAfter,
@@ -349,9 +349,8 @@ export default {
       var _self = this;
       _self.userName = '';
       _self.taskQueryParam.condition = '';
-      _self.defaultStartAfter = new Date();
-      _self.defaultStartAfter.setYear(2000);
-      _self.defaultStartBefore = new Date();
+      _self.defaultStartAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultStartBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
       _self.startAfter = '';
       _self.startBefore = '';
     },

+ 13 - 16
src/workflow/NotApproveWorkflow.vue

@@ -22,13 +22,13 @@
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date
+          <DateTime
             v-model="startAfter"
           />
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date
+          <DateTime
             v-model="startBefore"
           />
         </div>
@@ -43,13 +43,13 @@
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date
+          <DateTime
             v-model="finishAfter"
           />
         </div>
 
         <div class="col-md-5 col-sm-5 col-xs-4">
-          <Date
+          <DateTime
             v-model="finishBefore"
           />
         </div>
@@ -190,6 +190,7 @@ import Common from '../common/Common.js';
 import WindowService from '../common/WindowService.js';
 import { Notify } from 'pc-component-v3';
 import TaskOpenUtil from './TaskOpenUtil.js';
+import * as dayjs from 'dayjs';
 
 export default {
 
@@ -228,12 +229,10 @@ export default {
     init: function () {
       var _self = this;
       _self.loading=true;
-      _self.defaultStartAfter = new Date();
-      _self.defaultStartAfter.setYear(2000);
-      _self.defaultStartBefore = new Date();
-      _self.defaultFinishAfter = new Date();
-      _self.defaultFinishAfter.setYear(2000);
-      _self.defaultFinishBefore = new Date();
+      _self.defaultStartAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultStartBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultFinishAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultFinishBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
       _self.taskQueryParam = {
         'condition': '',         //查询条件(主题、文件编码、正文内容、审批意见).
         'startAfter': _self.defaultStartAfter,
@@ -378,12 +377,10 @@ export default {
       var _self = this;
       _self.userName = '';
       _self.taskQueryParam.condition = '';
-      _self.defaultStartAfter = new Date();
-      _self.defaultStartAfter.setYear(2000);
-      _self.defaultStartBefore = new Date();
-      _self.defaultFinishAfter = new Date();
-      _self.defaultFinishAfter.setYear(2000);
-      _self.defaultFinishBefore = new Date();
+      _self.defaultStartAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultStartBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultFinishAfter = dayjs().add(-1, 'month').format('YYYY-MM-DD HH:mm:ss');
+      _self.defaultFinishBefore = dayjs().format('YYYY-MM-DD HH:mm:ss');
       _self.startAfter = '';
       _self.startBefore = '';
       _self.finishAfter = '';