yangbifan преди 2 години
родител
ревизия
9150b6507a
променени са 80 файла, в които са добавени 73067 реда и са изтрити 1918 реда
  1. 5 1
      .env.development
  2. 6 1
      .env.production
  3. 5 0
      .env.test
  4. 7 0
      .gitignore
  5. 0 0
      config/config.js
  6. 10 8
      config/dev.env.js
  7. 4 0
      config/excel.env.js
  8. 15 2
      config/index.js
  9. 12 7
      package.json
  10. 5 4
      public/index.html
  11. 22904 0
      public/luckSheetExcel.js
  12. 4151 0
      public/luckysheet.umd.js
  13. 42 0
      public/static/js/luckysheet/demoData/demoFeature.js
  14. 1578 0
      public/static/js/luckysheet/demoData/sheetCell.js
  15. 4918 0
      public/static/js/luckysheet/demoData/sheetChart.js
  16. 67 0
      public/static/js/luckysheet/demoData/sheetComment.js
  17. 6541 0
      public/static/js/luckysheet/demoData/sheetConditionFormat.js
  18. 579 0
      public/static/js/luckysheet/demoData/sheetDataVerification.js
  19. 6600 0
      public/static/js/luckysheet/demoData/sheetFormula.js
  20. 159 0
      public/static/js/luckysheet/demoData/sheetPicture.js
  21. 189 0
      public/static/js/luckysheet/demoData/sheetPivotTable.js
  22. 741 0
      public/static/js/luckysheet/demoData/sheetPivotTableData.js
  23. 7066 0
      public/static/js/luckysheet/demoData/sheetSparkline.js
  24. 1068 0
      public/static/js/luckysheet/demoData/sheetTable.js
  25. 1944 0
      public/static/js/luckysheet/index.html
  26. 0 1
      public/static/js/url.js
  27. 637 0
      public/static/views/onlineShareExcelMarkets.html
  28. 720 0
      public/static/views/onlineShareExcels.html
  29. 591 0
      public/static/views/performance.html
  30. 80 52
      src/assets/js/common.js
  31. 3 0
      src/assets/js/url.js
  32. 48 0
      src/assets/js/util.js
  33. 2 2
      src/components/newTree.vue
  34. 47 42
      src/components/search.vue
  35. 181 175
      src/components/uploadDown.vue
  36. 240 0
      src/components/uploadMultiConfig.vue
  37. 1 1
      src/components/workflowBase.vue
  38. 5 5
      src/components/workflowEntrance.vue
  39. 62 0
      src/config/dev.js
  40. 6 6
      src/http/index.js
  41. 4 0
      src/main.js
  42. 161 357
      src/pages/main/advertising/businessHall.vue
  43. 139 154
      src/pages/main/advertising/contractCap.vue
  44. 188 174
      src/pages/main/advertising/index.vue
  45. 447 0
      src/pages/main/advertising/materialAppMessage.vue
  46. 415 0
      src/pages/main/advertising/materialAppNum.vue
  47. 28 24
      src/pages/main/advertising/materialApplistatic.vue
  48. 15 0
      src/pages/main/advertising/supplier.vue
  49. 535 0
      src/pages/main/documentCollection/documentCollectionApproval.vue
  50. 1186 0
      src/pages/main/documentCollection/documentCollectionApprovalExcel.vue
  51. 472 0
      src/pages/main/documentCollection/documentCollectionApprovalIssuedCollect.vue
  52. 691 0
      src/pages/main/documentCollection/documentCollectionApprovalIssuedMoud.vue
  53. 131 0
      src/pages/main/documentCollection/home.vue
  54. 296 0
      src/pages/main/documentCollection/newTree.vue
  55. 95 0
      src/pages/main/documentCollection/search.vue
  56. 2 0
      src/pages/main/homeMarket/tvAssess/initiateAssess.vue
  57. 1 0
      src/pages/main/homeMarket/tvAssess/tvAssessIndex.vue
  58. 0 65
      src/pages/main/leader/demand/demandHome.vue
  59. 1 1
      src/pages/main/leader/leaderhomeTask.vue
  60. 4 2
      src/pages/main/leader/risk/riskManagement.vue
  61. 4 2
      src/pages/main/leader/risk/riskMaterials.vue
  62. 232 0
      src/pages/main/luckySheet/index.vue
  63. 94 69
      src/pages/main/onlineExcel/index.vue
  64. 40 13
      src/pages/main/onlineExcelMarket/index.vue
  65. 1011 0
      src/pages/main/onlineExcelMarkets/index.vue
  66. 1098 0
      src/pages/main/onlineExcels/index.vue
  67. 67 36
      src/pages/main/onlineOffice/index.vue
  68. 1364 0
      src/pages/main/productionDataExport/cityHome.vue
  69. 113 0
      src/pages/main/productionDataExport/form.vue
  70. 604 0
      src/pages/main/productionDataExport/formTable.vue
  71. 1370 0
      src/pages/main/productionDataExport/provinceHome.vue
  72. 4 2
      src/pages/main/provincialWorkOrder/provincialWorkOrder.vue
  73. 5 2
      src/pages/main/provincialWorkOrder/provincialWorkOrderArea.vue
  74. 742 641
      src/pages/main/terminal/advertincrease.vue
  75. 20 12
      src/pages/main/terminals/advchecks.vue
  76. 6 3
      src/pages/main/terminals/advertincreases.vue
  77. 123 33
      src/pages/main/terminals/components/adverts.vue
  78. 96 5
      src/router/index.js
  79. 8 5
      vue.config.js
  80. 16 11
      yarn.lock

+ 5 - 1
.env.development

@@ -1,2 +1,6 @@
 VUE_APP_FILE_API = http://192.168.1.9:9114
-VUE_APP_GRID_API = http://192.168.1.19:9114
+VUE_APP_GRID_API = http://192.168.1.19:9114
+NODE_ENV = development
+
+VUE_APP_ENV = development
+outputDir = dist-dev

+ 6 - 1
.env.production

@@ -1,2 +1,7 @@
 VUE_APP_FILE_API =
-VUE_APP_GRID_API =
+VUE_APP_GRID_API =
+
+NODE_ENV = production
+
+VUE_APP_ENV = production
+outputDir = dist-production

+ 5 - 0
.env.test

@@ -0,0 +1,5 @@
+VUE_APP_FILE_API =
+VUE_APP_GRID_API =
+NODE_ENV = 'production'
+VUE_APP_ENV = test
+outputDir = dist-test

+ 7 - 0
.gitignore

@@ -1,7 +1,13 @@
 .DS_Store
 node_modules
 /dist
+<<<<<<< HEAD
+dist.zip
 
+=======
+/dist-test
+dist.zip
+>>>>>>> 2e174cfb914257ff0e2bab0e76423d7d1fe78aba
 # local env files
 .env.local
 .env.*.local
@@ -19,3 +25,4 @@ yarn-error.log*
 *.njsproj
 *.sln
 *.sw?
+*.zip

+ 0 - 0
config/config.js


+ 10 - 8
config/dev.env.js

@@ -1,18 +1,20 @@
 'use strict'
 const merge = require('webpack-merge')
 const prodEnv = require('./prod.env')
-
-module.exports = merge(prodEnv, {
+import getConfig from '/src/config/dev.js'
+let BASE_API = getConfig().BASE_API
+let BASE_URL = getConfig().BASE_URL
+export default  {
   NODE_ENV: '"development"',
   ENV_CONFIG: '"dev"',
-  ctx:'"http://127.0.0.1:8080"',
-  // ctxForm: '"http://10.149.85.91:8000/api"',//dev
-  ctxForm: '"http://43.138.50.94:8880/api"',//test
-  // ctxForm: '"http://192.168.2.92:8880/api"',//test
-  // ctxForm: '"http://10.230.26.15:8000/api"',//生产?
+  ctx:"'"+ BASE_URL + "'",
+  // ctxForm: '"http://10.149.85.91:8000"',//dev
+  // ctxForm: '"http://43.138.50.94:8880"',//test
+  // ctxForm: '"http://192.168.2.44:8880"',//test
+  ctxForm: "'"+ BASE_API + "'",//生产
 
   excludeMeWhenSelectNextHandler:false,
   excludeFormerHanlder:false,
   envTitle:'"本地开发环境"'
-})
+}
   

+ 4 - 0
config/excel.env.js

@@ -0,0 +1,4 @@
+const excelUrl = {
+  dev: 'http://192.168.2.124:7777'
+}
+export default excelUrl;

+ 15 - 2
config/index.js

@@ -5,6 +5,19 @@
 const path = require('path')
 // import common from '../src/assets/js/common.js';
 module.exports = {
+  rules: [
+    {
+      test: /\.(woff2?eot|ttf|otf)(\?.*)?$/,
+      loader: "url-loader",
+      options: {
+        limit: 10003,
+        name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
+      }
+
+
+    }
+
+  ],
   dev: {
 
     // Paths
@@ -34,7 +47,7 @@ module.exports = {
     notifyOnErrors: true,
     poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
 
-    
+
     /**
      * Source Maps
      */
@@ -77,7 +90,7 @@ module.exports = {
     // Before setting to `true`, make sure to:
     // npm install --save-dev compression-webpack-plugin
     productionGzip: false,
-    productionGzipExtensions: ['js', 'css'],
+    productionGzipExtensions: ['js', 'css', 'eot', 'svg', 'ttf'],
 
     // Run the build command with an extra argument to
     // View the bundle analyzer report after build finishes:

+ 12 - 7
package.json

@@ -3,8 +3,13 @@
   "version": "0.1.0",
   "private": true,
   "scripts": {
-    "serve": "vue-cli-service serve",
-    "build": "vue-cli-service build",
+    "abc": "vue-cli-service build",
+    "serve": "vue-cli-service serve --mode development",
+    "serve:test": "vue-cli-service serve --mode test",
+    "build": "vue-cli-service build  --mode development",
+    "build:devs": "vue-cli-service build  --mode devs",
+    "build:test": "vue-cli-service build  --mode test",
+    "build:next": "vue-cli-service build  --mode production",
     "lint": "vue-cli-service lint",
     "analyz": "vue-cli-service build"
   },
@@ -12,7 +17,7 @@
     "@fullcalendar/daygrid": "^5.10.1",
     "@fullcalendar/interaction": "^5.10.1",
     "@fullcalendar/vue": "^5.10.1",
-    "@onlyoffice/document-editor-vue": "^1.2.0",
+    "@onlyoffice/document-editor-vue": "^1.3.0",
     "@tinymce/tinymce-vue": "^3.0.1",
     "axios": "^0.19.0",
     "canvg": "^3.0.7",
@@ -24,7 +29,7 @@
     "file-saver": "^2.0.5",
     "form-making": "^1.2.10",
     "html2canvas": "^1.0.0-rc.7",
-    "jquery": "^3.6.0",
+    "jquery": "^3.6.4",
     "jquery-ui": "^1.12.1",
     "js-audio-recorder": "^1.0.7",
     "jsplumb": "^2.15.5",
@@ -45,9 +50,9 @@
     "xlsx": "^0.16.9"
   },
   "devDependencies": {
-    "@vue/cli-plugin-babel": "^4.1.2",
-    "@vue/cli-plugin-eslint": "^4.1.2",
-    "@vue/cli-service": "^4.1.2",
+    "@vue/cli-plugin-babel": "^4.5.0",
+    "@vue/cli-plugin-eslint": "~4.5.0",
+    "@vue/cli-service": "~4.5.0",
     "babel-eslint": "^10.0.3",
     "babel-plugin-component": "^1.1.1",
     "compression-webpack-plugin": "^3.0.1",

+ 5 - 4
public/index.html

@@ -21,6 +21,7 @@
   <link rel='stylesheet' href='/static/js/luckysheet/assets/iconfont/iconfont.css' />
   <script src="./static/js/base64.min.js"></script>
   <script src="/static/js/ace.js"></script>
+  <script src="./static/js/jquery-1.8.2.min.js"></script>
 </head>
 
 <body>
@@ -31,13 +32,13 @@
   <div id="app"></div>
   <!-- built files will be auto injected -->
   <script type="text/javascript">
-    // window.staticHost = 'http://10.230.26.15:8000/mkt'; // 正式
-    // window.staticHost = 'http://10.149.85.91:8000/spfm'; // 测试
-    // window.staticHost = 'http://150.158.79.10:9600';
+    // window.staticHost = 'http://10.230.26.15:8000/mkt/'; // 正式
+    window.staticHost = 'http://10.149.85.91:8000/spfm/'; // 测试
+    // window.staticHost = 'http://192.168.2.92:9600';
     // window.staticHost = 'http://43.138.50.94:9600/';
 
     // document.title = "hello";
   </script>
 </body>
 
-</html>
+</html>

Файловите разлики са ограничени, защото са твърде много
+ 22904 - 0
public/luckSheetExcel.js


Файловите разлики са ограничени, защото са твърде много
+ 4151 - 0
public/luckysheet.umd.js


+ 42 - 0
public/static/js/luckysheet/demoData/demoFeature.js

@@ -0,0 +1,42 @@
+
+// Features specially written for demo
+
+(function() {
+
+    // language
+    function language(params) {
+        
+        var lang = navigator.language||navigator.userLanguage;//常规浏览器语言和IE浏览器
+        lang = lang.substr(0, 2);//截取lang前2位字符
+
+        return lang;
+
+    }
+    // Tencent Forum Link Button
+    function supportButton() {
+        const text = language() === 'zh' ? '反馈' : 'Forum';
+        const link = language() === 'zh' ? 'https://support.qq.com/product/288322' : 'https://groups.google.com/g/luckysheet';
+
+        document.querySelector("body").insertAdjacentHTML('beforeend', '<a id="container" href="'+ link +'" target="_blank" style="z-index:2;width:50px;height:50px;line-height:50px;position:fixed;right:40px;bottom:86px;border-radius:50px;cursor:pointer;background:rgb(71,133,249);color:#fff;text-align:center;text-decoration:none;">'+ text +'</a>');
+    }
+    
+    supportButton()
+
+    /**
+     * Get url parameters
+     */
+    function getRequest() {
+        var vars = {};
+        var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,    
+        function(m,key,value) {
+          vars[key] = value;
+        });
+        return vars;
+    }
+
+    window.luckysheetDemoUtil = {
+        language:language,
+        getRequest:getRequest
+    }
+    
+})()

Файловите разлики са ограничени, защото са твърде много
+ 1578 - 0
public/static/js/luckysheet/demoData/sheetCell.js


Файловите разлики са ограничени, защото са твърде много
+ 4918 - 0
public/static/js/luckysheet/demoData/sheetChart.js


+ 67 - 0
public/static/js/luckysheet/demoData/sheetComment.js

@@ -0,0 +1,67 @@
+window.sheetComment = {
+	"name": "Comment",
+	"color": "",
+	"config": {
+		"columnlen": {
+			"2": 102
+		}
+	},
+	"index": "5",
+	"chart": [],
+	"status": 0,
+	"order": "5",
+	"column": 18,
+	"row": 36,
+	"celldata": [{
+		"r": 2,
+		"c": 2,
+		"v": {
+			"m": "HoverShown",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "HoverShown",
+			"bl": 1,
+			"ps": {
+				"left": null,
+				"top": null,
+				"width": null,
+				"height": null,
+				"value": "Hello world!",
+				"isshow": false
+			}
+		}
+	}, {
+		"r": 7,
+		"c": 2,
+		"v": {
+			"m": "Size",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Size",
+			"bl": 1,
+			"ps": {
+				"left": null,
+				"top": null,
+				"width": null,
+				"height": null,
+				"value": "Hello,world!",
+				"isshow": true
+			}
+		}
+	}],
+	"ch_width": 4748,
+	"rh_height": 1790,
+	"luckysheet_select_save": [{
+		"row": [0, 0],
+		"column": [0, 0]
+	}],
+	"luckysheet_selection_range": [],
+	"scrollLeft": 0,
+	"scrollTop": 0
+}
+
+// export default sheetComment;

Файловите разлики са ограничени, защото са твърде много
+ 6541 - 0
public/static/js/luckysheet/demoData/sheetConditionFormat.js


Файловите разлики са ограничени, защото са твърде много
+ 579 - 0
public/static/js/luckysheet/demoData/sheetDataVerification.js


Файловите разлики са ограничени, защото са твърде много
+ 6600 - 0
public/static/js/luckysheet/demoData/sheetFormula.js


Файловите разлики са ограничени, защото са твърде много
+ 159 - 0
public/static/js/luckysheet/demoData/sheetPicture.js


+ 189 - 0
public/static/js/luckysheet/demoData/sheetPivotTable.js

@@ -0,0 +1,189 @@
+window.sheetPivotTable = {
+	"name": "PivotTable",
+	"color": "",
+	"config": {},
+	"index": "7",
+	"chart": [],
+	"status": 0,
+	"order": "7",
+	"column": 18,
+	"row": 36,
+	"celldata": [{
+		"r": 0,
+		"c": 0,
+		"v": "count:score"
+	}, {
+		"r": 0,
+		"c": 1,
+		"v": "science"
+	}, {
+		"r": 0,
+		"c": 2,
+		"v": "mathematics"
+	}, {
+		"r": 0,
+		"c": 3,
+		"v": "foreign language"
+	}, {
+		"r": 0,
+		"c": 4,
+		"v": "English"
+	}, {
+		"r": 0,
+		"c": 5,
+		"v": "total"
+	}, {
+		"r": 1,
+		"c": 0,
+		"v": "Alex"
+	}, {
+		"r": 1,
+		"c": 1,
+		"v": 1
+	}, {
+		"r": 1,
+		"c": 2,
+		"v": 1
+	}, {
+		"r": 1,
+		"c": 3,
+		"v": 1
+	}, {
+		"r": 1,
+		"c": 4,
+		"v": 1
+	}, {
+		"r": 1,
+		"c": 5,
+		"v": 4
+	}, {
+		"r": 2,
+		"c": 0,
+		"v": "Joy"
+	}, {
+		"r": 2,
+		"c": 1,
+		"v": 1
+	}, {
+		"r": 2,
+		"c": 2,
+		"v": 1
+	}, {
+		"r": 2,
+		"c": 3,
+		"v": 1
+	}, {
+		"r": 2,
+		"c": 4,
+		"v": 1
+	}, {
+		"r": 2,
+		"c": 5,
+		"v": 4
+	}, {
+		"r": 3,
+		"c": 0,
+		"v": "Tim"
+	}, {
+		"r": 3,
+		"c": 1,
+		"v": 1
+	}, {
+		"r": 3,
+		"c": 2,
+		"v": 1
+	}, {
+		"r": 3,
+		"c": 3,
+		"v": 1
+	}, {
+		"r": 3,
+		"c": 4,
+		"v": 1
+	}, {
+		"r": 3,
+		"c": 5,
+		"v": 4
+	}, {
+		"r": 4,
+		"c": 0,
+		"v": "total"
+	}, {
+		"r": 4,
+		"c": 1,
+		"v": 3
+	}, {
+		"r": 4,
+		"c": 2,
+		"v": 3
+	}, {
+		"r": 4,
+		"c": 3,
+		"v": 3
+	}, {
+		"r": 4,
+		"c": 4,
+		"v": 3
+	}, {
+		"r": 4,
+		"c": 5,
+		"v": 12
+	}],
+	"ch_width": 4748,
+	"rh_height": 1790,
+	"luckysheet_select_save": [{
+		"row": [0, 0],
+		"column": [0, 0]
+	}],
+	"luckysheet_selection_range": [],
+	"scrollLeft": 0,
+	"scrollTop": 0,
+	"isPivotTable": true,
+	"pivotTable": {
+		"pivot_select_save": {
+			"left": 0,
+			"width": 73,
+			"top": 0,
+			"height": 19,
+			"left_move": 0,
+			"width_move": 369,
+			"top_move": 0,
+			"height_move": 259,
+			"row": [0, 12],
+			"column": [0, 4],
+			"row_focus": 0,
+			"column_focus": 0
+		},
+		"pivotDataSheetIndex": 6, //The sheet index where the source data is located
+		"column": [{
+			"index": 3,
+			"name": "subject",
+			"fullname": "subject"
+		}],
+		"row": [{
+			"index": 1,
+			"name": "student",
+			"fullname": "student"
+		}],
+		"filter": [],
+		"values": [{
+			"index": 4,
+			"name": "score",
+			"fullname": "count:score",
+			"sumtype": "COUNTA",
+			"nameindex": 0
+		}],
+		"showType": "column",
+		"pivotDatas": [
+			["count:score", "science", "mathematics", "foreign language", "English", "total"],
+			["Alex", 1, 1, 1, 1, 4],
+			["Joy", 1, 1, 1, 1, 4],
+			["Tim", 1, 1, 1, 1, 4],
+			["total", 3, 3, 3, 3, 12]
+		],
+		"drawPivotTable": false,
+		"pivotTableBoundary": [5, 6]
+	}
+}
+
+// export default sheetPivotTable;

+ 741 - 0
public/static/js/luckysheet/demoData/sheetPivotTableData.js

@@ -0,0 +1,741 @@
+window.sheetPivotTableData = {
+	"name": "PivotTableData",
+	"color": "",
+	"config": {
+		"merge": {}
+	},
+	"index": "6",
+	"chart": [],
+	"status": 0,
+	"order": "6",
+	"hide": 0,
+	"column": 18,
+	"row": 36,
+	"celldata": [{
+		"r": 0,
+		"c": 0,
+		"v": {
+			"m": "Mock test",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Mock test"
+		}
+	}, {
+		"r": 0,
+		"c": 1,
+		"v": {
+			"m": "student",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "student"
+		}
+	}, {
+		"r": 0,
+		"c": 2,
+		"v": {
+			"m": "class",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "class"
+		}
+	}, {
+		"r": 0,
+		"c": 3,
+		"v": {
+			"m": "subject",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "subject"
+		}
+	}, {
+		"r": 0,
+		"c": 4,
+		"v": {
+			"m": "score",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "score"
+		}
+	}, {
+		"r": 1,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 1,
+		"c": 1,
+		"v": {
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Joy",
+			"m": "Joy"
+		}
+	}, {
+		"r": 1,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 1,
+		"c": 3,
+		"v": {
+			"m": "English",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "English"
+		}
+	}, {
+		"r": 1,
+		"c": 4,
+		"v": {
+			"v": 96,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "96"
+		}
+	}, {
+		"r": 2,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 2,
+		"c": 1,
+		"v": {
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Joy",
+			"m": "Joy"
+		}
+	}, {
+		"r": 2,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 2,
+		"c": 3,
+		"v": {
+			"m": "mathematics",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "mathematics"
+		}
+	}, {
+		"r": 2,
+		"c": 4,
+		"v": {
+			"v": 110,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "110"
+		}
+	}, {
+		"r": 3,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 3,
+		"c": 1,
+		"v": {
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Joy",
+			"m": "Joy"
+		}
+	}, {
+		"r": 3,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 3,
+		"c": 3,
+		"v": {
+			"m": "foreign language",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "foreign language"
+		}
+	}, {
+		"r": 3,
+		"c": 4,
+		"v": {
+			"v": 87,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "87"
+		}
+	}, {
+		"r": 4,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 4,
+		"c": 1,
+		"v": {
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Joy",
+			"m": "Joy"
+		}
+	}, {
+		"r": 4,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 4,
+		"c": 3,
+		"v": {
+			"m": "science",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "science"
+		}
+	}, {
+		"r": 4,
+		"c": 4,
+		"v": {
+			"v": 266,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "266"
+		}
+	}, {
+		"r": 5,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 5,
+		"c": 1,
+		"v": {
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Tim",
+			"m": "Tim"
+		}
+	}, {
+		"r": 5,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 5,
+		"c": 3,
+		"v": {
+			"m": "English",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "English"
+		}
+	}, {
+		"r": 5,
+		"c": 4,
+		"v": {
+			"v": 92,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "92"
+		}
+	}, {
+		"r": 6,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 6,
+		"c": 1,
+		"v": {
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Tim",
+			"m": "Tim"
+		}
+	}, {
+		"r": 6,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 6,
+		"c": 3,
+		"v": {
+			"m": "mathematics",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "mathematics"
+		}
+	}, {
+		"r": 6,
+		"c": 4,
+		"v": {
+			"v": 100,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "100"
+		}
+	}, {
+		"r": 7,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 7,
+		"c": 1,
+		"v": {
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Tim",
+			"m": "Tim"
+		}
+	}, {
+		"r": 7,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 7,
+		"c": 3,
+		"v": {
+			"m": "foreign language",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "foreign language"
+		}
+	}, {
+		"r": 7,
+		"c": 4,
+		"v": {
+			"v": 90,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "90"
+		}
+	}, {
+		"r": 8,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 8,
+		"c": 1,
+		"v": {
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Tim",
+			"m": "Tim"
+		}
+	}, {
+		"r": 8,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 8,
+		"c": 3,
+		"v": {
+			"m": "science",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "science"
+		}
+	}, {
+		"r": 8,
+		"c": 4,
+		"v": {
+			"v": 255,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "255"
+		}
+	}, {
+		"r": 9,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 9,
+		"c": 1,
+		"v": {
+			"m": "Alex",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Alex"
+		}
+	}, {
+		"r": 9,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 9,
+		"c": 3,
+		"v": {
+			"m": "English",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "English"
+		}
+	}, {
+		"r": 9,
+		"c": 4,
+		"v": {
+			"v": 108,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "108"
+		}
+	}, {
+		"r": 10,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 10,
+		"c": 1,
+		"v": {
+			"m": "Alex",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Alex"
+		}
+	}, {
+		"r": 10,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 10,
+		"c": 3,
+		"v": {
+			"m": "mathematics",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "mathematics"
+		}
+	}, {
+		"r": 10,
+		"c": 4,
+		"v": {
+			"v": 117,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "117"
+		}
+	}, {
+		"r": 11,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 11,
+		"c": 1,
+		"v": {
+			"m": "Alex",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Alex"
+		}
+	}, {
+		"r": 11,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 11,
+		"c": 3,
+		"v": {
+			"m": "foreign language",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "foreign language"
+		}
+	}, {
+		"r": 11,
+		"c": 4,
+		"v": {
+			"v": 88,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "88"
+		}
+	}, {
+		"r": 12,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 12,
+		"c": 1,
+		"v": {
+			"m": "Alex",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Alex"
+		}
+	}, {
+		"r": 12,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 12,
+		"c": 3,
+		"v": {
+			"m": "science",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "science"
+		}
+	}, {
+		"r": 12,
+		"c": 4,
+		"v": {
+			"v": 278,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "278"
+		}
+	}],
+	"ch_width": 4748,
+	"rh_height": 1790,
+	"luckysheet_select_save": [{
+		"row": [0, 0],
+		"column": [0, 0]
+	}],
+	"luckysheet_selection_range": [],
+	"scrollLeft": 0,
+	"scrollTop": 0
+}
+
+// export default sheetPivotTableData;

Файловите разлики са ограничени, защото са твърде много
+ 7066 - 0
public/static/js/luckysheet/demoData/sheetSparkline.js


Файловите разлики са ограничени, защото са твърде много
+ 1068 - 0
public/static/js/luckysheet/demoData/sheetTable.js


Файловите разлики са ограничени, защото са твърде много
+ 1944 - 0
public/static/js/luckysheet/index.html


+ 0 - 1
public/static/js/url.js

@@ -4,7 +4,6 @@
 // var ctx = "http://192.168.1.250:8890"//agile_sign_web的服务
  
 var ctx = apiConfig.ctx //agile_sign_web的服务
-var oldVersion = apiConfig.oldVersion //agile_sign_seal_web的服务
 //  var ctx = "http://192.168.1.79:8080"
 var rootD = apiConfig.rootD 
 var cv = 2; //1  开发。2 测试

Файловите разлики са ограничени, защото са твърде много
+ 637 - 0
public/static/views/onlineShareExcelMarkets.html


Файловите разлики са ограничени, защото са твърде много
+ 720 - 0
public/static/views/onlineShareExcels.html


Файловите разлики са ограничени, защото са твърде много
+ 591 - 0
public/static/views/performance.html


Файловите разлики са ограничени, защото са твърде много
+ 80 - 52
src/assets/js/common.js


+ 3 - 0
src/assets/js/url.js

@@ -26,6 +26,9 @@ const urls = {
         getQueryMultiTaskId:ctxForm + "/queryMultiTaskId",
         getComplateLastMan:ctxForm + "/complateLastMan"
     },
+    excelList:{
+
+    },
     distribute: {
         sendMsg: ctx + '/api/distribute/create', //创建分发
         findMyComment: ctx + '/api/comment/findMyComment', //查询

+ 48 - 0
src/assets/js/util.js

@@ -1,6 +1,7 @@
 //
 // import accounting from 'accounting-js'
 // import idcard from 'idcard' //https://www.npmjs.com/package/idcard
+
 let moment = require("moment");
 let Decimal = require('decimal');
 let util = {
@@ -35,6 +36,53 @@ util.hasPermission = function(permission) {
 
   return found;
 };
+util.ajaxJson = function (msg, url, param, callBack, beforeSend, async) {
+
+
+
+  $.ajax({
+    type: "POST",
+    url: url,
+    global: true,
+    data: JSON.stringify(param),
+    contentType: "application/json;charset=UTF-8",
+    beforeSend: function (req) {
+
+      req.setRequestHeader("agileauthtoken", window.sessionStorage.agileauthtoken);
+
+      if ($.isFunction(beforeSend)) {
+
+        beforeSend.call(this, req);
+      }
+
+
+    },
+    xhrFields: {
+      withCredentials: false //跨域session保持
+    },
+    async: async == undefined ? true : async,
+    dataType: "json",
+    success: function (page) {
+
+      // util.disLoad();
+
+      if ($.isFunction(callBack)) {
+
+        callBack.call(this, page);
+      }
+
+    },
+    error: function (xhr, textStatus, errorThrow) {
+
+      // util.disLoad();
+
+      // util.closeAll();
+
+      // util.error("系统异常!");
+    }
+  });
+
+},
 //获取前端地址参数对象
 util.getRequestSearchObject = function() {
   var url = window.location.search; //获取url中"?"符后的字串

+ 2 - 2
src/components/newTree.vue

@@ -218,7 +218,7 @@ export default {
   display: flex;
   width: 100%;
   justify-content: center;
-  height: 80%;
+  height: 100%;
 }
 
 ::v-deep .el-icon-caret-right {
@@ -242,7 +242,7 @@ export default {
 }
 
 .flex-transfer {
-  width: 50%;
+  width: 80%;
   height: 100%;
   margin-left: 30px;
 }

+ 47 - 42
src/components/search.vue

@@ -16,12 +16,16 @@
 				<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'datetime'"
 					size="medium" type="datetime" :placeholder="item.tit">
 				</el-date-picker>
-                <el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'month'"
-					size="medium" type="month" :placeholder="item.tit">
+				<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'month'" size="medium"
+					type="month" :placeholder="item.tit">
 				</el-date-picker>
-                <el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'year'"
-					size="medium" type="year" :placeholder="item.tit">
+				<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'year'" size="medium"
+					type="year" :placeholder="item.tit">
 				</el-date-picker>
+				<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'daterange'" size="medium"
+					type="daterange" :placeholder="item.tit" format="yyyy-MM-dd HH:mm:ss"
+					value-format="yyyy-MM-dd HH:mm:ss" :default-time="defaultTime" start-placeholder="开始时间"
+					end-placeholder="结束时间" />
 			</div>
 		</div>
 		<el-button class="btn-check" size="medium" type="primary" plain icon="el-icon-search" @click="searchInfo">搜索
@@ -29,54 +33,55 @@
 	</div>
 </template>
 <script>
-	export default {
-		props: ["searchList"],
-		data() {
-			return {
-				infoList: [],
-			};
-		},
-		methods: {
-			searchInfo() {
-				this.infoList = [];
-				for (let i = 0; i < this.searchList.length; i++) {
-					if (this.searchList[i].type === "date" && this.searchList[i].value) {
-						this.infoList.push(Date.parse(this.searchList[i].value));
-					} else {
-						this.infoList.push(this.searchList[i].value);
-					}
+export default {
+	props: ["searchList"],
+	data() {
+		return {
+			infoList: [],
+			defaultTime: ['00:00:00', '23:59:59'],
+		};
+	},
+	methods: {
+		searchInfo() {
+			this.infoList = [];
+			for (let i = 0; i < this.searchList.length; i++) {
+				if (this.searchList[i].type === "date" && this.searchList[i].value) {
+					this.infoList.push(Date.parse(this.searchList[i].value));
+				} else {
+					this.infoList.push(this.searchList[i].value);
 				}
-				this.$emit("searchInfo", this.infoList);
-			},
+			}
+			this.$emit("searchInfo", this.infoList);
 		},
-		mounted() {},
-		created() {},
-	};
+	},
+	mounted() { },
+	created() { },
+};
 </script>
 <style scoped lang="scss">
-	.search-box {
+.search-box {
+	display: flex;
+	justify-content: space-between;
+
+	.box-l {
 		display: flex;
 		justify-content: space-between;
 
-		.box-l {
-			display: flex;
-			justify-content: space-between;
-
-			.box-info {
-				display: inline-block;
-				// min-width: 100px;
-			}
+		.box-info {
+			display: inline-block;
+			// min-width: 100px;
 		}
+	}
 
-		.btn-check {}
+	.btn-check {}
 
-		.el-date-editor.el-input,
-		.el-date-editor.el-input__inner {
-			width: 100%;
-		}
+	.el-date-editor.el-input,
+	.el-date-editor.el-input__inner {
+		width: 100%;
+	}
 
-		.el-select-dropdown {
-			z-index: 100000 !important;
-		}
+	.el-select-dropdown {
+		z-index: 100000 !important;
 	}
+}
 </style>

+ 181 - 175
src/components/uploadDown.vue

@@ -1,197 +1,203 @@
 <template>
-    <div class="back-box">
-        <div v-for="item in infolist" :key="item.id" @click="downcheck(item)">
-            <i class="iconfont icon-word" v-if="item.type==='word'"></i>
-            <i class="iconfont icon-excel" v-if="item.type==='excel'"></i>
-            <i class="iconfont icon-ppt" v-if="item.type==='ppt'"></i>
-            <i class="iconfont icon-wenjian" v-if="item.type==='wenjian'"></i>
-            <i class="el-icon-picture" v-if="item.type==='png'"></i>
-            <el-tooltip class="item" effect="dark" :content="item.fileName" placement="right" :enterable="false">
-                <span class="tab-long">{{item.fileName}}</span>
-            </el-tooltip>
-            <div class="seedown" v-if="datalist.type===2">
-                <a @click="uploaddown(item)">下载</a>
-                <a @click="uploadsee(item)">预览</a>
-            </div>
-        </div>
-        <div class="if-box-top" v-if="ifrshow" @keyup.esc="ifrshow=false">
-            <i class="el-icon-close" @click="ifrshow=false"></i>
-            <iframe
-                height="100%"
-                width="100%"
-                :src="srcsc">
-            </iframe>
-        </div>
+  <div class="back-box">
+    <div v-for="item in infolist" :key="item.id" @click="downcheck(item)">
+      <i class="iconfont icon-word" v-if="item.type === 'word'"></i>
+      <i class="iconfont icon-excel" v-if="item.type === 'excel'"></i>
+      <i class="iconfont icon-ppt" v-if="item.type === 'ppt'"></i>
+      <i class="iconfont icon-wenjian" v-if="item.type === 'wenjian'"></i>
+      <i class="el-icon-picture" v-if="item.type === 'png'"></i>
+      <el-tooltip
+        class="item"
+        effect="dark"
+        :content="item.fileName"
+        placement="right"
+        :enterable="false"
+      >
+        <span class="tab-long">{{ item.fileName }}</span>
+      </el-tooltip>
+      <div class="seedown" v-if="datalist.type === 2">
+        <a @click="uploaddown(item)">下载</a>
+        <a @click="uploadsee(item)">预览</a>
+      </div>
     </div>
+    <div class="if-box-top" v-if="ifrshow" @keyup.esc="ifrshow = false">
+      <i class="el-icon-close" @click="ifrshow = false"></i>
+      <iframe height="100%" width="100%" :src="srcsc"> </iframe>
+    </div>
+  </div>
 </template>
 <script>
-    export default {
-        props: ['datalist', 'dialogStatus'],
-        data() {
-            return {
-                infolist: [],
-                status: false,
-                srcsc: '',
-                ifrshow:false,
-            }
-        },
-        methods: {
-            downcheck(v) {
-                if (this.datalist.type === 1) {
-                    this.uploaddown(v);
-                }
-            },
-            uploadsee(v) {
-                let url = encodeURIComponent(Base64.encode(v.callPath));
-                this.srcsc = 'http://10.230.15.228:8012/onlinePreview?url=' + url;
-                this.ifrshow=true;
-                // window.open('http://114.215.71.182:8012/onlinePreview?url=' + url);
-            },
-            //下载e
-            uploaddown(v) {
-                let fileData = v;
-                this.$http({
-                    url: this.datalist.url,
-                    method: "post",
-                    headers: {
-                        "Content-Type": "application/json",
-                    },
-                    responseType: "blob",
-                    data: {"id": fileData.id, "fileName": fileData.fileName},
-                }).then((response) => {
-                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
-                        let blob = new Blob([response.data], {
-                            type: 'application/vnd.ms-excel'
-                        });
-                        window.navigator.msSaveOrOpenBlob(blob, fileData.fileName);
-                    } else {
-                        /* 火狐谷歌的文件下载方式 */
-                        var blob = new Blob([response.data])
-                        var downloadElement = document.createElement('a')
-                        var href = window.URL.createObjectURL(blob);
-                        downloadElement.href = href;
-                        downloadElement.download = fileData.fileName;
-                        document.body.appendChild(downloadElement);
-                        downloadElement.click();
-                        document.body.removeChild(downloadElement);
-                        window.URL.revokeObjectURL(href);
-                    }
-                });
-            },
-            dataHandle() {
-                this.infolist = this.datalist.attList;
-                if (this.infolist) {
-                    for (let i = 0; i < this.infolist.length; i++) {
-                        let f = this.infolist[i].fileName.split(".");
-                        let type = f[f.length - 1];
-                        if (type === 'doc' || type === 'docx') {
-                            this.infolist[i].type = 'word';
-                        } else if (type === 'ppt') {
-                            this.infolist[i].type = 'ppt';
-                        } else if (type === 'xlsx' || type === 'xls') {
-                            this.infolist[i].type = 'excel';
-                        } else if (type === 'png' || type === 'jpg' || type === 'svg' || type === 'gif' || type === 'psd') {
-                            this.infolist[i].type = 'png';
-                        } else {
-                            this.infolist[i].type = 'wenjian';
-                        }
-                    }
-                }
-            }
-        },
-        mounted() {
-
-        },
-        created() {
-            this.dataHandle();
+export default {
+  props: ["datalist", "dialogStatus"],
+  data() {
+    return {
+      infolist: [],
+      status: false,
+      srcsc: "",
+      ifrshow: false,
+    };
+  },
+  methods: {
+    downcheck(v) {
+      if (this.datalist.type === 1) {
+        this.uploaddown(v);
+      }
+    },
+    uploadsee(v) {
+      let url = encodeURIComponent(v.callPath);
+      this.srcsc = "http://114.215.71.182:8012/onlinePreview?url=" + url;
+      this.ifrshow = true;
+      // window.open('http://114.215.71.182:8012/onlinePreview?url=' + url);
+    },
+    //下载e
+    uploaddown(v) {
+      let fileData = v;
+      this.$http({
+        url: this.datalist.url,
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
         },
-        watch: {
-            dialogStatus() {
-                this.$forceUpdate()
-                let _this = this;
-                _this.dataHandle();
-            }
+        responseType: "blob",
+        data: { id: fileData.id, fileName: fileData.fileName },
+      }).then((response) => {
+        if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+          let blob = new Blob([response.data], {
+            type: "application/vnd.ms-excel",
+          });
+          window.navigator.msSaveOrOpenBlob(blob, fileData.fileName);
+        } else {
+          /* 火狐谷歌的文件下载方式 */
+          var blob = new Blob([response.data]);
+          var downloadElement = document.createElement("a");
+          var href = window.URL.createObjectURL(blob);
+          downloadElement.href = href;
+          downloadElement.download = fileData.fileName;
+          document.body.appendChild(downloadElement);
+          downloadElement.click();
+          document.body.removeChild(downloadElement);
+          window.URL.revokeObjectURL(href);
         }
-    }
+      });
+    },
+    dataHandle() {
+      this.infolist = this.datalist.attList;
+      if (this.infolist) {
+        for (let i = 0; i < this.infolist.length; i++) {
+          let f = this.infolist[i].fileName.split(".");
+          let type = f[f.length - 1];
+          if (type === "doc" || type === "docx") {
+            this.infolist[i].type = "word";
+          } else if (type === "ppt") {
+            this.infolist[i].type = "ppt";
+          } else if (type === "xlsx" || type === "xls") {
+            this.infolist[i].type = "excel";
+          } else if (
+            type === "png" ||
+            type === "jpg" ||
+            type === "svg" ||
+            type === "gif" ||
+            type === "psd"
+          ) {
+            this.infolist[i].type = "png";
+          } else {
+            this.infolist[i].type = "wenjian";
+          }
+        }
+      }
+    },
+  },
+  mounted() {
+    this.dataHandle();
+    console.log(this.infolist);
+  },
+  created() {},
+  watch: {
+    dialogStatus() {
+      this.$forceUpdate();
+      let _this = this;
+      _this.dataHandle();
+    },
+  },
+};
 </script>
 <style scoped lang="scss">
-    .if-box-top{
-        background: #fff;
-        width: 80vw;
-        height: 80vh;
-        margin-top: 10vh;
-        margin-left: 10vw;
-    }
+.if-box-top {
+  background: #fff;
+  width: 80vw;
+  height: 80vh;
+  margin-top: 10vh;
+  margin-left: 10vw;
+}
 
-    .iconfont {
-        font-size: 42px;
-    }
+.iconfont {
+  font-size: 42px;
+}
 
-    .icon-excel {
-        color: #67DB63;
-    }
+.icon-excel {
+  color: #67db63;
+}
 
-    .icon-word {
-        color: #FF654E;
-    }
+.icon-word {
+  color: #ff654e;
+}
 
-    .icon-ppt {
-        color: #FF8943;
-    }
+.icon-ppt {
+  color: #ff8943;
+}
 
-    .icon-wenjian {
-        color: #ccc;
-    }
+.icon-wenjian {
+  color: #ccc;
+}
 
-    .el-icon-picture {
-        font-size: 36px;
-        color: #ccc;
-        background: #fff;
-        padding: 4px 2px;
-        margin-bottom: 2px;
-        border-radius: 3px;
-    }
+.el-icon-picture {
+  font-size: 36px;
+  color: #ccc;
+  background: #fff;
+  padding: 4px 2px;
+  margin-bottom: 2px;
+  border-radius: 3px;
+}
 
-    .back-box {
-        margin-top: 20px;
-        background: #F2F2F2;
-        padding: 20px;
+.back-box {
+  margin-top: 20px;
+  background: #f2f2f2;
+  padding: 20px;
 
-        div {
-            display: inline-block;
-            text-align: center;
-            margin-right: 20px;
-            cursor: pointer;
+  div {
+    display: inline-block;
+    text-align: center;
+    margin-right: 20px;
+    cursor: pointer;
 
-            span {
-                display: block;
-                width: 80px;
-                overflow: hidden;
-                padding-top: 5px;
-                margin: 0 10px;
-                overflow: hidden;
-                text-overflow: ellipsis;
-                display: -webkit-box; /* 将对象作为弹性伸缩盒子模型显示 */
-                -webkit-line-clamp: 1; /* 控制最多显示几行 */
-                -webkit-box-orient: vertical; /* 设置或检索伸缩盒对象的子元素的排列方式 */
-            }
-        }
-
-        .seedown {
-            margin: 0;
-            margin-top: 5px;
+    span {
+      display: block;
+      width: 80px;
+      overflow: hidden;
+      padding-top: 5px;
+      margin: 0 10px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display: -webkit-box; /* 将对象作为弹性伸缩盒子模型显示 */
+      -webkit-line-clamp: 1; /* 控制最多显示几行 */
+      -webkit-box-orient: vertical; /* 设置或检索伸缩盒对象的子元素的排列方式 */
+    }
+  }
 
-            a {
-                font-size: 12px;
-                padding: 2px 5px;
-                border: 1px solid transparent;
-                color: #999;
-            }
+  .seedown {
+    margin: 0;
+    margin-top: 5px;
 
-            a:hover {
-                color: #0b82ff;
-            }
-        }
+    a {
+      font-size: 12px;
+      padding: 2px 5px;
+      border: 1px solid transparent;
+      color: #999;
     }
 
+    a:hover {
+      color: #0b82ff;
+    }
+  }
+}
 </style>

+ 240 - 0
src/components/uploadMultiConfig.vue

@@ -0,0 +1,240 @@
+<template>
+    <div v-loading="loading">
+        <el-upload class="upload-demo" :disabled ="disabled" :drag="drag" multiple :limit="fileInfo.limit" ref="upload"
+            action="string" :on-remove="handleRemove" :on-exceed="handleExceed" :file-list="fileList"
+             :auto-upload="true" :show-file-list="showFileList"
+            :before-upload="deforeUp" :http-request="signUpload" :on-preview = "downloadBack">
+            <div v-if="fileInfo.type !== 'btn' && !disabled">
+                <i class="el-icon-upload"></i>
+                <div class="el-upload__text">点击上传</div>
+            </div>
+            <div v-if="fileInfo.type === 'btn' && !disabled">
+                <el-button :size="fileInfo.size?fileInfo.size:'medium'" :type="fileInfo.btntype">{{fileInfo.typename}}</el-button>
+            </div>
+        </el-upload>
+    </div>
+</template>
+<script>
+    export default {
+        props: ['fileInfo', 'fileList','type', 'drag','showFileList','disabled'],
+        data() {
+            return {
+                fileLists: [],
+                attList: [],
+                loading: false,
+                num: 0,
+                s: false
+            }
+        },
+        methods: {
+            signUpload(){},
+            //删除
+            handleRemove(file) {
+                for (let i = 0; i < this.attList.length; i++) {
+                    if (this.attList[i].fileName === file.name) {
+                        this.attList.splice(i, 1);
+                        this.$emit('uploadBack', this.attList)
+                    }
+                }
+            },
+            downloadBack(file) {
+                this.$emit('clickDownload', file)
+            },
+            //数量限制
+            handleExceed(files, fileList) {
+                this.$message.warning(
+                    `当前限制选择 ${this.fileInfo.limit} 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`
+                );
+            },
+            deforeUp(file) {
+                const isLt2M = file.size / 1024 / 1024 < 100;
+                if (!isLt2M) {
+                    this.$message.error('上传文件大小不能超过 20MB!');
+                    return false
+                }
+                if(this.fileInfo.type == 'img'){
+                    const isImg = file.type.split("/")[0] == 'image';
+                    if (!isImg) {
+                        this.$message.error('请上传图片格式文件!');
+                        return false
+                    }
+                }
+                if(this.fileInfo.typexz == 'ppt'){
+                    const isImg = file.name.split(".")[1] == 'pptx';
+                    console.log(file.name.split(".")[1] == 'pptx')
+                    if (!isImg) {
+                        this.$message.error('请上传ppt格式文件!');
+                        return false
+                    }
+                }
+                if(this.fileInfo.typexz == 'csv'){
+                    const isImg = file.name.split(".")[1] == 'csv';
+                    if (!isImg) {
+                        this.$message.error('请上传csv格式文件!');
+                        return false
+                    }
+                }
+                if(this.fileInfo.typexz == 'xlsx'){
+                    const isImg = file.name.split(".")[1] == 'xlsx';
+                    if (!isImg) {
+                        this.$message.error('请上传xlsx格式文件!');
+                        return false
+                    }
+                }
+                this.loading = true;
+                let query = new FormData();
+                query.append("file", file);
+                if(this.fileInfo.typename == '新增素材'){
+                    query.append("advType", this.fileInfo.advType);
+                    query.append("advTypeName", this.fileInfo.advTypeName);
+                }
+                if(this.fileInfo.url == '/market/cIllegalCallTask/importTempByProv'||this.fileInfo.url == '/market/cChannelInfo/cIllegalCallTask/importTempByProv'){
+                    query.append("taskId", this.fileInfo.taskId);
+                    query.append("tempId", this.fileInfo.tempId);
+                }
+                //违规外呼
+                if(this.fileInfo.uploadType == 'outCall'){
+                    query.append("uploadType", 'outCall');
+                    query.append("relId", this.fileInfo.relId);
+                }
+                if(this.fileInfo.uploadType == 'train'){
+                    query.append("uploadType", 'train');
+                    query.append("relId", this.fileInfo.relId);
+                }
+                //运营类项目考核及结算
+                if(this.fileInfo.url == '/market/cmkAttachInfo/upload'){
+                    query.append("uploadType", this.fileInfo.uploadType);
+                }
+                if(this.fileInfo.url == '/market/cStoreOutWo/importData'){
+                    query.append("woNo", this.fileInfo.woNo);
+                }
+                if(this.fileInfo.url == '/market/cStoreScheTrainEva/importDataEva'){
+                    query.append("evaId", this.fileInfo.evaId);
+                }
+                this.num++;
+                let _this = this;
+                this.$http({
+                    url: this.fileInfo.url,
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: query,
+                }).then((res) => {
+                    if (this.fileInfo.type === 'btn') {
+                        this.$refs['upload'].clearFiles();
+                        this.$emit('uploadBack',res)
+                        if(res.data.result==0){
+                            this.$emit('onSuccess',file)
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'success'
+                            });
+                        }else if(res.data.result==1){
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'error'
+                            });
+                        }else if(res.data.result==2){
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'warning'
+                            });
+                        }else if(res.data.result==3){
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'info'
+                            });
+                        }else{
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'success'
+                            });
+                        }
+                        this.num--;
+                        if (this.num == 0) {
+                            this.loading = false;
+                        }
+                        return
+                    }
+                    if (this.fileInfo.type === 'voice') {
+                        this.attList = res.data;
+                    } else {
+                        this.attList.push({
+                            name:res.data.body.fileName,
+                            id: res.data.body.id,
+                            fileName: res.data.body.fileName,
+                            fileCode: res.data.body.fileCode,
+                            opName: res.data.body.opName,
+                            opNo: res.data.body.opNo,
+                            opTime: res.data.body.opTime,
+                            attchFileId: res.data.body.attchFileId,
+                            type: res.data.body.type,
+                        });
+                    }
+                    this.$emit('uploadBack', this.attList);
+                    this.num--;
+                    if (this.num == 0) {
+                        this.loading = false;
+                    }
+                    return true
+                }).catch((res) => {
+                    this.$message({
+                        message: file.name+'上传失败',
+                        type: 'error'
+                    });
+                    this.num--;
+                    if (this.num == 0) {
+                        this.loading = false;
+                    }
+                    for (let i = 0; i < this.$refs['upload'].uploadFiles.length; i++) {
+                        if(file.name == this.$refs['upload'].uploadFiles[i].name){
+                            this.$refs['upload'].uploadFiles.splice(i,1)
+                        }
+                    }
+                    return false
+                })
+            },
+        },
+        mounted() {
+
+        },
+        created() {
+            this.attList = [];
+            for (let i = 0; i < this.fileList.length; i++) {
+                this.attList.push({
+                    id: this.fileList[i].id,
+                    name:this.fileList[i].fileName,
+                    fileName: this.fileList[i].fileName,
+                    fileCode: this.fileList[i].fileCode,
+                    opName: this.fileList[i].opName,
+                    opNo: this.fileList[i].opNo,
+                    opTime: this.fileList[i].opTime,
+                    attchFileId: this.fileList[i].attchFileId,
+                    type: this.fileList[i].type,
+                })
+            }
+        },
+        watch: {
+            fileList() {
+                this.attList = [];
+                for (let i = 0; i < this.fileList.length; i++) {
+                    this.attList.push({
+                        id: this.fileList[i].id,
+                        name:this.fileList[i].fileName,
+                        fileName: this.fileList[i].fileName,
+                        fileCode: this.fileList[i].fileCode,
+                        opName: this.fileList[i].opName,
+                        opNo: this.fileList[i].opNo,
+                        opTime: this.fileList[i].opTime,
+                        attchFileId: this.fileList[i].attchFileId,
+                        type: this.fileList[i].type,
+                    })
+                }
+            }
+        }
+    }
+</script>
+<style scoped lang="scss">
+
+</style>

+ 1 - 1
src/components/workflowBase.vue

@@ -459,7 +459,7 @@ export default {
     getTreeLists(e, status) {
       let createdId = "createId";
       let id =
-        e.nextShapes[0].properties.documentation === createdId
+        e.nextShapes[0].properties.documentation.indexOf(createdId) != -1
           ? this.list.createId
           : e.nextShapes[0].properties.documentation;
       console.log(id);

+ 5 - 5
src/components/workflowEntrance.vue

@@ -504,10 +504,10 @@ export default {
     //选择树的回调
     changeTree(e) {
       if (this.MultipersonTransfer) {
-        if (e.length > 1) {
-          this.$message.error("只能选择一个人");
-          return;
-        } else {
+        // if (e.length > 1) {
+        //   this.$message.error("只能选择一个人");
+        //   return;
+        // } else {
           this.backThree = e;
           let arr = [];
           this.backThree.map((item) => {
@@ -515,7 +515,7 @@ export default {
           });
           this.nextDealManLists = arr.toString();
         }
-      }
+      // }
     },
     //获取字典表常用意见
     getMetirialType(e) {

+ 62 - 0
src/config/dev.js

@@ -0,0 +1,62 @@
+'use strict'
+let devs = {
+    TITLE:'本地环境',
+    BASE_URL:"http://43.138.50.94:9600/", //本地环境
+    BASE_API:"http://43.138.50.94:8880/api",//工作流本地环境
+    EXCEL_URL:"http://43.138.50.94:7777", //本地excel路径
+    OFFICE_URL:'http://43.138.50.94:7779',  //在线office路径
+    provincialWorkOrderAreafresourceId:'a682dc9f-2fea-11ed-a6ed-02427ba2d388',//通用工单地市
+    provincialWorkOrderfresourceId:'08368848-2fde-11ed-a6ed-02427ba2d388',//通用工单省
+    riskMaterialsfresourceId:'c9104902-6575-11ed-8e1e-d6cd97160e00',//风险防控
+}
+let dev = {
+    TITLE:'本地环境',
+    OFFICE_URL:'http://43.138.50.94:7779',  //在线office路径
+    BASE_URL:"http://127.0.0.1:8080", //本地环境
+    BASE_API:"http://43.138.50.94:8880/api",//工作流本地环境
+    EXCEL_URL:"http://43.138.50.94:7777", //本地excel路径
+    provincialWorkOrderAreafresourceId:'a682dc9f-2fea-11ed-a6ed-02427ba2d388',//通用工单地市
+    provincialWorkOrderfresourceId:'08368848-2fde-11ed-a6ed-02427ba2d388',//通用工单省
+    riskMaterialsfresourceId:'c9104902-6575-11ed-8e1e-d6cd97160e00',//风险防控
+}
+let test = {
+    TITLE:'测试环境',
+    OFFICE_URL:'http://10.149.85.91:8000',  //在线office路径
+    BASE_URL:"http://10.149.85.91:8000/spfm", //测试环境
+    BASE_API:"http://10.149.85.91:8000/api",//工作流测试环境
+    EXCEL_URL:"http://10.149.85.91:7777", //测试excel路径
+    provincialWorkOrderAreafresourceId:'33b0af93-b1ce-11ed-be6b-00505687dcd3',//通用工单地市
+    provincialWorkOrderfresourceId:'4fdbb96e-8bfd-11ed-8988-00505687dcd3',//通用工单省
+    riskMaterialsfresourceId:'3124a2d4-7209-11ed-8d6f-00505687dcd3',//风险防控
+}
+let prod = {
+    TITLE:'线上环境',
+    OFFICE_URL:'http://10.230.26.15:8000',  //在线office路径
+    BASE_URL:"http://10.230.26.15:8000/mkt", //线上环境
+    BASE_API:"http://10.230.26.15:8000/api",//工作流线上环境
+    EXCEL_URL:"http://10.230.26.15:7777", //线上excel路径
+    provincialWorkOrderAreafresourceId:'db26384e-b984-11ed-afb6-e00084564cce',//通用工单地市
+    provincialWorkOrderfresourceId:'9b83efc7-b984-11ed-afb6-e00084564cce',//通用工单省
+    riskMaterialsfresourceId:'canvas',//风险防控
+}
+export const getConfig  = () =>{
+    switch(process.env.VUE_APP_ENV){
+        case "development":
+            window.sessionStorage.setItem('getConfig',JSON.stringify(dev) )
+            return dev;
+        case 'test':
+            window.sessionStorage.setItem('getConfig',JSON.stringify(test))
+            return test;
+        case 'production':
+            window.sessionStorage.setItem('getConfig',JSON.stringify(prod))
+            return prod
+        case 'devs':
+            window.sessionStorage.setItem('getConfig',JSON.stringify(devs))
+            return devs; 
+    }
+}
+export default getConfig;
+
+// 根据环境引入不同配置 process.env.ENV_CONFIG  ex:dev.conf.js
+
+// module.exports = config

+ 6 - 6
src/http/index.js

@@ -11,12 +11,12 @@ axios.defaults.transformRequest = [function (data) {
 axios.defaults.baseURL = 'http://43.138.50.94:9600/';
     // 添加请求拦截器
     axios.interceptors.request.use(function (config) {
-        console.log(config);
-        if(config.type === 'office'){
-            config.baseURL = 'http://192.168.2.124:7779'
-        }else{
-            config.baseURL = 'http://43.138.50.94:9600/'
-        }
+        // console.log(config);
+        // if(config.type === 'office'){
+        //     config.baseURL = 'http://192.168.2.124:7779'
+        // }else{
+        //     config.baseURL = 'http://43.138.50.94:9600/'
+        // }
         if (config.url.startsWith("http")) {
             return config;
         }

+ 4 - 0
src/main.js

@@ -13,7 +13,9 @@ import fullscreen from 'vue-fullscreen'
 import VueContextMenu from 'vue-contextmenu'
 
 import Urls from './assets/js/url.js' //路径共用
+import excelUrl from '../config/excel.env.js'
 import util from './assets/js/util.js'
+
 import common from './assets/js/common.js' //公共注册
 import http from './assets/js/http.js'
 
@@ -23,7 +25,9 @@ import VueEditor from "vue2-editor"
 Vue.use(VueEditor)
 Vue.use(FormMaking)
 Vue.prototype.$url = Urls
+Vue.prototype.$excelUrl = excelUrl
 Vue.prototype.$util = util
+// Vue.prototype.$getConfig = getConfig
 Vue.prototype.common = common
 Vue.prototype.$axios = http //axios 设置
 Vue.use(fullscreen)

+ 161 - 357
src/pages/main/advertising/businessHall.vue

@@ -7,47 +7,23 @@
                 </el-button>
                 <el-button class="btn-check" size="medium" type="primary" @click="exportTempletelist">下载导入模板
                 </el-button>
-                <myUpload style="display:inline-block;" :fileInfo="fileInfot"
-                        :fileList="fileInfot.fileList" @uploadBack='uploadBack'></myUpload>
-                <el-button
-                    class="btn-check"
-                    size="medium"
-                    type="primary"
-                    @click="dialogCheck(3)"
-                    v-if="
-                        userInfo.countyName != null || userInfo.cityName != null
-                    "
-                    >添加
+                <myUpload style="display:inline-block;" :fileInfo="fileInfot" :fileList="fileInfot.fileList"
+                    @uploadBack='uploadBack'></myUpload>
+                <el-button class="btn-check" size="medium" type="primary" @click="dialogCheck(3)" v-if="
+                    userInfo.countyName != null || userInfo.cityName != null
+                ">添加
                 </el-button>
             </div>
             <div class="search">
-                <mySearch
-                    :searchList="searchList"
-                    @searchInfo="searchInfo"
-                ></mySearch>
-                <el-button
-                    class="btn-check"
-                    size="medium"
-                    type="primary"
-                    @click="dialogCheck(3)"
-                    v-if="
-                        userInfo.countyName != null || userInfo.cityName != null
-                    "
-                    >添加
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <el-button class="btn-check" size="medium" type="primary" @click="dialogCheck(3)" v-if="
+                    userInfo.countyName != null || userInfo.cityName != null
+                ">添加
                 </el-button>
             </div>
             <div class="tabbox">
-                <el-table
-                    height="calc(100% - 40px)"
-                    class="com-table"
-                    ref="multipleTable"
-                    :data="tableData"
-                    tooltip-effect="dark"
-                    size="small"
-                    border
-                    style="width: 100%"
-                    v-loading="loading"
-                >
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
                     <el-table-column prop="regionName" label="公司">
                     </el-table-column>
                     <el-table-column prop="regionCode" label="公司编码">
@@ -60,11 +36,11 @@
                     </el-table-column>
                     <el-table-column prop="countyType" label="表单类型">
                     </el-table-column>
-<!--                    <el-table-column prop="countyCityCode" label="渠道/小区编码">-->
-<!--&lt;!&ndash;                        待更改&ndash;&gt;-->
-<!--                    </el-table-column>-->
-<!--                    <el-table-column prop="countyCityCodeName" label="渠道/小区/校园名称">-->
-<!--                    </el-table-column>-->
+                    <!--                    <el-table-column prop="countyCityCode" label="渠道/小区编码">-->
+                    <!--&lt;!&ndash;                        待更改&ndash;&gt;-->
+                    <!--                    </el-table-column>-->
+                    <!--                    <el-table-column prop="countyCityCodeName" label="渠道/小区/校园名称">-->
+                    <!--                    </el-table-column>-->
                     <el-table-column prop="channelCode" label="渠道/小区编码">
                     </el-table-column>
                     <el-table-column prop="channelName" label="渠道/小区/校园名称">
@@ -73,30 +49,15 @@
                     </el-table-column>
                     <el-table-column prop="sceneName" label="使用场景">
                     </el-table-column>
-<!--                    <el-table-column prop="metirialType" label="物料类别">-->
-<!--                    </el-table-column>-->
-                    <el-table-column
-                        prop="metirialCode"
-                        label="物料编码"
-                        width="100"
-                        show-overflow-tooltip
-                    >
+                    <!--                    <el-table-column prop="metirialType" label="物料类别">-->
+                    <!--                    </el-table-column>-->
+                    <el-table-column prop="metirialCode" label="物料编码" width="100" show-overflow-tooltip>
                     </el-table-column>
-                    <el-table-column
-                        prop="metirialName"
-                        label="物料名称"
-                        width="100"
-                        show-overflow-tooltip
-                    >
+                    <el-table-column prop="metirialName" label="物料名称" width="100" show-overflow-tooltip>
                     </el-table-column>
                     <el-table-column prop="unit" label="物料单位">
                     </el-table-column>
-                    <el-table-column
-                        prop="size"
-                        label="规格尺寸"
-                        width="100"
-                        show-overflow-tooltip
-                    >
+                    <el-table-column prop="size" label="规格尺寸" width="100" show-overflow-tooltip>
                     </el-table-column>
                     <el-table-column prop="length" label="长(米)">
                     </el-table-column>
@@ -105,372 +66,211 @@
                     </el-table-column>
                     <el-table-column prop="coefficient" label="系数">
                     </el-table-column>
-                    <el-table-column
-                        prop="priority"
-                        label="优先级-仅灯箱画面填报"
-                    >
-                    </el-table-column>
-                    <el-table-column prop="quantity" label="数量">
-                    </el-table-column>
-                    <el-table-column prop="settlementAmount" label="结算金额">
+                    <el-table-column prop="priority" label="优先级-仅灯箱画面填报">
                     </el-table-column>
+                    <!-- <el-table-column prop="quantity" label="数量">
+                        </el-table-column>
+                        <el-table-column prop="settlementAmount" label="结算金额">
+                        </el-table-column> -->
                     <!-- <el-table-column prop="price" label="单价">
-					</el-table-column> -->
+    					</el-table-column> -->
 
-                    <el-table-column
-                        label="操作"
-                        width="160px"
-                        align="center"
-                        fixed="right"
-                    >
+                    <el-table-column label="操作" width="160px" align="center" fixed="right">
                         <template slot-scope="scope">
-                            <el-button
-                                size="mini"
-                                type="primary"
-                                @click="dialogCheck(1, scope.row)"
-                                >查看</el-button
-                            >
-                            <el-button
-                                size="mini"
-                                type="primary"
-                                @click="dialogCheck(2, scope.row)"
-                                v-if="
-                                    userInfo.countyName != null ||
-                                        userInfo.cityName != null
-                                "
-                                >修改</el-button
-                            >
-                            <el-button
-                                size="mini"
-                                type="danger"
-                                @click="delLine(scope.row)"
-                                v-if="
-                                    userInfo.countyName != null ||
-                                        userInfo.cityName != null
-                                "
-                                >删除</el-button
-                            >
+                            <el-button size="mini" type="primary" @click="dialogCheck(1, scope.row)">查看</el-button>
+                            <el-button size="mini" type="primary" @click="dialogCheck(2, scope.row)" v-if="
+                                userInfo.countyName != null ||
+                                userInfo.cityName != null
+                            ">修改</el-button>
+                            <el-button size="mini" type="danger" @click="delLine(scope.row)" v-if="
+                                userInfo.countyName != null ||
+                                userInfo.cityName != null
+                            ">删除</el-button>
                         </template>
                     </el-table-column>
                 </el-table>
-                <el-pagination
-                    class="pageBox"
-                    @current-change="currchange"
-                    layout="prev, pager, next"
-                    background
-                    :total="total"
-                >
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
                 </el-pagination>
             </div>
         </div>
 
-        <el-dialog
-            :title="titname"
-            :visible.sync="dialogStatus"
-            width="100%"
-            :destroy-on-close="true"
-            :modal-append-to-body="false"
-            :close-on-click-modal="false"
-            :before-close="closedia"
-        >
+        <el-dialog :title="titname" :visible.sync="dialogStatus" width="100%" :destroy-on-close="true"
+            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia">
             <div v-loading="loadinged">
-                <el-form
-                    :model="infolist"
-                    ref="infolist"
-                    :rules="rules"
-                    style="height: 50vh; overflow-y: scroll"
-                >
+                <el-form :model="infolist" ref="infolist" :rules="rules" style="height: 50vh; overflow-y: scroll">
                     <div class="info-line">
                         <el-form-item prop="regionName">
                             <span>公司</span>
-                            <el-select
-                                :popper-append-to-body="false"
-                                v-model="infolist.regionCode"
-                                placeholder="公司"
-                                @change="verifcheck"
-                                :disabled="disableStatus"
-                            >
-                                <el-option
-                                    v-for="item in regionOpt"
-                                    :key="item.compId"
-                                    :label="item.compName"
-                                    :value="item.compId"
-                                >
+                            <el-select :popper-append-to-body="false" v-model="infolist.regionCode" placeholder="公司"
+                                @change="verifcheck" :disabled="disableStatus">
+                                <el-option v-for="item in regionOpt" :key="item.compId" :label="item.compName"
+                                    :value="item.compId">
                                 </el-option>
                             </el-select>
                         </el-form-item>
                         <el-form-item>
                             <span>公司编码</span>
-                            <el-input
-                                v-model="infolist.regionCode"
-                                placeholder="公司编码"
-                                disabled
-                            ></el-input>
+                            <el-input v-model="infolist.regionCode" placeholder="公司编码" disabled></el-input>
                         </el-form-item>
                         <el-form-item prop="countyName">
                             <span>区县名称</span>
-                            <el-select
-                                :popper-append-to-body="false"
-                                v-model="infolist.countyCode"
-                                placeholder="区县名称"
-                                @change="verifcheck(2)"
-                                :disabled="disableStatus"
-                            >
-                                <el-option
-                                    v-for="item in countyOpt"
-                                    :key="item.compId"
-                                    :label="item.compName"
-                                    :value="item.compId"
-                                >
+                            <el-select :popper-append-to-body="false" v-model="infolist.countyCode" placeholder="区县名称"
+                                @change="verifcheck(2)" :disabled="disableStatus">
+                                <el-option v-for="item in countyOpt" :key="item.compId" :label="item.compName"
+                                    :value="item.compId">
                                 </el-option>
                             </el-select>
                         </el-form-item>
                         <el-form-item>
                             <span>区县编码</span>
-                            <el-input
-                                v-model="infolist.countyCode"
-                                placeholder="区县编码"
-                                disabled
-                            ></el-input>
+                            <el-input v-model="infolist.countyCode" placeholder="区县编码" disabled></el-input>
                         </el-form-item>
                         <el-form-item>
                             <span>日期</span>
-                            <el-date-picker
-                                type="date"
-                                placeholder="选择日期"
-                                v-model="infolist.countyTime"
-                                style="width: 57%;"
-                            ></el-date-picker>
+                            <el-date-picker type="date" placeholder="选择日期" v-model="infolist.countyTime"
+                                style="width: 57%;"></el-date-picker>
                         </el-form-item>
                         <el-form-item>
                             <span>表单类型</span>
                             <el-select v-model="infolist.countyType" placeholder="请选择表单类型">
-                                <el-option v-for="(item,index) in optionList" :label="item.value" :value="item.id" :key="index"></el-option>
+                                <el-option v-for="(item, index) in optionList" :label="item.value" :value="item.id"
+                                    :key="index"></el-option>
                             </el-select>
                         </el-form-item>
                         <el-form-item prop="channelCode">
                             <span>渠道/小区编码</span>
-                            <el-input
-                                v-model="infolist.channelCode"
-                                placeholder="渠道编码"
-                                :disabled="disableStatus"
-                            >
+                            <el-input v-model="infolist.channelCode" placeholder="渠道编码" :disabled="disableStatus">
                             </el-input>
                         </el-form-item>
                         <el-form-item prop="channelName">
                             <span>渠道/小区/校园名称</span>
-                            <el-input
-                                v-model="infolist.channelName"
-                                placeholder="渠道/校园/小区名称"
-                                :disabled="disableStatus"
-                            >
+                            <el-input v-model="infolist.channelName" placeholder="渠道/校园/小区名称" :disabled="disableStatus">
                             </el-input>
                         </el-form-item>
 
                         <el-form-item prop="sts">
                             <span>营业状态</span>
-                            <el-select
-                                :popper-append-to-body="false"
-                                v-model="infolist.sts"
-                                placeholder="营业状态"
-                                :disabled="disableStatus"
-                            >
-                                <el-option
-                                    v-for="item in stsOpt"
-                                    :key="item.dataName"
-                                    :label="item.dataName"
-                                    :value="item.dataName"
-                                >
+                            <el-select :popper-append-to-body="false" v-model="infolist.sts" placeholder="营业状态"
+                                :disabled="disableStatus">
+                                <el-option v-for="item in stsOpt" :key="item.dataName" :label="item.dataName"
+                                    :value="item.dataName">
                                 </el-option>
                             </el-select>
                         </el-form-item>
                         <el-form-item prop="sceneName">
                             <span>使用场景</span>
-                            <el-select
-                                @change="accountcho"
-                                :popper-append-to-body="false"
-                                v-model="infolist.sceneName"
-                                placeholder="使用场景"
-                                :disabled="disableStatus"
-                            >
-                                <el-option
-                                    v-for="item in sceneOpt"
-                                    :key="item.dataCode"
-                                    :label="item.dataName"
-                                    :value="item.dataName"
-                                >
+                            <el-select @change="accountcho" :popper-append-to-body="false" v-model="infolist.sceneName"
+                                placeholder="使用场景" :disabled="disableStatus">
+                                <el-option v-for="item in sceneOpt" :key="item.dataCode" :label="item.dataName"
+                                    :value="item.dataName">
                                 </el-option>
                             </el-select>
                         </el-form-item>
-<!--                        <el-form-item prop="metirialType">-->
-<!--                            <span>物料类别</span>-->
-<!--                            <el-select-->
-<!--                                :disabled="disableStatus"-->
-<!--                                :popper-append-to-body="false"-->
-<!--                                v-model="infolist.metirialType"-->
-<!--                                placeholder="物料类别"-->
-<!--                            >-->
-<!--                                <el-option-->
-<!--                                    v-for="(item, index) in metirialTypeopt"-->
-<!--                                    :key="index"-->
-<!--                                    :label="item.dataName"-->
-<!--                                    :value="item.dataName"-->
-<!--                                >-->
-<!--                                </el-option>-->
-<!--                            </el-select>-->
-<!--                        </el-form-item>-->
+                        <!--                        <el-form-item prop="metirialType">-->
+                        <!--                            <span>物料类别</span>-->
+                        <!--                            <el-select-->
+                        <!--                                :disabled="disableStatus"-->
+                        <!--                                :popper-append-to-body="false"-->
+                        <!--                                v-model="infolist.metirialType"-->
+                        <!--                                placeholder="物料类别"-->
+                        <!--                            >-->
+                        <!--                                <el-option-->
+                        <!--                                    v-for="(item, index) in metirialTypeopt"-->
+                        <!--                                    :key="index"-->
+                        <!--                                    :label="item.dataName"-->
+                        <!--                                    :value="item.dataName"-->
+                        <!--                                >-->
+                        <!--                                </el-option>-->
+                        <!--                            </el-select>-->
+                        <!--                        </el-form-item>-->
                         <el-form-item>
                             <span>物料编码</span>
-                            <el-input
-                                v-model="infolist.metirialCode"
-                                disabled
-                            ></el-input>
+                            <el-input v-model="infolist.metirialCode" disabled></el-input>
                         </el-form-item>
                         <el-form-item prop="metirialName">
                             <span>物料名称</span>
-                            <el-select
-                                :disabled="disableStatus"
-                                :popper-append-to-body="false"
-                                v-model="infolist.metirialName"
-                                placeholder="物料名称"
-                                @change="materialNameChange"
-                            >
-                                <el-option
-                                    v-for="(item, index) in materialNameopt"
-                                    :key="index"
-                                    :label="item.metirialName"
-                                    :value="item.metirialName"
-                                >
+                            <el-select :disabled="disableStatus" :popper-append-to-body="false"
+                                v-model="infolist.metirialName" placeholder="物料名称" @change="materialNameChange">
+                                <el-option v-for="(item, index) in materialNameopt" :key="index" :label="item.metirialName"
+                                    :value="item.metirialName">
                                 </el-option>
                             </el-select>
                         </el-form-item>
                         <el-form-item>
                             <span>物料单位</span>
-                            <el-input
-                                v-model="infolist.unit"
-                                disabled
-                            ></el-input>
+                            <el-input v-model="infolist.unit" disabled></el-input>
                         </el-form-item>
                         <el-form-item>
                             <span>规格尺寸</span>
-                            <el-input
-                                v-model="infolist.size"
-
-                            ></el-input>
+                            <el-input v-model="infolist.size"></el-input>
                         </el-form-item>
-                        <el-form-item
-                            prop="length"
-                            v-if="
-                                infolist.unit == '平方米' ||
-                                    infolist.unit == '延长米'
-                            "
-                        >
+                        <el-form-item prop="length" v-if="
+                            infolist.unit == '平方米' ||
+                            infolist.unit == '延长米'
+                        ">
                             <span>长(米)</span>
-                            <el-input
-                                type="number"
-                                v-model="infolist.length"
-                                placeholder="长"
-                                :disabled="disableStatus"
-                            >
+                            <el-input type="number" v-model="infolist.length" placeholder="长" :disabled="disableStatus">
                             </el-input>
                         </el-form-item>
-                        <el-form-item
-                            prop="width"
-                            v-if="infolist.unit == '平方米'"
-                        >
+                        <el-form-item prop="width" v-if="infolist.unit == '平方米'">
                             <span>宽(米)</span>
-                            <el-input
-                                type="number"
-                                v-model="infolist.width"
-                                placeholder="宽"
-                                :disabled="disableStatus"
-                            >
+                            <el-input type="number" v-model="infolist.width" placeholder="宽" :disabled="disableStatus">
                             </el-input>
                         </el-form-item>
                         <el-form-item prop="direction">
                             <span>横/竖</span>
-                            <el-input
-                                :disabled="disableStatus"
-                                :popper-append-to-body="false"
-                                v-model="infolist.direction"
-                                placeholder="横/竖"
-                            >
+                            <el-input :disabled="disableStatus" :popper-append-to-body="false" v-model="infolist.direction"
+                                placeholder="横/竖">
                             </el-input>
                         </el-form-item>
                         <el-form-item>
                             <span>系数</span>
-                            <el-input
-                                :value="coefficient"
-                                placeholder="系数"
-                                disabled
-                            ></el-input>
+                            <el-input :value="coefficient" placeholder="系数" disabled></el-input>
                         </el-form-item>
                         <el-form-item>
                             <span>单价</span>
-                            <el-input
-                                :value="coefficient"
-                                placeholder="单价"
-                                disabled
-                            ></el-input>
+                            <el-input :value="coefficient" placeholder="单价" disabled></el-input>
                         </el-form-item>
-                        <el-form-item
-
-                        >
+                        <el-form-item>
                             <span>优先级-仅灯箱画面填报</span>
-                            <el-input
-                                v-model="infolist.priority"
-                                placeholder="优先级-仅灯箱画面填报"
-                                @keyup.native="numberVertify"
-                            ></el-input>
-                        </el-form-item>
-                        <el-form-item prop="quantity">
-                            <span>数量</span>
-                            <el-input
-                                v-model="infolist.quantity"
-                                placeholder="数量"
-                                :disabled="quantityDisabled"
-                            ></el-input>
+                            <el-input v-model="infolist.priority" placeholder="优先级-仅灯箱画面填报"
+                                @keyup.native="numberVertify"></el-input>
                         </el-form-item>
+                        <!-- <el-form-item prop="quantity">
+                                <span>数量</span>
+                                <el-input
+                                    v-model="infolist.quantity"
+                                    placeholder="数量"
+                                    :disabled="quantityDisabled"
+                                ></el-input>
+                            </el-form-item> -->
                         <el-form-item>
                             <span>物料单价(不含税)</span>
-                            <el-input
-                                v-model="infolist.price"
-                                disabled
-                            ></el-input>
-                        </el-form-item>
-                        <el-form-item prop="settlementAmount">
-                            <span>结算金额</span>
-                            <el-input
-                                v-model="infolist.settlementAmount"
-                                placeholder="结算金额"
-                                disabled
-                            ></el-input>
+                            <el-input v-model="infolist.price" disabled></el-input>
                         </el-form-item>
+                        <!-- <el-form-item prop="settlementAmount">
+                                <span>结算金额</span>
+                                <el-input
+                                    v-model="infolist.settlementAmount"
+                                    placeholder="结算金额"
+                                    disabled
+                                ></el-input>
+                            </el-form-item> -->
                     </div>
                 </el-form>
 
                 <div slot="footer" class="dialog-footer myfooter">
-                    <el-button
-                        type="primary"
-                        @click="dialogCli(2)"
-                        v-if="titname !== '查看'"
-                        >确 定</el-button
-                    >
-                    <el-button @click="dialogCli(1)" v-if="titname === '查看'"
-                        >确 定</el-button
-                    >
+                    <el-button type="primary" @click="dialogCli(2)" v-if="titname !== '查看'">确 定</el-button>
+                    <el-button @click="dialogCli(1)" v-if="titname === '查看'">确 定</el-button>
                     <el-button @click="dialogCli(1)">取 消</el-button>
                 </div>
             </div>
         </el-dialog>
 
-        <myMessage
-            :messTit="messTit"
-            @closeMessage="closeMessage"
-            :centerDialogVisible="centerDialogVisible"
-            v-if="centerDialogVisible"
-        ></myMessage>
-    </fullscreen>
+        <myMessage :messTit="messTit" @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible"></myMessage>
+</fullscreen>
 </template>
 <script>
 import mySearch from "../../../components/search.vue";
@@ -595,21 +395,21 @@ export default {
         // };
 
         return {
-            optionList:[{
-                id:'自有渠道',
-                value:'自有渠道'
-            },{
-                id:'合作渠道',
-                value:'合作渠道'
-            },{
-                id:'家庭市场',
-                value:'家庭市场'
-            },{
-                id:'个人市场',
-                value:'个人市场'
-            },{
-                id:'政企市场',
-                value:'政企市场'
+            optionList: [{
+                id: '自有渠道',
+                value: '自有渠道'
+            }, {
+                id: '合作渠道',
+                value: '合作渠道'
+            }, {
+                id: '家庭市场',
+                value: '家庭市场'
+            }, {
+                id: '个人市场',
+                value: '个人市场'
+            }, {
+                id: '政企市场',
+                value: '政企市场'
             }],
             rules: {
                 regionName: [
@@ -877,18 +677,18 @@ export default {
             metirialInfoSingle: [],
             quantityDisabled: true,
             fileInfot: {
-                    type: 'btn',
-                    typename: '导入',
-                    btntype: 'primary',
-                    limit: 1,
-                    url: '/market/cadvBusiMetirial/import',
-                    fileList: [],
-                    woNo: "",
-                },
+                type: 'btn',
+                typename: '导入',
+                btntype: 'primary',
+                limit: 1,
+                url: '/market/cadvBusiMetirial/import',
+                fileList: [],
+                woNo: "",
+            },
         };
     },
     computed: {
-        coefficient: function() {
+        coefficient: function () {
             if (
                 this.infolist.width == undefined &&
                 this.infolist.length == undefined
@@ -910,7 +710,7 @@ export default {
     },
     methods: {
         // 结算金额
-        settlementAmount: function() {
+        settlementAmount: function () {
             this.infolist.settlementAmount =
                 this.infolist.price *
                 this.infolist.coefficient *
@@ -1057,7 +857,7 @@ export default {
             } else if (v === 3) {
                 this.titname = "添加";
                 this.disableStatus = false;
-                this.infolist.countyTime = this.$formatDate(new Date(),"YYYY-MM-DD")
+                this.infolist.countyTime = this.$formatDate(new Date(), "YYYY-MM-DD")
                 // this.infolist.unit = "延长米";
             }
             // this.infolist.opNo = this.userInfo.loginNo;
@@ -1073,7 +873,10 @@ export default {
                     parentCompId: this.infolist.regionCode
                 }
             }).then(res => {
-                this.countyOpt = res.data;
+                if (v !== 3) {
+                    this.countyOpt = res.data;
+                }
+
             });
         },
         //添加
@@ -1087,7 +890,7 @@ export default {
                     new Date(),
                     "YYYY-MM-DD"
                 );
-                this.infolist.countyTime = this.$formatDate(this.infolist.countyTime,"YYYY-MM-DD")
+                this.infolist.countyTime = this.$formatDate(this.infolist.countyTime, "YYYY-MM-DD")
 
                 if (this.titname === "添加") {
                     this.submitInfo("/market/cadvBusiMetirial/add");
@@ -1180,7 +983,7 @@ export default {
         uploadBack(v) {
             let that = this;
             console.log(v);
-            if(v.data.result==0){
+            if (v.data.result == 0) {
                 that.getList({}, 1);
                 that.getUser();
                 that.getMetirialType();
@@ -1223,7 +1026,7 @@ export default {
                             } else if (this.userInfo.cityName != null && this.userInfo.countyName != null) {
                                 // this.countyOpt = res.data;
                                 this.countyOpt = res.data.filter(item => {
-                                    return ( item.compName == this.userInfo.countyName );
+                                    return (item.compName == this.userInfo.countyName);
                                 });
                                 // this.countyOpt = res.data;
                             }
@@ -1380,7 +1183,7 @@ export default {
         this.getMetirialType();
         this.getMetirialInfo();
     },
-    created() {}
+    created() { }
 };
 </script>
 <style scoped lang="scss">
@@ -1453,6 +1256,7 @@ export default {
         width: calc(100% - 120px);
     }
 }
+
 .search-box .box-l .box-info {
     margin-right: 20px !important;
 }

+ 139 - 154
src/pages/main/advertising/contractCap.vue

@@ -3,195 +3,142 @@
         <div class="container-box">
             <toolList @iconCli="iconCli" :tooltit="tooltit"></toolList>
             <div class="search">
-                <mySearch
-                    :searchList="searchList"
-                    @searchInfo="searchInfo"
-                ></mySearch>
-                <el-button
-                    class="btn-check"
-                    size="medium"
-                    type="primary"
-                    @click="dialogCheck(3)"
-                    v-if="userInfo.countyName == null && userInfo.cityName != null"
-                    >添加
-                </el-button>
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <!-- <el-button class="btn-check" size="medium" type="primary" @click="dialogCheck(3)"
+                            v-if="advLeader">添加
+                        </el-button> -->
             </div>
             <div class="tabbox">
-                <el-table
-                    height="calc(100% - 40px)"
-                    class="com-table"
-                    ref="multipleTable"
-                    :data="tableData"
-                    tooltip-effect="dark"
-                    size="small"
-                    border
-                    style="width: 100%"
-                    v-loading="loading"
-                >
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
                     <el-table-column prop="regionName" label="地市名称">
                     </el-table-column>
                     <!-- <el-table-column prop="regionCode" label="地市编码">
-                    </el-table-column> -->
+                                </el-table-column> -->
                     <!-- <el-table-column prop="preAccount" label="一采预算">
-                    </el-table-column> -->
-                    <el-table-column
-                        prop="secbuyPreAccount"
-                        label="二采预算总额"
-                    >
+                                </el-table-column> -->
+                    <el-table-column prop="secbuyPreAccount" label="二采预算总额">
                     </el-table-column>
                     <!-- <el-table-column prop="costAccount" label="一采累计使用">
-                    </el-table-column> -->
+                                </el-table-column> -->
                     <!-- <el-table-column prop="secbuyCostAccount" label="二采累计使用">
-                    </el-table-column> -->
-                    <el-table-column
-                        prop="secbuyLastAccount"
-                        label="二采剩余预算"
-                    >
+                                </el-table-column> -->
+                    <el-table-column prop="secbuyLastAccount" label="二采剩余预算">
                     </el-table-column>
                     <el-table-column prop="secbuySchedule" label="使用进度">
                     </el-table-column>
-                    <el-table-column
+                    <!-- <el-table-column
                         :label="item.supplierName"
                         v-for="(item, index) in supplierArr"
                         :key="index"
                     >
                         <template slot-scope="scope">
-                            <div
-                                v-if="
-                                    scope.row.cMkSupplierCumulativeAmounts.filter(
-                                        n => {
-                                            return (
-                                                n.supplierName ==
-                                                item.supplierName
-                                            );
-                                        }
-                                    ).length > 0
-                                "
-                            >
+                            <div v-if="
+                                scope.row.cMkSupplierCumulativeAmounts.filter(
+                                    n => {
+                                        return (
+                                            n.supplierName ==
+                                            item.supplierName
+                                        );
+                                    }
+                                ).length > 0
+                            ">
                                 {{ item.sumBudget }}
                             </div>
                         </template>
-                    </el-table-column>
+                    </el-table-column> -->
                     <!-- <el-table-column prop="advYearn" :label="advYearnLabel">
-					</el-table-column> -->
-                    <el-table-column label="操作" width="160px" align="center" v-if="userInfo.countyName == null && userInfo.cityName != null">
+            					</el-table-column> -->
+                    <el-table-column label="操作" width="160px" align="center" v-if="advLeader">
                         <template slot-scope="scope">
                             <!-- <el-button
-                                size="mini"
-                                type="primary"
-                                @click="dialogCheck(1, scope.row)"
-                                >查看</el-button
-                            > -->
-                            <el-button
-                                size="mini"
-                                type="primary"
-                                @click="dialogCheck(2, scope.row)" 
-                                v-if="userInfo.countyName == null && userInfo.cityName != null"
-                                >编辑</el-button>
+                                            size="mini"
+                                            type="primary"
+                                            @click="dialogCheck(1, scope.row)"
+                                            >查看</el-button
+                                        > -->
+                            <el-button size="mini" type="primary" @click="dialogCheck(2, scope.row)"
+                                v-if="advLeader">编辑</el-button>
                             <!-- <el-button
-                                size="mini"
-                                type="danger"
-                                @click="delLine(scope.row)" 
-                                >删除</el-button
-                            > -->
+                                            size="mini"
+                                            type="danger"
+                                            @click="delLine(scope.row)" 
+                                            >删除</el-button
+                                        > -->
                         </template>
                     </el-table-column>
                 </el-table>
                 <!-- <el-pagination
-                    class="pageBox"
-                    @current-change="currchange"
-                    layout="prev, pager, next"
-                    background
-                    :total="total"
-                >
-                </el-pagination> -->
+                                class="pageBox"
+                                @current-change="currchange"
+                                layout="prev, pager, next"
+                                background
+                                :total="total"
+                            >
+                            </el-pagination> -->
             </div>
         </div>
 
-        <el-dialog
-            :title="titname"
-            :visible.sync="dialogStatus"
-            width="40%"
-            :destroy-on-close="true"
-            :modal-append-to-body="false"
-            :close-on-click-modal="false"
-            :before-close="closedia"
-        >
+        <el-dialog :title="titname" :visible.sync="dialogStatus" width="40%" :destroy-on-close="true"
+            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia">
             <div v-loading="loadinged">
                 <el-form :model="infolist" ref="infolist" :rules="rules">
                     <div class="info-line" style="width: 50%; margin: 0 auto;">
                         <!-- <el-form-item prop="regionCode">
-                            <span>地市名称</span>
-                            <el-select
-                                :popper-append-to-body="false"
-                                v-model="infolist.regionCode"
-                                placeholder="地市名称"
-                                @change="verifcheck"
-                                :disabled="secbuyLastDisableStatus"
-                            >
-                                <el-option
-                                    v-for="item in regionOpt"
-                                    :key="item.compId"
-                                    :label="item.compName"
-                                    :value="item.compId"
-                                >
-                                </el-option>
-                            </el-select>
-                        </el-form-item> -->
+                                        <span>地市名称</span>
+                                        <el-select
+                                            :popper-append-to-body="false"
+                                            v-model="infolist.regionCode"
+                                            placeholder="地市名称"
+                                            @change="verifcheck"
+                                            :disabled="secbuyLastDisableStatus"
+                                        >
+                                            <el-option
+                                                v-for="item in regionOpt"
+                                                :key="item.compId"
+                                                :label="item.compName"
+                                                :value="item.compId"
+                                            >
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item> -->
                         <el-form-item prop="secbuyPreAccount" style="width: 100%;">
                             <span>二采预算总额</span>
-                            <el-input
-                                v-model="infolist.secbuyPreAccount"
-                                placeholder="二采预算总额"
-                            ></el-input>
+                            <el-input v-model="infolist.secbuyPreAccount" placeholder="二采预算总额"></el-input>
                         </el-form-item>
                         <el-form-item prop="secbuyLastAccount" style="width: 100%;">
                             <span>二采剩余预算</span>
-                            <el-input
-                                v-model="infolist.secbuyLastAccount"
-                                placeholder="二采剩余预算"
-                            ></el-input>
+                            <el-input disabled v-model="infolist.secbuyLastAccount" placeholder="二采剩余预算"></el-input>
                         </el-form-item>
                         <!-- <el-form-item prop="secbuySchedule">
-                            <span>使用进度</span>
-                            <el-input
-                                v-model="infolist.secbuySchedule"
-                                placeholder="使用进度"
-                                disabled
-                            ></el-input>
-                        </el-form-item> -->
+                                        <span>使用进度</span>
+                                        <el-input
+                                            v-model="infolist.secbuySchedule"
+                                            placeholder="使用进度"
+                                            disabled
+                                        ></el-input>
+                                    </el-form-item> -->
                         <!-- <el-form-item prop="secbuyCostAccount">
-                            <span>二采使用</span>
-                            <el-input v-model="infolist.secbuyCostAccount" placeholder="二采累计使用" disabled></el-input>
-                        </el-form-item>
-						<el-form-item>
-						    <span>统计周期</span>
-						    <el-input v-model="infolist.advYearn" placeholder="统计周期" :disabled="disableStatus"></el-input>
-						</el-form-item> -->
+                                        <span>二采使用</span>
+                                        <el-input v-model="infolist.secbuyCostAccount" placeholder="二采累计使用" disabled></el-input>
+                                    </el-form-item>
+            						<el-form-item>
+            						    <span>统计周期</span>
+            						    <el-input v-model="infolist.advYearn" placeholder="统计周期" :disabled="disableStatus"></el-input>
+            						</el-form-item> -->
                     </div>
                 </el-form>
 
                 <div slot="footer" class="dialog-footer myfooter">
-                    <el-button
-                        type="primary"
-                        @click="dialogCli(2)"
-                        v-if="titname !== '查看'"
-                        >确 定</el-button
-                    >
-                    <el-button @click="dialogCli(1)" v-if="titname === '查看'"
-                        >确 定</el-button
-                    >
+                    <el-button type="primary" @click="dialogCli(2)" v-if="titname !== '查看'">确 定</el-button>
+                    <el-button @click="dialogCli(1)" v-if="titname === '查看'">确 定</el-button>
                     <el-button @click="dialogCli(1)">取 消</el-button>
                 </div>
             </div>
         </el-dialog>
-        <myMessage
-            :messTit="messTit"
-            @closeMessage="closeMessage"
-            :centerDialogVisible="centerDialogVisible"
-            v-if="centerDialogVisible"
-        ></myMessage>
-    </fullscreen>
+        <myMessage :messTit="messTit" @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible"></myMessage>
+</fullscreen>
 </template>
 <script>
 import mySearch from "../../../components/search.vue";
@@ -207,6 +154,7 @@ export default {
         MessageBox
     },
     data() {
+
         const regionCode = (rule, value, callback) => {
             if (!this.infolist.regionCode) {
                 callback(new Error("不能为空"));
@@ -230,6 +178,7 @@ export default {
         };
 
         return {
+            advLeader: false,
             rules: {
                 regionCode: [
                     {
@@ -297,20 +246,40 @@ export default {
         };
     },
     computed: {
-        // secbuySchedule: function() {
-        //     this.infolist.secbuySchedule = (this.infolist.secbuyPreAccount - this.infolist.secbuyLastAccount) / this.infolist.secbuyPreAccount;
-        //     this.infolist.secbuySchedule = ((parseFloat(this.infolist.secbuySchedule)*100).toFixed(2));
-        //     if(isNaN(this.infolist.secbuySchedule)){
-        //         this.infolist.secbuySchedule = ''
+
+        //     secbuySchedule: function() {
+        //         this.infolist.secbuySchedule = (this.infolist.secbuyPreAccount - this.infolist.secbuyLastAccount) / this.infolist.secbuyPreAccount;
+        //         this.infolist.secbuySchedule = ((parseFloat(this.infolist.secbuySchedule)*100).toFixed(2));
+        //         if(isNaN(this.infolist.secbuySchedule)){
+        //             this.infolist.secbuySchedule = ''
+        //         }
+        //         return this.infolist.secbuySchedule;
         //     }
-        //     return this.infolist.secbuySchedule;
-        // }
     },
     methods: {
         closedia() {
             this.infolist = {};
             this.dialogStatus = false;
         },
+        //获取权限
+        getJiangshuai() {
+            this.$http({
+                url: "/market/paraminfo/query",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: { paramKey: 'adv_leader' }
+            }).then(res => {
+                console.log(res);
+                console.log(res.data.paramValue);
+                console.log(this.userInfo.loginNo);
+                if (this.userInfo.loginNo === res.data.paramValue) {
+                    this.advLeader = true;
+                }
+
+            });
+        },
         //搜索数据
         searchInfo(v) {
             this.params = {};
@@ -332,6 +301,7 @@ export default {
                 },
                 data: v
             }).then(res => {
+                console.log(123);
                 if (
                     this.userInfo.countyName == null &&
                     this.userInfo.cityName == null
@@ -342,7 +312,14 @@ export default {
                         return item.regionName == this.userInfo.cityName;
                     });
                 }
-                
+                // console.log(this.tableData);
+                // this.tableData.map((item) => {
+                //     item.secbuySchedule = (item.secbuyPreAccount - item.secbuyLastAccount) / item.secbuyPreAccount;
+                //     item.secbuySchedule = ((parseFloat(item.secbuySchedule) * 100).toFixed(2));
+                //     if (isNaN(item.secbuySchedule)) {
+                //         item.secbuySchedule = ''
+                //     }
+                // })
                 this.total = res.data.totalRecord;
                 this.loading = false;
 
@@ -400,17 +377,17 @@ export default {
                 this.infolist.areaCode = this.areaCode;
                 this.infolist.areaName = this.areaName;
 
-                if(this.currentRole.length == 1){
-                   this.infolist.regionName = this.currentRole[0].compName;
-                   this.infolist.regionCode = this.currentRole[0].compId;
+                if (this.currentRole.length == 1) {
+                    this.infolist.regionName = this.currentRole[0].compName;
+                    this.infolist.regionCode = this.currentRole[0].compId;
                 }
 
                 if (this.titname === "添加") {
-                this.submitInfo("/market/cadvContract/add");
+                    this.submitInfo("/market/cadvContract/add");
                 } else if (this.titname === "编辑") {
                     this.submitInfo("/market/cadvContract/update", v);
                 }
-                
+
             }
         },
         submitInfo(u) {
@@ -436,7 +413,7 @@ export default {
                     }).then(res => {
                         this.loadinged = false;
                         if (res.data.result === 0) {
-                             _this.$message({
+                            _this.$message({
                                 message: "成功",
                                 type: "success"
                             });
@@ -546,7 +523,7 @@ export default {
                     parentCompId: "0"
                 }
             }).then(res => {
-                this.currentRole = res.data.filter(item=>{
+                this.currentRole = res.data.filter(item => {
                     return item.compName == this.userInfo.cityName
                 })
                 // if (
@@ -562,10 +539,18 @@ export default {
         }
     },
     mounted() {
+        this.getJiangshuai()
         this.getList({}, 1);
         this.getUser();
     },
-    created() {}
+    created() { },
+    watch: {
+        "infolist.secbuyPreAccount": {
+            handler(newVal) {
+                  this.infolist.secbuyLastAccount =  newVal -  this.infolist.costAccount
+            },
+        },
+    }
 };
 </script>
 <style scoped lang="scss">

+ 188 - 174
src/pages/main/advertising/index.vue

@@ -1,199 +1,213 @@
 <template>
-    <fullscreen :fullscreen.sync="fullscreen" class="container">
-        <div class="container-box">
-			
+	<fullscreen :fullscreen.sync="fullscreen" class="container">
+		<div class="container-box">
+
 			<!-- <h2>广告宣传费台账</h2>
-			<div class="adv-type">
-			    <div @click="jumpinfop('/publicityAccount',1,'宣传费台账')" v-if="lockFlag == 'updata'">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>创建模板</span>
-			    </div>
-				<div @click="jumpinfop('/publicityAccount',2,'宣传费台账')">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>录入/更新</span>
-			    </div>
-				<div @click="jumpinfop('/publicityAccount',3,'宣传费台账')" v-if="lockFlag == 'updata'">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>查看/下载</span>
-			    </div>
-			</div> -->
+				<div class="adv-type">
+				    <div @click="jumpinfop('/publicityAccount',1,'宣传费台账')" v-if="lockFlag == 'updata'">
+				        <span><i class="el-icon-folder-opened"></i></span>
+				        <span>创建模板</span>
+				    </div>
+					<div @click="jumpinfop('/publicityAccount',2,'宣传费台账')">
+				        <span><i class="el-icon-folder-opened"></i></span>
+				        <span>录入/更新</span>
+				    </div>
+					<div @click="jumpinfop('/publicityAccount',3,'宣传费台账')" v-if="lockFlag == 'updata'">
+				        <span><i class="el-icon-folder-opened"></i></span>
+				        <span>查看/下载</span>
+				    </div>
+				</div> -->
 			<h2 class="font-ui" style="margin-top: 20px;">宣传物料管理</h2>
 			<div class="adv-type">
-			    <div class="wfour" @click="jumpinfo('/materialApplication','宣传物料申请及审批')">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>宣传物料申请及审批</span>
-			    </div>
-				<!-- <div class="wfour" @click="jumpinfo('/materialApplicationc','市级物料申请')">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>市级物料申请</span>
-			    </div>
-				<div class="wfour" @click="jumpinfo('/materialApplicationExa','物料申请审核')">
-				    <span><i class="el-icon-folder-opened"></i></span>
-				    <span>省级物料审批</span>
+				<div class="wfour" @click="jumpinfo('/materialApplication', '宣传物料申请及审批')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>宣传物料申请及审批</span>
 				</div>
-				<div class="wfour" @click="jumpinfo('/materialApplicationExac','物料申请审核')">
-				    <span><i class="el-icon-folder-opened"></i></span>
-				    <span>市级物料审批</span>
-				</div> -->
+				<!-- <div class="wfour" @click="jumpinfo('/materialApplicationc','市级物料申请')">
+				        <span><i class="el-icon-folder-opened"></i></span>
+				        <span>市级物料申请</span>
+				    </div>
+					<div class="wfour" @click="jumpinfo('/materialApplicationExa','物料申请审核')">
+					    <span><i class="el-icon-folder-opened"></i></span>
+					    <span>省级物料审批</span>
+					</div>
+					<div class="wfour" @click="jumpinfo('/materialApplicationExac','物料申请审核')">
+					    <span><i class="el-icon-folder-opened"></i></span>
+					    <span>市级物料审批</span>
+					</div> -->
 			</div>
 			<h2 class="font-ui" style="margin-top: 20px;">基础数据管理</h2>
 			<div class="adv-type">
-			    <!-- <div class="wfive" @click="jumpinfo('/materielPick','一采物料类型建档')" v-if="province">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>一采物料类型建档</span>
-			    </div> -->
-				<div class="wfive" @click="jumpinfo('/materiel','二采物料类型建档')" v-if="province">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>二采物料类型建档</span>
-			    </div>
-				<div class="wfive" @click="jumpinfo('/contractCap','预算及合同上限')">
-			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>预算及合同上限</span>
-			    </div>
-				<div class="wfive" @click="jumpinfo('/supplier','供应商管理')" v-if="province">
-				    <span><i class="el-icon-folder-opened"></i></span>
-				    <span>供应商管理</span>
+				<!-- <div class="wfive" @click="jumpinfo('/materielPick','一采物料类型建档')" v-if="province">
+				        <span><i class="el-icon-folder-opened"></i></span>
+				        <span>一采物料类型建档</span>
+				    </div> -->
+				<div class="wfive" @click="jumpinfo('/materiel', '二采物料类型建档')" v-if="province">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>二采物料类型建档</span>
+				</div>
+				<div class="wfive" @click="jumpinfo('/contractCap', '预算及合同上限')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>预算及合同上限</span>
+				</div>
+				<div class="wfive" @click="jumpinfo('/supplier', '供应商管理')" v-if="province">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>供应商管理</span>
 				</div>
-				<div class="wfive" @click="jumpinfo('/businessHall','物料基础信息维护')">
-				    <span><i class="el-icon-folder-opened"></i></span>
-				    <span>物料基础信息维护</span>
+				<div class="wfive" @click="jumpinfo('/businessHall', '物料基础信息维护')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>物料基础信息维护</span>
 				</div>
-				<div class="wfive" @click="jumpinfo('/materialApplistatic','物料统计')">
-				    <span><i class="el-icon-folder-opened"></i></span>
-				    <span>物料统计</span>
+				<div class="wfive" @click="jumpinfo('/materialApplistatic', '物料统计')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>物料统计</span>
 				</div>
+				<div class="wfive" @click="jumpinfo('/materialAppMessage', '宣传物料制作费用明细')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>宣传物料制作费用明细</span>
+				</div>
+				<div class="wfive" @click="jumpinfo('/materialAppNum', '验收打分单')">
+					<span><i class="el-icon-folder-opened"></i></span>
+					<span>验收打分单</span>
+				</div>
+
 			</div>
-			
-      </div>
 
-    </fullscreen>
+		</div>
 
+</fullscreen>
 </template>
 <script>
-    import mySearch from "../../../components/search.vue";
-    import myMessage from "../../../components/myMessage.vue"
-    import toolList from '../../../components/toolList'
-	import myUpload from '../../../components/upload'
+import mySearch from "../../../components/search.vue";
+import myMessage from "../../../components/myMessage.vue"
+import toolList from '../../../components/toolList'
+import myUpload from '../../../components/upload'
+
+export default {
+	components: {
+		mySearch,
+		myMessage,
+		toolList,
+		myUpload
+	},
+	data() {
 
-    export default {
-        components: {
-            mySearch,
-            myMessage,
-            toolList,
-			myUpload
-        },
-        data() {
-          
-            return {
-                fullscreen: false,
-				lockFlag:'see',
-				province:true
-            }
-        },
-        methods: {
-            jumpinfop(p,v,n){
-				this.$router.push({
-				    path: p,
-				    query:{
-				        type:v
-				    }
-				});
-				this.setabList(n, p+"?type="+v);
-			},
-			jumpinfo(p,n){
-				this.$router.push({
-				    path: p,
-				});
-				this.setabList(n, p);
-			},
-			setabList(n, p) {
-			    let params = {
-			        children: "",
-			        name: n,
-			        rountPath: p,
-			        target: "_self",
-			    };
-			    for (let i = 0; i < this.$store.state.tabList.length; i++) {
-			        if (this.$store.state.tabList[i].name === params.name) {
-			            this.$store.state.tabList[i] = params;
-			        }
-			    }
-			    let set = new Set([...this.$store.state.tabList, params]);
-			    set.add(params);
-			    this.$store.commit("setDefaultActive", params.rountPath);
-			    this.$store.commit("setTabList", Array.from(set));
-			},
-            getUser() {
-                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
-				let Menus = JSON.parse(window.sessionStorage.childrenMenus);
-				for (let i = 0; i < Menus.length; i++) {
-					if(Menus[i].systemflag == 1 && Menus[i].jspUrl == '/publicityAccount'){
-						this.lockFlag = 'add';//省级
-					}
-					if(Menus[i].systemflag == 1 && Menus[i].jspUrl == '/publicity'){
-						this.lockFlag = 'updata';//管理员
-						i = Menus.length;
-					}
+		return {
+			fullscreen: false,
+			lockFlag: 'see',
+			province: true
+		}
+	},
+	methods: {
+		jumpinfop(p, v, n) {
+			this.$router.push({
+				path: p,
+				query: {
+					type: v
+				}
+			});
+			this.setabList(n, p + "?type=" + v);
+		},
+		jumpinfo(p, n) {
+			this.$router.push({
+				path: p,
+			});
+			this.setabList(n, p);
+		},
+		setabList(n, p) {
+			let params = {
+				children: "",
+				name: n,
+				rountPath: p,
+				target: "_self",
+			};
+			for (let i = 0; i < this.$store.state.tabList.length; i++) {
+				if (this.$store.state.tabList[i].name === params.name) {
+					this.$store.state.tabList[i] = params;
+				}
+			}
+			let set = new Set([...this.$store.state.tabList, params]);
+			set.add(params);
+			this.$store.commit("setDefaultActive", params.rountPath);
+			this.$store.commit("setTabList", Array.from(set));
+		},
+		getUser() {
+			this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+			let Menus = JSON.parse(window.sessionStorage.childrenMenus);
+			for (let i = 0; i < Menus.length; i++) {
+				if (Menus[i].systemflag == 1 && Menus[i].jspUrl == '/publicityAccount') {
+					this.lockFlag = 'add';//省级
 				}
-				for (let i = 0; i < Menus.length; i++) {
-					if(Menus[i].systemflag == 1 && Menus[i].jspUrl == '/province'){
-						this.province = true;//省公司
-					}
+				if (Menus[i].systemflag == 1 && Menus[i].jspUrl == '/publicity') {
+					this.lockFlag = 'updata';//管理员
+					i = Menus.length;
 				}
-            }
-        },
-        mounted() {
-            this.getUser();
-        },
-        created() {
+			}
+			for (let i = 0; i < Menus.length; i++) {
+				if (Menus[i].systemflag == 1 && Menus[i].jspUrl == '/province') {
+					this.province = true;//省公司
+				}
+			}
+		}
+	},
+	mounted() {
+		this.getUser();
+	},
+	created() {
 
-        }
-    }
+	}
+}
 </script>
 <style scoped lang="scss">
-	.container-box{
-		height: calc(100vh - 200px);
-		overflow-y: scroll;
-		padding-bottom: 20px;
+.container-box {
+	height: calc(100vh - 200px);
+	overflow-y: scroll;
+	padding-bottom: 20px;
+}
+
+.adv-type {
+	margin-top: 20px;
+	display: flex;
+	// justify-content: space-between;
+	flex-wrap: wrap;
+	// border: 1px solid #ddd;
+	border-radius: 5px;
+	padding: 20px;
+	box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+
+	div {
+		width: 33%;
+		text-align: center;
+		height: 80px;
+		overflow: hidden;
+		min-width: 100px;
+		cursor: pointer;
+		padding-top: 10px;
+		margin: 10px 0;
 	}
-	.adv-type{
-	    margin-top: 20px;
-	    display: flex;
-	    justify-content: space-between;
-	    flex-wrap: wrap;
-	    // border: 1px solid #ddd;
-	    border-radius: 5px;
-	    padding: 20px;
-	    box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
-	    div{
-	        width: 33%;
-	        text-align: center;
-	        height: 80px;
-	        overflow: hidden;
-	        min-width: 100px;
-	        cursor: pointer;
-	        padding-top: 10px;
-	        margin: 10px 0;
-	    }
-	    div:hover{
-	        background: #CFE8FC;
-	        border-radius: 5px;
-	    }
-	    span{
-	        width: 100%;
-	        display: inline-block;
-	        height: 40px;
-	        // line-height: 40px;
-	        i{
-	            color: #0074D9;
-	            font-size: 36px;
-	        }
-	    }
-		.wfour{
-			width: 25%;
-		}
-		.wfive{
-			width: 20%;
+
+	div:hover {
+		background: #CFE8FC;
+		border-radius: 5px;
+	}
+
+	span {
+		width: 100%;
+		display: inline-block;
+		height: 40px;
+
+		// line-height: 40px;
+		i {
+			color: #0074D9;
+			font-size: 36px;
 		}
 	}
-</style>
+
+	.wfour {
+		width: 25%;
+	}
+
+	.wfive {
+		width: 20%;
+	}
+}</style>

+ 447 - 0
src/pages/main/advertising/materialAppMessage.vue

@@ -0,0 +1,447 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli="iconCli" :tooltit="tooltit"></toolList>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <el-button class="btn-check" size="medium" type="primary" @click="exportTempletelist">导出
+                </el-button>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                    <el-table-column prop="region" label="城市">
+                    </el-table-column>
+                    <el-table-column prop="district" label="区县">
+                    </el-table-column>
+
+                    <el-table-column prop="selectedGys" label="供应商(全称)">
+                    </el-table-column>
+                    <el-table-column prop="useCase" label="使用场景">
+                    </el-table-column>
+                    <el-table-column prop="materialNo" label="物料编码">
+                    </el-table-column>
+                    <el-table-column prop="material" label="物料名称">
+                    </el-table-column>
+                    <el-table-column prop="unit" label="物料单位">
+                    </el-table-column>
+                    <el-table-column prop="spec" label="规格尺寸">
+                    </el-table-column>
+                    <el-table-column prop="chang" label="长(M)">
+                    </el-table-column>
+                    <el-table-column prop="kuan" label="宽(M)">
+                    </el-table-column>
+                    <el-table-column prop="coefficient" label="系数">
+                    </el-table-column>
+
+                    <el-table-column prop="quantity" label="数量">
+                    </el-table-column>
+                    <el-table-column prop="settlementAmount" label="结算金额(元,不含税)">
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+        </div>
+</fullscreen>
+</template>
+<script>
+import mySearch from "../../../components/search.vue";
+import toolList from "../../../components/toolList";
+
+export default {
+    components: {
+        mySearch,
+        toolList,
+    },
+    data() {
+       
+        return {
+            searchList: [
+                {
+                    type: "sel",
+                    tit: "使用场景",
+                    value: "",
+                    width: "31%",
+                    options: [
+                        {
+                            dataCode: "营业厅-VI改造-自有渠道",
+                            dataName: "营业厅-VI改造-自有渠道"
+                        },
+                        {
+                            dataCode: "营业厅-常规物料-自有渠道",
+                            dataName: "营业厅-常规物料-自有渠道"
+                        },
+                        {
+                            dataCode: "营业厅-VI改造-合作渠道",
+                            dataName: "营业厅-VI改造-合作渠道"
+                        },
+                        {
+                            dataCode: "营业厅-常规物料-合作渠道",
+                            dataName: "营业厅-常规物料-合作渠道"
+                        },
+                        {
+                            dataCode: "小区",
+                            dataName: "小区"
+                        },
+                        {
+                            dataCode: "校园",
+                            dataName: "校园"
+                        },
+                        {
+                            dataCode: "政企",
+                            dataName: "政企"
+                        }
+                    ]
+                },
+                { type: "input", tit: "供应商", value: "", width: "31%" },
+                { type: "input", tit: "城市名称", value: "", width: "31%" },
+                { type: "input", tit: "区县名称", value: "", width: "31%" },
+                { type: "input", tit: "物料编码", value: "", width: "31%" }
+            ],
+            tooltit: "宣传物料制作费用明细",
+            fullscreen: false,
+            total: 0,
+            pageSize: 1,
+            tableData: [],
+            dialogStatus: false,
+            disableStatus: false,
+            titname: "",
+            infolist: {},
+            userInfo: {},
+            params: {},
+            centerDialogVisible: false,
+            messTit: "",
+            delid: "",
+            loading: false,
+            loadinged: false,
+            //使用场景
+            sceneopt: [
+                {
+                    dataCode: "1",
+                    dataName: "小区"
+                },
+                {
+                    dataCode: "2",
+                    dataName: "校园"
+                },
+                {
+                    dataCode: "3",
+                    dataName: "营业厅-VI改造-自有渠道"
+                },
+                {
+                    dataCode: "4",
+                    dataName: "营业厅-常规物料-自有渠道"
+                },
+                {
+                    dataCode: "5",
+                    dataName: '营业厅-VI改造-合作渠道'
+                },
+                {
+                    dataCode: "6",
+                    dataName: '营业厅-常规物料-合作渠道'
+                },
+                {
+                    dataCode: "7",
+                    dataName: "政企"
+                }
+            ],
+            // 基础数据
+            isAsicopt: [
+                {
+                    id: "0",
+                    name: "是"
+                },
+                {
+                    id: "1",
+                    name: "否"
+                }
+            ],
+            coefficientopt: [
+                {
+                    id: "0",
+                    name: "按需录入"
+                },
+                {
+                    id: "1",
+                    name: "1"
+                }
+            ],
+            //单位
+            unitopt: [
+                {
+                    id: "0",
+                    name: "平方米"
+                },
+                {
+                    id: "1",
+                    name: "个"
+                },
+                {
+                    id: "2",
+                    name: "延长米"
+                },
+                {
+                    id: "3",
+                    name: "套"
+                },
+                {
+                    id: "4",
+                    name: "组"
+                }, {
+                    id: "5",
+                    name: "延米"
+                }, {
+                    id: '6',
+                    name: '张'
+                }
+            ],
+            //物料名称
+            nameopt: [],
+            //供应商
+            suppOpt: [],
+            usePlanceArr: [],
+            metirialTypeopt: [],
+            metirialCodeDisableStatus: false,
+            // scene:[]
+        };
+    },
+    methods: {
+        exportTempletelist() {
+            let data = this.params;
+            // return
+            this.$http({
+                url: "/market/xcwlProcess/excelExportFeeDetail",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                responseType: "blob",
+                data: {},
+            }).then((response) => {
+                if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                    let blob = new Blob([response.data], {
+                        type: 'application/vnd.ms-excel'
+                    })
+                    window.navigator.msSaveOrOpenBlob(blob,
+                        new Date().getTime() + '.xlsx')
+                } else {
+                    /* 火狐谷歌的文件下载方式 */
+                    var blob = new Blob([response.data])
+                    var downloadElement = document.createElement('a')
+                    var href = window.URL.createObjectURL(blob)
+                    downloadElement.href = href
+                    downloadElement.download = new Date().getTime() + '.xlsx'
+                    document.body.appendChild(downloadElement)
+                    downloadElement.click()
+                    document.body.removeChild(downloadElement)
+                    window.URL.revokeObjectURL(href)
+                }
+            });
+        },
+        usePlance(v) {
+            this.usePlanceArr = v;
+
+        },
+        closedia() {
+            this.infolist = {};
+            this.dialogStatus = false;
+        },
+        //搜索数据
+        searchInfo(v) {
+            this.params = {};
+            v[0] ? (this.params.useCase = v[0]) : "";
+            v[1] ? (this.params.selectedGys = v[1]) : "";
+            v[2] ? (this.params.region = v[2]) : "";
+            v[3] ? (this.params.district = v[3]) : "";
+            v[4] ? (this.params.materialNo = v[4]) : "";
+            this.getList(this.params, this.pageSize);
+        },
+        uploadBack(v) {
+            let that = this;
+            console.log(v);
+            if (v.data.result == 0) {
+                that.getList({}, 1);
+                that.getUser();
+                that.getMetirialType();
+                that.getMetirialInfo();
+            }
+        },
+        getMetirialInfo() {
+            this.$http({
+                url: "/market/cadvSecbuyMetirial/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json"
+                },
+                data: {
+                    dictCodePks: "metirialType"
+                }
+            }).then(res => {
+                this.materialNameopt = res.data;
+            });
+        },
+        getMetirialType() {
+            this.$http({
+                url: "/sysmgr/cfgDataDicts/queryMap",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json"
+                },
+                data: {
+                    dictCodePks: "metirialType"
+                }
+            }).then(res => {
+                this.metirialTypeopt = res.data.body.metirialType;
+            });
+        },
+        //获取列表
+        getList(v, n) {
+            this.pageSize = n;
+            let _this = this;
+            this.loading = true;
+            this.tableData = [];
+            this.$http({
+                url: "/market/xcwlProcess/queryDonePage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    page: '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: v
+            }).then(res => {
+                res.data.data.forEach(item => {
+                    for (let i = 0; i < this.sceneopt.length; i++) {
+                        if (this.sceneopt[i].dataCode == item.sceneName) {
+                            item.sceneName = this.sceneopt[i].dataName;
+                        }
+                    }
+                });
+                this.tableData = res.data.data;
+                this.total = res.data.totalRecord;
+                this.loading = false;
+            });
+        },
+
+        // 分页
+        currchange(v) {
+            this.pageSize = v;
+            this.getList(this.params, this.pageSize);
+        },
+        //功能栏
+        iconCli(v) {
+            if (v === 1) {
+                this.getList(this.params, this.pageSize);
+            }
+            if (v === 2) {
+                this.fullscreen = !this.fullscreen;
+            }
+        },
+        getUser() {
+            this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+            this.$http({
+                url: "/market/cadvSupplier/queryValidSupplierList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json"
+                },
+                // data: { buyTypeCode: "2" }
+                data: {}
+            }).then(res => {
+                this.suppOpt = res.data;
+            });
+        }
+    },
+    mounted() {
+        this.getList({}, 1);
+        this.getUser();
+
+        this.$http({
+            url: "/sysmgr/cfgDataDicts/queryMap",
+            method: "post",
+            headers: {
+                "Content-Type": "application/json"
+            },
+            data: {
+                dictCodePks: "metirialType"
+            }
+        }).then(res => {
+            this.metirialTypeopt = res.data.body.metirialType;
+            // this.stypeList = res.data.body.materType;
+        });
+    },
+    created() { }
+};
+</script>
+<style scoped lang="scss">
+.onetab {
+    margin-bottom: 20px;
+    padding: 0 20px;
+}
+
+.titbox {
+    div {
+        float: right;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.tabbox {
+    margin-top: 15px;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+
+.info-line {
+    width: 100%;
+    display: block;
+    padding-left: 20px;
+
+    div {
+        width: 50%;
+        display: inline-block;
+    }
+
+    span {
+        width: 80px;
+        display: inline-block;
+        text-align: left;
+
+        i {
+            color: red;
+            display: inline-block;
+            padding-right: 5px;
+        }
+    }
+
+    .el-select,
+    .el-input {
+        width: calc(100% - 100px);
+    }
+}
+
+.online {
+    width: 100%;
+
+    .el-select {
+        width: calc(100% - 100px);
+    }
+
+    span {
+        vertical-align: top;
+    }
+
+    .el-textarea {
+        width: calc(100% - 100px);
+    }
+}
+</style>

+ 415 - 0
src/pages/main/advertising/materialAppNum.vue

@@ -0,0 +1,415 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli="iconCli" :tooltit="tooltit"></toolList>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <el-button class="btn-check" size="medium" type="primary" @click="exportTempletelist">导出验收单
+                </el-button>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" @selection-change="selectionChange"
+                    v-loading="loading">
+                    <el-table-column type="selection" width="55">
+                    </el-table-column>
+                    <el-table-column prop="needName" label="业务名称">
+                    </el-table-column>
+                    <el-table-column prop="state" label="需求编号">
+                    </el-table-column>
+                    <el-table-column prop="materialNo" label="物料编码">
+                    </el-table-column>
+                    <el-table-column prop="material" label="物料名称">
+                    </el-table-column>
+                    <el-table-column prop="unit" label="物料单位">
+                    </el-table-column>
+                    <el-table-column prop="spec" label="规格尺寸">
+                    </el-table-column>
+                    <el-table-column prop="quantity" label="数量">
+                    </el-table-column>
+                    <el-table-column prop="districtScore" label="区县验收打分">
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+        </div>
+</fullscreen>
+</template>
+<script>
+import { log } from "console";
+import mySearch from "../../../components/search.vue";
+import toolList from "../../../components/toolList";
+
+export default {
+    components: {
+        mySearch,
+        toolList,
+    },
+    data() {
+
+
+        return {
+            exportList:[],
+            searchList: [
+
+                { type: "input", tit: "供应商", value: "", width: "31%" },
+                { type: "input", tit: "城市名称", value: "", width: "31%" },
+                { type: "input", tit: "区县名称", value: "", width: "31%" },
+                { type: "input", tit: "物料编码", value: "", width: "31%" }
+            ],
+            tooltit: "宣传物料制作验收及打分",
+            fullscreen: false,
+            total: 0,
+            pageSize: 1,
+            tableData: [],
+            dialogStatus: false,
+            disableStatus: false,
+            titname: "",
+            infolist: {},
+            userInfo: {},
+            params: {},
+            centerDialogVisible: false,
+            messTit: "",
+            delid: "",
+            loading: false,
+            loadinged: false,
+            //使用场景
+            sceneopt: [
+                {
+                    dataCode: "1",
+                    dataName: "小区"
+                },
+                {
+                    dataCode: "2",
+                    dataName: "校园"
+                },
+                {
+                    dataCode: "3",
+                    dataName: "营业厅-VI改造-自有渠道"
+                },
+                {
+                    dataCode: "4",
+                    dataName: "营业厅-常规物料-自有渠道"
+                },
+                {
+                    dataCode: "5",
+                    dataName: '营业厅-VI改造-合作渠道'
+                },
+                {
+                    dataCode: "6",
+                    dataName: '营业厅-常规物料-合作渠道'
+                },
+                {
+                    dataCode: "7",
+                    dataName: "政企"
+                }
+            ],
+            // 基础数据
+            isAsicopt: [
+                {
+                    id: "0",
+                    name: "是"
+                },
+                {
+                    id: "1",
+                    name: "否"
+                }
+            ],
+            coefficientopt: [
+                {
+                    id: "0",
+                    name: "按需录入"
+                },
+                {
+                    id: "1",
+                    name: "1"
+                }
+            ],
+            //单位
+            unitopt: [
+                {
+                    id: "0",
+                    name: "平方米"
+                },
+                {
+                    id: "1",
+                    name: "个"
+                },
+                {
+                    id: "2",
+                    name: "延长米"
+                },
+                {
+                    id: "3",
+                    name: "套"
+                },
+                {
+                    id: "4",
+                    name: "组"
+                }, {
+                    id: "5",
+                    name: "延米"
+                }, {
+                    id: '6',
+                    name: '张'
+                }
+            ],
+            //物料名称
+            nameopt: [],
+            //供应商
+            suppOpt: [],
+            usePlanceArr: [],
+            metirialTypeopt: [],
+            metirialCodeDisableStatus: false,
+            // scene:[]
+        };
+    },
+    methods: {
+        selectionChange(val){
+          this.exportList =  val;
+        },  
+        exportTempletelist() {
+            if(this.exportList.length==0){
+                this.$message.error('请选择导出文件')
+                return
+            }
+            // return
+            this.$http({
+                url: "/market/xcwlProcess/excelExportDistrictScore",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                responseType: "blob",
+                data: this.exportList,
+            }).then((response) => {
+                if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                    let blob = new Blob([response.data], {
+                        type: 'application/vnd.ms-excel'
+                    })
+                    window.navigator.msSaveOrOpenBlob(blob,
+                        new Date().getTime() + '.xlsx')
+                } else {
+                    /* 火狐谷歌的文件下载方式 */
+                    var blob = new Blob([response.data])
+                    var downloadElement = document.createElement('a')
+                    var href = window.URL.createObjectURL(blob)
+                    downloadElement.href = href
+                    downloadElement.download = new Date().getTime() + '.xlsx'
+                    document.body.appendChild(downloadElement)
+                    downloadElement.click()
+                    document.body.removeChild(downloadElement)
+                    window.URL.revokeObjectURL(href)
+                }
+            });
+        },
+        usePlance(v) {
+            this.usePlanceArr = v;
+
+        },
+        closedia() {
+            this.infolist = {};
+            this.dialogStatus = false;
+        },
+        //搜索数据
+        searchInfo(v) {
+            this.params = {};
+            v[0] ? (this.params.selectedGys = v[0]) : "";
+            v[1] ? (this.params.region = v[1]) : "";
+            v[2] ? (this.params.district = v[2]) : "";
+            v[3] ? (this.params.materialNo = v[3]) : "";
+            this.getList(this.params, this.pageSize);
+        },
+        uploadBack(v) {
+            let that = this;
+            console.log(v);
+            if (v.data.result == 0) {
+                that.getList({}, 1);
+                that.getUser();
+                that.getMetirialType();
+                that.getMetirialInfo();
+            }
+        },
+        getMetirialInfo() {
+            this.$http({
+                url: "/market/cadvSecbuyMetirial/queryList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json"
+                },
+                data: {
+                    dictCodePks: "metirialType"
+                }
+            }).then(res => {
+                this.materialNameopt = res.data;
+            });
+        },
+        getMetirialType() {
+            this.$http({
+                url: "/sysmgr/cfgDataDicts/queryMap",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json"
+                },
+                data: {
+                    dictCodePks: "metirialType"
+                }
+            }).then(res => {
+                this.metirialTypeopt = res.data.body.metirialType;
+            });
+        },
+        //获取列表
+        getList(v, n) {
+            this.pageSize = n;
+            let _this = this;
+            this.loading = true;
+            this.tableData = [];
+            this.$http({
+                url: "/market/xcwlProcess/queryDonePage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    page: '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: v
+            }).then(res => {
+                res.data.data.forEach(item => {
+                    for (let i = 0; i < this.sceneopt.length; i++) {
+                        if (this.sceneopt[i].dataCode == item.sceneName) {
+                            item.sceneName = this.sceneopt[i].dataName;
+                        }
+                    }
+                });
+                this.tableData = res.data.data;
+                console.log(this.tableData);
+                this.total = res.data.totalRecord;
+                this.loading = false;
+            });
+        },
+
+        // 分页
+        currchange(v) {
+            this.pageSize = v;
+            this.getList(this.params, this.pageSize);
+        },
+        //功能栏
+        iconCli(v) {
+            if (v === 1) {
+                this.getList(this.params, this.pageSize);
+            }
+            if (v === 2) {
+                this.fullscreen = !this.fullscreen;
+            }
+        },
+        getUser() {
+            this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+            this.$http({
+                url: "/market/cadvSupplier/queryValidSupplierList",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json"
+                },
+                // data: { buyTypeCode: "2" }
+                data: {}
+            }).then(res => {
+                this.suppOpt = res.data;
+            });
+        },
+        handleSelectionChange() {
+
+        }
+    },
+    mounted() {
+        this.getList({}, 1);
+        this.getUser();
+
+        this.$http({
+            url: "/sysmgr/cfgDataDicts/queryMap",
+            method: "post",
+            headers: {
+                "Content-Type": "application/json"
+            },
+            data: {
+                dictCodePks: "metirialType"
+            }
+        }).then(res => {
+            this.metirialTypeopt = res.data.body.metirialType;
+            // this.stypeList = res.data.body.materType;
+        });
+    },
+    created() { }
+};
+</script>
+<style scoped lang="scss">
+.onetab {
+    margin-bottom: 20px;
+    padding: 0 20px;
+}
+
+.titbox {
+    div {
+        float: right;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.tabbox {
+    margin-top: 15px;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+
+.info-line {
+    width: 100%;
+    display: block;
+    padding-left: 20px;
+
+    div {
+        width: 50%;
+        display: inline-block;
+    }
+
+    span {
+        width: 80px;
+        display: inline-block;
+        text-align: left;
+
+        i {
+            color: red;
+            display: inline-block;
+            padding-right: 5px;
+        }
+    }
+
+    .el-select,
+    .el-input {
+        width: calc(100% - 100px);
+    }
+}
+
+.online {
+    width: 100%;
+
+    .el-select {
+        width: calc(100% - 100px);
+    }
+
+    span {
+        vertical-align: top;
+    }
+
+    .el-textarea {
+        width: calc(100% - 100px);
+    }
+}
+</style>

+ 28 - 24
src/pages/main/advertising/materialApplistatic.vue

@@ -4,22 +4,22 @@
             <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
             <div class="search">
                 <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
-				<span class="allprice">合计总额:3000</span>
+				<span class="allprice">合计总额:{{ allNum }}</span>
             </div>
             <div class="tabbox">
                 <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
                     tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
-                    <el-table-column prop="name" label="地市">
+                    <el-table-column prop="countyName" label="地市">
                     </el-table-column>
-                    <el-table-column prop="type" label="物料类型">
+                    <el-table-column prop="metirialType" label="物料类型">
                     </el-table-column>
-                    <el-table-column prop="money" label="单价">
+                    <el-table-column prop="price" label="单价">
                     </el-table-column>
                     <el-table-column prop="size" label="规格">
                     </el-table-column>
-                    <el-table-column prop="num" label="数量">
+                    <el-table-column prop="priority" label="数量">
                     </el-table-column>
-					<el-table-column prop="all" label="小计">
+					<el-table-column prop="settlementAmount" label="小计">
                     </el-table-column>
                 </el-table>
                 <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
@@ -42,6 +42,8 @@
         },
         data() {
             return {
+                allNum:'',
+                params:{},
                 searchList: [
                     {
                         type: 'input',
@@ -82,23 +84,25 @@
             },
             //获取列表
             getList(v, n) {
-                // this.pageSize = n;
-                // let _this = this;
-                // this.loading = true;
-                // this.tableData = [];
-                // this.$http({
-                //     url: "/bpm/api/queryBpmPrePluginPage",
-                //     method: "post",
-                //     headers: {
-                //         "Content-Type": "application/json",
-                //         "page": '{"pageNo":"' + n + '","pageSize":"10"}'
-                //     },
-                //     data: v,
-                // }).then((res) => {
-                //     this.tableData = res.data.data;
-                //     this.total = res.data.totalRecord;
-                //     this.loading = false;
-                // });
+                console.log(v);
+                this.pageSize = n;
+                this.loading = true;
+                this.tableData = [];
+                this.$http({
+                    url: "/market/cadvBusiMetirial/queryPageReport",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                    },
+                    data: v,
+                }).then((res) => {
+                    console.log(res);
+                    this.tableData = res.data.data;
+                    this.allNum = res.data.retMsg;
+                    this.total = res.data.totalRecord;
+                    this.loading = false;
+                });
             },
             // 分页
             currchange(v) {
@@ -116,7 +120,7 @@
             },
         },
         mounted() {
-            // this.getList({}, 1);
+            this.getList({}, 1);
         },
         created() {
 

+ 15 - 0
src/pages/main/advertising/supplier.vue

@@ -25,6 +25,10 @@
                     </el-table-column>
                     <el-table-column prop="schedule" label="框架总额进度">
 					</el-table-column>
+                    <el-table-column prop="preCost" label="预占总额">
+					</el-table-column>
+                    <el-table-column prop="billCost" label="下单总额">
+					</el-table-column>
 					<!-- <el-table-column prop="buyTypeName" label="采购类型">
 					</el-table-column> -->
 					<el-table-column prop="contractEndTime" label="截止时间">
@@ -87,6 +91,17 @@
 						    <el-date-picker v-model="infolist.contractEndTime" type="datetime" placeholder="截止时间" :disabled="disableStatus">
 						    </el-date-picker>
 						</el-form-item>
+                        <el-form-item prop="contractEndTime">
+						    <span>预占总额</span>
+						    <el-input v-model="infolist.preCost"  placeholder="预占总额" :disabled="disableStatus">
+						    </el-input>
+						</el-form-item>
+                        <el-form-item prop="contractEndTime">
+						    <span>下单总额</span>
+						    <el-input v-model="infolist.billCost"  placeholder="下单总额" :disabled="disableStatus">
+						    </el-input>
+						</el-form-item>
+               
 						<!-- <el-form-item prop="type">
 						    <span>采购类型</span>
 						    <el-select :disabled="disableStatus" :popper-append-to-body="false"

+ 535 - 0
src/pages/main/documentCollection/documentCollectionApproval.vue

@@ -0,0 +1,535 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container" style="margin: 0;width: 100%;">
+        <div class="container-box">
+            <!-- <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList> -->
+            <div>
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <!-- <div style="margin-top: 20px;float: right;" class="bigbtns">
+                    <el-button style="margin-left: 20px;" class="btn-check" size="medium" type="primary"
+                               @click="addNew()">新增模板
+                    </el-button>
+                </div> -->
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                    <el-table-column prop="templateName" label="模板名称" align="center">
+                    </el-table-column>
+                    <el-table-column prop="reason" label="填报事由" align="center">
+                    </el-table-column>
+                    <el-table-column prop="precautions" label="填报注意事项" align="center">
+                    </el-table-column>
+                    <el-table-column prop="endTime" label="截至时间" align="center">
+                    </el-table-column>
+                    <el-table-column prop="createName" label="工单发起人" align="center">
+                    </el-table-column>
+                    <el-table-column prop="receiverName" label="接收人" align="center">
+                        <template slot-scope="scope">
+                            <span @click="toOneDialog(scope.row.id)" style="cursor:pointer;color: #007eff;">{{
+                                scope.row.receiverName
+                            }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="processName" label="当前处理人" align="center">
+                    </el-table-column>
+                    <el-table-column prop="createTime" label="发起时间" align="center">
+                    </el-table-column>
+
+                    <el-table-column prop="status" label="状态" align="center">
+                        <template slot-scope="scope">
+                            <!-- -1.已撤销 0.待处理 1.部门人员审批 2.部门领导审批 3.退回修改 4.已完成 -->
+                            <span v-if="scope.row.status == -1">已撤销</span>
+                            <span v-if="scope.row.status == 0">待处理</span>
+                            <span v-if="scope.row.status == 1">部门人员审批</span>
+                            <span v-if="scope.row.status == 2">部门领导审批</span>
+                            <span v-if="scope.row.status == 3">退回修改</span>
+                            <span v-if="scope.row.status == 4">已完成</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="superviseFlag" label="是否为督办" align="center">
+                        <template slot-scope="scope">
+                            <span v-if="scope.row.superviseFlag == 0">否</span>
+                            <span v-if="scope.row.superviseFlag == null">否</span>
+                            <span v-if="scope.row.superviseFlag == 1">是</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="操作" width="220px" align="center" fixed="right">
+                        <template slot-scope="scope">
+                            <el-button size="mini" @click="toView(scope.row)">查看</el-button>
+                            <el-button size="mini" @click="toChuli(scope.row)"
+                                v-if="scope.row.status != 4 && (loginNo == scope.row.processId)">处理</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+            <el-dialog title="下发" :visible.sync="issuedAddStatus" width="40%" :destroy-on-close="true"
+                :modal-append-to-body="false" :close-on-click-modal="false" :fullscreen="false">
+                <el-form :model="issuedParam" ref="addInfoList">
+                    <div class="info-line">
+                        <el-form-item prop="testInfo">
+                            <span style="width: 6px;color: red">*</span><span>填报事由</span>
+                            <el-input v-model="issuedParam.editReason" placeholder="填报事由"></el-input>
+                        </el-form-item>
+                    </div>
+                    <div class="info-line">
+                        <el-form-item prop="testInfo">
+                            <span style="width: 6px;color: red">*</span><span>填报注意事项</span>
+                            <el-input v-model="issuedParam.editRemark" placeholder="填报注意事项"></el-input>
+                        </el-form-item>
+                    </div>
+                    <div class="info-line">
+                        <el-form-item prop="testInfo">
+                            <span style="width: 6px;color: red">*</span><span>截止时间</span>
+                            <el-date-picker type="date" placeholder="截止时间" v-model="issuedParam.endTime"
+                                :picker-options="pickerOptions" value-format="yyyy-MM-dd"></el-date-picker>
+                        </el-form-item>
+                    </div>
+                </el-form>
+                <div slot="footer" class="dialog-footer myfooter">
+
+                    <el-button @click="issuedAddStatus = false">取消</el-button>
+                    <el-button @click="processNewIssued()" type="primary">确定</el-button>
+                </div>
+            </el-dialog>
+            <el-dialog :title="'回复详情'" :visible.sync="toOnevisible" width="50%" :destroy-on-close="true"
+                :modal-append-to-body="false" :close-on-click-modal="false">
+                <div style="height: 450px;">
+                    <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableDataDialog"
+                        tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loadingDialog">
+                        <el-table-column prop="receiveName" label="接收人" align="center">
+                        </el-table-column>
+                        <el-table-column prop="dept" label="接收人科室" align="center">
+                        </el-table-column>
+                        <el-table-column prop="arriveTime" label="到达时间" align="center">
+                        </el-table-column>
+                        <el-table-column prop="processTime" label="处理时间" align="center">
+                        </el-table-column>
+                        <el-table-column prop="selectionPath" label="选择路径" align="center">
+                        </el-table-column>
+                        <el-table-column prop="replyComments" label="回复意见" align="center">
+                        </el-table-column>
+                    </el-table>
+                    <el-pagination class="pageBox" @current-change="currchangeDialog" layout="prev, pager, next" background
+                        :total="totalDialog">
+                    </el-pagination>
+                </div>
+
+                <div slot="footer" style="text-align: right;padding-bottom: 20px">
+                    <el-button type="primary" @click="toOnevisible = false">确 定</el-button>
+                </div>
+            </el-dialog>
+        </div>
+        <myMessageNew :messTit='deleteTag' @closeMessage="processDelete" :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible" yes-btn-name="是" no-btn-name="否"></myMessageNew>
+    </fullscreen>
+</template>
+<script>
+import mySearch from "./search.vue";
+import myUpload from "../../../components/upload";
+import toolList from "../../../components/toolList";
+import myMessageNew from "../../../components/myMessageNew.vue"
+
+export default {
+    components: {
+        myUpload,
+        mySearch,
+        toolList,
+        myMessageNew
+    },
+    data() {
+        return {
+            tableData: [{}],
+            total: 0,
+            params: {},
+            deleteTag: '',
+            loginNo: '',
+            centerDialogVisible: false,
+            loading: false,
+            issuedAddStatus: false,
+            issuedParam: {},
+            pickerOptions: {
+                disabledDate(time) {
+                    return time.getTime() < Date.now();
+                }
+            },
+            tooltit: '收入模板管理',
+            searchList: [{
+                type: 'input',
+                tit: '模板名称',
+                value: '',
+                width: '22%',
+            }, {
+                type: 'date',
+                tit: '截止时间',
+                value: '',
+                width: '22%',
+            }, {
+                type: 'sel',
+                tit: '是否为督办',
+                value: '',
+                width: '22%',
+                options: [
+                    {
+                        dataCode: "0",
+                        dataName: "否"
+                    },
+                    {
+                        dataCode: "1",
+                        dataName: "是"
+                    }
+                ]
+            },
+            {
+                type: 'sel',
+                tit: '状态',
+                value: '',
+                width: '22%',
+                options: [
+                    {
+                        dataName: "待处理",
+                        dataCode: "0",
+                    },
+                    {
+                        dataName: "部门人员审核",
+                        dataCode: "1",
+                    },
+                    {
+                        dataName: "部门领导审批",
+                        dataCode: "2",
+                    },
+
+                    {
+                        dataName: "已完成",
+                        dataCode: "4",
+                    },
+                    {
+                        dataName: "退回修改",
+                        dataCode: "3",
+                    },
+                ]
+            },],
+            delTemplateId: '',
+            fullscreen: false,
+            toOnevisible: false,
+            loadingDialog: false,
+            totalDialog: 0,
+            pageSize: 0,
+            pageSizeDialog: 0,
+            paramsDialog: {},
+            tableDataDialog: [{}],
+        }
+    },
+    methods: {
+        checkDelete(row) {
+            this.deleteTag = '确认删除吗?';
+            this.centerDialogVisible = true;
+            this.delTemplateId = row.id;
+        },
+        processDelete(v) {
+            this.centerDialogVisible = false;
+            var _this = this;
+            if (v === 1) {
+                this.$http({
+                    url: "/market/cIncomeExcelTemplate/deleteTemplate",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: { excelId: this.delTemplateId },
+                }).then((res) => {
+                    if (res.data.result === 1) {
+                        _this.$message({
+                            message: '删除失败',
+                            type: 'error'
+                        });
+                    } else {
+                        _this.$message({
+                            message: '删除成功',
+                            type: 'success'
+                        });
+                        _this.getList({}, _this.pageSize);
+                    }
+                });
+            }
+        },
+        //搜索数据
+        searchInfo(v) {
+            this.params = {};
+            v[0] ? this.params.templateName = v[0] : '';
+            v[1] ? this.params.endTime = this.$formatDate(v[1], "YYYY-MM-DD") : '';
+            v[2] ? this.params.superviseFlag = v[2] : '';
+            v[3] ? this.params.status = v[3] : '';
+            this.getList(this.params, this.pageSize);
+        },
+        //功能栏
+        iconCli(v) {
+            if (v === 1) {
+                this.getList(this.params, this.pageSize);
+            }
+            if (v === 2) {
+                this.fullscreen = !this.fullscreen
+            }
+        },
+        // 分页
+        currchange(v) {
+            this.pageSize = v;
+            this.getList(this.params, this.pageSize);
+        },
+
+        getList(v, n) {
+            this.pageSize = n;
+            this.loading = true;
+            this.tableData = [];
+            let _this = this;
+            this.$http({
+                url: "/market/Issued/queryPage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: {
+                    ...v,
+                },
+            }).then(({ data: { totalRecord, data } }) => {
+                this.tableData = data;
+                this.total = totalRecord;
+                this.loading = false;
+            });
+        },
+        toOneDialog(o) {
+            this.toOnevisible = true
+            this.paramsDialog.issuedId = o
+            this.getListDialog(this.paramsDialog, 1);
+        },
+        // 分页
+        currchangeDialog(v) {
+            this.pageSizeDialog = v;
+            this.getListDialog(this.paramsDialog, this.pageSizeDialog);
+        },
+        getListDialog(v, n) {
+            this.pageSizeDialog = n;
+            this.loadingDialog = true;
+            this.tableDataDialog = [];
+            let _this = this;
+            this.$http({
+                url: "/market/FileOperateLog/queryPage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: {
+                    ...v,
+                },
+            }).then(({ data: { totalRecord, data } }) => {
+                this.tableDataDialog = data;
+                this.totalDialog = totalRecord;
+                this.loadingDialog = false;
+            });
+        },
+        addNew() {
+            var _this = this;
+            _this.jumpinfop('/incomeExcelInfo', 1, '新增模板', "")
+        },
+        toEdit(row) {
+            var _this = this;
+            _this.jumpinfop('/incomeExcelInfo', 2, '修改模板', row.id);
+        },
+        toView(row) {
+            var _this = this;
+            _this.jumpinfop('/documentCollectionApprovalExcel', 5, '查看', row.id);
+        },
+        toChuli(row) {
+            var _this = this;
+            _this.jumpinfop('/documentCollectionApprovalExcel', 4, '处理', row.id, row.status);
+        },
+        addNewIssued(row) {
+            this.issuedParam = {
+                templateId: row.id,
+            };
+            this.issuedAddStatus = true;
+        },
+        processNewIssued() {
+            if (!this.issuedParam.editReason) {
+                this.$message({
+                    message: '填报事由不能为空',
+                    type: 'error'
+                });
+                return;
+            }
+            if (!this.issuedParam.editRemark) {
+                this.$message({
+                    message: '填报注意事项不能为空',
+                    type: 'error'
+                });
+                return;
+            }
+            if (!this.issuedParam.endTime) {
+                this.$message({
+                    message: '截止时间不能为空',
+                    type: 'error'
+                });
+                return;
+            }
+            if (this.issuedParam.editReason.length > 240) {
+                this.$message({
+                    message: '填报事由长度不能大于240字',
+                    type: 'error'
+                });
+                return;
+            }
+            if (this.issuedParam.editRemark.length > 240) {
+                this.$message({
+                    message: '填报注意事项长度不能大于240字',
+                    type: 'error'
+                });
+                return;
+            }
+            var _this = this;
+            //执行下发
+            this.$http({
+                url: '/market/cIncomeExcelIssued/addNewIssued',
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: this.issuedParam,
+            }).then((res) => {
+                this.loading = false;
+                if (res.data.result === 1) {
+                    _this.$message({
+                        message: res.data.desc,
+                        type: 'error'
+                    });
+                } else {
+                    _this.$message({
+                        message: '下发成功',
+                        type: 'success'
+                    });
+                    this.issuedAddStatus = false;
+                    this.getList({}, 1);
+                }
+            });
+        },
+        //跳转页面
+        jumpinfop(p, v, n, id, status) {
+            this.$router.push({
+                path: p,
+                query: {
+                    type: v,
+                    id: id,
+                    status: status,
+                }
+            });
+            this.setabList(n, p + '?type=' + v + '&id=' + id);
+        },
+        //新建一个页面
+        setabList(n, p) {
+            let params = {
+                children: "",
+                name: n,
+                rountPath: p,
+                target: "_self",
+            };
+            for (let i = 0; i < this.$store.state.tabList.length; i++) {
+                if (this.$store.state.tabList[i].name === params.name) {
+                    this.$store.state.tabList[i] = params;
+                }
+            }
+            let set = new Set([...this.$store.state.tabList, params]);
+            set.add(params);
+            this.$store.commit("setDefaultActive", params.rountPath);
+            this.$store.commit("setTabList", Array.from(set));
+        },
+        getUrlKey(name) {
+            return (
+                decodeURIComponent(
+                    (new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec(
+                        location.href
+                    ) || [, ""])[1].replace(/\+/g, "%20")
+                ) || null
+            );
+        },
+    },
+    mounted() {
+        this.getList({
+            id: this.getUrlKey("id"),//获取地址栏参数
+        }, 1);
+        this.loginNo = JSON.parse(window.sessionStorage.userInfo).loginNo
+    },
+    created() {
+
+    }
+}
+</script>
+<style scoped lang="scss">
+.titbox {
+    div {
+        float: right;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.tabbox {
+    margin-top: 16px;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+
+.info-line {
+    width: 100%;
+    display: block;
+    padding-left: 20px;
+
+    div {
+        width: 90%;
+        display: inline-block;
+    }
+
+    span {
+        width: 100px;
+        display: inline-block;
+        text-align: left;
+
+        i {
+            color: red;
+            display: inline-block;
+            padding-right: 5px;
+        }
+    }
+
+    .el-select,
+    .el-input {
+        width: calc(100% - 150px);
+    }
+}
+
+.online {
+    width: 100%;
+
+    .el-select {
+        width: calc(100% - 100px);
+    }
+
+    span {
+        vertical-align: top;
+    }
+
+    .el-textarea {
+        width: calc(100% - 100px);
+    }
+}
+</style>
+

Файловите разлики са ограничени, защото са твърде много
+ 1186 - 0
src/pages/main/documentCollection/documentCollectionApprovalExcel.vue


+ 472 - 0
src/pages/main/documentCollection/documentCollectionApprovalIssuedCollect.vue

@@ -0,0 +1,472 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container" style="margin: 0;width: 100%;">
+        <div class="container-box">
+            <!-- <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList> -->
+            <div>
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                    <el-table-column prop="templateName" label="模板名称" align="center">
+                    </el-table-column>
+                    <el-table-column prop="reason" label="填报事由" align="center">
+                    </el-table-column>
+                    <el-table-column prop="precautions" label="填报注意事项" align="center">
+                    </el-table-column>
+                    <el-table-column prop="endTime" label="截至时间" align="center">
+                    </el-table-column>
+                    <el-table-column prop="createName" label="工单发起人" align="center">
+                    </el-table-column>
+                    <el-table-column prop="receiveNameList" label="接收人" align="center">
+                        <template slot-scope="scope">
+                            <span v-for="(item, index) in scope.row.receiveNameList" :key="index">
+                                <span @click="toOneDialog(item)" style="cursor:pointer;color: #007eff;">{{
+                                    item.name
+                                }}</span>
+                                <span @click="toOneDialog(item)" style="cursor:pointer;color: #007eff;">,</span>
+                            </span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="currentProcessName" label="当前处理人" align="center">
+                    </el-table-column>
+                    <el-table-column prop="createTime" label="发起时间" align="center">
+                    </el-table-column>
+                    <el-table-column prop="progressBar" label="完成进度" align="center">
+                        <template slot-scope="props">
+                            <el-progress :percentage="props.row.progressBar"></el-progress>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="superviseFlag" label="是否为督办" align="center">
+                        <template slot-scope="scope">
+                            <span v-if="scope.row.superviseFlag == 0">否</span>
+                            <span v-if="scope.row.superviseFlag == null">否</span>
+                            <span v-if="scope.row.superviseFlag == 1">是</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="status" label="状态" align="center">
+                        <template slot-scope="scope">
+                            <span v-if="scope.row.status == -1">已撤销</span>
+                            <span v-if="scope.row.status == 0">待处理</span>
+                            <span v-if="scope.row.status == 1">已完成</span>
+                            <!-- <span v-if="scope.row.status == 1">待汇总</span> -->
+                            <!-- <span v-if="scope.row.status == 2">待审批</span> -->
+                            <!-- <span v-if="scope.row.status == 3">已完成</span> -->
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="操作" width="220px" align="center" fixed="right">
+                        <template slot-scope="scope">
+                            <el-button size="mini" @click="toView(scope.row)">查看
+                            </el-button>
+                            <el-button size="mini" @click="toChehuiBtn(scope.row)" v-if="scope.row.status != '-1'">撤回
+                            </el-button>
+                            <el-button size="mini" @click="delDialog(scope.row)">删除
+                            </el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+
+
+            <el-dialog :title="'回复详情'" :visible.sync="toOnevisible" width="50%" :destroy-on-close="true"
+                :modal-append-to-body="false" :close-on-click-modal="false">
+                <div style="height: 450px;">
+                    <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableDataDialog"
+                        tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loadingDialog">
+                        <el-table-column prop="receiveName" label="接收人" align="center">
+                        </el-table-column>
+                        <el-table-column prop="dept" label="接收人科室" align="center">
+                        </el-table-column>
+                        <el-table-column prop="arriveTime" label="到达时间" align="center">
+                        </el-table-column>
+                        <el-table-column prop="processTime" label="处理时间" align="center">
+                        </el-table-column>
+                        <el-table-column prop="selectionPath" label="选择路径" align="center">
+                        </el-table-column>
+                        <el-table-column prop="replyComments" label="回复意见" align="center">
+                        </el-table-column>
+                    </el-table>
+                    <el-pagination class="pageBox" @current-change="currchangeDialog" layout="prev, pager, next"
+                        background :total="totalDialog">
+                    </el-pagination>
+                </div>
+
+                <div slot="footer" style="text-align: right;padding-bottom: 20px">
+                    <el-button type="primary" @click="toOnevisible = false">确 定</el-button>
+                </div>
+            </el-dialog>
+
+
+        </div>
+        <myMessageNew :messTit='deleteTag' @closeMessage="processDel" :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible" yes-btn-name="是" no-btn-name="否"></myMessageNew>
+    </fullscreen>
+</template>
+<script>
+import mySearch from "./search.vue";
+import myUpload from "../../../components/upload";
+import toolList from "../../../components/toolList";
+import myMessageNew from "../../../components/myMessageNew.vue"
+
+export default {
+    components: {
+        myUpload,
+        mySearch,
+        toolList,
+        myMessageNew
+    },
+    data() {
+        return {
+            tableData: [{}],
+            tableDataDialog: [{}],
+            total: 0,
+            totalDialog: 0,
+            pageSize: 0,
+            pageSizeDialog: 0,
+            params: {},
+            paramsDialog: {},
+            deleteTag: '',
+            centerDialogVisible: false,
+            toOnevisible: false,
+            loadingDialog: false,
+            loading: false,
+            issuedAddStatus: false,
+            issuedParam: {},
+            tooltit: '收入信息发布',
+            searchList: [
+                //     {
+                //     type: 'input',
+                //     tit: '模板类型',
+                //     value: '',
+                //     width: '18%',
+                // },
+                {
+                    type: 'input',
+                    tit: '模板名称',
+                    value: '',
+                    width: '22%',
+                }, {
+                    type: 'daterange',
+                    tit: '截至时间',
+                    value: '',
+                    width: '43%',
+                }, {
+                    type: 'sel',
+                    tit: '是否为督办',
+                    value: '',
+                    width: '22%',
+                    options: [
+                        {
+                            dataCode: "0",
+                            dataName: "否"
+                        },
+                        {
+                            dataCode: "1",
+                            dataName: "是"
+                        }
+                    ]
+                },],
+            fullscreen: false,
+            delViewId: ''
+        }
+    },
+    methods: {
+        delDialog(row) {
+            // this.delViewId = row.id;
+            // this.deleteTag = '确认删除吗?';
+            // this.centerDialogVisible = true;
+
+            this.$confirm("确认删除吗?", "提示", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            }).then(() => {
+                this.$http({
+                    url: '/market/IssuedCollect/del',
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: { id: row.id },
+                }).then((res) => {
+                    if (res.data.result === 1) {
+                        this.$message({
+                            message: res.data.desc,
+                            type: 'error'
+                        });
+                    } else {
+                        this.$message({
+                            message: '成功',
+                            type: 'success'
+                        });
+                        this.getList({}, this.pageSize);
+                    }
+                });
+            }).catch(() => { });
+        },
+        processDel(v) {
+            this.centerDialogVisible = false;
+            var _this = this;
+            if (v === 1) {
+                this.$http({
+                    url: "/market/IssuedCollect/del",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: { id: this.delViewId },
+                }).then((res) => {
+                    if (res.data.result === 1) {
+                        _this.$message({
+                            message: '删除失败',
+                            type: 'error'
+                        });
+                    } else {
+                        _this.$message({
+                            message: '删除成功',
+                            type: 'success'
+                        });
+                        _this.getList({}, _this.pageSize);
+                    }
+                });
+            }
+        },
+        //搜索数据
+        searchInfo(v) {
+            this.params = {};
+            v[0] ? this.params.templateName = v[0] : '';
+            v[2] ? this.params.superviseFlag = v[2] : '';
+            // v[3] ? this.params.deptName = v[3] : '';
+            v[1] ? this.params.endTimeFrom = v[1][0] : '';
+            v[1] ? this.params.endTimeTo = v[1][1] : '';
+            this.getList(this.params, this.pageSize);
+        },
+        //功能栏
+        iconCli(v) {
+            if (v === 1) {
+                this.getList(this.params, this.pageSize);
+            }
+            if (v === 2) {
+                this.fullscreen = !this.fullscreen
+            }
+        },
+        // 分页
+        currchange(v) {
+            this.pageSize = v;
+            this.getList(this.params, this.pageSize);
+        },
+        // 分页
+        currchangeDialog(v) {
+            this.pageSizeDialog = v;
+            this.getListDialog(this.paramsDialog, this.pageSizeDialog);
+        },
+        getList(v, n) {
+            this.pageSize = n;
+            this.loading = true;
+            this.tableData = [];
+            let _this = this;
+            this.$http({
+                url: "/market/IssuedCollect/queryPage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: {
+                    ...v,
+                },
+            }).then(({ data: { totalRecord, data } }) => {
+                this.tableData = data;
+                this.total = totalRecord;
+                this.loading = false;
+            });
+        },
+        getListDialog(v, n) {
+            this.pageSizeDialog = n;
+            this.loadingDialog = true;
+            this.tableDataDialog = [];
+            let _this = this;
+            this.$http({
+                url: "/market/FileOperateLog/queryPage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: {
+                    ...v,
+                },
+            }).then(({ data: { totalRecord, data } }) => {
+                this.tableDataDialog = data;
+                this.totalDialog = totalRecord;
+                this.loadingDialog = false;
+            });
+        },
+        processDelete(v) {
+            this.centerDialogVisible = false;
+            if (v === 1) {
+                console.log("删除")
+            }
+        },
+        addNew() {
+            var _this = this;
+            _this.jumpinfop('/incomeExcelViewInfo', 1, '新增收入信息', "")
+        },
+        toEdit(row) {
+            var _this = this;
+            _this.jumpinfop('/incomeExcelViewInfo', 2, '修改收入信息', row.viewId);
+        },
+        toView(row) {
+            var _this = this;
+            _this.jumpinfop('/documentCollectionApprovalExcel', 6, '查看', row.id);
+        },
+        toOneDialog(o) {
+            this.toOnevisible = true
+            this.paramsDialog.issuedId = o.id
+            this.getListDialog(this.paramsDialog, 1);
+        },
+        toChehuiBtn(row) {
+            this.$confirm("确认撤回吗?", "提示", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            }).then(() => {
+                this.$http({
+                    url: '/market/IssuedCollect/withdraw',
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: row.id,
+                }).then((res) => {
+                    if (res.data.result === 1) {
+                        this.$message({
+                            message: res.data.desc,
+                            type: 'error'
+                        });
+                    } else {
+                        this.$message({
+                            message: '成功',
+                            type: 'success'
+                        });
+                        this.getList({}, this.pageSize);
+                    }
+                });
+            }).catch(() => { });
+            // var _this = this;
+            // _this.jumpinfop('/incomeExcelViewInfo', 4, '查看收入信息', row.id);
+        },
+        addNewIssued(row) {
+            this.issuedParam = {
+                templateId: row.id,
+            };
+            this.issuedAddStatus = true;
+        },
+        //跳转页面
+        jumpinfop(p, v, n, id) {
+            this.$router.push({
+                path: p,
+                query: {
+                    type: v,
+                    id: id
+                }
+            });
+            this.setabList(n, p + '?type=' + v + '&id=' + id);
+        },
+        //新建一个页面
+        setabList(n, p) {
+            let params = {
+                children: "",
+                name: n,
+                rountPath: p,
+                target: "_self",
+            };
+            for (let i = 0; i < this.$store.state.tabList.length; i++) {
+                if (this.$store.state.tabList[i].name === params.name) {
+                    this.$store.state.tabList[i] = params;
+                }
+            }
+            let set = new Set([...this.$store.state.tabList, params]);
+            set.add(params);
+            this.$store.commit("setDefaultActive", params.rountPath);
+            this.$store.commit("setTabList", Array.from(set));
+        },
+    },
+    mounted() {
+        this.getList({}, 1);
+    },
+    created() {
+
+    }
+}
+</script>
+<style scoped lang="scss">
+.titbox {
+    div {
+        float: right;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.tabbox {
+    margin-top: 16px;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+
+.info-line {
+    width: 100%;
+    display: block;
+    padding-left: 20px;
+
+    div {
+        width: 90%;
+        display: inline-block;
+    }
+
+    span {
+        width: 100px;
+        display: inline-block;
+        text-align: left;
+
+        i {
+            color: red;
+            display: inline-block;
+            padding-right: 5px;
+        }
+    }
+
+    .el-select,
+    .el-input {
+        width: calc(100% - 150px);
+    }
+}
+
+.online {
+    width: 100%;
+
+    .el-select {
+        width: calc(100% - 100px);
+    }
+
+    span {
+        vertical-align: top;
+    }
+
+    .el-textarea {
+        width: calc(100% - 100px);
+    }
+}
+</style>
+

+ 691 - 0
src/pages/main/documentCollection/documentCollectionApprovalIssuedMoud.vue

@@ -0,0 +1,691 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container" style="margin: 0;width: 100%;">
+        <div class="container-box">
+            <!-- <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList> -->
+            <div>
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <div style="float: right;" class="bigbtns">
+                    <el-button style="margin-top: 10px;" class="btn-check" size="medium" @click="addNew()">
+                        <i class="el-icon-document-add font-weight-bold" />新增模板
+                    </el-button>
+                </div>
+            </div>
+
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                    <el-table-column prop="number" label="序号" align="center">
+                        <template slot-scope="scope">
+                            <span> {{ scope.$index + 1 }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="templateName" label="模板名称" align="center">
+                    </el-table-column>
+                    <el-table-column prop="templateType" label="模板类型" align="center">
+                    </el-table-column>
+                    <el-table-column prop="updateTime" label="配置时间" align="center">
+                    </el-table-column>
+                    <el-table-column prop="createName" label="配置人员" align="center">
+                    </el-table-column>
+
+                    <el-table-column prop="status" label="模板状态" align="center">
+                        <template slot-scope="scope">
+                            <span v-if="scope.row.status == 0">已创建</span>
+                            <span v-if="scope.row.status == 2">起草中</span>
+                            <span v-if="scope.row.status == 3">已下发</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="superviseFlag" label="是否为督办" align="center">
+                        <template slot-scope="scope">
+                            <span v-if="scope.row.superviseFlag == 0">否</span>
+                            <span v-if="scope.row.superviseFlag == null">否</span>
+                            <span v-if="scope.row.superviseFlag == 1">是</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="操作" width="220px" align="center" fixed="right">
+                        <template slot-scope="scope">
+                            <el-button size="mini" @click="toView(scope.row)">查看</el-button>
+                            <el-button size="mini"
+                                v-if="scope.row.status == '0' || scope.row.status == '3' || scope.row.status == '2'"
+                                @click="checkDelete(scope.row)">删除
+                            </el-button>
+                            <el-button size="mini" v-if="scope.row.status == '0'" @click="xiafaBtn(scope.row)">下发
+                            </el-button>
+                            <el-button size="mini"
+                                v-if="scope.row.status == '0' || scope.row.status == '2' || scope.row.status == '3' && (scope.row.status == '3' && scope.row.superviseFlag == '0')"
+                                @click="toEdit(scope.row)">编辑
+                            </el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+
+            <el-dialog :title="'下发'" :visible.sync="issue_visible" width="50%" :destroy-on-close="true"
+                :modal-append-to-body="false" :close-on-click-modal="false">
+                <div style="width:60%;margin:0 auto;">
+                    <el-form label-width="120px" :model="issue_form" ref="issue_ref" :rules="rules">
+                        <el-form-item label="填报事由" prop="reason" :rules="{
+                            required: true,
+                            message: '填报事由不能为空',
+                            trigger: 'blur',
+                        }">
+                            <el-input v-model="issue_form.reason"></el-input>
+                        </el-form-item>
+                        <el-form-item label="填报注意事项" prop="precautions" :rules="{
+                            required: true,
+                            message: '填报注意事项不能为空',
+                            trigger: 'blur',
+                        }">
+                            <el-input v-model="issue_form.precautions"></el-input>
+                        </el-form-item>
+                        <el-form-item label="截止时间" prop="endTime" v-if="superviseFlag !== '1'" :rules="{
+                            required: true,
+                            message: '截止时间不能为空',
+                            trigger: 'change',
+                        }">
+                            <el-date-picker v-model="issue_form.endTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
+                                style="width: 100%;">
+                            </el-date-picker>
+                        </el-form-item>
+                    </el-form>
+                </div>
+
+                <div slot="footer" style="text-align: right;padding-bottom: 20px">
+                    <el-button type="primary" @click="xiafaqueding()" :disabled="BtnDisabled">确 定</el-button>
+                    <el-button @click="issue_visible = false">取 消</el-button>
+                </div>
+            </el-dialog>
+
+
+            <el-dialog :title="'收入信息处理'" :visible.sync="authDialog" width="50%" :destroy-on-close="true"
+                :modal-append-to-body="false" :close-on-click-modal="false">
+                <el-form :model="testModel">
+                    <div>
+                        <div class="info-line">
+                            <span style="margin-right: 20px;margin-left: 40px">选择路径:</span>
+                            <el-select v-model="auditForm.authType" placeholder="选择路径">
+                                <el-option v-for="(item, index) in auditBoxList" :key="index" :label="item.name"
+                                    :value="item.value"></el-option>
+                            </el-select>
+                        </div>
+                        <br />
+                        <div class="info-line" v-if="auditForm.authType == 1">
+                            <span style="margin-right: 20px;margin-left: 40px">下一步处理人:</span>
+                            <el-button type="primary" @click="checkexa = true;">选择处理人</el-button>
+                            <span style="width: 80px;margin-right: 20px;margin-left: 20px">{{ auditUserName }}</span>
+                        </div>
+                        <br />
+                        <div class="info-line">
+                            <span style="margin-right: 20px;margin-left: 40px;">意见内容:</span>
+                            <el-input type="textarea" v-model="auditForm.auditRemark" style="width: 400px"></el-input>
+                        </div>
+                        <br />
+                        <div slot="footer" style="text-align: right;padding-bottom: 20px;padding-top: 20px">
+                            <el-button @click="authDialog = false">取 消</el-button>
+                            <el-button type="primary" @click="processAudit()">确 定</el-button>
+                        </div>
+                    </div>
+                </el-form>
+            </el-dialog>
+
+            <el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
+                :modal-append-to-body="false" :close-on-click-modal="false">
+                <div>
+                    <el-form :model="addInfoList" ref="addInfoList">
+                        <el-form-item prop="processUserId" class="info-line online">
+                            <span style="width: 80px">审批人员&nbsp;</span>
+                            <deptTreeOnly class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
+                                :type="depttype" :closeList="closeList"></deptTreeOnly>
+                            <div class="tree treeUser">
+                                <p>{{ treeListonly.leaderAuditName }}
+                                    <i v-if="treeListonly.leaderAuditName" @click="treeDelete()" class="el-icon-error"></i>
+                                </p>
+                            </div>
+                            <el-form-item style="margin-bottom:0;display:none;">
+                                <el-input></el-input>
+                            </el-form-item>
+                        </el-form-item>
+                    </el-form>
+
+                    <div slot="footer" style="text-align: right;padding-bottom: 20px">
+                        <el-button type="primary" @click="processAuditUser()">确 定</el-button>
+                        <el-button @click="checkexa = false">取 消</el-button>
+                    </div>
+                </div>
+            </el-dialog>
+
+            <el-dialog title="回复详情" :visible.sync="issuedLogStatus" width="70%" :close-on-press-escape="false"
+                :show-close="true" :before-close="closeIssuedLog" :destroy-on-close="true" :modal-append-to-body="false"
+                :close-on-click-modal="false" :fullscreen="true">
+                <div class="tabbox" style="height: 500px">
+                    <el-table height="calc(100% - 50px)" class="com-table" ref="multipleTable" :data="issuedLogData"
+                        tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                        <el-table-column prop="beforeUserName" label="接收人">
+                        </el-table-column>
+                        <el-table-column prop="beforeUserDept" label="部门">
+                        </el-table-column>
+                        <el-table-column prop="opTime" label="回复时间">
+                        </el-table-column>
+                        <el-table-column prop="remark" label="审批记录">
+                        </el-table-column>
+                        <el-table-column prop="status" label="审批意见">
+                        </el-table-column>
+                    </el-table>
+                    <el-pagination class="pageBox" @current-change="issuedLogChange" layout="prev, pager, next" background
+                        :total="issuedLogTotal">
+                    </el-pagination>
+                </div>
+            </el-dialog>
+        </div>
+        <myMessageNew :messTit='deleteTag' @closeMessage="processDelete" :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible" yes-btn-name="是" no-btn-name="否"></myMessageNew>
+    </fullscreen>
+</template>
+
+<script>
+import mySearch from "./search.vue";
+import myUpload from "../../../components/upload";
+import toolList from "../../../components/toolList";
+import myMessageNew from "../../../components/myMessageNew.vue"
+import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+
+export default {
+    components: {
+        myUpload,
+        mySearch,
+        toolList,
+        myMessageNew,
+        deptTreeOnly
+    },
+    data() {
+        return {
+            rules: {
+                endTime: [
+                    {
+                        required: true,
+                        trigger: "change",
+                        message: "截止时间不能为空",
+                    },
+                ],
+                reason: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        message: "填报事由不能为空",
+                    },
+                ],
+                precautions: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        message: "填报注意事项不能为空",
+                    },
+                ],
+            },
+            testModel: {},
+            issue_form: {},
+            tableData: [{}],
+            total: 0,
+            params: {},
+            deleteTag: '',
+            centerDialogVisible: false,
+            BtnDisabled: false,
+            loading: false,
+            tooltit: '收入信息收集',
+            searchList: [{
+                type: 'input',
+                tit: '模板名称',
+                value: '',
+                width: '48%',
+            }, {
+                type: 'input',
+                tit: '模板类型',
+                value: '',
+                width: '48%',
+            },],
+            nowUserId: '',
+            auditBoxList: [{}],
+            authDialog: false,
+            auditForm: {},
+            auditUserName: '',
+            auditUserId: '',
+            //选择审批人
+            checkexa: false,
+            //审批人用到的
+            treeListonly: {},
+            excelData: {},
+            fullscreen: false,
+            defaultList: [],
+            addInfoList: [],
+            closeList: [],
+            depttype: '',
+            issuedLogStatus: false,
+            issue_visible: false,
+            issuedLogData: [],
+            issuedLogPageSize: 1,
+            issuedLogParams: {},
+            issuedLogTotal: 0,
+            delIssuedUserId: '',
+            superviseFlag: ''
+        }
+    },
+    methods: {
+        xiafaBtn(row) {
+            this.issue_form.templateId = row.id
+            this.issue_visible = true
+            this.superviseFlag = row.superviseFlag
+        },
+        addNew() {
+            var _this = this;
+            _this.jumpinfop('/documentCollectionApprovalExcel', 1, '新增模板', "")
+        },
+        processIssuedLog(row) {
+            this.issuedLogParams = {
+                issuedUserId: row
+            };
+            console.log(this.issuedLogParams);
+            this.getIssuedLog(this.issuedLogParams, this.issuedLogPageSize);
+            this.issuedLogStatus = true;
+        },
+        xiafaqueding() {
+            console.log(this.issue_form);
+            console.log(this.$refs.issue_ref);
+
+            this.$refs.issue_ref.validate((valid) => {
+                if (valid) {
+                    this.BtnDisabled = true
+                    if (this.issue_form.endTime) {
+                        this.$http({
+                            url: "/market/Issued/issuedTemplate",
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: this.issue_form,
+                        }).then((res) => {
+                            if (res.data.result === 1) {
+                                this.$message({
+                                    message: res.data.desc,
+                                    type: 'error'
+                                });
+                            } else {
+                                this.$message({
+                                    message: '下发成功',
+                                    type: 'success'
+                                });
+                                this.getList({}, this.pageSize);
+                            }
+                            this.issue_visible = false;
+                            this.BtnDisabled = false;
+                        });
+                    } else {
+                        this.$http({
+                            url: "/market/Issued/issuedSuperviseTemplate",
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: this.issue_form,
+                        }).then((res) => {
+                            if (res.data.result === 1) {
+                                this.$message({
+                                    message: res.data.desc,
+                                    type: 'error'
+                                });
+                            } else {
+                                this.$message({
+                                    message: '下发成功',
+                                    type: 'success'
+                                });
+                                this.getList({}, this.pageSize);
+                            }
+                            this.issue_visible = false;
+                            this.BtnDisabled = false;
+                        });
+                    }
+
+
+                } else {
+                    // this.$message.error("请完善表单信息");
+                    return false;
+                }
+            });
+
+
+        },
+        getIssuedLog(v, n) {
+            this.issuedLogPageSize = n;
+            this.loading = true;
+            this.issuedLogData = [];
+            this.$http({
+                url: "/market/cIncomeExcelIssued/getIssuedLog",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: v,
+            }).then((res) => {
+                this.issuedLogData = res.data.data;
+                this.issuedLogTotal = res.data.totalRecord;
+                this.loading = false;
+            });
+        },
+        issuedLogChange(v) {
+            this.issuedLogPageSize = v;
+            this.getIssuedLog(this.issuedLogParams, this.issuedLogPageSize);
+        },
+        closeIssuedLog() {
+            this.issuedLogStatus = false;
+        },
+        //搜索数据
+        searchInfo(v) {
+            this.params = {};
+            v[0] ? this.params.templateName = v[0] : '';
+            v[1] ? this.params.templateType = v[1] : '';
+            this.getList(this.params, this.pageSize);
+        },
+        //功能栏
+        iconCli(v) {
+            if (v === 1) {
+                this.getList(this.params, this.pageSize);
+            }
+            if (v === 2) {
+                this.fullscreen = !this.fullscreen
+            }
+        },
+        // 分页
+        currchange(v) {
+            this.pageSize = v;
+            this.getList(this.params, this.pageSize);
+        },
+        getList(v, n) {
+            this.pageSize = n;
+            this.loading = true;
+            this.tableData = [];
+            let _this = this;
+            this.$http({
+                url: "/market/FileTemplate/queryPage",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                    "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                },
+                data: {
+                    ...v,
+                },
+            }).then(({ data: { totalRecord, data } }) => {
+                this.tableData = data;
+                this.tableData.map((item) => {
+                    item.createName = JSON.parse(window.sessionStorage.getItem('userInfo')).loginName
+                })
+                this.total = totalRecord;
+                this.loading = false;
+            });
+        },
+        toView(row) {
+            var _this = this;
+            _this.jumpinfop('/documentCollectionApprovalExcel', 3, '查看', row.id);
+        },
+        checkDelete(row) {
+            this.deleteTag = '确认删除吗?';
+            this.centerDialogVisible = true;
+            this.delIssuedUserId = row.id;
+        },
+        processDelete(v) {
+            this.centerDialogVisible = false;
+            var _this = this;
+            if (v === 1) {
+                this.$http({
+                    url: "/market/FileTemplate/del",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: { id: this.delIssuedUserId },
+                }).then((res) => {
+                    if (res.data.result === 1) {
+                        _this.$message({
+                            message: '删除失败',
+                            type: 'error'
+                        });
+                    } else {
+                        _this.$message({
+                            message: '删除成功',
+                            type: 'success'
+                        });
+                        _this.getList({}, _this.pageSize);
+                    }
+                });
+            }
+        },
+        toEdit(row) {
+            var _this = this;
+            if (row.status == '2') {
+                _this.jumpinfop('/documentCollectionApprovalExcel', 2, '编辑模板', row.id);
+            } else {
+                _this.jumpinfop('/documentCollectionApprovalExcel', 2, '编辑模板', row.id, 1);
+            }
+
+        },
+        toAudit(row) {
+            this.auditForm = {};
+            this.auditUserId = '';
+            this.auditUserName = '';
+            this.auditBoxList = [{
+                name: '提交审核',
+                value: '1'
+            }, {
+                name: '退回修改',
+                value: '3'
+            }, {
+                name: '结束',
+                value: '2'
+            }];
+            this.nowUserId = row.id;
+            this.authDialog = true;
+        },
+        processAuditUser() {
+            console.log(this.treeListonly);
+            this.auditUserId = this.treeListonly.leaderAuditNo;
+            this.auditUserName = this.treeListonly.leaderAuditName;
+            this.checkexa = false;
+        },
+        processAudit() {
+            //检查选项
+            if (this.auditForm.authType == null) {
+                this.$message({
+                    message: '请选择路径',
+                    type: 'error'
+                });
+                return;
+            }
+            if (this.auditForm.authType == '1') {
+                if (this.auditUserId == '') {
+                    this.$message({
+                        message: '请选择下一步处理人',
+                        type: 'error'
+                    });
+                    return;
+                }
+            }
+            if (this.auditForm.auditRemark
+                && this.auditForm.auditRemark.length > 240) {
+                this.$message({
+                    message: '意见内容长度不能大于240字',
+                    type: 'error'
+                });
+                return;
+            }
+            //提交
+            var _this = this;
+            var url = '/market/cIncomeExcelIssued/issuedUserProcessAuth';
+            this.loading = true;
+            this.$http({
+                url: url,
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    issuedUserId: this.nowUserId,
+                    type: this.auditForm.authType,
+                    nextUserId: this.auditUserId,
+                    auditRemark: this.auditForm.auditRemark
+                },
+            }).then((res) => {
+                this.loading = false;
+                if (res.data.result === 1) {
+                    _this.$message({
+                        message: res.data.desc,
+                        type: 'error'
+                    });
+                } else {
+                    this.authDialog = false;
+                    _this.$message({
+                        message: '处理成功',
+                        type: 'success'
+                    });
+                    //刷新列表
+                    this.getList({}, 1);
+                }
+            });
+
+        },
+        //跳转页面
+        jumpinfop(p, v, n, id, s) {
+            this.$router.push({
+                path: p,
+                query: {
+                    type: v,
+                    id: id,
+                    types: s,
+                }
+            });
+            this.setabList(n, p + '?type=' + v + '&id=' + id);
+        },
+        //新建一个页面
+        setabList(n, p) {
+            let params = {
+                children: "",
+                name: n,
+                rountPath: p,
+                target: "_self",
+            };
+            for (let i = 0; i < this.$store.state.tabList.length; i++) {
+                if (this.$store.state.tabList[i].name === params.name) {
+                    this.$store.state.tabList[i] = params;
+                }
+            }
+            let set = new Set([...this.$store.state.tabList, params]);
+            set.add(params);
+            this.$store.commit("setDefaultActive", params.rountPath);
+            this.$store.commit("setTabList", Array.from(set));
+        },
+        //填报人相关
+        deletes(val, index) {
+            this.treeList.splice(index, 1);
+            this.closeList = this.treeList;
+        },
+        treeCheckonly(v) {
+            this.treeList = v;
+            this.treeListonly = v;
+        },
+        treeDelete() {
+            this.treeListonly = {};
+            this.closeList = !this.closeList;
+        },
+    },
+    mounted() {
+        this.getList({}, 1);
+    },
+    created() {
+
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.titbox {
+    div {
+        float: right;
+
+        i {
+            font-size: 22px;
+            margin-left: 20px;
+            cursor: pointer;
+        }
+    }
+}
+
+.tabbox {
+    margin-top: 16px;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+
+
+.online {
+    width: 100%;
+
+    .el-select {
+        width: calc(100% - 100px);
+    }
+
+    span {
+        vertical-align: top;
+    }
+
+    .el-textarea {
+        width: calc(100% - 100px);
+    }
+
+    .tree {
+        width: calc(50% - 60px);
+        display: inline-block;
+        margin-right: 20px;
+        height: 300px;
+        overflow-y: scroll;
+
+        .el-icon-error {
+            float: right;
+            font-size: 20px;
+            margin-top: 9px;
+            cursor: pointer;
+        }
+    }
+
+    .treeUser {
+        margin: 0;
+        border: 1px solid #ddd;
+
+        p {
+            background: #f4f4f4;
+            padding: 0 20px;
+            margin-bottom: 5px;
+        }
+    }
+
+    .treeUserb {
+        width: calc(100% - 100px);
+        border: 1px solid #ddd;
+        background: #f4f4f4;
+        border-radius: 3px;
+        height: auto;
+        overflow: hidden;
+
+        p {
+            display: inline-block;
+            padding: 0 20px;
+            margin-bottom: 5px;
+        }
+    }
+}
+</style>
+

+ 131 - 0
src/pages/main/documentCollection/home.vue

@@ -0,0 +1,131 @@
+<template>
+    <div class="inner-container">
+        <div class="tabBox">
+            <el-tabs tab-position="top" v-model="activeName" @tab-click="handleClick" type="card">
+                <el-tab-pane v-for="(item, index) in routerList" :key="index" :name="item.path" :label="item.label">
+                </el-tab-pane>
+            </el-tabs>
+        </div>
+        <div class="infoBox">
+            <router-view />
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    data() {
+        return {
+            activeName: "",
+            showList: [],
+            routerList: [
+                { label: "我接收的", path: "/documentCollectionApproval", name: "incomeExcelTemplate" },
+                { label: "我发起的", path: "/documentCollectionApprovalIssuedCollect", name: "incomeExcelView" },
+                { label: "模板管理", path: "/documentCollectionApprovalIssuedMoud", name: "incomeExcelIssued" },
+                
+                // { label: "收入附件收集", path: "/incomeExcelAppendixs", name: "incomeExcelAppendix" }
+            ],
+        };
+    },
+    computed: {
+        menuList: function () {
+            let arr = [];
+            this.routerList.map((item) => {
+                this.showList.map((row) => {
+                    if (item.path == row) {
+                        arr.push(item);
+                    }
+                });
+            });
+            return arr;
+        },
+    },
+    methods: {
+        handleClick(val) {
+            if (this.$route.path != this.activeName) {
+                console.log(this.activeName);
+                this.$router.push(this.activeName);
+            }
+        },
+    },
+    mounted() {
+        this.activeName = this.$route.path;
+    },
+    created() {
+        JSON.parse(sessionStorage.childrenMenus).map((item) => {
+            this.showList.push(item.jspUrl);
+        });
+    },
+    watch: {
+        $route(to, from) {
+            this.activeName = this.$route.path;
+        },
+    },
+};
+</script>
+<style  lang="scss" scoped>
+.el-tabs__content {
+    display: none;
+}
+
+.inner-container {
+    background: #ffffff;
+    padding-top: 20px;
+    margin: 15px;
+    overflow: auto;
+    width: calc(100% - 30px);
+    max-width: calc(100% - 30px);
+    height: 100%;
+    overflow-x: hidden;
+
+    &-viewport {
+        width: 100%;
+        overflow: auto;
+    }
+}
+
+.tabBox {
+    border-bottom: 1px solid #e1e1e1;
+    height: 60px;
+}
+
+.infoBox {
+    background: #f4f4f4 !important;
+    height: 100%;
+    width: calc(100%)
+}
+
+::v-deep .el-tabs__item {
+    width: 166px;
+    text-align: center;
+    border-left: 10px solid #ffffff;
+    border-right: 10px solid #ffffff;
+
+}
+
+::v-deep .el-tabs__header {
+    margin: 0px;
+    background: #d8eaf6;
+    color: black;
+    margin-left: 20px;
+    display: inline-block;
+    border: 0px
+}
+
+::v-deep .is-active {
+    background: #0583cd;
+    color: white;
+}
+
+::v-deep .el-tabs__item:hover {
+    color: black;
+}
+
+::v-deep .is-active:hover {
+    background: #0583cd;
+    color: white;
+}
+
+::v-deep .el-tabs--card>.el-tabs__header .el-tabs__nav {
+    border: 0px
+}
+</style>

+ 296 - 0
src/pages/main/documentCollection/newTree.vue

@@ -0,0 +1,296 @@
+<template>
+  <div class="flex-box">
+    <div class="treebox">
+      <!-- <div class="tree-text">组织机构</div> -->
+      <el-input placeholder="可按名字匹配所在部门" v-model="filterText">
+      </el-input>
+      <el-tree ref="tree" @node-click="handleNodeClick" :data="treeList" node-key="o" :indent="20"
+        :default-checked-keys="defaultListc" :default-expanded-keys="defaultList">
+        <span class="span-ellipsis" slot-scope="{ node, data }">
+          <span :title="node.label"><i v-if="data.children.length === 0" class="el-icon-caret-right icon-right"></i>
+            {{ node.label }}</span>
+        </span>
+      </el-tree>
+    </div>
+    <div class="flex-transfer">
+      <el-transfer v-model="value" :titles="['待选人员', '已选人员']" @change="handleCheckChange"
+        :data="transferList"></el-transfer>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: ["defaultList", "type", "oneORmore","treeListType"],
+  data() {
+    return {
+      filterTexts: "",
+      filterText: "",
+      transferList: [],
+      treeList: [],
+      treeLists: [],
+      rightList: [],
+      value: [],
+      newArr: [],
+      opt: [],
+      treeId: 1,
+      defaultProps: {
+        children: "children",
+        label: "label",
+      },
+      defaultListc: [],
+    };
+  },
+  methods: {
+    handleNodeClick(v) {
+      for (let i = v.children.length - 1; i >= 0; i--) {
+        if (v.children[i].haveUserFlag == "N") {
+          v.children.splice(i, 1);
+        }
+      }
+      // v.children.map((item,index) =>{
+
+      //   if(item.haveUserFlag == "N"){
+      //     v.children.splice(index, 1);
+      //   }
+      //   console.log(v.children);
+      // })
+      let list = {
+        groupId: v.o,
+      };
+      if (this.filterTexts) {
+        list.loginNameStr = this.filterTexts;
+      }
+      if (v.o !== this.treeId) {
+        if (this.value.length !== 0) {
+          let a = [];
+          for (let i = 0; i <= this.transferList.length - 1; i++) {
+            for (let y = 0; y <= this.value.length; y++) {
+              if (this.transferList[i].key === this.value[y]) {
+                console.log(this.transferList[i].key);
+                console.log(this.value[y]);
+                a.push(this.transferList[i]);
+
+              }
+            }
+          }
+          console.log(a);
+          this.transferList = a;
+          // console.log(this.transferList);
+        } else {
+          this.transferList = [];
+        }
+      }
+      let s = false;
+      if (v.children && v.children.length == 0) {
+        s = true;
+      }
+      if (v.type) {
+        return;
+      }
+      if (
+        v.children &&
+        v.children.length > 0 &&
+        v.children[v.children.length - 1].type == 1
+      ) {
+        return;
+      }
+      if (v.o !== this.treeId) {
+        this.$http({
+          url: "/sysmgr/sysuserinfo/queryListByName",
+          method: "post",
+          headers: {
+            "Content-Type": "application/json",
+          },
+          data: list
+        }).then((res) => {
+          v.children = v.children ? v.children : [];
+          this.treeId = v.o;
+          this.treeLists = res.data;
+          res.data.map((item, index) => {
+            this.transferList.push({
+              label: item.loginNameStr,
+              key: item.loginNoStr,
+              groupName: item.groupName,
+            });
+          });
+          const dalaoyang = (arr, key) => {
+            let map = new Map()
+            return arr.filter(item => !map.has(item[key]) && map.set(item[key], 1))
+          }
+          this.transferList = dalaoyang(this.transferList, "key")
+          console.log(this.transferList);
+        });
+      } else {
+        console.log(this.transferList);
+      }
+    },
+    getTree(v, e) {
+      let list = {
+        parentorgId: v,
+        type:this.treeListType,//* 1:全部传递 2:值传递第一层 3:值传递第一层之后数据
+      };
+      if (e) {
+        list.name = e;
+      }
+      this.loading = true;
+      this.$http({
+        // url: "/sysmgr/csysdept/queryAllList",
+        url: "/sysmgr/csysdept/queryAllListByParentorgId",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: list,
+      }).then((res) => {
+        this.loading = false;
+        this.treeList = res.data;
+        let list = res.data[0].children.filter((item, i, array) => {
+          return item.haveUserFlag === "Y";
+        });
+        this.treeList[0].children = list;
+      });
+    },
+    handleCheckChange(v) {
+      // console.log(this.value);
+      if (this.oneORmore == '2') {
+        if (this.value.length > 1) {
+
+          this.$message({
+            message: '只能选择一人',
+            type: 'error'
+          });
+          this.value = [this.value[0]]
+          let opt = [];
+          this.transferList.map((item) => {
+            this.value.map((items) => {
+              if (item.key === items) {
+                opt.push(item);
+              }
+            });
+          });
+          // console.log(opt);
+          this.$emit("treeCheck", opt);
+        } else {
+          let opt = [];
+          this.transferList.map((item) => {
+            this.value.map((items) => {
+              if (item.key === items) {
+                opt.push(item);
+              }
+            });
+          });
+          // console.log(opt);
+          this.$emit("treeCheck", opt);
+        }
+      } else {
+        let opt = [];
+        this.transferList.map((item) => {
+          this.value.map((items) => {
+            if (item.key === items) {
+              opt.push(item);
+            }
+          });
+        });
+        // console.log(opt);
+        this.$emit("treeCheck", opt);
+      }
+
+
+    },
+  },
+  created() {
+    this.getTree('00440063000000000000');
+    this.defaultListc = this.defaultList;
+  },
+  watch: {
+    filterText(val) {
+      // this.$refs.tree.filter(val);
+      console.log(val);
+      this.filterTexts = val;
+      this.getTree("00440063000000000000", this.filterTexts);
+    },
+  },
+};
+</script>
+
+
+<style scoped lang="scss">
+::v-deep .el-checkbox.el-transfer-panel__item {
+  display: block !important;
+}
+
+// ::v-deep .el-transfer-panel__list.is-filterable {
+//   height: calc(100%);
+// }
+
+// ::v-deep .el-checkbox-group .el-transfer-panel__list {
+//   height: 388px;
+// }
+
+.el-transfer-panel {
+  height: 500px;
+}
+
+.el-transfer-panel__list.is-filterable {
+  height: 400px;
+}
+
+::v-deep .el-transfer-panel__body {
+  height: 100%;
+}
+::v-deep .el-transfer-panel__list{
+  height: 100%;
+}
+
+.tree-text {
+  font-size: 20px;
+  color: black;
+  padding: 15px;
+  font-weight: 600;
+}
+
+.flex-box {
+  display: flex;
+  width: 100%;
+  justify-content: center;
+  height: 80%;
+}
+
+::v-deep .el-icon-caret-right {
+  font-size: 12px;
+  background-size: cover;
+  margin-left: px;
+}
+
+.icon-right {
+  margin-left: 5px;
+  color: #fff;
+}
+
+.treebox {
+  width: 30%;
+  border: 1px solid #ddd;
+  height: 100%;
+  background-color: #fff;
+  overflow: scroll;
+  overflow-x: hidden;
+  max-height: 390px;
+  height: 390px;
+}
+
+.flex-transfer {
+  width: 50%;
+  height: 390px;
+  margin-left: 30px;
+}
+
+::v-deep .el-transfer-panel {
+  width: 35%;
+  height: 100%;
+}
+
+::v-deep .el-transfer {
+  height: 100%;
+}
+</style>

+ 95 - 0
src/pages/main/documentCollection/search.vue

@@ -0,0 +1,95 @@
+<template>
+	<div class="search-box">
+		<div class="box-l">
+			<div v-for="(item, index) in searchList" :key="index" class="box-info" :style="'width:' + item.width">
+				<!-- <span>{{ item.tit }}</span> -->
+				<el-form>
+					<el-form-item :label="item.tit"   label-width="90px">
+						<el-input v-model="item.value" v-if="item.type === 'input'" size="medium"
+							:placeholder="item.tit">
+						</el-input>
+						<el-select :popper-append-to-body="false" clearable v-if="item.type === 'sel'"
+							v-model="item.value" :placeholder="item.tit" size="medium">
+							<el-option v-for="items in item.options" :key="items.dataCode" :label="items.dataName"
+								:value="items.dataCode">
+							</el-option>
+						</el-select>
+						<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'date'"
+							size="medium" type="date" :placeholder="item.tit">
+						</el-date-picker>
+						<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'datetime'"
+							size="medium" type="datetime" :placeholder="item.tit">
+						</el-date-picker>
+						<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'month'"
+							size="medium" type="month" :placeholder="item.tit">
+						</el-date-picker>
+						<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'year'"
+							size="medium" type="year" :placeholder="item.tit">
+						</el-date-picker>
+						<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'daterange'"
+							size="medium" type="daterange" :placeholder="item.tit" format="yyyy-MM-dd HH:mm:ss"
+							value-format="yyyy-MM-dd HH:mm:ss" :default-time="defaultTime" start-placeholder="开始时间"
+							end-placeholder="结束时间" />
+					</el-form-item>
+				</el-form>
+			</div>
+		</div>
+		<el-button class="btn-check" size="medium" type="primary" plain icon="el-icon-search" @click="searchInfo">搜索
+		</el-button>
+	</div>
+</template>
+<script>
+export default {
+	props: ["searchList"],
+	data() {
+		return {
+			infoList: [],
+			defaultTime: ['00:00:00', '23:59:59'],
+		};
+	},
+	methods: {
+		searchInfo() {
+			this.infoList = [];
+			for (let i = 0; i < this.searchList.length; i++) {
+				if (this.searchList[i].type === "date" && this.searchList[i].value) {
+					this.infoList.push(Date.parse(this.searchList[i].value));
+				} else {
+					this.infoList.push(this.searchList[i].value);
+				}
+			}
+			this.$emit("searchInfo", this.infoList);
+		},
+	},
+	mounted() { },
+	created() { },
+};
+</script>
+<style scoped lang="scss">
+.search-box {
+	display: flex;
+	justify-content: space-between;
+
+	.box-l {
+		display: flex;
+		justify-content: space-between;
+
+		.box-info {
+			display: inline-block;
+			// min-width: 100px;
+		}
+	}
+
+	.btn-check {
+		height: 38px;
+	}
+
+	.el-date-editor.el-input,
+	.el-date-editor.el-input__inner {
+		width: 100%;
+	}
+
+	.el-select-dropdown {
+		z-index: 100000 !important;
+	}
+}
+</style>

+ 2 - 0
src/pages/main/homeMarket/tvAssess/initiateAssess.vue

@@ -20,6 +20,7 @@
                     <div class="tabbox" v-show="tableType" style="padding: 0 20px;">
                         <el-table
                             class="com-table"
+                            :key="Date.now()"
                             ref="multipleTable"
                             :data="infolist.tableData"
                             tooltip-effect="dark"
@@ -105,6 +106,7 @@
                     <div class="tabbox" v-show="!tableType" style="padding: 0 20px;">
                         <el-table
                             class="com-table"
+                            :key="Date.now()"
                             ref="multipleTable"
                             :data="vtableData"
                             tooltip-effect="dark"

+ 1 - 0
src/pages/main/homeMarket/tvAssess/tvAssessIndex.vue

@@ -268,6 +268,7 @@
                         </div>
                         <el-table
                             class="com-table"
+                            :key="Date.now()"
                             ref="multipleTable"
                             :data="khDetVipTable"
                             tooltip-effect="dark"

+ 0 - 65
src/pages/main/leader/demand/demandHome.vue

@@ -767,71 +767,6 @@ export default {
   },
   created() {
     this.getUserIndex();
-    // let A = [
-    //   {
-    //     id: 1,
-    //     b: "456",
-    //   },
-    //   {
-    //     id: 2,
-    //     b: "456",
-    //   },
-    // ];
-    // let B = [
-    //   {
-    //     a: 1,
-    //     b: "4567",
-    //   },
-    //   {
-    //     a: 1,
-    //     b: "4568",
-    //   },
-    //   {
-    //     a: 2,
-    //     b: "4567",
-    //   },
-    // ];
-    // A.map((item) => {
-    //   item.c = [];
-    //   let index = B.findIndex((items) => {
-    //     if (items.a == item.id) {
-    //       item.c.push(items);
-    //     }
-    //   });
-    //   console.log(index);
-    //  B.map((items,index) =>{
-    //   if(item.id == items.a){
-    //     item.c.push(items)
-    //   }
-
-    //  })
-    // });
-    // console.log(A);
-    // function getUserDescribe(name) {
-    //   const describeForNameMap = [
-    //     [
-    //       (name) => name.length > 3, // 判断条件
-    //       () => console.log("名字太长"), // 执行函数
-    //     ],
-    //     [(name) => name.length < 2, () => console.log("名字太短")],
-    //     [(name) => name[0] === "陈", () => console.log("小陈")],
-    //     [(name) => name === "大鹏", () => console.log("管理员")],
-    //     [
-    //       (name) => name[0] === "李" && name !== "李鹏",
-    //       () => console.log("小李"),
-    //     ],
-    //   ];
-    //   // 获取符合条件的子数组
-    //   const getDescribe = describeForNameMap.find((item) => item[0](name));
-    //   // 子数组存在则运行子数组中的第二个元素(执行函数)
-    //   getDescribe ? getDescribe[1]() : console.log("此人比较神秘!");
-    // }
-    // getUserDescribe('张元芳微软')
-    // const func = (name, age = "fatfish") => {
-    //   console.log(name);
-    // };
-    // func("123123123");
-
     //oa跳转回来显示
     let status = JSON.stringify(this.$route.query) == "{}";
     if (status) {

+ 1 - 1
src/pages/main/leader/leaderhomeTask.vue

@@ -105,7 +105,7 @@
           <!-- <el-pagination class="pageBox"  @current-change="currchangeDone"
             layout="total,prev, pager, next" background :total="totalDone" page-size="10">
           </el-pagination> -->
-          <el-pagination @current-change="currchangeDyiban" :current-page="yibanpage" :page-size="yibansize"
+          <el-pagination @current-change="currchangeyiban" :current-page="yibanpage" :page-size="yibansize"
             layout="total,prev, pager, next" :total="yibantotal" v-if="tabbox2">
           </el-pagination>
         </div>

+ 4 - 2
src/pages/main/leader/risk/riskManagement.vue

@@ -208,6 +208,7 @@ import {
     getDoneBase,
     getInitiateBase,
 } from "../../../../http/api.js";//../../../http/api.js
+import getConfig from '../../../../config/dev.js'
 import { log } from "console";
 export default {
     components: {
@@ -245,8 +246,9 @@ export default {
             },
             requestForm: {
                 // fresourceId: "0d94de8a-0281-11ed-a302-4ae7da54db39", // 本地环境
-                fresourceId: "canvas", // 生产环境
+                // fresourceId: "canvas", // 生产环境
                 // fresourceId: "bf79721c-33f3-11ed-ba0b-00505687dcd3", //测试环境
+                fresourceId: getConfig().riskMaterialsfresourceId, 
                 processDefinitionKey: "fxfk_process",
             },
             rule: {
@@ -906,7 +908,7 @@ export default {
             // });
         },
         setForm(e) {
-            this.request_form.title = this.fromList.needName;
+            this.request_form.title = '[市场工作台]-风险点防控-'+this.fromList.needName;
             this.fromList.transactorList = []
             this.treeListonly.map((item) => {
                 this.fromList.transactorList.push(item.key)

+ 4 - 2
src/pages/main/leader/risk/riskMaterials.vue

@@ -119,6 +119,7 @@ import {
     getDoneBase,
     getInitiateBase,
 } from "../../../../http/api.js";//../../../http/api.js
+import getConfig from '../../../../config/dev.js'
 export default {
     components: {
         Table,
@@ -181,8 +182,9 @@ export default {
             },
             requestForm: {
                 // fresourceId: "c9104902-6575-11ed-8e1e-d6cd97160e00", // 本地环境
-                fresourceId: "canvas", // 生产环境
+                // fresourceId: "canvas", // 生产环境
                 // fresourceId: "3124a2d4-7209-11ed-8d6f-00505687dcd3", //测试91环境
+                fresourceId: getConfig().riskMaterialsfresourceId, 
                 processDefinitionKey: "fxfk_process",
             },
             dialogStatus: false, //dialog显示
@@ -999,7 +1001,7 @@ export default {
         },
         setForm(e) {
             // console.log(this.$refs.form)
-            this.request_form.title = this.fromList.needName;
+            this.request_form.title = '[市场工作台]-风险点防控-'+this.fromList.needName;
             // this.request_form.title = this.$refs.form.needName;
             // this.$refs.form.taskId = e;
             this.$http({

+ 232 - 0
src/pages/main/luckySheet/index.vue

@@ -0,0 +1,232 @@
+<template>
+  <div class="flex-count">
+    <div class="flex-count-header">
+      <span>在线文档-文件管理</span>
+      <el-button type="primary" class="header-button" @click="clickSave"
+        >新建</el-button
+      >
+    </div>
+
+    <Table @clickDemand="clickDemand" :list="lable" ref="TableList"> </Table>
+    <!-- <div v-for="(item, index) in optionsExcel" :key="index">
+      <div @click="clickSee(item)">{{ item.option.title }}</div>
+    </div>
+    <el-button @click="newExcle">新建</el-button>
+    <div
+      id="luckysheet"
+      v-show="excelStatus"
+      style="
+        margin: 0px;
+        padding: 0px;
+        position: absolute;
+        width: 100%;
+        height: 100%;
+        left: 0px;
+        top: 0px;
+      "
+    ></div> -->
+  </div>
+</template>
+
+<script>
+import axios from "axios";
+import luckyexcel from "luckyexcel";
+import Table from "../../../components/el-form.vue";
+export default {
+  components: {
+    Table,
+  },
+  data() {
+    return {
+      excelStatus: false,
+      optionsExcel: [],
+      ids: "",
+      lable: {
+        name: "first",
+        height: "650",
+        titledata: [
+          {
+            label: "名称",
+            prop: "needName",
+            width: 300,
+            color: "#0682CD",
+          },
+          {
+            label: "创建时间",
+            prop: "needType",
+            width: 200,
+          },
+          {
+            label: "创建科室",
+            prop: "applyDept",
+            width: 200,
+          },
+          {
+            label: "创建人",
+            prop: "applyDepartment",
+            width: 200,
+          },
+          {
+            label: "权限状态",
+            prop: "proposer",
+            width: 200,
+          },
+        ], //表格头
+        data: [], //内容数据
+        loading: true,
+        pageData: {
+          total: 100, // 总条数
+          pageSize: 10, // 每页数量
+          pageNum: 1, // 页码
+        },
+        isSelection: true, // 表格有多选时设置
+        isOperation: false, // 表格有操作列时设置
+        isIndex: false, // 列表序号
+        operation: {
+          // 表格有操作列时设置
+          label: "操作", // 列名
+          width: "50", // 根据实际情况给宽度
+          data: [
+            {
+              label: "操作", // 操作名称
+              type: "", //按钮类型
+              handleRow: (e, r, o) => {
+                // this.disabled = true;
+                // this.dialogTitle = "查看";
+                // if (r.taskName === "起草") {
+                //   this.disabled = false;
+                // } else {
+                //   this.disabled = true;
+                // }
+                // this.fromList = r;
+                // this.clickForm(r);
+                // this.getFromQuery(r);
+                // this.dialogStatus = true;
+                // setTimeout(() => {
+                //   this.getBtnStatus(r);
+                // }, 500);
+                // this.formWorkId = r.id;
+                // this.formId = r.taskId;
+                // this.taskName = r.taskName;
+                // this.getQuery()
+              }, // 自定义事件
+            },
+          ],
+        },
+      },
+    };
+  },
+  created() {
+    this.getAllExcel();
+  },
+  mounted() {},
+  methods: {
+    clickSave() {
+      this.$http({
+        url: "/market/cOnlineExcel/addExcel",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {
+          folderId: '',
+        },
+      }).then((res) => {
+        // if (res.data.result === 1) {
+        //   _this.$message({
+        //     message: res.data.desc,
+        //     type: "error",
+        //   });
+        // } else {
+        //   _this.$message({
+        //     message: "成功",
+        //     type: "success",
+        //   });
+        //   var id = res.data.desc;
+        //   _this.addNewStatus = false;
+        //   //放入id,切换到excel模式
+        //   document.getElementById("excelId").setAttribute("value", id);
+        //   _this.showExcel = true;
+        // }
+      });
+    },
+    clickSee(e) {
+      this.$http({
+        url: "/api/sheet/workbook/" + e.id,
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: {},
+      }).then((res) => {
+        this.ids = e.id;
+        // this.optionsExcel = res.data;
+        let options = {
+          container: "luckysheet",
+          title: "123123",
+          allowUpdate: true,
+          lang: "zh",
+          loadUrl:
+            window.location.protocol +
+            "//43.138.50.94:7777" +
+            "/sheet/worksheet/" +
+            this.ids,
+          loadSheetUrl:
+            window.location.protocol +
+            "//43.138.50.94:7777" +
+            "/sheet/loadsheet/" +
+            this.ids,
+          updateUrl:
+            "ws://" +
+            "//43.138.50.94:7777" +
+            "/ws/" +
+            JSON.parse(window.sessionStorage.userInfo).loginName +
+            "/" +
+            this.ids,
+        };
+        window.luckysheet.create(options);
+        this.excelStatus = true;
+      });
+    },
+    //获取所有
+    getAllExcel() {
+      let data = {};
+      axios
+        .post("http://43.138.50.94:7777/sheet/allSheet", data)
+        .then((res) => {
+          console.log(res);
+          this.optionsExcel = res.data;
+        });
+    },
+    newExcle() {
+      let data = {};
+      axios.post("http://43.138.50.94:7777/sheet/create", data).then((res) => {
+        console.log(res);
+        let list = {
+          name: res.data.name,
+          id: res.data.id,
+        };
+        this.optionsExcel.push(list);
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.flex-count {
+  background-color: #fff;
+  .flex-count-header {
+    display: flex;
+    flex-direction: column;
+    span {
+      font-size: 22px;
+      margin: 20px 0 0 30px;
+    }
+    .header-button {
+      width: 10%;
+      margin: 20px 0 20px 30px;
+    }
+  }
+}
+</style>

+ 94 - 69
src/pages/main/onlineExcel/index.vue

@@ -2,7 +2,7 @@
     <fullscreen :fullscreen.sync="fullscreen" class="container">
         <div class="container">
             <div class="main-box container-box">
-                <input type="hidden" id="excelId"/>
+                <input type="hidden" id="excelId" />
                 <div class="inner-left" style="overflow: hidden">
                     <!--                <div class="button-list">-->
                     <!--                    <el-button type="primary" @click="showExcel = true" plain>excel</el-button>-->
@@ -10,27 +10,26 @@
                     <!--                </div>-->
                     <div style="margin: 10px 0">
                         <el-input placeholder="请输入内容" v-model="filterText" class="input-with-select" clearable
-                                  @change="() => {if (!filterText) {searchMenu();}}">
+                            @change="() => { if (!filterText) { searchMenu(); } }">
                             <el-button slot="append" @click="searchMenu" icon="el-icon-search"></el-button>
                         </el-input>
                     </div>
                     <div v-loading="loading" style="height: calc(100% - 100px);overflow-y: scroll;overflow-x: scroll">
                         <el-tree ref="tree" class="tree-line" :expand-on-click-node="false" :auto-expand-parent="true"
-                                 :default-expand-all="true" :default-checked-keys="checkedMenu" :data="menuList"
-                                 @check="checkChange"
-                                 @node-click="nodeClick" :filter-node-method="filterNode" node-key="functionCode"
-                                 style="width: 300px">
-                        <span class="custom-tree-node" slot-scope="{ node }">
-                            <span>
-                                <span v-if="node.data.type == 4"
-                                      style="color: #009cff" class="iconfont icon-wenjianjia"></span>
-                                <span v-else style="color: #fdb441" class="iconfont icon-wenjian"></span>
-                                <span
-                                    :style="node.data.hasOwnProperty('parent')? 'font-size:14px;padding-left:5px':'font-size:12px;padding-left:5px'">{{
-                                        node.data.functionName
-                                    }}</span>
+                            :default-expand-all="true" :default-checked-keys="checkedMenu" :data="menuList"
+                            @check="checkChange" @node-click="nodeClick" :filter-node-method="filterNode"
+                            node-key="functionCode" style="width: 300px">
+                            <span class="custom-tree-node" slot-scope="{ node }">
+                                <span>
+                                    <span v-if="node.data.type == 4" style="color: #009cff"
+                                        class="iconfont icon-wenjianjia"></span>
+                                    <span v-else style="color: #fdb441" class="iconfont icon-wenjian"></span>
+                                    <span
+                                        :style="node.data.hasOwnProperty('parent') ? 'font-size:14px;padding-left:5px' : 'font-size:12px;padding-left:5px'">{{
+                                            node.data.functionName
+                                        }}</span>
+                                </span>
                             </span>
-                        </span>
                         </el-tree>
                     </div>
                     <div class="tree-action"></div>
@@ -40,19 +39,22 @@
                         <toolList @iconCli='iconCli' :tooltit='tooltit' style="margin: 10px"></toolList>
                         <div style="margin-top: 20px;float: left;" class="bigbtns">
                             <el-button style="margin-left: 20px;" class="btn-check" size="medium" type="primary"
-                                       @click="addNewStatus = true">新建
+                                @click="addNewStatus = true">新建
                             </el-button>
+                            <!-- <el-button style="margin-left: 20px;" class="btn-check" size="medium" type="primary"
+                                @click="shareStatus = true">新建2222
+                            </el-button> -->
                         </div>
                         <div style="margin-top: 20px;float: right;margin-right: 20px" class="bigbtns"
-                             v-if="selectionSize != 0">
+                            v-if="selectionSize != 0">
                             <el-button style="margin-left: 5px;" class="btn-check" size="small" type="primary"
-                                       @click="delExcel()">删除
+                                @click="delExcel()">删除
                             </el-button>
                             <el-button style="margin-left: 5px;" class="btn-check" size="small" type="primary"
-                                       @click="cancelSelection()">取消
+                                @click="cancelSelection()">取消
                             </el-button>
                             <el-button style="margin-left: 5px;" class="btn-check" size="small" type="primary"
-                                       @click="moveStatus = true">移动到
+                                @click="moveStatus = true">移动到
                             </el-button>
                         </div>
                     </div>
@@ -61,8 +63,8 @@
                             <span v-if="selectionSize != 0">已选{{ selectionSize }}项</span>
                         </div>
                         <el-table height="calc(100% - 60px)" class="com-table" ref="multipleTable" :data="tableData"
-                                  tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading"
-                                  @selection-change="handleSelectionChange">
+                            tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading"
+                            @selection-change="handleSelectionChange">
                             <el-table-column type="selection" width="45"></el-table-column>
                             <el-table-column prop="fileName" label="名称">
                             </el-table-column>
@@ -81,28 +83,26 @@
                             <el-table-column label="操作" width="180px" align="center" fixed="right">
                                 <template slot-scope="scope">
                                     <el-button size="mini" type="primary" @click="moveToEdit(scope.row)"
-                                               :disabled="scope.row.shareEditStatus==1">编辑
+                                        :disabled="scope.row.shareEditStatus == 1">编辑
                                     </el-button>
                                 </template>
                             </el-table-column>
                         </el-table>
-                        <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next"
-                                       background
-                                       :total="total">
+                        <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                            :total="total">
                         </el-pagination>
                     </div>
 
                     <div class="container" id="container" v-else>
                         <fullscreen :fullscreen.sync="excelFullScreen" class="container">
                             <iframe id="excelIframe" height="100%" width="100%"
-                                    src="/marketfront/static/views/onlineShareExcel.html"
-                                    frameborder="0"></iframe>
+                                src="/marketfront/static/views/onlineShareExcel.html" frameborder="0"></iframe>
                         </fullscreen>
                     </div>
                 </div>
             </div>
             <el-dialog :title="'新建'" :visible.sync="addNewStatus" width="300px" :destroy-on-close="true"
-                       :modal-append-to-body="false" :close-on-click-modal="false">
+                :modal-append-to-body="false" :close-on-click-modal="false">
                 <div>
                     <!--                <el-button type="primary" @click="addExcel()" plain class="iconfont icon-wenjian">在线文档</el-button>-->
                     <!--                <el-button type="primary" @click="addFolderStatus = true" plain class="iconfont icon-wenjianjia">文件夹</el-button>-->
@@ -112,7 +112,7 @@
                             <p style="margin-left: 20px;margin-top: 10px">在线文档</p>
                         </div>
                         <div style="width: 85px;display: inline-block;margin-left: 70px;cursor: pointer"
-                             @click="addFolderStatus = true">
+                            @click="addFolderStatus = true">
                             <span class="iconfont icon-wenjianjia" style="font-size: 80px;color: dodgerblue"></span>
                             <p style="margin-left: 20px;margin-top: 10px">文件夹</p>
                         </div>
@@ -120,14 +120,13 @@
                 </div>
             </el-dialog>
             <el-dialog :title="'新增文件夹'" :visible.sync="addFolderStatus" width="50%" :destroy-on-close="true"
-                       :modal-append-to-body="false" :close-on-click-modal="false">
+                :modal-append-to-body="false" :close-on-click-modal="false">
                 <div v-loading="loading">
                     <el-form :model="infolist" ref="infolist">
                         <div class="online">
                             <el-form-item prop="name">
                                 <span>文件夹名称</span>
-                                <el-input v-model="infolist.name" placeholder="文件夹名称"
-                                          :disabled="disableStatus"></el-input>
+                                <el-input v-model="infolist.name" placeholder="文件夹名称" :disabled="disableStatus"></el-input>
                             </el-form-item>
                         </div>
                     </el-form>
@@ -138,49 +137,59 @@
                 </div>
             </el-dialog>
             <el-dialog :title="'分享选项'" :visible.sync="shareStatus" width="550px" :destroy-on-close="true"
-                       :modal-append-to-body="false" :close-on-click-modal="false">
+                :modal-append-to-body="false" :close-on-click-modal="false">
                 <div style="margin-left: 30px;padding-bottom: 20px" v-loading='shareLoading'>
                     <el-button type="primary" @click="processExcelShare(1)" plain>仅我可编辑</el-button>
                     <el-button type="primary" @click="openOADialog(2)" plain>部门内所有人可编辑</el-button>
                     <el-button type="primary" @click="checkexa = true" plain>指定人可编辑</el-button>
                 </div>
             </el-dialog>
-            <el-dialog title="选择填报人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
-                       :modal-append-to-body="false" :close-on-click-modal="false" v-loading="shareLoading">
-                <div>
-                    <el-form :model="exaList" ref="addInfoList">
-                        <el-form-item prop="processUserId" class="info-line online">
-                            <span style="width: 80px;margin-right: 20px">审批人员</span>
-                            <deptTreeUserNew class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
-                                             :type="depttype" :closeList="closeList"></deptTreeUserNew>
-                            <div class="tree treeUser">
+            <div class="flex-dialog">
+                <el-dialog title="选择填报人" :visible.sync="checkexa" width="86%" style="height:100%  ;"
+                    :destroy-on-close="true" :modal-append-to-body="false" :close-on-click-modal="false"
+                    v-loading="shareLoading">
+                    <div class="flex-dialog">
+                        <el-row style="height:80%  ;">
+                            <el-col :span="24" style="height:100%  ;">
+                                <deptTreeUserNew class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
+                                    :type="depttype" :closeList="closeList"></deptTreeUserNew>
+                            </el-col>
+
+                        </el-row>
+                        <!-- <el-form :model="exaList" ref="addInfoList"> -->
+                        <!-- <el-form-item prop="processUserId" class="info-line online"> -->
+                        <!-- <span style="width: 80px;margin-right: 20px">审批人员</span> -->
+
+                        <!-- <div class="tree treeUser">
                                 <p v-for="(item,index) in treeList" :key="index">{{ item.receiveName }}
                                     <i @click="deletes(item,index)" class="el-icon-error"></i>
                                 </p>
-                            </div>
-                        </el-form-item>
-                    </el-form>
+                            </div> -->
+                        <!-- </el-form-item> -->
+                        <!-- </el-form> -->
 
-                    <div slot="footer" style="text-align: right;padding-bottom: 20px">
-                        <el-button type="primary" @click="checkProcessUser(3)">确 定</el-button>
-                        <el-button @click="checkexa = false">取 消</el-button>
+                        <div slot="footer" style="text-align: right;padding-bottom: 20px">
+                            <el-button type="primary" @click="checkProcessUser(3)">确 定</el-button>
+                            <el-button @click="checkexa = false">取 消</el-button>
+                        </div>
                     </div>
-                </div>
-            </el-dialog>
+                </el-dialog>
+            </div>
+
             <el-dialog title="移动到" :visible.sync="moveStatus" width="500px" :destroy-on-close="true"
-                       :modal-append-to-body="false" :close-on-click-modal="false">
+                :modal-append-to-body="false" :close-on-click-modal="false">
                 <div>
                     <el-tree ref="tree" class="tree-line" :expand-on-click-node="false" :auto-expand-parent="true"
-                             :default-expand-all="true" :default-checked-keys="checkedMenu" :data="moveMenuList"
-                             @check="checkChange"
-                             @node-click="folderNodeClick" node-key="functionCode" @expand-on-click-node="false">
+                        :default-expand-all="true" :default-checked-keys="checkedMenu" :data="moveMenuList"
+                        @check="checkChange" @node-click="folderNodeClick" node-key="functionCode"
+                        @expand-on-click-node="false">
                         <span class="custom-tree-node" slot-scope="{ node }">
                             <span>
-                                <span v-if="node.data.type == 4"
-                                      style="color: #009cff" class="iconfont icon-wenjianjia"></span>
+                                <span v-if="node.data.type == 4" style="color: #009cff"
+                                    class="iconfont icon-wenjianjia"></span>
                                 <span v-else style="color: #fdb441" class="iconfont icon-wenjian"></span>
                                 <span
-                                    :style="node.data.hasOwnProperty('parent')? 'font-size:14px;padding-left:5px':'font-size:12px;padding-left:5px'">{{
+                                    :style="node.data.hasOwnProperty('parent') ? 'font-size:14px;padding-left:5px' : 'font-size:12px;padding-left:5px'">{{
                                         node.data.functionName
                                     }}</span>
                             </span>
@@ -194,10 +203,10 @@
                     </div>
                 </div>
             </el-dialog>
-            <myMessage :messTit='messTit' @closeMessage="processDel" :centerDialogVisible="delVisible"
-                       v-if="delVisible"></myMessage>
-            <myMessageRadio :messTit='oaTitle' @closeMessage="processOa" :centerDialogVisible="oaVisible"
-                            v-if="oaVisible" yesBtnName="是" noBtnName="否" ok-btn-name="提交"></myMessageRadio>
+            <myMessage :messTit='messTit' @closeMessage="processDel" :centerDialogVisible="delVisible" v-if="delVisible">
+            </myMessage>
+            <myMessageRadio :messTit='oaTitle' @closeMessage="processOa" :centerDialogVisible="oaVisible" v-if="oaVisible"
+                yesBtnName="是" noBtnName="否" ok-btn-name="提交"></myMessageRadio>
         </div>
     </fullscreen>
 </template>
@@ -208,7 +217,7 @@ import toolList from "../../../components/toolList";
 import myMessage from "../../../components/myMessage.vue";
 import myMessageNew from "../../../components/myMessageNew.vue";
 import myMessageRadio from "../../../components/myMessageRadio.vue";
-import deptTreeUserNew from "../../../components/deptTreeUserNew.vue"
+import deptTreeUserNew from "../../../components/newTree.vue"
 
 export default {
     components: {
@@ -384,7 +393,7 @@ export default {
             _this.shareLoading = true;
             if (shareType == 3) {
                 this.treeList.map((o) => {
-                    deptList.push(o.receiveNo);
+                    deptList.push(o.key);
                 });
             }
             if (shareType == 1) {
@@ -788,6 +797,22 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+::v-deep .flex-dialog .el-dialog {
+    height: 600px !important;
+}
+
+.flex-dialog {
+    height: 100%;
+}
+
+.el-dialog {
+    height: 100% !important;
+}
+
+::v-deep .flex-dialog .el-dialog__body {
+    height: 100% !important;
+}
+
 .container {
     background-color: #f0f2f5;
 
@@ -806,7 +831,7 @@ export default {
         overflow: hidden;
         display: flex;
 
-        > div {
+        >div {
             background-color: white;
         }
 
@@ -828,7 +853,7 @@ export default {
     }
 }
 
-.el-button + .el-button {
+.el-button+.el-button {
     margin-left: 20px;
 }
 
@@ -899,11 +924,11 @@ export default {
     }
 
     // 去掉最顶层的虚线,放最下面样式才不会被上面的覆盖了
-    & > .el-tree-node::after {
+    &>.el-tree-node::after {
         border-top: none;
     }
 
-    & > .el-tree-node::before {
+    &>.el-tree-node::before {
         border-left: none;
     }
 

+ 40 - 13
src/pages/main/onlineExcelMarket/index.vue

@@ -42,6 +42,9 @@
                             <el-button style="margin-left: 20px;" class="btn-check" size="medium" type="primary"
                                        @click="addNewStatus = true">新建
                             </el-button>
+                            <!-- <el-button style="margin-left: 20px;" class="btn-check" size="medium" type="primary"
+                                @click="shareStatus = true">新建2222
+                            </el-button> -->
                         </div>
                         <div style="margin-top: 20px;float: right;margin-right: 20px" class="bigbtns"
                              v-if="selectionSize != 0">
@@ -144,21 +147,29 @@
                     <el-button type="primary" @click="checkexa = true" plain>指定人可编辑</el-button>
                 </div>
             </el-dialog>
-            <el-dialog title="选择填报人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
+            <div class="flex-dialog">
+            <el-dialog title="选择填报人" :visible.sync="checkexa" width="86%" style="height:100%  ;" :destroy-on-close="true"
                        :modal-append-to-body="false" :close-on-click-modal="false" v-loading="shareLoading">
-                <div>
-                    <el-form :model="exaList" ref="addInfoList">
-                        <el-form-item prop="processUserId" class="info-line online">
-                            <span style="width: 80px;margin-right: 20px">审批人员</span>
-                            <deptTreeUserNew class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
-                                             :type="depttype" :closeList="closeList"></deptTreeUserNew>
-                            <div class="tree treeUser">
+                <div class="flex-dialog">
+                    <el-row style="height:80%  ;">
+                            <el-col :span="24" style="height:100%  ;">
+                                <deptTreeUserNew class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
+                                    :type="depttype" :closeList="closeList"></deptTreeUserNew>
+                            </el-col>
+
+                        </el-row>
+                    <!-- <el-form :model="exaList" ref="addInfoList">
+                        <el-form-item prop="processUserId" class="info-line online"> -->
+                            <!-- <span style="width: 80px;margin-right: 20px">审批人员</span> -->
+                            <!-- <deptTreeUserNew class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
+                                             :type="depttype" :closeList="closeList"></deptTreeUserNew> -->
+                            <!-- <div class="tree treeUser">
                                 <p v-for="(item,index) in treeList" :key="index">{{ item.receiveName }}
                                     <i @click="deletes(item,index)" class="el-icon-error"></i>
                                 </p>
-                            </div>
-                        </el-form-item>
-                    </el-form>
+                            </div> -->
+                        <!-- </el-form-item>
+                    </el-form> -->
 
                     <div slot="footer" style="text-align: right;padding-bottom: 20px">
                         <el-button type="primary" @click="checkProcessUser(3)">确 定</el-button>
@@ -166,6 +177,7 @@
                     </div>
                 </div>
             </el-dialog>
+        </div>
             <el-dialog title="移动到" :visible.sync="moveStatus" width="500px" :destroy-on-close="true"
                        :modal-append-to-body="false" :close-on-click-modal="false">
                 <div>
@@ -207,7 +219,7 @@ import toolList from "../../../components/toolList";
 import myMessage from "../../../components/myMessage.vue";
 import myMessageNew from "../../../components/myMessageNew.vue";
 import myMessageRadio from "../../../components/myMessageRadio.vue";
-import deptTreeUserNew from "../../../components/deptTreeUserNew.vue"
+import deptTreeUserNew from "../../../components/newTree.vue"
 
 export default {
     components: {
@@ -383,7 +395,7 @@ export default {
             _this.shareLoading = true;
             if (shareType == 3) {
                 this.treeList.map((o) => {
-                    deptList.push(o.receiveNo);
+                    deptList.push(o.key);
                 });
             }
             if (shareType == 1) {
@@ -786,6 +798,21 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+::v-deep .flex-dialog .el-dialog {
+    height: 600px !important;
+}
+
+.flex-dialog {
+    height: 100%;
+}
+
+.el-dialog {
+    height: 100% !important;
+}
+
+::v-deep .flex-dialog .el-dialog__body {
+    height: 100% !important;
+}
 .container {
     background-color: #f0f2f5;
 

Файловите разлики са ограничени, защото са твърде много
+ 1011 - 0
src/pages/main/onlineExcelMarkets/index.vue


Файловите разлики са ограничени, защото са твърде много
+ 1098 - 0
src/pages/main/onlineExcels/index.vue


+ 67 - 36
src/pages/main/onlineOffice/index.vue

@@ -44,6 +44,7 @@
 import fromList from '../../../../src/components/el-form.vue'
 import { DocumentEditor } from "@onlyoffice/document-editor-vue";
 import myUpload from '../../../components/upload'
+import getConfig from '../../../config/dev'
 export default {
     name: 'ExampleComponent',
     components: {
@@ -131,23 +132,33 @@ export default {
 
         //新建在线编辑xxx
         clickNewSave() {
-            // this.saveStatus = true
-            this.$http({
-                url: "/office/restfile/create",
-                method: "post",
-                type: 'office',
-                headers: {
-                    "Content-Type": "application/json",
-                },
-                data: this.form
-            }).then((res) => {
+            let _this = this;
+            _this.$util.ajaxJson("正在加载", getConfig().OFFICE_URL + "/office/restfile/create", { data: this.form }, function (res) {
                 this.page = 1;
                 this.$message.success('新建成功')
                 this.form = {}
                 this.getLists();
                 this.visible = false;
 
+
             });
+            // this.saveStatus = true
+            // this.$http({
+            //     url: "/office/restfile/create",
+            //     method: "post",
+            //     type: 'office',
+            //     headers: {
+            //         "Content-Type": "application/json",
+            //     },
+            //     data: this.form
+            // }).then((res) => {
+            //     this.page = 1;
+            //     this.$message.success('新建成功')
+            //     this.form = {}
+            //     this.getLists();
+            //     this.visible = false;
+
+            // });
         },
         //点击工单状态跳转需求流程显示页面
         clickDemand(e, res) {
@@ -155,22 +166,15 @@ export default {
                 this.getListEdit(res)
             }
         },
+
         async getListEdit(e) {
-            await this.$http({
-                url: "/office/restfile/edit",
-                method: "post",
-                type: 'office',
-                headers: {
-                    "Content-Type": "application/json",
-                },
-                data: {
-                    id: e.id,
-                    edit: true,
-                    userId: JSON.parse(window.sessionStorage.userInfo).loginNo,
-                    userName: JSON.parse(window.sessionStorage.userInfo).loginName
-                },
-            }).then((res) => {
-                // console.log('[ res ] >', res)
+            let _this = this;
+            _this.$util.ajaxJson("正在加载", getConfig().OFFICE_URL + "/office/restfile/edit", {
+                id: e.id,
+                edit: true,
+                userId: JSON.parse(window.sessionStorage.userInfo).loginNo,
+                userName: JSON.parse(window.sessionStorage.userInfo).loginName
+            }, function (res) {
                 let { docType, fileType, id, fileName, downloadUrl, userId, userName, configCallback, api } = res.data.body
                 this.src = api;
                 let config = {
@@ -200,25 +204,52 @@ export default {
 
 
             });
+            // await this.$http({
+            //     url: "/office/restfile/edit",
+            //     method: "post",
+            //     type: 'office',
+            //     headers: {
+            //         "Content-Type": "application/json",
+            //     },
+            //     data: {
+            //         id: e.id,
+            //         edit: true,
+            //         userId: JSON.parse(window.sessionStorage.userInfo).loginNo,
+            //         userName: JSON.parse(window.sessionStorage.userInfo).loginName
+            //     },
+            // }).then((res) => {
+            //     // console.log('[ res ] >', res)
+                
+
+
+            // });
         },
         getLists() {
-            this.$http({
-                url: "/office/restfile/list",
-                method: "post",
-                type: 'office',
-                headers: {
-                    "Content-Type": "application/json",
-                },
-                data: {
-
-                },
-            }).then((res) => {
+            let _this = this;
+            _this.$util.ajaxJson("正在加载", getConfig().OFFICE_URL + "/office/restfile/list", {}, function (res) {
                 this.dataList = res.data.body;
                 this.currentPage(res.data.body)
                 this.firstTable.pageData.total = res.data.body.length;
 
 
             });
+            // this.$http({
+            //     url: "/office/restfile/list",
+            //     method: "post",
+            //     type: 'office',
+            //     headers: {
+            //         "Content-Type": "application/json",
+            //     },
+            //     data: {
+
+            //     },
+            // }).then((res) => {
+            //     this.dataList = res.data.body;
+            //     this.currentPage(res.data.body)
+            //     this.firstTable.pageData.total = res.data.body.length;
+
+
+            // });
         },
         onReady(editor) {
             console.log('[ editor ] >', editor)

Файловите разлики са ограничени, защото са твърде много
+ 1364 - 0
src/pages/main/productionDataExport/cityHome.vue


+ 113 - 0
src/pages/main/productionDataExport/form.vue

@@ -0,0 +1,113 @@
+<template>
+  <div>
+    <slot :name="list.name"></slot>
+    <el-table  ref="table" style="width: 100%" :data="list.data" :height="list.height + 'px'"
+      :max-height="list.height + 'px'" @row-click="getRowData" @selection-change="selectionChange"
+      :cell-style="columnbackgroundStyle" empty-text="暂无数据" @cell-click="getRowList">
+      <!-- 是否多选 -->
+      <el-table-column v-if="list.isSelection" :selecttable="list" type="selection" :width="100" align="center" />
+
+      <!-- 是否需要序号 -->
+      <el-table-column v-if="list.isIndex" type="index" label="序号" width="55" align="center" />
+      <template v-for="item in list.titledata">
+        <el-table-column :key="item.prop" :prop="item.prop" :label="item.label" align="center" show-overflow-tooltip
+          :width="item.width || 100" />
+      </template>
+      <!-- 操作列 -->
+      <el-table-column v-if="list.isOperation" v-bind="list.data && list.data.length ? { fixed: 'right' } : null"
+        style="margin-right: 20px" class-name="handle-td" label-class-name="tc" :label="list.operation.label"
+        align="center">
+        <!-- UI统一一排放3个,4个以上出现更多 -->
+        <template slot-scope="scope">
+          <!-- 三个一排的情况,去掉隐藏的按钮后的长度 -->
+          <template v-if="list.operation.data.length > 0">
+            <div class="btn">
+              <div v-for="item in list.operation.data" :key="item.label">
+                <template v-if="item.type !== 'icon'">
+                  <el-button v-bind="item" :type="item.type ? item.type : ''" size="mini" @click.native.prevent="
+                    item.handleRow(scope.$index, scope.row, item.label)
+                  ">
+                    {{ item.label }}
+                  </el-button>
+                </template>
+                <template v-else>
+                  <i :class="[icon, item.icon]" v-bind="item"
+                    @click="item.handleRow(scope.$index, scope.row, item.label)" />
+                </template>
+              </div>
+            </div>
+          </template>
+        </template>
+      </el-table-column>
+    </el-table>
+    <div class="page">
+      <el-pagination  style="display: flex; flex-direction: row-reverse;margin-bottom: 4%" v-if="list.pageData.total > 0"
+        :current-page.sync="page" :page-sizes="list.pageData.pageSizes ? list.pageData.pageSizes : [10]"
+        :page-size="list.pageData.pageSize" layout="total, sizes, prev, pager, next, jumper"
+        :total="list.pageData.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      page: 1,
+    };
+  },
+  props: {
+    //  表格数据和表格部分属性的对象
+    // eslint-disable-next-line vue/require-default-prop
+    list: {
+      type: Object,
+    },
+  },
+  created() {
+    console.log(this.list);
+    // this.columnbackgroundStyle()
+  },
+  mounted() {
+    console.log(this.list);
+  },
+  methods: {
+    columnbackgroundStyle({ row, column, rowIndex, columnIndex }) {
+      if (column.type === 'default') {
+        if (column.label === '文件标题') {
+          return 'color:#0682CD;'
+        }
+      }
+    },
+    selectionChange(val) {
+      //多选数字回调
+      this.$emit("num", val);
+    },
+    handleAdd(name) {
+      this.$emit("toolMsg", name);
+    },
+    handleRow(index, row, lable) { },
+    handleSizeChange(val) {
+      this.$emit("changeSize", val);
+      console.log(`每页 ${val} 条`);
+    },
+    handleCurrentChange(val) {
+      this.$emit("changeNum", val);
+      console.log(`当前页: ${val}`);
+    },
+    // 点击行即可选中
+    getRowData(row) {
+      this.$refs.table.toggleRowSelection(row);
+    },
+    getRowList(row, column, event, cell) {
+      this.$emit("clickDemand", column.label, row);
+    },
+  },
+};
+</script>
+
+<style>
+.btn {
+  display: flex;
+  justify-content: center;
+}
+</style>

+ 604 - 0
src/pages/main/productionDataExport/formTable.vue

@@ -0,0 +1,604 @@
+<template>
+    <div>
+        <div>
+            <div class="flex-title">生产数据导出工单</div>
+            <el-form
+                ref="form"
+                :model="form"
+                :rules="rule"
+                label-width="130px"
+                style="margin-top: 30px"
+                :disabled="disabled"
+            >
+                <div class="flex-header">
+                    <el-form-item
+                        label="申请部门:"
+                        prop="applyDepartment"
+                        style="width: 25%; margin-right: 10px"
+                    >
+                        <el-input v-model="form.applyDepartment" :disabled="true"
+                        ></el-input>
+                    </el-form-item>
+
+                    <el-form-item
+                        label="申请科室:"
+                        prop="applyOffice"
+                        style="width: 25%; margin-right: 10px"
+                    >
+                        <el-input v-model="form.applyOffice" :disabled="true"
+                        ></el-input>
+                    </el-form-item>
+
+                    <el-form-item label="拟稿人:" prop="proposer" :disabled="true"
+                    >
+                        <el-input v-model="form.proposer" :disabled="true"></el-input>
+                    </el-form-item>
+                    <el-form-item label="拟稿时间:" prop="proposerTime"
+                    >
+                        <el-input
+                            v-model="form.proposerTime"
+                            :disabled="true"
+                        ></el-input>
+                    </el-form-item>
+                </div>
+
+                <div class="flex-header">
+                    <el-form-item
+                        label="文件标题:"
+                        prop="needName"
+                        style="width: 42%; margin-right: 10px"
+                    >
+                        <el-input v-model="form.needName" placeholder="关于XX单位导出XX业务XX数据的申请"></el-input>
+                    </el-form-item>
+
+                    <el-form-item label="文件编号:" prop="needNo"
+                                  style="width: 42%; margin-left: 11px"
+                    >
+                        <el-input v-model="form.needNo" :disabled="true"></el-input>
+                    </el-form-item>
+                </div>
+
+                <div class="flex-header">
+                    <el-form-item
+                        style="width: 33%; margin-right: 10%"
+                        label="联系电话:"
+                        prop="phoneNo"
+                    >
+                        <el-input v-model="form.phoneNo" :disabled="true"></el-input>
+                    </el-form-item>
+
+                    <el-form-item label="需求类型:" prop="requirementType"
+                                  style="width: 33%; margin-right: 10%"
+
+                    >
+                        <el-select v-model="form.requirementType" placeholder="需求类型">
+                            <el-option
+                                v-for="(item, index) in requirementTypeList"
+                                :label="item.name"
+                                :value="item.code"
+                                :key="index"
+                            >{{ item.name }}
+                            </el-option
+                            >
+                        </el-select>
+                    </el-form-item>
+
+                    <el-form-item label="数据导出类型:" prop="exportType"
+                                  style="width: 33%; margin-right: 10%"
+
+                    >
+                        <el-select v-model="form.exportType" placeholder="数据导出类型">
+                            <el-option
+                                v-for="(item, index) in exportTypeList"
+                                :label="item.name"
+                                :value="item.code"
+                                :key="index"
+                            >{{ item.name }}
+                            </el-option
+                            >
+                        </el-select>
+                    </el-form-item>
+                </div>
+
+
+                <div class="flex-header">
+                    <el-form-item
+                        label="数据库名:"
+                        style="width: 33%; margin-right: 10%"
+                        prop="sourceDatabase"
+                    >
+                        <el-input v-model="form.sourceDatabase"
+                                  placeholder="库名或IP"
+                        ></el-input>
+                    </el-form-item>
+
+                    <el-form-item label="数据表:" prop="sourceTable"
+                                  style="width: 33%; margin-right: 10%"
+
+                    >
+                        <el-input v-model="form.sourceTable" placeholder="用户.表名"></el-input>
+                    </el-form-item>
+
+                    <el-form-item label="主机IP:" prop="hostIp"
+                                  style="width: 33%; margin-right: 10%"
+
+                    >
+                        <el-input v-model="form.hostIp" placeholder="数据源所在主机IP"></el-input>
+                    </el-form-item>
+                </div>
+
+                <div class="flex-header">
+                    <el-form-item
+                        style="width: 90%; margin-right: 10%"
+                        label="导出文件名称:"
+                        prop="exportFileName"
+                    >
+                        <el-input v-model="form.exportFileName" placeholder="导出文件名称"></el-input>
+                    </el-form-item>
+                </div>
+                <div class="flex-header">
+                    <el-form-item
+                        style="width: 90%; margin-right: 10%"
+                        label="文件路径:"
+                        prop="exportFilePath"
+                    >
+                        <el-input v-model="form.exportFilePath"
+                                  placeholder="导出文件所在路径"
+                        ></el-input>
+                    </el-form-item>
+                </div>
+
+                <div class="flex-header">
+                    <el-form-item
+                        style="width: 90%; margin-right: 10%"
+                        label-width="120px" label="需求内容:"
+                        prop="requirementContent"
+                    >
+                        <el-input type="textarea"
+                                  show-word-limit v-model="form.requirementContent"
+                                  placeholder="如为明细级数据导出,请详细描述具体原由,至少50字。"
+                        ></el-input>
+                    </el-form-item>
+                </div>
+
+                <div class="flex-header">
+                    <el-form-item
+                        label="是否涉及敏感信息:"
+                        style="white-space: nowrap;margin-right: 10%"
+                        prop="isSensitiveInformation"
+                    >
+                        <el-select v-model="form.isSensitiveInformation" placeholder="请选择">
+                            <el-option label="是" value="是"></el-option>
+                            <el-option label="否" value="否"></el-option>
+                        </el-select>
+                    </el-form-item>
+                </div>
+                <div class="flex-header">
+                    <el-form-item
+                        style="width: 90%; margin-right: 10%"
+                        label-width="120px" label="涉敏信息范围:"
+                        prop="sensitiveScope"
+                    >
+                        <el-input type="textarea" @input="change($event)"
+                                  :disabled="this.isEditSensitiveScope"
+                                   v-model="form.sensitiveScope"></el-input>
+                    </el-form-item>
+                </div>
+
+                <div class="flex-load" style="display: flex; flex-direction: column">
+                    <el-form-item label="附件:" :disabled="disabled" prop="mkFileShareAttachList">
+                        <my-upload :showFileList ="true" :drag ="!disabled" :disabled ="disabled"  @uploadBack="uploadBack" @delloadBack="delloadBack"
+                                   @clickDownload="downloadOne" :fileInfo="fileInfo"
+                                   @downloadBack = "downloadBack"
+                                   :fileList="list.mkFileShareAttachList"
+                                   style="width: 30% !important"></my-upload>
+
+                    </el-form-item>
+                    <div @click="downExcel" class="el-upload__tip" slot="tip">
+                        附件模板: 生产数据导出申请表.doc
+                    </div>
+                </div>
+
+            </el-form>
+        </div>
+        <div></div>
+        <div></div>
+    </div>
+</template>
+
+<script>
+    import myUpload from "../../../components/uploadMultiConfig";
+
+    export default {
+        components: {
+            myUpload,
+        },
+        data() {
+            var validateRequirementContent = (rule, value, callback) => {
+                if (!this.disabled) {
+                    if (this.form.exportType === '2' && (!value || value.length < 50)) {
+                        callback(new Error('如为明细级数据导出,请详细描述具体原由,至少50字。'));
+                    } else if (!value) {
+                        callback(new Error('请输入需求内容'));
+                    } else {
+                        callback();
+                    }
+                } else {
+                    callback();
+                }
+            };
+
+            var validateSensitiveScope = (rule, value, callback) => {
+                if (!this.disabled) {
+                    if (this.form.isSensitiveInformation === "是") {
+                        if (!value) {
+                            callback(new Error('请输入涉敏信息范围'));
+                        } else {
+                            callback();
+                        }
+                    } else {
+                        callback();
+                    }
+                } else {
+                    callback();
+                }
+            };
+            return {
+                fileInfo: {
+                    type: "bt1n",
+                    typename: "上传文件",
+                    limit: 5,
+                    url: "/market/waf/upload",
+                    fileList: [],
+                },
+                //需求类型
+                requirementTypeList: [],
+                //数据导出类型
+                exportTypeList: [],
+                isEditSensitiveScope: false,
+
+                form: {
+                },
+                rule: {},
+                copyRule: {
+                    needName: [
+                        {required: true, message: "请输入文件标题", trigger: "blur"},
+                    ],
+                    requirementType: [
+                        {required: true, message: "请选择需求类型", trigger: "change"},
+                    ],
+                    exportType: [
+                        {required: true, message: "请选择数据导出类型", trigger: "change"},
+                    ],
+                    exportFileName: [
+                        {required: true, message: "请选择导出文件名称", trigger: "blur"},
+                    ],
+                    requirementContent: [
+                        {validator: validateRequirementContent, trigger: "blur"},
+                    ],
+                    isSensitiveInformation: [
+                        {required: true, message: "请选择是否涉及敏感信息", trigger: "change"},
+                    ],
+                    mkFileShareAttachList: [
+                        {required: true, message: "请选择上传附件", trigger: "change"},
+                    ],
+                    sensitiveScope: [
+                        {validator: validateSensitiveScope, trigger: 'blur'}
+                    ],
+                },
+                temprulers: {
+                    sensitiveScope: [
+                        {required: true, message: "请输入涉敏信息范围", trigger: "blur"},
+                    ],
+                }
+            };
+        },
+        props: {
+            list: {
+                type: Object,
+                default: () => {
+                },
+            },
+            disabled: {
+                type: Boolean,
+                default: () => {
+                },
+            },
+        },
+        mounted() {
+            if (this.list.mkFileShareAttachList) {
+                this.$refs.upload.attList = this.list.mkFileShareAttachList;
+                this.list.mkFileShareAttachList.map((item) => {
+                    item.name = item.fileName;
+                });
+            }
+        },
+        created() {
+            this.getRequirementTypeList();
+            this.getExportTypeList();
+            this.form = this.list;
+            this.isList = this.list;
+            if (!this.disabled) {
+                 this.rule = this.copyRule;
+            }
+            this.fileInfo.fileList = this.list.mkFileShareAttachList;
+        },
+        watch: {
+            "form.isSensitiveInformation": {
+                handler(newVal, oldVal) {
+                    if (!this.disabled) {
+                        if (newVal === "否") {
+                            this.isEditSensitiveScope = true;
+                            this.form.sensitiveScope = "";
+                        } else {
+                            this.isEditSensitiveScope = false;
+                        }
+                    }
+                },
+            },
+        },
+        methods: {
+            change(){
+                this.$forceUpdate();
+            },
+            getRequirementTypeList() {
+                this.$http({
+                    url: "/market/sysConfig/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {"type": "1"},
+                }).then((res) => {
+                    this.requirementTypeList = res.data;
+                });
+            },
+            getExportTypeList() {
+                this.$http({
+                    url: "/market/sysConfig/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {"type": "2"},
+                }).then((res) => {
+                    this.exportTypeList = res.data;
+                });
+            },
+            clickLLength(e) {
+                if (e !== 0) {
+                    this.Length = true;
+                } else {
+                    this.Length = false;
+                }
+            },
+            clickSelect(e) {
+            },
+
+            uploadBack(v) {
+                if (v && v.fileName) {
+                    v.name = v.fileName;
+                }
+                if (this.form.mkFileShareAttachList) {
+                    this.form.mkFileShareAttachList = [];
+                    this.form.mkFileShareAttachList = v;
+                } else {
+                    let mkFileShareAttachList = [];
+                    mkFileShareAttachList = v;
+                    this.$set(this.form, "mkFileShareAttachList", mkFileShareAttachList);
+                }
+            },
+            downloadBack(v) {
+            },
+            delloadBack(v) {
+                this.form.mkFileShareAttachList = v;
+                this.$http({
+                    url: "/market/waf/update",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: this.form,
+                }).then((res) => {
+                });
+            },
+            downloadOne(e) {
+                let list = {
+                    id: e.fileCode,
+                    fileName: e.fileName,
+                };
+
+                this.$http({
+                    url: "/market/waf/downFile",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    responseType: "blob",
+                    data: list,
+                }).then((response) => {
+                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                        let blob = new Blob([response.data], {
+                            type: "application/vnd.ms-excel",
+                        });
+                        //window.navigator.msSaveOrOpenBlob(blob, this.form.needName);
+                        window.navigator.msSaveOrOpenBlob(
+                            blob,
+                            list.fileName
+                        );
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([response.data]);
+                        var downloadElement = document.createElement("a");
+                        var href = window.URL.createObjectURL(blob);
+                        downloadElement.href = href;
+                        downloadElement.download =
+                            list.fileName;
+                        document.body.appendChild(downloadElement);
+                        downloadElement.click();
+                        document.body.removeChild(downloadElement);
+                        window.URL.revokeObjectURL(href);
+                    }
+                });
+            },
+            download() {
+                if (this.form.mkFileShareAttachList.length > 1) {
+                    this.$http({
+                        url: "/market/CMKFile/downAllFile",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        responseType: "blob",
+                        data: {mkFileShareAttachList: this.form.mkFileShareAttachList},
+                    }).then((response) => {
+                        if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                            let blob = new Blob([response.data], {
+                                type: "application/vnd.ms-excel",
+                            });
+                            window.navigator.msSaveOrOpenBlob(
+                                blob,
+                                new Date().getTime().toString() + ".zip"
+                            );
+                        } else {
+                            /* 火狐谷歌的文件下载方式 */
+                            var blob = new Blob([response.data]);
+                            var downloadElement = document.createElement("a");
+                            var href = window.URL.createObjectURL(blob);
+                            downloadElement.href = href;
+                            downloadElement.download = this.form.needName + ".zip";
+                            document.body.appendChild(downloadElement);
+                            downloadElement.click();
+                            document.body.removeChild(downloadElement);
+                            window.URL.revokeObjectURL(href);
+                        }
+                        if (this.infolist.authType === "3") {
+                            this.dialogCli(10);
+                        }
+                    });
+                } else {
+                    let list = {
+                        id: this.form.mkFileShareAttachList[0].fileCode,
+                        fileName: this.form.mkFileShareAttachList[0].fileName,
+                    };
+                    this.$http({
+                        url: "/market/waf/downFile",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        responseType: "blob",
+                        data: list,
+                    }).then((response) => {
+                        if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                            let blob = new Blob([response.data], {
+                                type: "application/vnd.ms-excel",
+                            });
+                            //window.navigator.msSaveOrOpenBlob(blob, this.form.needName);
+                            window.navigator.msSaveOrOpenBlob(
+                                blob,
+                                this.form.mkFileShareAttachList[0].fileName
+                            );
+                        } else {
+                            /* 火狐谷歌的文件下载方式 */
+                            var blob = new Blob([response.data]);
+                            var downloadElement = document.createElement("a");
+                            var href = window.URL.createObjectURL(blob);
+                            downloadElement.href = href;
+                            downloadElement.download =
+                                this.form.mkFileShareAttachList[0].fileName;
+                            document.body.appendChild(downloadElement);
+                            downloadElement.click();
+                            document.body.removeChild(downloadElement);
+                            window.URL.revokeObjectURL(href);
+                        }
+                    });
+                }
+            },
+            //上传文件钩子函数
+            clickUpload(file) {
+            },
+            //下载文件
+            downExcel() {
+                this.$http({
+                    url: "/market/scsjdcProProcess/downloadTemp",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    responseType: "blob",
+                    data: {},
+                }).then((response) => {
+                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                        let blob = new Blob([response.data], {
+                            type: "application/vnd.ms-excel",
+                        });
+                        window.navigator.msSaveOrOpenBlob(blob, "生产数据导出申请表.doc");
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([response.data]);
+                        var downloadElement = document.createElement("a");
+                        var href = window.URL.createObjectURL(blob);
+                        downloadElement.href = href;
+                        downloadElement.download = "生产数据导出申请表.doc";
+                        document.body.appendChild(downloadElement);
+                        downloadElement.click();
+                        document.body.removeChild(downloadElement);
+                        window.URL.revokeObjectURL(href);
+                    }
+                });
+            },
+            changeSelect(e) {
+            },
+        },
+    };
+</script>
+
+<style lang="scss" scoped>
+    ::v-deep .el-upload-list {
+        width: 23rem;
+    }
+
+    .flex-title {
+        text-align: center;
+        font-size: 24px;
+        line-height: 60px;
+        border-bottom: 1px solid #e1e1e1;
+        font-weight: bold;
+    }
+
+    .flex-header {
+        margin-top: 20px;
+        display: flex;
+        //   justify-content: space-between;
+        border-bottom: 1px solid #e1e1e1;
+
+        ::v-deep .el-form-item {
+            width: 25%;
+            margin-right: 5%;
+        }
+    }
+
+    .flex-input-tare {
+        ::v-deep .el-form-item {
+            width: 100%;
+            margin-right: 5%;
+        }
+    }
+
+    .el-upload__tip {
+        color: red;
+    }
+
+    ::v-deep .el-input--suffix .el-input__inner {
+        width: 119% !important;
+    }
+
+    ::v-deep .el-input__inner {
+        color: black !important;
+    }
+
+    ::v-deep .el-textarea.is-disabled .el-textarea__inner {
+        color: black !important;
+    }
+</style>

Файловите разлики са ограничени, защото са твърде много
+ 1370 - 0
src/pages/main/productionDataExport/provinceHome.vue


+ 4 - 2
src/pages/main/provincialWorkOrder/provincialWorkOrder.vue

@@ -116,6 +116,7 @@ import {
     queryReadBase,
     queryReadDoneBase
 } from "../../../http/api.js";//../../../http/api.js
+import getConfig from '../../../config/dev.js'
 import { log } from "console";
 export default {
     components: {
@@ -214,8 +215,9 @@ export default {
             },
             requestForm: {
                 // fresourceId: "08368848-2fde-11ed-a6ed-02427ba2d388", // 本地环境
-                fresourceId: "9b83efc7-b984-11ed-afb6-e00084564cce", // 生产环境
+                // fresourceId: "9b83efc7-b984-11ed-afb6-e00084564cce", // 生产环境
                 // fresourceId: "4fdbb96e-8bfd-11ed-8988-00505687dcd3", //测试91环境
+                fresourceId: getConfig().provincialWorkOrderfresourceId, 
                 processDefinitionKey: "tygd_pro_process",
             },
             dialogStatus: false, //dialog显示
@@ -1045,7 +1047,7 @@ export default {
         },
         setForm(e) {
             // console.log(this.$refs.form)
-            this.request_form.title = this.fromList.needName;
+            this.request_form.title = '[工作台]-省通用工单-'+this.fromList.needName;
             // this.request_form.title = this.$refs.form.needName;
             // this.$refs.form.taskId = e;
             console.log(this.fromList.mkFileShareAttachList);

+ 5 - 2
src/pages/main/provincialWorkOrder/provincialWorkOrderArea.vue

@@ -122,6 +122,7 @@ import {
     getNowdata,
 } from "../../../http/api.js";//../../../http/api.js
 import { log } from "console";
+import getConfig from '../../../config/dev.js'
 export default {
     components: {
         Table,
@@ -219,8 +220,10 @@ export default {
             },
             requestForm: {
                 // fresourceId: "a682dc9f-2fea-11ed-a6ed-02427ba2d388", // 本地环境
-                fresourceId: "db26384e-b984-11ed-afb6-e00084564cce", // 生产环境
+                // fresourceId: "db26384e-b984-11ed-afb6-e00084564cce", // 生产环境
                 // fresourceId: "33b0af93-b1ce-11ed-be6b-00505687dcd3", //测试91环境
+
+                fresourceId: getConfig().provincialWorkOrderAreafresourceId, 
                 processDefinitionKey: "tygd_cit_process",
             },
             dialogStatus: false, //dialog显示
@@ -861,7 +864,7 @@ export default {
         },
         setForm(e) {
             // console.log(this.$refs.form)
-            this.request_form.title = this.fromList.needName;
+            this.request_form.title = '[工作台]-地市通用工单-'+this.fromList.needName;
             // this.request_form.title = this.$refs.form.needName;
             // this.$refs.form.taskId = e;
             console.log(this.fromList.mkFileShareAttachList);

Файловите разлики са ограничени, защото са твърде много
+ 742 - 641
src/pages/main/terminal/advertincrease.vue


+ 20 - 12
src/pages/main/terminals/advchecks.vue

@@ -45,8 +45,14 @@
       <el-dialog title="广告管理" v-if="dialogStatus" :visible.sync="dialogStatus" width="80%" :destroy-on-close="true"
         :modal-append-to-body="false" :close-on-click-modal="false">
         <div>
-          <advert v-if="typestatsu === 2" @closeEdio="closeEdio" :componentInfo="componentInfo"
-            :componentStatus="componentStatus" :changeinfo="changeinfo" :saveStatus="saveStatus"></advert>
+          <advert
+            v-if="typestatsu === 2"
+            @closeEdio="closeEdio"
+            :draftStatus="draftStatus"
+            :componentInfo="componentInfo"
+            :componentStatus="componentStatus"
+            :changeinfo="changeinfo"
+          ></advert>
         </div>
       </el-dialog>
 
@@ -88,7 +94,8 @@ export default {
   },
   data() {
     return {
-      clickStatus: '',
+      draftStatus:true,
+      clickStatus:"",
       tooltit: "广告管理",
       auditStatus: false,
       fullscreen: false,
@@ -397,27 +404,27 @@ export default {
     },
     // 分页
     currchange(v) {
+      console.log(123);
+      console.log(v);
       this.pageSize = v;
-      this.getList(this.advstatus);
+      console.log(this.clickStatus);
+      this.getList(this.clickStatus);
     },
     advchange(e) {
-      this.pageSize = 1
       this.total = 0
-      this.getList(e);
-
+      this.pageSize = 1
+      this.clickStatus = e
+      this.getList(this.clickStatus);
     },
     //处理申请
     dialogCheck(n, v) {
 
       if (v == 1) {
-        console.log(n);
         this.changeinfo = false;
         this.saveStatus = false
       } else {
-        if (n.taskName == '起草') {
-          this.saveStatus = true;
-        }else{
-          this.saveStatus = false
+        if(n.taskName == "科室经理审批"){
+          this.draftStatus = false;
         }
         this.changeinfo = true;
       }
@@ -496,6 +503,7 @@ export default {
       this.getList(this.params, this.pageSize);
       this.typestatsu = 1;
       this.dialogStatus = false;
+      this.draftStatus = true;
       this.componentStatus = false;
     },
     gettype() {

+ 6 - 3
src/pages/main/terminals/advertincreases.vue

@@ -207,6 +207,7 @@
               <p>
                 {{ treeListonly.leaderAuditName }}
                 <i
+
                   v-if="treeListonly.leaderAuditName"
                   @click="deletes()"
                   class="el-icon-error"
@@ -425,11 +426,12 @@ export default {
         fileList: [],
       },
       checkList: [],
+      rest:'',//自有渠道其他
       spreadchannelzList: [],
       checkList1: "",
       checkList2: [],
       spreadchannelwList: [],
-      checkList3: "",
+      other: "",
       checkexa: false,
       treeListonly: {},
       defaultList: [],
@@ -446,8 +448,8 @@ export default {
         processDefinitionKey: "ggsj_process",
       },
       requestForm: {
-          fresourceId: "99e7da22-5f04-11ed-b399-e00084564cce", //线上环境
-        // fresourceId: "e817fc35-5a51-11ed-8912-00505687dcd3", //测试环境
+          // fresourceId: "99e7da22-5f04-11ed-b399-e00084564cce", //线上环境
+        fresourceId: "e817fc35-5a51-11ed-8912-00505687dcd3", //测试环境
         // fresourceId: "3c9baf21-3e43-11ed-ad6b-d6cd97160e00",//本地环境
         processDefinitionKey: "ggsj_process",
       },
@@ -521,6 +523,7 @@ export default {
       }).then((res) => {
         this.request_form.businessKey = res.data.body;
         this.clickHandle(res.data.body);
+        this.$message.success('保存成功')
       });
     },
     async clickHandle(e) {

+ 123 - 33
src/pages/main/terminals/components/adverts.vue

@@ -5,17 +5,29 @@
         <div class="info-line">
           <el-form-item prop="need_name">
             <span>申请标题</span>
-            <el-input :disabled="!saveStatus" v-model="infoApply.need_name" placeholder="申请标题"></el-input>
+            <el-input
+              :disabled="draftStatus"
+              v-model="infoApply.need_name"
+              placeholder="申请标题"
+            ></el-input>
           </el-form-item>
           <el-form-item prop="applydept">
             <span>申请流程</span>
-            <el-input disabled v-model="applydept" placeholder="广告申请"></el-input>
+            <el-input
+              disabled
+              v-model="applydept"
+              placeholder="广告申请"
+            ></el-input>
           </el-form-item>
         </div>
         <div class="info-line">
           <el-form-item prop="applydept">
             <span>申请部门</span>
-            <el-input :disabled="!saveStatus" v-model="infoApply.applydept" placeholder="申请部门"></el-input>
+            <el-input
+              :disabled="draftStatus"
+              v-model="infoApply.applydept"
+              placeholder="申请部门"
+            ></el-input>
             <!-- <el-select disabled clearable v-model="infoApply.dept" placeholder="申请部门">
                             <el-option v-for="items in terminalopt" :key="items.id" :label="items.ou" :value="items.id">
                             </el-option>
@@ -29,12 +41,21 @@
         <div class="info-line">
           <el-form-item>
             <span>申请时间</span>
-            <el-date-picker disabled v-model="infoApply.time" type="date" placeholder="申请时间">
+            <el-date-picker
+              disabled
+              v-model="infoApply.proposer_time"
+              type="date"
+              placeholder="申请时间"
+            >
             </el-date-picker>
           </el-form-item>
           <el-form-item prop="tel">
             <span>联系电话</span>
-            <el-input :disabled="!saveStatus" v-model="infoApply.tel" placeholder="联系电话"></el-input>
+            <el-input
+              :disabled="draftStatus"
+              v-model="infoApply.tel"
+              placeholder="联系电话"
+            ></el-input>
           </el-form-item>
         </div>
         <div class="info-line">
@@ -45,8 +66,13 @@
           </el-form-item>
           <el-form-item>
             <span>完成时间</span>
-            <el-date-picker :disabled="!saveStatus" v-model="infoApply.donetime" type="date" placeholder="完成时间"
-              :pickerOptions="pickerOptions">
+            <el-date-picker
+              v-model="infoApply.donetime"
+              type="date"
+              :disabled="draftStatus"
+              placeholder="完成时间"
+              :pickerOptions="pickerOptions"
+            >
             </el-date-picker>
           </el-form-item>
         </div>
@@ -54,16 +80,35 @@
         <div class="info-line">
           <el-form-item>
             <span>紧急程度</span>
-            <el-select :disabled="!saveStatus" clearable v-model="infoApply.importance" placeholder="紧急程度">
-              <el-option v-for="items in fireopt" :key="items.dataCode" :label="items.dataName" :value="items.dataCode">
+            <el-select
+              clearable
+              :disabled="draftStatus"
+              v-model="infoApply.importance"
+              placeholder="紧急程度"
+            >
+              <el-option
+                v-for="items in fireopt"
+                :key="items.dataCode"
+                :label="items.dataName"
+                :value="items.dataCode"
+              >
               </el-option>
             </el-select>
           </el-form-item>
           <el-form-item>
             <span>素材类型</span>
-            <el-select :disabled="!saveStatus" clearable v-model="infoApply.sourcetype" placeholder="素材类型">
-              <el-option v-for="items in materTypeopt" :key="items.dataCode" :label="items.dataName"
-                :value="items.dataCode">
+            <el-select
+              clearable
+              :disabled="draftStatus"
+              v-model="infoApply.sourcetype"
+              placeholder="素材类型"
+            >
+              <el-option
+                v-for="items in materTypeopt"
+                :key="items.dataCode"
+                :label="items.dataName"
+                :value="items.dataCode"
+              >
               </el-option>
             </el-select>
           </el-form-item>
@@ -84,16 +129,31 @@
 
         <el-form-item class="info-line online">
           <span>宣传内容</span>
-          <el-input :disabled="!saveStatus" v-model="infoApply.sellingpoint" placeholder="广告宣传内容" type="textarea"
-            :rows="3"></el-input>
+          <el-input
+            v-model="infoApply.sellingpoint"
+            :disabled="draftStatus"
+            placeholder="广告宣传内容"
+            type="textarea"
+            :rows="3"
+          ></el-input>
         </el-form-item>
         <el-form-item class="info-line online">
           <span>其他说明</span>
-          <el-input :disabled="!saveStatus" v-model="infoApply.procontent" placeholder="设计稿内容描述" type="textarea"
-            :rows="3"></el-input>
+          <el-input
+            v-model="infoApply.procontent"
+            :disabled="draftStatus"
+            placeholder="设计稿内容描述"
+            type="textarea"
+            :rows="3"
+          ></el-input>
         </el-form-item>
         <div style="padding: 0 20px 0 100px; margin-bottom: 20px">
-          <uploadDown ref="myupload" :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
+          <uploadDown
+            v-if="uploadDownStatus"
+            ref="myupload"
+            :datalist="datalist"
+            :dialogStatus="uploadstatus"
+          ></uploadDown>
         </div>
         <div style="padding: 0 20px 0 100px; margin-bottom: 20px" v-if="uploadsts">
           <myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList">
@@ -146,8 +206,12 @@
       <Workflow :list="infoApply" :requestForm="requestForm" @updateForm="updateForm" />
     </el-dialog>
     <div slot="footer" class="dialog-footer">
-      <el-button v-if="changeinfo" type="primary" @click="dialogCli(2)">处 理</el-button>
-      <el-button v-if="saveStatus" type="primary" @click="dialogCli(4)">保 存</el-button>
+      <el-button v-if="changeinfo" type="primary" @click="dialogCli(2)"
+        >处 理</el-button
+      >
+      <el-button v-if="!draftStatus" type="primary" @click="dialogClis()"
+        >保 存</el-button
+      >
       <!-- <el-button v-if="changeinfo" type="primary" @click="dialogCli(1)"
         >驳 回</el-button
       > -->
@@ -162,7 +226,7 @@ import Workflow from "../../../../components/workflowBase";
 import uploadDown from "../../../../components/uploadDown.vue";
 import myUpload from "../../../../components/upload.vue";
 export default {
-  props: ["componentInfo", "componentStatus", "changeinfo", "saveStatus"],
+  props: ["componentInfo", "componentStatus", "changeinfo", "draftStatus"],
   components: {
     uploadDown,
     myUpload,
@@ -170,10 +234,12 @@ export default {
   },
   data() {
     return {
-      applydept: '广告申请',
+      applydept:'广告申请',
+      // draftStatus:'',//起草状态更改表单状态
+      uploadDownStatus: false,
       requestForm: {
-        fresourceId: "99e7da22-5f04-11ed-b399-e00084564cce", //线上环境
-        // fresourceId: "e817fc35-5a51-11ed-8912-00505687dcd3", //测试环境
+        // fresourceId: "99e7da22-5f04-11ed-b399-e00084564cce", //线上环境
+        fresourceId: "e817fc35-5a51-11ed-8912-00505687dcd3", //测试环境
         // fresourceId: "3c9baf21-3e43-11ed-ad6b-d6cd97160e00", //本地环境
         processDefinitionKey: "ggsj_process",
       },
@@ -312,12 +378,13 @@ export default {
 
       let res = await this.common.httpPost(obj, success);
       function success(data) {
-        data.data.map((item) => {
+        // console.log('测试返回data',data);
+        data.data.data.map((item) => {
           item.startTime = _this.$util.datetimeFormat(item.startTime);
           item.endTime = _this.$util.datetimeFormat(item.endTime);
         });
         console.log(data.data);
-        _this.rovaList = data.data;
+        _this.rovaList = data.data.data;
         // _this.lables.data = data.data;
         // data.data.map((item) => {
         //   item.startTime = _this.$util.datetimeFormat(item.startTime);
@@ -402,6 +469,18 @@ export default {
       return list;
     },
     //添加
+    dialogClis() {
+      this.$http({
+        url: "/market/ggsj/update",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        data: this.infoApply,
+      }).then((res) => {
+        console.log(res);
+      });
+    },
     dialogCli(v) {
       if(v ==2 ){
         this.checkexa = true;
@@ -470,8 +549,8 @@ export default {
           list.mkFileShareAttachList = this.attList;
           if (this.mkFileShareAttachList) {
             this.mkFileShareAttachList.map((item) => {
-              list.mkFileShareAttachList.push(item)
-            })
+              list.mkFileShareAttachList.push(item);
+            });
           }
           this.$http({
             url: "/market/ggsj/update",
@@ -687,18 +766,15 @@ export default {
         console.log(res);
         this.mkFileShareAttachList = res.data.mkFileShareAttachList;
         if (res.data.paramVal) {
-
         }
-        console.log(
-          (this.$refs.myupload.infolist = res.data.mkFileShareAttachList)
-        );
-        // this.datalist.attList = res.data.mkFileShareAttachList;
+        this.datalist.attList = res.data.mkFileShareAttachList;
+        this.uploadDownStatus = true;
       });
     },
     handleClose() {
       console.log(123);
       this.checkexa = false;
-    }
+    },
   },
   computed: {
     pickerOptions: function () {
@@ -730,6 +806,20 @@ export default {
       }
     },
   },
+  computed: {
+    pickerOptions: function () {
+      return {
+        disabledDate(time) {
+          // if(time.getTime() < Date.now() - 8.64e7 || (time.getTime() > Date.now() && time.getTime() < Date.now() + 8.64e7*3) ){
+          //     return true
+          // }
+          if (time.getTime() < Date.now() + 8.64e7 * 3) {
+            return true;
+          }
+        },
+      };
+    },
+  },
 };
 </script>
 

+ 96 - 5
src/router/index.js

@@ -558,6 +558,18 @@ const routes = [{
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/advertising/index.vue'], resolve)
         },
         {
+            meta: { name: '验收打分单', keepAlive: false },
+            path: '/materialAppNum',
+            name: 'materialAppNum',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/advertising/materialAppNum.vue'], resolve)
+        },
+        {
+            meta: { name: '宣传物料制作费用明细', keepAlive: false },
+            path: '/materialAppMessage',
+            name: 'materialAppMessage',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/advertising/materialAppMessage.vue'], resolve)
+        },
+        {
             meta: { name: '宣传费台账', keepAlive: false },
             path: '/publicity',
             name: 'publicity',
@@ -2105,6 +2117,7 @@ const routes = [{
                 ['../pages/main/leader/demand/supportState.vue'], resolve)
         },
         {
+
             meta: {
                 name: '在线文档',
                 keepAlive: false
@@ -2114,13 +2127,22 @@ const routes = [{
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcel/index'], resolve)
         },
         {
+            meta: {
+                name: '在线文档(市场)',
+                keepAlive: false
+            },
+            path: '/onlineShareExcelMarket',
+            name: 'onlineShareExcelMarket',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcelMarket/index'], resolve)
+        },
+        {
 
             meta: {
-                name: '协同编辑',
+                name: '在线文档',
                 keepAlive: false
             },
-            path: '/editOnline',
-            name: 'editOnline',
+            path: '/onlineShareExcel',
+            name: 'onlineShareExcel',
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcel/index'], resolve)
         },
         {
@@ -2131,6 +2153,24 @@ const routes = [{
             path: '/onlineShareExcelMarket',
             name: 'onlineShareExcelMarket',
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcelMarket/index'], resolve)
+        },{
+
+            meta: {
+                name: '在线文档协同',
+                keepAlive: false
+            },
+            path: '/onlineShareExcels',
+            name: 'onlineShareExcel',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcels/index'], resolve)
+        },
+        {
+            meta: {
+                name: '在线文档(市场)协同',
+                keepAlive: false
+            },
+            path: '/onlineShareExcelMarkets',
+            name: 'onlineShareExcelMarket',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/onlineExcelMarkets/index'], resolve)
         },
         {
             meta: {
@@ -2166,8 +2206,22 @@ const routes = [{
             name: 'processruns',
 
             component: resolve => require(['../pages/main/processruns/processruns.vue'], resolve),
-            meta: { title: '运行流程' }
-        }
+            meta: {title: '运行流程'}
+        },
+        {
+            meta: {name: '', keepAlive: false},
+            path: '/productionDataExportCityHome',
+            name: 'productionDataExportCityHome',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/productionDataExport/cityHome.vue'], resolve)
+        },
+        {
+            meta: {name: '', keepAlive: false},
+            path: '/productionDataExportProvinceHome',
+            name: 'productionDataExportProvinceHome',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/productionDataExport/provinceHome.vue'], resolve)
+        },
         , {
             meta: { name: '风险防控管理', keepAlive: false },
             path: '/riskMaterials',
@@ -2182,6 +2236,43 @@ const routes = [{
                 ['../pages/main/leader/risk/riskManagement.vue'], resolve)
         },
         {
+            meta: { name: '新文件收集与审批', keepAlive: false },
+            path: '/documentCollectionApprovalHome',
+            name: 'documentCollectionApprovalHome',
+            redirect: 'documentCollectionApproval',
+            component: (resolve) => require( /* webpackChunkName: "system" */
+                ['../pages/main/documentCollection/home.vue'], resolve),
+            children: [
+                {
+                    meta: { name: '文件收集与审批我接收的', keepAlive: false },
+                    path: '/documentCollectionApproval',
+                    name: 'documentCollectionApproval',
+                    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/documentCollection/documentCollectionApproval'], resolve)
+                },
+                {
+                    meta: { name: '收入信息收集', keepAlive: false },
+                    path: '/documentCollectionApprovalIssuedMoud',
+                    name: 'documentCollectionApprovalIssuedMoud',
+                    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/documentCollection/documentCollectionApprovalIssuedMoud'], resolve)
+                }, {
+                    meta: { name: '文件收集与审批我发起的', keepAlive: false },
+                    path: '/documentCollectionApprovalIssuedCollect',
+                    name: 'documentCollectionApprovalIssuedCollect',
+                    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/documentCollection/documentCollectionApprovalIssuedCollect'], resolve)
+                },
+
+            ]
+        },
+        {
+            meta: {
+                name: '模板详情',
+                keepAlive: false
+            },
+            path: '/documentCollectionApprovalExcel',
+            name: 'documentCollectionApprovalExcel',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/documentCollection/documentCollectionApprovalExcel'], resolve)
+        },
+        {
             path: '/provincialWorkOrder',
             name: 'provincialWorkOrder',
             component: resolve => require(['../pages/main/provincialWorkOrder/provincialWorkOrder.vue'], resolve),

+ 8 - 5
vue.config.js

@@ -3,6 +3,7 @@ const webpack = require("webpack");
 const BundleAnalyzerPlugin =
     require("webpack-bundle-analyzer").BundleAnalyzerPlugin;
 module.exports = {
+    outputDir: process.env.outputDir,
     publicPath: process.env.NODE_ENV === "production" ? "" : "/",
     productionSourceMap: false,
     lintOnSave: false,
@@ -85,6 +86,7 @@ module.exports = {
             //     new WebpackLifeCyclePlugin(),
             //     // new BundleAnalyzerPlugin()
             // ]
+
         }
     },
     parallel: true,
@@ -142,15 +144,16 @@ module.exports = {
                 // target: 'http://192.168.1.9:9600/spfm',
                 // target: 'http://127.0.0.1:9600/',
                 // target: 'http://192.168.0.156:9600/',
-                // target: 'http://192.168.2.44:9600/',
-                target: 'http://192.168.2.124:9600',
+                // target: 'http://192.168.2.92:9600/',
+                // target: 'http://192.168.2.124:9600/',
                 // target: "http://124.223.66.248:9600",
                 // target: "http://43.138.50.94:9600",
+                // target: 'http://192.168.2.44:9600/',
+                // target: 'http://192.168.2.124:9600',
+                // target: "http://124.223.66.248:9600",
+                target: "http://43.138.50.94:9600",
                 changeOrigin: true,
                 logLevel:'debug',
-                pathRewrite: {
-                    "^/market": "/",
-                },
             },
         },
     },

+ 16 - 11
yarn.lock

@@ -1129,10 +1129,10 @@
   resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
   integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
 
-"@onlyoffice/document-editor-vue@^1.2.0":
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/@onlyoffice/document-editor-vue/-/document-editor-vue-1.2.0.tgz#8c466db70549bba5e68a311b59f51d6bd687b5e9"
-  integrity sha512-sFRElG3gyLeKr6GR2iokLxWnYKRLy2bEeFWZMiHlX0z0M+GpWd14pkCTncJQt+u8HufkKQUtjkdzjuROfKcxxQ==
+"@onlyoffice/document-editor-vue@^1.3.0":
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/@onlyoffice/document-editor-vue/-/document-editor-vue-1.3.0.tgz#3cddb371fc65bff4a65d5ef488c9c940107fbde3"
+  integrity sha512-nopUT3fPD6uM76IHBkn4QGCqwgqC/9zqyYJhQZGN9FS/Ii57KbEKEgueoTaF/P/TvcAPIa745zqlpFdRidbqQQ==
 
 "@socket.io/component-emitter@~3.1.0":
   version "3.1.0"
@@ -1470,9 +1470,9 @@
   resolved "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-4.5.19.tgz#d1206f7802bcba1d9c307695b54091df996db804"
   integrity sha512-GdxvNSmOw7NHIazCO8gTK+xZbaOmScTtxj6eHVeMbYpDYVPJ+th3VMLWNpw/b6uOjwzzcyKlA5dRQ1DAb+gF/g==
 
-"@vue/cli-plugin-babel@^4.1.2":
+"@vue/cli-plugin-babel@^4.5.0":
   version "4.5.19"
-  resolved "https://registry.npmmirror.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.19.tgz#288b32e69f0191a77369e88f071c0cd8036edfa7"
+  resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.19.tgz#288b32e69f0191a77369e88f071c0cd8036edfa7"
   integrity sha512-8ebXzaMW9KNTMAN6+DzkhFsjty1ieqT7hIW5Lbk4v30Qhfjkms7lBWyXPGkoq+wAikXFa1Gnam2xmWOBqDDvWg==
   dependencies:
     "@babel/core" "^7.11.0"
@@ -1483,9 +1483,9 @@
     thread-loader "^2.1.3"
     webpack "^4.0.0"
 
-"@vue/cli-plugin-eslint@^4.1.2":
+"@vue/cli-plugin-eslint@~4.5.0":
   version "4.5.19"
-  resolved "https://registry.npmmirror.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.19.tgz#d1f908b5d079f2902dc23301290e4dd8176f204c"
+  resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.19.tgz#d1f908b5d079f2902dc23301290e4dd8176f204c"
   integrity sha512-53sa4Pu9j5KajesFlj494CcO8vVo3e3nnZ1CCKjGGnrF90id1rUeepcFfz5XjwfEtbJZp2x/NoX/EZE6zCzSFQ==
   dependencies:
     "@vue/cli-shared-utils" "^4.5.19"
@@ -1507,9 +1507,9 @@
   resolved "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.19.tgz#2452de58eb66ed873852bea45e6e06b57d842b47"
   integrity sha512-DUmfdkG3pCdkP7Iznd87RfE9Qm42mgp2hcrNcYQYSru1W1gX2dG/JcW8bxmeGSa06lsxi9LEIc/QD1yPajSCZw==
 
-"@vue/cli-service@^4.1.2":
+"@vue/cli-service@~4.5.0":
   version "4.5.19"
-  resolved "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-4.5.19.tgz#5f6513128f426be0ee9a7d03155c23a6f23f8d42"
+  resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-4.5.19.tgz#5f6513128f426be0ee9a7d03155c23a6f23f8d42"
   integrity sha512-+Wpvj8fMTCt9ZPOLu5YaLkFCQmB4MrZ26aRmhhKiCQ/4PMoL6mLezfqdt6c+m2htM+1WV5RunRo+0WHl2DfwZA==
   dependencies:
     "@intervolga/optimize-cssnano-plugin" "^1.0.5"
@@ -6051,11 +6051,16 @@ jquery-ui@^1.12.1:
   dependencies:
     jquery ">=1.8.0 <4.0.0"
 
-"jquery@>=1.8.0 <4.0.0", jquery@^3.6.0:
+"jquery@>=1.8.0 <4.0.0":
   version "3.6.1"
   resolved "https://registry.npmmirror.com/jquery/-/jquery-3.6.1.tgz#fab0408f8b45fc19f956205773b62b292c147a16"
   integrity sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==
 
+jquery@^3.6.4:
+  version "3.6.4"
+  resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.4.tgz#ba065c188142100be4833699852bf7c24dc0252f"
+  integrity sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==
+
 js-audio-recorder@^1.0.7:
   version "1.0.7"
   resolved "https://registry.npmmirror.com/js-audio-recorder/-/js-audio-recorder-1.0.7.tgz#01501cb9eb143d57994b42bd5ae97974fda18908"