yangbifan 2 лет назад
Родитель
Сommit
2e32680c67
98 измененных файлов с 112792 добавлено и 4187 удалено
  1. 15 2
      config/index.js
  2. 3 3
      package.json
  3. BIN
      public/css/EwaAntH.gif
  4. BIN
      public/css/EwaAntV.gif
  5. BIN
      public/css/arrow-down.png
  6. BIN
      public/css/loading.gif
  7. 1 0
      public/css/luckysheet.css
  8. 505 0
      public/css/menuSprite.svg
  9. BIN
      public/css/paint_16px.ico
  10. BIN
      public/css/paint_24px.ico
  11. BIN
      public/css/paint_32px.ico
  12. 528 0
      public/css/sprite38.svg
  13. BIN
      public/css/waffle_sprite.png
  14. 42 0
      public/demoData/demoFeature.js
  15. 1578 0
      public/demoData/sheetCell.js
  16. 4918 0
      public/demoData/sheetChart.js
  17. 67 0
      public/demoData/sheetComment.js
  18. 6541 0
      public/demoData/sheetConditionFormat.js
  19. 579 0
      public/demoData/sheetDataVerification.js
  20. 6600 0
      public/demoData/sheetFormula.js
  21. 159 0
      public/demoData/sheetPicture.js
  22. 189 0
      public/demoData/sheetPivotTable.js
  23. 741 0
      public/demoData/sheetPivotTableData.js
  24. 7066 0
      public/demoData/sheetSparkline.js
  25. 1068 0
      public/demoData/sheetTable.js
  26. 4 11
      public/index.html
  27. 22904 0
      public/luckSheetExcel.js
  28. 4151 0
      public/luckysheet.umd.js
  29. 1 1
      public/static/js/luckysheet/css/luckysheet.css
  30. 42 0
      public/static/js/luckysheet/demoData/demoFeature.js
  31. 1578 0
      public/static/js/luckysheet/demoData/sheetCell.js
  32. 4918 0
      public/static/js/luckysheet/demoData/sheetChart.js
  33. 67 0
      public/static/js/luckysheet/demoData/sheetComment.js
  34. 6541 0
      public/static/js/luckysheet/demoData/sheetConditionFormat.js
  35. 579 0
      public/static/js/luckysheet/demoData/sheetDataVerification.js
  36. 6600 0
      public/static/js/luckysheet/demoData/sheetFormula.js
  37. 159 0
      public/static/js/luckysheet/demoData/sheetPicture.js
  38. 189 0
      public/static/js/luckysheet/demoData/sheetPivotTable.js
  39. 741 0
      public/static/js/luckysheet/demoData/sheetPivotTableData.js
  40. 7066 0
      public/static/js/luckysheet/demoData/sheetSparkline.js
  41. 1068 0
      public/static/js/luckysheet/demoData/sheetTable.js
  42. 16 8
      public/static/js/luckysheet/expendPlugins/chart/chartmix.umd.min.js
  43. 1944 0
      public/static/js/luckysheet/index.html
  44. 7 4152
      public/static/js/luckysheet/luckysheet.umd.js
  45. 0 7
      public/static/js/luckysheet/luckysheet.umd.js.map
  46. 1 1
      public/static/js/luckysheet/plugins/js/plugin.js
  47. 1 1
      public/static/js/luckysheet/plugins/plugins.css
  48. 307 0
      public/views/Hallstore.html
  49. 248 0
      public/views/chat/chatInit.html
  50. 134 0
      public/views/chat/quesWordAnalysis.html
  51. 146 0
      public/views/customer/userInfo.html
  52. 296 0
      public/views/ecClubWork.html
  53. 430 0
      public/views/excel.html
  54. 302 0
      public/views/exportExcel.html
  55. 194 0
      public/views/flow/editFlow.html
  56. 262 0
      public/views/flow/flowDesign.html
  57. 175 0
      public/views/flow/flowDesignPrew.html
  58. 197 0
      public/views/flow/flowInit.html
  59. 166 0
      public/views/flow/setCondi.html
  60. 282 0
      public/views/flow/setNode_end.html
  61. 118 0
      public/views/flow/setNode_start.html
  62. 326 0
      public/views/flow/setNode_task.html
  63. 308 0
      public/views/foocusAssessH.html
  64. 69 0
      public/views/form/formAdd.html
  65. 137 0
      public/views/form/formInit.html
  66. 70 0
      public/views/form/formUpdate.html
  67. 480 0
      public/views/incomeTemplateExcel.html
  68. 477 0
      public/views/incomeViewExcel.html
  69. 338 0
      public/views/initExcel.html
  70. 354 0
      public/views/initExcel1.html
  71. 289 0
      public/views/inperson.html
  72. 180 0
      public/views/insideFilecollect/approval.html
  73. 171 0
      public/views/insideFilecollect/fillIn.html
  74. 178 0
      public/views/insideFilecollect/launch.html
  75. 428 0
      public/views/kccExcel.html
  76. 370 0
      public/views/monthExcel.html
  77. 637 0
      public/views/onlineShareExcel.html
  78. 637 0
      public/views/onlineShareExcelMarket.html
  79. 350 0
      public/views/projectExcel.html
  80. 385 0
      public/views/publiAccount.html
  81. 389 0
      public/views/quarterExcel.html
  82. 272 0
      public/views/settlementEval.html
  83. 604 0
      public/views/stockHandle.html
  84. 211 0
      public/views/sysLoginRoleInit.html
  85. 156 0
      public/views/text.html
  86. 116 0
      public/views/userId/loginAdd.html
  87. 134 0
      public/views/userId/loginInit.html
  88. 96 0
      public/views/userId/loginUpdate.html
  89. 350 0
      public/views/weeklyReport.html
  90. 125 0
      public/views/wo/woCheck.html
  91. 83 0
      public/views/wo/woLaunch.html
  92. 216 0
      public/views/wo/woQueryDb.html
  93. 193 0
      public/views/wo/woQueryYb.html
  94. 350 0
      public/views/yearExcel.html
  95. 469 0
      public/views/ztreeInit.html
  96. 1 1
      src/pages/main/luckySheet/index.vue
  97. 1 0
      vue.config.js
  98. 10408 0
      yarn.lock

+ 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:

+ 3 - 3
package.json

@@ -41,9 +41,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",

BIN
public/css/EwaAntH.gif


BIN
public/css/EwaAntV.gif


BIN
public/css/arrow-down.png


BIN
public/css/loading.gif


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
public/css/luckysheet.css


Разница между файлами не показана из-за своего большого размера
+ 505 - 0
public/css/menuSprite.svg


BIN
public/css/paint_16px.ico


BIN
public/css/paint_24px.ico


BIN
public/css/paint_32px.ico


Разница между файлами не показана из-за своего большого размера
+ 528 - 0
public/css/sprite38.svg


BIN
public/css/waffle_sprite.png


+ 42 - 0
public/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/demoData/sheetCell.js


Разница между файлами не показана из-за своего большого размера
+ 4918 - 0
public/demoData/sheetChart.js


+ 67 - 0
public/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/demoData/sheetConditionFormat.js


Разница между файлами не показана из-за своего большого размера
+ 579 - 0
public/demoData/sheetDataVerification.js


Разница между файлами не показана из-за своего большого размера
+ 6600 - 0
public/demoData/sheetFormula.js


Разница между файлами не показана из-за своего большого размера
+ 159 - 0
public/demoData/sheetPicture.js


+ 189 - 0
public/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/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/demoData/sheetSparkline.js


Разница между файлами не показана из-за своего большого размера
+ 1068 - 0
public/demoData/sheetTable.js


+ 4 - 11
public/index.html

@@ -15,14 +15,6 @@
   <link rel='stylesheet' href='/static/js/luckysheet/plugins/plugins.css' />
   <link rel='stylesheet' href='/static/js/luckysheet/css/luckysheet.css' />
   <link rel='stylesheet' href='/static/js/luckysheet/assets/iconfont/iconfont.css' />
-  <!-- <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/css/pluginsCss.css'/>
-  <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/plugins.css'/>
-  <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/css/luckysheet.css'/>
-  <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/assets/iconfont/iconfont.css'/>
-  <script src="https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/js/plugin.js"></script>
-  <script src="https://cdn.jsdelivr.net/npm/luckysheet/dist/luckysheet.umd.js"></script> -->
-
-  <script src="/static/js/ace.js"></script>
 </head>
 
 <body>
@@ -34,12 +26,13 @@
   <!-- 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://10.149.85.91:8000/spfm'; // 测试
+  //  window.staticHost = 'http://43.138.50.94:9600/'; 
     // window.staticHost = 'http://192.168.0.103:9600/';
-    window.staticHost = 'http://43.138.50.94:9600';
+    // window.staticHost = 'http://192.168.2.79:9600/';
 
     // document.title = "hello";
   </script>
 </body>
 
-</html>
+</html>

Разница между файлами не показана из-за своего большого размера
+ 22904 - 0
public/luckSheetExcel.js


Разница между файлами не показана из-за своего большого размера
+ 4151 - 0
public/luckysheet.umd.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
public/static/js/luckysheet/css/luckysheet.css


+ 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


Разница между файлами не показана из-за своего большого размера
+ 16 - 8
public/static/js/luckysheet/expendPlugins/chart/chartmix.umd.min.js


Разница между файлами не показана из-за своего большого размера
+ 1944 - 0
public/static/js/luckysheet/index.html


Разница между файлами не показана из-за своего большого размера
+ 7 - 4152
public/static/js/luckysheet/luckysheet.umd.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 7
public/static/js/luckysheet/luckysheet.umd.js.map


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
public/static/js/luckysheet/plugins/js/plugin.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
public/static/js/luckysheet/plugins/plugins.css


Разница между файлами не показана из-за своего большого размера
+ 307 - 0
public/views/Hallstore.html


+ 248 - 0
public/views/chat/chatInit.html

@@ -0,0 +1,248 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+
+    <link rel="stylesheet" type="text/css" href="/static/chat/font_Icon/iconfont.css">
+    <link rel="stylesheet" type="text/css" href="/static/chat/css/chat.css">
+    <link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+    <link rel="stylesheet" href="/static/css/temp.css" media="all">
+    <script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+    <script src="/static/js/layui.js?v=1.0.0"></script>
+    <script src="/static/js/api.config.js"></script>
+    <script src="/static/js/util.js?v=1.0.0"></script>
+    <script src="/static/js/customform.js?v=1.0.0"></script>
+    <script src="/static/js/url.js?v=1.0.0"></script>
+    <script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+    <script src="/static/css/inconfont/iconfont.js"></script>
+    <script src="/static/js/jquery-ui.min.js"></script>
+</head>
+
+<body>
+
+    <div class="chatContainer">
+        <div class="chatBox" ref="chatBox">
+            <div class="chatBox-kuang" ref="chatBoxkuang">
+                <div class="chatBox-content">
+                    <div class="chatBox-content-demo" id="chatBox-content-demo">
+
+
+                    </div>
+                </div>
+                <div class="chatBox-send">
+                    <div class="div-textarea" contenteditable="true"></div>
+                    <div>
+                        <!-- <button id="chat-biaoqing" class="btn-default-styles">
+                            <i class="iconfont icon-biaoqing"></i>
+                        </button> -->
+                        <!-- <label id="chat-tuxiang" title="发送图片" for="inputImage" class="btn-default-styles">
+                            <input type="file" onchange="selectImg(this)" accept="image/jpg,image/jpeg,image/png"
+                                   name="file" id="inputImage" class="hidden">
+                            <i class="iconfont icon-tuxiang"></i>
+                        </label> -->
+                        <button id="chat-fasong" class="btn-default-styles"><i class="iconfont icon-fasong"></i>
+                        </button>
+                    </div>
+                    <div class="biaoqing-photo">
+                        <ul>
+                            <li><span class="emoji-picker-image" style="background-position: -9px -18px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -40px -18px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -71px -18px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -102px -18px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -133px -18px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -164px -18px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -9px -52px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -40px -52px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -71px -52px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -102px -52px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -133px -52px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -164px -52px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -9px -86px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -40px -86px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -71px -86px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -102px -86px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -133px -86px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -164px -86px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -9px -120px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -40px -120px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -71px -120px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -102px -120px;"></span>
+                            </li>
+                            <li><span class="emoji-picker-image" style="background-position: -133px -120px;"></span>
+                            </li>
+                            <li><span class="emoji-picker-image" style="background-position: -164px -120px;"></span>
+                            </li>
+                            <li><span class="emoji-picker-image" style="background-position: -9px -154px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -40px -154px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -71px -154px;"></span></li>
+                            <li><span class="emoji-picker-image" style="background-position: -102px -154px;"></span>
+                            </li>
+                            <li><span class="emoji-picker-image" style="background-position: -133px -154px;"></span>
+                            </li>
+                            <li><span class="emoji-picker-image" style="background-position: -164px -154px;"></span>
+                            </li>
+                        </ul>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    </div>
+
+
+    <script>
+
+        screenFuc();
+
+        sendLeft("您好,请问有什么可以帮助您!");
+
+        function screenFuc() {
+            //屏幕小于768px时候,布局change
+            var winWidth = $(window).width();
+            var totalHeight = $(window).height(); //页面整体高度
+
+            winWidth = winWidth < 768 ? 400 : (winWidth - 80)
+            //中间内容高度
+            $(".chatBox-content").css("height", totalHeight - 46);
+            $(".chatBox-content-demo").css("height", totalHeight - 46);
+            $(".chatBox-list").css("height", totalHeight);
+            $(".chatBox-kuang").css("height", totalHeight);
+            $(".div-textarea").css("width", winWidth - 50);
+        }
+        (window.onresize = function () {
+            screenFuc();
+        })();
+
+
+        $(".first-date").html(util.getTime());
+
+
+        function sendLeft(textContent, flag) {
+
+            $('.clearfloat.ls').remove();
+
+            $(".chatBox-content-demo").append("<div class=\"clearfloat " + (flag ? "ls" : "") + "\">" +
+                "<div class=\"author-name\"><small class=\"chat-date\">" + util.getTime() + "</small> </div> " +
+                "<div class=\"left\"> " +
+                "<div class=\"chat-avatars\"><img src=\"/static/chat/img/jqr.png\" alt=\"头像\" /></div> " +
+                "<div class=\"chat-message\"> " + textContent + " </div> " +
+                "</div> </div>");
+
+            //聊天框默认最底部
+            $(document).ready(function () {
+                $("#chatBox-content-demo").scrollTop($("#chatBox-content-demo")[0].scrollHeight);
+            });
+
+
+        }
+
+        //      发送信息
+        $("#chat-fasong").click(function () {
+
+            if ($('.clearfloat.ls').length > 0) {
+
+                util.warning("机器人思考中,请等待...")
+
+                return;
+            }
+
+            var textContent = $(".div-textarea").html().replace(/[\n\r]/g, '<br>')
+            if (textContent != "") {
+                $(".chatBox-content-demo").append("<div class=\"clearfloat\">" +
+                    "<div class=\"author-name\"><small class=\"chat-date\">" + util.getTime() + "</small> </div> " +
+                    "<div class=\"right\"> <div class=\"chat-message\"> " + textContent + " </div> " +
+                    "<div class=\"chat-avatars\"><img src=\"/static/chat/img/icon01.png\" alt=\"头像\" /></div> </div> </div>");
+                //发送后清空输入框
+                $(".div-textarea").html("");
+                //聊天框默认最底部
+                $(document).ready(function () {
+                    $("#chatBox-content-demo").scrollTop($("#chatBox-content-demo")[0].scrollHeight);
+                });
+
+                sendLeft('请稍等...', true)
+
+                postTextContent(textContent);
+            }
+        });
+
+
+        function postTextContent(textContent) {
+
+            util.ajaxJson("", ctx + '/facemgr/chat/multipleConversations', {
+                "content": textContent
+            }, function (data) {
+
+                if (data.result == "0") {
+
+                    var json = $.parseJSON(data.body);
+
+                    sendLeft(json.message)
+
+                    return;
+                }
+
+                sendLeft('哎呀,这个问题有点深奥,不知道怎么回答~')
+
+
+
+            });
+        }
+
+        //      发送表情
+        $("#chat-biaoqing").click(function () {
+            $(".biaoqing-photo").toggle();
+        });
+        $(document).click(function () {
+            $(".biaoqing-photo").css("display", "none");
+        });
+        $("#chat-biaoqing").click(function (event) {
+            event.stopPropagation();//阻止事件
+        });
+
+        $(".emoji-picker-image").each(function () {
+            $(this).click(function () {
+                var bq = $(this).parent().html();
+                console.log(bq)
+                $(".chatBox-content-demo").append("<div class=\"clearfloat\">" +
+                    "<div class=\"author-name\"><small class=\"chat-date\">" + util.getTime() + "</small> </div> " +
+                    "<div class=\"right\"> <div class=\"chat-message\"> " + bq + " </div> " +
+                    "<div class=\"chat-avatars\"><img src=\"/static/chat/img/icon01.png\" alt=\"头像\" /></div> </div> </div>");
+                //发送后关闭表情框
+                $(".biaoqing-photo").toggle();
+                //聊天框默认最底部
+                $(document).ready(function () {
+                    $("#chatBox-content-demo").scrollTop($("#chatBox-content-demo")[0].scrollHeight);
+                });
+            })
+        });
+
+        //      发送图片
+        function selectImg(pic) {
+            if (!pic.files || !pic.files[0]) {
+                return;
+            }
+            var reader = new FileReader();
+            reader.onload = function (evt) {
+                var images = evt.target.result;
+                $(".chatBox-content-demo").append("<div class=\"clearfloat\">" +
+                    "<div class=\"author-name\"><small class=\"chat-date\">" + util.getTime() + "</small> </div> " +
+                    "<div class=\"right\"> <div class=\"chat-message\"><img src=" + images + "></div> " +
+                    "<div class=\"chat-avatars\"><img src=\"/static/chat/img/icon01.png\" alt=\"头像\" /></div> </div> </div>");
+                //聊天框默认最底部
+                $(document).ready(function () {
+                    $("#chatBox-content-demo").scrollTop($("#chatBox-content-demo")[0].scrollHeight);
+                });
+            };
+            reader.readAsDataURL(pic.files[0]);
+
+        }
+
+
+    </script>
+
+</body>
+
+</html>

+ 134 - 0
public/views/chat/quesWordAnalysis.html

@@ -0,0 +1,134 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<title>无纸化集中业务管理系统</title>
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+	<link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+	<link rel="stylesheet" href="/static/css/temp.css" media="all">
+	<script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+	<script src="/static/js/layui.js?v=1.0.0"></script>
+	<script src="/static/js/api.config.js"></script>
+	<script src="/static/js/util.js?v=1.0.0"></script>
+	<script src="/static/js/customform.js?v=1.0.0"></script>
+	<script src="/static/js/url.js?v=1.0.0"></script>
+	<script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+	<script src="/static/css/inconfont/iconfont.js"></script>
+	<script src="/static/js/jquery-ui.min.js"></script>
+	<style>
+		.layui-inline {
+
+			width: 100%;
+		}
+	</style>
+</head>
+
+<body class="bg-info">
+
+	<div class="layui-card layui-card-form">
+
+		<div class="layui-card-body">
+
+			<form class="ag-form layui-form" ag-data-index="1" ag-data-ctx="cfgmgr">
+
+
+
+
+
+				<div class="layui-row" style="margin-bottom: 30px;">
+					<div class=" layui-col-sm6 ">
+						<label class="layui-form-label">问题:</label>
+						<div class="layui-input-block">
+							<textarea name="sentence" ag-verify="required|len" ag-len-max="100" autocomplete="off"
+								placeholder="问题描述" class="layui-textarea"></textarea>
+						</div>
+					</div>
+					<div class=" layui-col-sm6 ">
+						<button class=" layui-btn layui-btn-sm layui-btn-normal  fx-btn" type="button"
+							style="margin-left: 40px;margin-top: 35px;">
+							<i class="layui-icon layui-icon-ok-circle "></i>
+							<span class="btn-span-middle">分析</span>
+						</button>
+					</div>
+				</div>
+
+				<blockquote class="layui-elem-quote">下方分析结果展示。</blockquote>
+
+				<div class="layui-inline layui-col-sm12" style="margin-top: 20px;">
+					<label class="layui-form-label">返回码:</label>
+					<div class="layui-input-block">
+						<input type="text" name="rspCode" readonly="readonly" autocomplete="off" placeholder=""
+							class="layui-input fh">
+					</div>
+				</div>
+
+				<div class="layui-inline layui-col-sm12 ">
+					<label class="layui-form-label">返回信息:</label>
+					<div class="layui-input-block">
+						<textarea name="rspDesc" readonly="readonly" autocomplete="off" placeholder=""
+							class="layui-textarea fh"></textarea>
+					</div>
+				</div>
+
+				<div class="layui-inline layui-col-sm12 ">
+					<label class="layui-form-label">返回数据:</label>
+					<div class="layui-input-block">
+						<textarea name="data" readonly="readonly" autocomplete="off" placeholder=""
+							class="layui-textarea fh"></textarea>
+					</div>
+				</div>
+
+
+			</form>
+
+
+		</div>
+
+
+
+	</div>
+</body>
+<script>
+
+
+	$(".fx-btn").click(function () {
+
+		var val = $("[name=sentence]").val();
+
+		if (util.isNull(val)) {
+
+			util.warning("请输入问题信息");
+
+			return;
+		}
+
+		$(".fh").val("");
+
+		util.ajaxJson("", ctx + '/facemgr/chat/quesWordAnalysis', {
+			"content": val
+		}, function (data) {
+
+			if (data.result == "0") {
+
+				var json = $.parseJSON(data.body);
+
+				for (var key in json) {
+
+					$("[name=" + key + "]").val(JSON.stringify(json[key]));
+				}
+
+				return;
+			}
+
+			util.error(data.desc);
+
+		});
+
+	});
+
+</script>
+
+</html>

+ 146 - 0
public/views/customer/userInfo.html

@@ -0,0 +1,146 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<title>手机客户信息</title>
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+	<link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+	<link rel="stylesheet" href="/static/css/temp.css" media="all">
+	<script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+	<script src="/static/js/layui.js?v=1.0.0"></script>
+	<script src="/static/js/api.config.js"></script>
+	<script src="/static/js/util.js?v=1.0.0"></script>
+	<script src="/static/js/customform.js?v=1.0.0"></script>
+	<script src="/static/js/url.js?v=1.0.0"></script>
+	<script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+	<script src="/static/css/inconfont/iconfont.js"></script>
+	<script src="/static/js/jquery-ui.min.js"></script>
+</head>
+
+<body class="bg-info">
+
+	<div class="layui-card layui-card-margin ">
+
+		<form class="ag-form layui-form" ag-data-index="0">
+
+			<div class="param-left">
+
+				<div class="layui-inline ">
+					<label class="layui-form-label">手机号:</label>
+					<div class="layui-input-block">
+						<input type="text" name="servNo" autocomplete="off" placeholder="手机号" class="layui-input">
+					</div>
+				</div>
+
+			</div>
+
+
+		</form>
+
+		<!--xiacj 说明:注意按钮工具栏不要放到form表单中,查询ajax请求和出发form表单提交,导致url方式变化,导致ajax请求状态为canceld-->
+		<div class="btns-right">
+
+			<button class="ag-btn-query layui-btn layui-btn-sm layui-btn-normal" ag-data-index="0" ag-data-ctx="satisfy"
+				ag-data-url="/customer/userInfo">
+				<i class="layui-icon layui-icon-search "></i>
+				<span class="btn-span-middle">查询</span>
+			</button>
+
+			<button class="ag-btn-reset layui-btn layui-btn-sm layui-btn-normal" ag-data-index="0" type="reset">
+
+				<i class="layui-icon layui-icon-refresh "></i>
+				<span class="btn-span-middle">重置</span>
+			</button>
+
+
+		</div>
+
+	</div>
+
+
+
+
+	<div class=" layui-card  layui-card-list">
+
+		<div class="layui-border-box ">
+
+			<div class="layui-table-tool">
+				<div class="layui-table-tool-temp">
+					<div class="ag-btn-add layui-inline" lay-event ag-data-index="0" ag-win-id="0" ag-win-width="800"
+						ag-win-height="600" ag-win-title="发起工单" ag-data-pk="id"
+						ag-data-url="/views/wo/woLaunch.html?taskId=taskId"><i class="layui-icon layui-icon-edit"></i>
+					</div>
+					<div class="ag-btn-update layui-inline" lay-event ag-data-index="0" ag-win-id="0" ag-win-width="800"
+						ag-win-height="600" ag-win-title="任务处理"
+						ag-data-pk="taskId,taskName,woNo,woTitle,procId,stepId,createTime,procVersions"
+						ag-data-url="/views/wo/woCheck.html"><i class="layui-icon layui-icon-edit"></i></div>
+				</div>
+
+			</div>
+
+		</div>
+
+		<div style="display:none" class="ag-table-header" ag-data-index="0">
+
+			[
+			[{
+			"type": "radio",
+			"fixed": "left"
+			}, {
+			"field": "serv_no",
+			"title": "手机号"
+			}, {
+			"field": "cityName",
+			"title": "地市归属"
+			}, {
+			"field": "countyName",
+			"title": "区县归属"
+			}, {
+			"field": "age",
+			"title": "客户年龄"
+			}, {
+			"field": "innetDate",
+			"title": "入网时间",
+			"sort": true
+			}, {
+			"field": "lcSort",
+			"title": "区域属性",
+			"sort": true
+			}, {
+			"field": "isGroupFlag",
+			"title": "集团用户",
+			"hide": true
+			}, {
+			"field": "isImpFlag",
+			"title": "集团关键人"
+			}, {
+			"field": "custStar",
+			"title": "客户星级"
+			}, {
+			"field": "is5GFlag",
+			"title": "是否5G"
+			}, {
+			"field": "isSchoolFlag",
+			"title": "是否校园"
+			}]
+			]
+		</div>
+		<table class="ag-table layui-hide" id="demo" lay-filter="test" ag-data-index="0">
+
+		</table>
+
+		<div class="pagging ag-area-page">
+
+		</div>
+
+	</div>
+
+	<script>
+
+	</script>
+</body>
+
+</html>

Разница между файлами не показана из-за своего большого размера
+ 296 - 0
public/views/ecClubWork.html


Разница между файлами не показана из-за своего большого размера
+ 430 - 0
public/views/excel.html


Разница между файлами не показана из-за своего большого размера
+ 302 - 0
public/views/exportExcel.html


+ 194 - 0
public/views/flow/editFlow.html

@@ -0,0 +1,194 @@
+<!DOCTYPE html>
+<html>
+
+    <head>
+        <meta charset="utf-8">
+        <title>无纸化集中业务管理系统</title>
+        <meta name="renderer" content="webkit">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+        <link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+        <link rel="stylesheet" href="/static/css/temp.css" media="all">
+
+        <script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+        <script src="/static/js/crypto-js.js"></script>
+        <script src="/static/js/layui.js?v=1.0.0"></script>
+        <script src="/static/js/api.config.js"></script>
+        <script src="/static/js/util.js?v=1.0.0"></script>
+        <script src="/static/js/customform.js?v=1.0.0"></script>
+        <script src="/static/js/url.js?v=1.0.0"></script>
+        <script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+        <script src="/static/css/inconfont/iconfont.js"></script>
+    </head>
+
+    <body class="bg-info">
+
+        <div class="layui-card layui-card-form">
+
+            <div class="layui-card-body">
+
+                <form class="ag-form layui-form" ag-data-index="1">
+
+
+
+
+                    <div>
+                        <label class="layui-form-label">流程名称:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="procName" ag-verify="required" autocomplete="off" placeholder="流程名称"
+                                class="myinput">
+                        </div>
+                    </div>
+
+                    <!-- <div class="layui-inline ">
+						<label class="layui-form-label">流程描述:</label>
+						<div class="layui-input-block">
+								<input type="text" name="processDesc" ag-verify="required" autocomplete="off" placeholder="流程描述" class="layui-input">
+						</div>
+					</div> -->
+
+
+
+
+                </form>
+
+
+            </div>
+
+            <div class="layui-card-footer">
+
+                <button class="layui-btn layui-btn-sm layui-btn-normal " ag-data-index="1" onclick="setFlowInfo()">
+                    <i class="layui-icon layui-icon-ok-circle "></i>
+                    <span class="btn-span-middle">保存</span>
+                </button>
+                <button class="ag-btn-cancel layui-btn layui-btn-sm layui-btn-normal">
+                    <i class="layui-icon layui-icon-close "></i>
+                    <span class="btn-span-middle">取消</span>
+                </button>
+            </div>
+
+        </div>
+    </body>
+    <script>
+
+        $(document.body).ready(function () {
+
+		$("input[name=procName]").val(parent.processInfo["procName"]);
+		$("input[name=processDesc]").val(parent.processInfo["processDesc"]);
+
+
+	});
+
+	function setFlowInfo() {
+		var processName = $("input[name=procName]").val();
+		var processDesc = $("input[name=processDesc]").val();
+
+		util.closeWin();
+		parent.setFlowInfo(processName, processDesc);
+	}
+
+	function delConn() {
+
+		util.showDialog("确认删除连线么?", 3, doDelConn);
+
+	}
+
+	function doDelConn() {
+		util.closeWin();
+		parent.delConn();
+	}
+</script>
+
+</html>
+<style type="text/css">
+    .ag-form {
+        height: auto !important;
+    }
+
+    .layui-card-footer {
+        border: transparent;
+        position: absolute;
+        bottom: 20px;
+        right: 20px;
+    }
+
+    .layui-btn {
+        width: 80px;
+        height: 32px;
+        border: transparent;
+        color: #fff;
+        background: #48A2FF;
+        border-radius: 5px;
+        outline: none;
+        cursor: pointer;
+        margin-left: 10px;
+    }
+
+    .layui-btn:hover {
+        background: #48a2ffab;
+    }
+
+    .ag-btn-cancel {
+        border: 1px solid #ddd;
+        background: #fff;
+        color: #999;
+    }
+
+    .ag-btn-cancel:hover {
+        border: 1px solid #40B6FF;
+        background: #ECF5FF;
+        color: #40B6FF;
+    }
+
+    .bg-info {
+        background: #fff;
+    }
+
+    .layui-card {
+        box-shadow: none;
+    }
+
+    .layui-card-body {
+        padding: 0;
+    }
+
+    .layui-card-form {
+        margin: 0;
+        padding: 20px;
+        position: static;
+    }
+
+    .btn-span-middle {
+        float: none;
+    }
+
+    .layui-form-label {
+        height: 36px;
+        line-height: 36px;
+        padding: 0;
+        float: none;
+        display: inline-block;
+        width: 15%;
+        text-align: right;
+    }
+
+    .layui-input-block {
+        display: inline-block;
+        width: 75%;
+        margin: 0;
+    }
+
+    .myinput {
+        width: 100%;
+        display: inline-block;
+        outline: none;
+        border: 1px solid #ddd;
+        height: 32px;
+        padding-left: 10px;
+        border-radius: 5px;
+    }
+
+    .myinput:focus {
+        border: 1px solid #48A2FF;
+    }
+</style>

+ 262 - 0
public/views/flow/flowDesign.html

@@ -0,0 +1,262 @@
+<html>
+
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <title>流程设计</title>
+  <link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+  <link rel="stylesheet" href="/static/css/temp.css" media="all">
+  <link href="/static/css/flow.css" rel="stylesheet" />
+  
+  <script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+  <script src="/static/js/crypto-js.js"></script>
+  <script src="/static/js/layui.js?v=1.0.0"></script>
+  <script src="/static/js/api.config.js"></script>
+  <script src="/static/js/util.js?v=1.0.0"></script>
+  <script src="/static/js/customform.js?v=1.0.0"></script>
+  <script src="/static/js/url.js?v=1.0.0"></script>
+  <script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+  <script src="/static/css/inconfont/iconfont.js"></script>
+  <script src="/static/js/jquery-ui.min.js"></script>
+  <script src="/static/js/jsplumb.js"></script>
+  <script src="/static/js/jquery.contextmenu.r2.js"></script>
+  <script src="/static/js/flow.js"></script>
+  <style type="text/css">
+    #flowBox {
+      position: relative;
+      overflow: auto;
+      width: 200%;
+    }
+
+    .div-col {
+      display: inline-block;
+      background-color: #e7e7e7;
+      cursor: e-resize;
+      position: absolute;
+      top: 0;
+      height: 100%;
+    }
+
+    .div-col-first {
+      display: inline-block;
+      background-color: #e7e7e7;
+      cursor: e-resize;
+      position: absolute;
+      height: 100%;
+    }
+
+    .div-row {
+      background-color: #e7e7e7;
+      cursor: n-resize;
+      position: absolute;
+      left: 0;
+      width: 100%;
+    }
+
+    .div-row-first {
+      background-color: #e7e7e7;
+      position: absolute;
+      width: 100%;
+    }
+
+    .div-row-title {
+      height: 40px;
+      position: absolute;
+      top: 0;
+      line-height: 40px;
+      text-align: center;
+      display: inline-block;
+    }
+
+    .div-row-title textarea {
+      height: 100%;
+      width: 100%;
+      display: table-cell;
+      vertical-align: middle;
+      line-height: 40px;
+      text-align: center;
+      border: none;
+      overflow: auto;
+      resize: none;
+    }
+
+    .div-row-content {
+      cursor: pointer;
+      height: 40px;
+      position: absolute;
+      top: 0;
+      line-height: 40px;
+      text-align: center;
+      display: inline-block;
+      vertical-align: middle;
+      text-align: center;
+      border: none;
+      overflow: auto;
+    }
+
+    .div-col-content.div-display,
+    .div-row-content.div-display,
+    .div-row-title.div-display,
+    .div-col-title.div-display {
+      display: none;
+      z-index: -9999;
+    }
+
+    .div-col-title {
+      width: 40px;
+      position: absolute;
+      left: 0;
+      text-align: center;
+      display: inline-block;
+    }
+
+    .div-col-title textarea {
+      height: 100%;
+      width: 100%;
+      display: table-cell;
+      vertical-align: middle;
+      line-height: 40px;
+      text-align: center;
+      border: none;
+      overflow: auto;
+      resize: none;
+    }
+
+    .div-col-content {
+      cursor: pointer;
+      width: 40px;
+      position: absolute;
+      left: 0;
+      text-align: center;
+      display: inline-block;
+    }
+
+    .div-first {
+      position: absolute;
+    }
+  </style>
+
+</head>
+
+<body class="layui-layout-body">
+  <div class="pageBox">
+    <div class="flowChartWrapper">
+      <span class="layui-breadcrumb" lay-separator="ㄑ">
+        <!-- <a href="/views/welcome-4.html">首页</a>
+          <a><cite>办公审批流程图</cite></a> -->
+      </span>
+      <ul>
+        <li>
+          <svg class="icon" aria-hidden="true" style="cursor: pointer;" onclick="editFlowInfo()">
+            <use xlink:href="#iconxiangqing"></use>
+          </svg>
+        </li>
+        <li><span></span><span style="cursor: pointer;" onclick="saveFlowInfo()">保存</span></li>
+      </ul>
+    </div>
+    <div class="flowWrapper">
+      <ul class="flowleft">
+        <li>节点</li>
+        <li class="menuItems startNode">
+          <span data_id="startNode" data_type="start" data_name="开始节点" class="btn layui-btn layui-btn-primary "></span>
+        </li>
+        <li class="menuItems IntermediateNode">
+          <div data_id="startNode" data_type="task" data_name="流程节点" class="btn layui-btn layui-btn-primary"></div>
+        </li>
+        <li class="menuItems layui-icon-endNode">
+          <div data_id="endNode" data_type="end" data_name="结束节点" class="btn layui-btn layui-btn-primary"></div>
+        </li>
+        <li class="handleIsShow">
+          <svg class="icon" aria-hidden="true">
+            <use xlink:href="#iconyongdao"></use>
+          </svg>
+        </li>
+      </ul>
+      <div class="flowRight">
+        <div class="flowRightItem flowBox" id="flowBox">
+          <div id="ydt" style="height: 100%;width: 100%;"></div>
+        </div>
+      </div>
+    </div>
+
+  </div>
+
+  <!--右键菜单的源-->
+  <div class="contextMenu" id="myMenu1">
+    <ul>
+      <li id="deleteBtn"><img src="/static/images/contentMenu/cross.png" />删除</li>
+    </ul>
+  </div>
+  <!--右键菜单的源-->
+  <div class="contextMenu" id="myMenu2">
+    <ul>
+      <li id="addRow"><img src="/static/images/contentMenu/cross.png" />添加行</li>
+      <li id="addCol"><img src="/static/images/contentMenu/cross.png" />添加列</li>
+    </ul>
+  </div>
+
+  
+
+  <script>
+    //JavaScript代码区域
+    layui.use('element', function () {
+      var element = layui.element;
+
+
+    });
+
+
+
+
+    $(".layui-icon-endNode").mouseover(function () {
+      layer.tips('结束节点', this, {
+        tips: [2, "#494949"],
+        time: 1000
+      });
+    });
+    $(".IntermediateNode").mouseover(function () {
+      layer.tips('流程节点', this, {
+        tips: [2, "#494949"],
+        time: 1000
+      });
+    });
+    $(".startNode").mouseover(function () {
+      layer.tips('开始节点', this, {
+        tips: [2, "#494949"],
+        time: 1000
+      });
+    });
+    var isok = false
+    // var imagePath = './'
+    $('.handleIsShow').click(function () {
+      if (isok) {
+        $('.div-row-content,.div-first,.div-col-content,.div-row-first,.div-row,.div-col-first,.div-col').css('opacity', 1)
+        $(".flowRightItem.flowBox").css('background-image', 'url(../../static/images/yes-net.png)')
+        $('.handleIsShow').css('color', '#00a0e9')
+        isok = !isok
+      } else {
+        $('.div-row-content,.div-first,.div-col-content,.div-row-first,.div-row,.div-col-first,.div-col').css('opacity', 0)
+        $(".flowRightItem.flowBox").css('background-image', 'url(../../static/images/no-net.png)')
+        $('.handleIsShow').css('color', '#cccccc')
+        isok = !isok
+      }
+    })
+    // 鼠标移入事件
+    // $(".flowRightItem").on('mouseenter',function(){
+    //   $(".flowRightItem").css("overflow","auto !important");
+    // })
+    // $(".flowRightItem").on('mouseleave',function(){
+    //   $(".flowRightItem").css("overflow","hidden !important");
+    // })
+    document.querySelector('.flowRightItem').addEventListener('mouseenter', function () {
+      this.style.overflow = 'scroll'
+    }, false)
+
+    document.querySelector('.flowRightItem').addEventListener('mouseleave', function () {
+      this.style.overflow = 'hidden'
+    }, false)
+  </script>
+
+</body>
+
+</html>

+ 175 - 0
public/views/flow/flowDesignPrew.html

@@ -0,0 +1,175 @@
+<html>
+
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <title>流程设计</title>
+  <link rel="stylesheet" href="/static/layui/css/layui.css">
+  <link rel="stylesheet" href="/static/layui/font-awesome-4.7.0/css/font-awesome.min.css">
+  <link href="/static/css/plugins/jquery-ui/jquery-ui.css" rel="stylesheet" />
+
+
+  <style type="text/css">
+    #flowBox {
+      position: relative;
+      overflow: auto;
+      width: 200%;
+    }
+
+    .div-col {
+      display: inline-block;
+      background-color: #e7e7e7;
+      cursor: e-resize;
+      position: absolute;
+      top: 0;
+      height: 100%;
+    }
+
+    .div-col-first {
+      display: inline-block;
+      background-color: #e7e7e7;
+      cursor: e-resize;
+      position: absolute;
+      height: 100%;
+    }
+
+    .div-row {
+      background-color: #e7e7e7;
+      cursor: n-resize;
+      position: absolute;
+      left: 0;
+      width: 100%;
+    }
+
+    .div-row-first {
+      background-color: #e7e7e7;
+      position: absolute;
+      width: 100%;
+    }
+
+    .div-row-title {
+      height: 40px;
+      position: absolute;
+      top: 0;
+      line-height: 40px;
+      text-align: center;
+      display: inline-block;
+    }
+
+    .div-row-title textarea {
+      height: 100%;
+      width: 100%;
+      display: table-cell;
+      vertical-align: middle;
+      line-height: 40px;
+      text-align: center;
+      border: none;
+      overflow: auto;
+      resize: none;
+    }
+
+    .div-row-content {
+      cursor: pointer;
+      height: 40px;
+      position: absolute;
+      top: 0;
+      line-height: 40px;
+      text-align: center;
+      display: inline-block;
+      vertical-align: middle;
+      text-align: center;
+      border: none;
+      overflow: auto;
+    }
+
+    .div-col-content.div-display,
+    .div-row-content.div-display,
+    .div-row-title.div-display,
+    .div-col-title.div-display {
+      display: none;
+      z-index: -9999;
+    }
+
+    .div-col-title {
+      width: 40px;
+      position: absolute;
+      left: 0;
+      text-align: center;
+      display: inline-block;
+    }
+
+    .div-col-title textarea {
+      height: 100%;
+      width: 100%;
+      display: table-cell;
+      vertical-align: middle;
+      line-height: 40px;
+      text-align: center;
+      border: none;
+      overflow: auto;
+      resize: none;
+    }
+
+    .div-col-content {
+      cursor: pointer;
+      width: 40px;
+      position: absolute;
+      left: 0;
+      text-align: center;
+      display: inline-block;
+    }
+
+    .div-first {
+      position: absolute;
+    }
+
+    .nodeBox.nodeShowSts1 .flow-node-body {
+
+      background-color: #00e9a4;
+    }
+  </style>
+  <link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+  <link rel="stylesheet" href="/static/css/temp.css" media="all">
+  <link href="/static/css/flow.css" rel="stylesheet" />
+  <script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+  <script src="/static/js/crypto-js.js"></script>
+  <script src="/static/js/layui.js?v=1.0.0"></script>
+  <script src="/static/js/api.config.js"></script>
+  <script src="/static/js/util.js?v=1.0.0"></script>
+  <script src="/static/js/customform.js?v=1.0.0"></script>
+  <script src="/static/js/url.js?v=1.0.0"></script>
+  <script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+  <script src="/static/css/inconfont/iconfont.js"></script>
+  <script src="/static/js/jquery-ui.min.js"></script>
+  <script src="/static/js/jsplumb.js"></script>
+  <script src="/static/js/jquery.contextmenu.r2.js"></script>
+  <script src="/static/js/flow.js"></script>
+</head>
+
+<body class="layui-layout-body">
+  <div class="pageBox">
+    <div class="flowWrapper" style="margin-top: 0;">
+
+      <div class="flowRight" style="height: 100vh">
+        <div class="flowRightItem flowBox" id="flowBox" style="margin: 0;overflow: visible;width: 100vw;height: 100vh;box-shadow: none;">
+          <!-- <div id="ydt" style="height: 100%;width: 100%;"></div> -->
+        </div>
+      </div>
+    </div>
+
+  </div>
+  <script>
+    //JavaScript代码区域
+    layui.use('element', function () {
+      var element = layui.element;
+
+
+    });
+
+
+
+  </script>
+
+</body>
+
+</html>

+ 197 - 0
public/views/flow/flowInit.html

@@ -0,0 +1,197 @@
+<!DOCTYPE html>
+<html>
+
+    <head>
+        <meta charset="utf-8">
+        <title>无纸化集中业务管理系统</title>
+        <meta name="renderer" content="webkit">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+        <link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+        <link rel="stylesheet" href="/static/css/temp.css" media="all">
+
+        <script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+        <script src="/static/js/crypto-js.js"></script>
+        <script src="/static/js/layui.js?v=1.0.0"></script>
+        <script src="/static/js/api.config.js"></script>
+        <script src="/static/js/util.js?v=1.0.0"></script>
+        <script src="/static/js/customform.js?v=1.0.0"></script>
+        <script src="/static/js/url.js?v=1.0.0"></script>
+        <script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+        <script src="/static/css/inconfont/iconfont.js"></script>
+    </head>
+
+    <body class="bg-info">
+
+        <div class="layui-card layui-card-margin ">
+
+            <form class="ag-form layui-form" ag-data-index="0">
+
+                <div class="param-left">
+
+                    <div class="layui-inline ">
+                        <label class="layui-form-label">流程名称:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="procName" autocomplete="off" placeholder="流程名称" class="layui-input">
+                        </div>
+                    </div>
+                    <div class="layui-inline ">
+                        <label class="layui-form-label">流程编码:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="procId" autocomplete="off" placeholder="流程编码" class="layui-input">
+                        </div>
+                    </div>
+                </div>
+
+
+            </form>
+
+            <!--xiacj 说明:注意按钮工具栏不要放到form表单中,查询ajax请求和出发form表单提交,导致url方式变化,导致ajax请求状态为canceld-->
+            <div class="btns-right">
+
+                <button class="ag-btn-query layui-btn layui-btn-sm layui-btn-normal" ag-data-index="0" ag-data-ctx="bpm"
+                    ag-data-url="/api/queryBpmProcList" ag-data-callBack="initTaskList">
+                    <i class="layui-icon layui-icon-search "></i>
+                    <span class="btn-span-middle">查询</span>
+                </button>
+
+                <button class="ag-btn-reset layui-btn layui-btn-sm layui-btn-normal" ag-data-index="0" type="reset">
+
+                    <i class="layui-icon layui-icon-refresh "></i>
+                    <span class="btn-span-middle">重置</span>
+                </button>
+
+
+            </div>
+
+        </div>
+
+
+
+
+        <div class=" layui-card  layui-card-list" style="height: calc( 100vh - 105px);">
+
+            <div class="layui-border-box ">
+
+                <div class="layui-table-tool">
+                    <div class="layui-table-tool-temp">
+                        <div class="ag-btn-add layui-inline" lay-event ag-data-index="0" ag-win-id="0" ag-win-width="800"
+                            ag-win-height="600" ag-win-title="流程绘制" ag-data-url="/flowDesign" ag-win-type="2"><i class="layui-icon layui-icon-add-1"></i></div>
+                        <div class="ag-btn-update layui-inline" lay-event ag-data-index="0" ag-win-id="0" ag-win-width="2000"
+                            ag-win-height="1200" ag-win-title="流程修改" ag-data-pk="procId" ag-data-url="./flowDesign.html"><i
+                                class="layui-icon layui-icon-edit"></i></div>
+                        <div class="ag-btn-del layui-inline" lay-event ag-data-index="0" ag-data-pk="procId"
+                            ag-data-url="/sys/settings/notice/del"><i class="layui-icon layui-icon-delete"></i></div>
+                    </div>
+
+                </div>
+
+            </div>
+
+            <script type="text/html" id="barDemo">
+                <a class="layui-btn layui-btn-xs" lay-event="edit">查看</a>
+</script>
+            <div style="display:none" class="ag-table-header" ag-data-index="0">
+
+                [
+                [
+                {
+                "type": "radio",
+                "fixed": "left"
+                },{
+                "field": "procId",
+                "title": "流程编号"
+                }, {
+                "field": "procName",
+                "title": "流程名称"
+                }, {
+                "field": "procVersionShow",
+                "title": "流程版本",
+                "hide": true
+                }, {
+                "field": "procVersion",
+                "title": "流程版本",
+                "hide": true
+                }, {
+                "field": "pubNo",
+                "title": "发布工号",
+                "hide": true
+                }, {
+                "field": "procType",
+                "title": "流程类型",
+                "hide": true
+                }, {
+                "field": "procTypeDesc",
+                "title": "流程类型",
+                "hide": true
+                }, {
+                "field": "procSts",
+                "title": "状态",
+                "hide": true
+                }, {
+                "field": "procStsDesc",
+                "title": "状态",
+                "hide": true
+                }, {
+                "field": "opNo",
+                "title": "创建工号"
+                }, {
+                "field": "opName",
+                "title": "创建人"
+                }, {
+                "field": "opTime",
+                "title": "创建时间"
+                }, {
+                "field": "actionUrl",
+                "title": "表单地址"
+                },
+                {
+                "field": "actionName",
+                "title": "表单名称"
+                },
+                {
+                "width": 120,
+                "title": "操作",
+                "fixed": "right",
+                "btns": [
+
+                {
+                "className": "",
+                "openTitle":"流程发起",
+                "btnVal":"发起",
+                "width":"1000",
+                "height":"800",
+                "url":
+                "@actionUrl@?taskName=#actionName#&fqFlag=Y&procId=#procId#&woTitle=#procName#&procName=#procName#&procVersion=#procVersion#",
+                "openType": "1"
+                }
+                ]
+                }
+                ]
+                ]
+
+            </div>
+            <table class="ag-table layui-hide" id="demo" lay-filter="test" ag-data-index="0">
+
+            </table>
+
+            <div class="pagging ag-area-page">
+
+            </div>
+
+        </div>
+
+        <script>
+            // layui.use(['table'],
+            //     function() {
+            //         var table = layui.table;
+            //         table.on('tool(test)', function(obj) {
+            //             var data = obj.data;
+            //             console.log(data)
+            //             window.open('../cs.html','_blank')
+            //         });
+            //     })
+        </script>
+    </body>
+
+</html>

+ 166 - 0
public/views/flow/setCondi.html

@@ -0,0 +1,166 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>无纸化集中业务管理系统</title>
+        <meta name="renderer" content="webkit">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+
+    </head>
+    <body class="bg-info">
+
+        <div class="layui-card layui-card-form">
+
+            <div class="layui-card-body">
+
+                <form class="ag-form layui-form" ag-data-index="1" ag-data-url="/sys/settings/notices/addInit">
+
+                    <div class="layui-inline ">
+                        <label class="layui-form-label">条件描述:</label>
+                        <div class="layui-input-block">
+                            <input class='myinput' type="text" name="condiVal" ag-verify="required" autocomplete="off"
+                                placeholder="条件描述" class="layui-input">
+                        </div>
+                    </div>
+
+                    <div class="layui-inline ">
+                        <label class="layui-form-label">条件配置:</label>
+                        <div class="layui-input-block">
+                            <input class='myinput' type="text" name="condiExpr" ag-verify="required" autocomplete="off"
+                                placeholder="条件配置" class="layui-input">
+                        </div>
+
+                    </div>
+
+                </form>
+
+
+            </div>
+
+
+            <div class="layui-card-footer">
+                <button class="layui-btn layui-btn-sm layui-btn-normal " ag-data-index="1" onclick="setConn()">
+                    <i class="layui-icon layui-icon-ok-circle "></i>
+                    <span class="btn-span-middle">保存</span>
+                </button>
+                <button class="layui-btn layui-btn-sm layui-btn-normal" onclick="delConn()">
+                    <i class="layui-icon layui-icon-close "></i>
+                    <span class="btn-span-middle">删除</span>
+                </button>
+
+
+            </div>
+        </div>
+    </body>
+    <script src="../../js/jquery-1.8.2.min.js"></script>
+    <script src="../../js/util.js"></script>
+    <script src="../../js/flowNode.js"></script>
+    <script src="../../js/layui.js"></script>
+    <script src="../../js/layui.all.js"></script>
+    <script src="../../js/lay/lay-config.js"></script>
+    <script>
+        function setConn() {
+            var condiVal = $("input[name=condiVal]").val();
+            var condiExpr = $("input[name=condiExpr]").val();
+            util.closeWin();
+            parent.setConn(condiVal, condiExpr);
+        }
+
+        function delConn() {
+
+            util.showDialog("确认删除连线么?", 3, doDelConn);
+
+        }
+
+        function doDelConn() {
+            util.closeWin();
+            parent.delConn();
+        }
+
+        function GetQueryString(name) {
+            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
+            var r = window.location.search.substr(1).match(reg);
+            if (r != null) return unescape(r[2]);
+            return null;
+        }
+
+        function getcondi() {
+            let condiVal = GetQueryString("condiVal");
+            let condiExpr = GetQueryString("condiExpr");
+            condiVal != 'undefined'? $("input[name=condiVal]").val(condiVal) : '';
+            condiExpr != 'undefined'? $("input[name=condiExpr]").val(condiExpr) : '';
+
+        }
+
+        getcondi();
+    </script>
+
+
+    <style>
+        .layui-inline {
+            margin-bottom: 20px;
+        }
+
+        .layui-card {
+            padding: 20px;
+        }
+
+        .layui-form-label {
+            height: 28px;
+            line-height: 28px;
+        }
+
+        .layui-input-block {
+            display: inline-block;
+            width: 75%;
+        }
+
+        .myinput {
+            width: 100%;
+            display: inline-block;
+            outline: none;
+            border: 1px solid #ddd;
+            height: 32px;
+            padding-left: 10px;
+            border-radius: 5px;
+        }
+
+        .myinput:focus {
+            border: 1px solid #48A2FF;
+        }
+
+        .layui-card-footer {
+            position: absolute;
+            bottom: 20px;
+            right: 20px;
+        }
+
+        .layui-btn {
+            width: 80px;
+            height: 32px;
+            border: transparent;
+            color: #fff;
+            background: #48A2FF;
+            border-radius: 5px;
+            outline: none;
+            cursor: pointer;
+            margin-left: 10px;
+        }
+
+        .layui-btn:hover {
+            background: #48a2ffab;
+        }
+
+        .ag-btn-cancel {
+            border: 1px solid #ddd;
+            background: #fff;
+            color: #999;
+        }
+
+        .ag-btn-cancel:hover {
+            border: 1px solid #40B6FF;
+            background: #ECF5FF;
+            color: #40B6FF;
+        }
+    </style>

+ 282 - 0
public/views/flow/setNode_end.html

@@ -0,0 +1,282 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>无纸化集中业务管理系统</title>
+        <meta name="renderer" content="webkit">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+        <link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+        <link rel="stylesheet" href="/static/css/temp.css" media="all">
+        <script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+        <script src="/static/js/layui.js?v=1.0.0"></script>
+        <script src="/static/js/api.config.js"></script>
+        <script src="/static/js/util.js?v=1.0.0"></script>
+        <script src="/static/js/customform.js?v=1.0.0"></script>
+        <script src="/static/js/url.js?v=1.0.0"></script>
+        <script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+        <script src="/static/css/inconfont/iconfont.js"></script>
+        <script src="/static/js/jquery-ui.min.js"></script>
+    </head>
+    <body class="bg-info">
+
+        <div class="layui-card layui-card-form">
+
+            <div class="layui-card-body">
+
+                <form class="ag-form layui-form" ag-data-index="1" ag-data-ctx="bpm" ag-data-url="/api/nodeInit"
+                    ag-form-callBack="initNode">
+
+
+                    <div class="layui-inline">
+                        <label class="layui-form-label">环节名称:</label>
+                        <div class="layui-input-block">
+                            <input type="hidden" name="stepId">
+                            <input class="myinput" type="text" name="stepName" ag-verify="required" autocomplete="off"
+                                placeholder="环节名称" class="layui-input">
+                        </div>
+                    </div>
+
+                    <div class="layui-inline">
+                        <label class="layui-form-label">插件:</label>
+                        <div class="layui-input-block">
+                            <select class='mysel' id="selopt" name="prePluginDesc" lay-filter="aihao">
+
+                            </select>
+                            <input type="hidden" name="getPrePluginDesc" id="seloptDesc">
+                            <input type="hidden" name="getPrePluginName" id="seloptname">
+                        </div>
+                    </div>
+
+                </form>
+
+
+            </div>
+
+            <div class="layui-card-footer">
+
+                <button class="layui-btn layui-btn-sm layui-btn-normal flow-save " ag-data-index="1">
+                    <i class="layui-icon layui-icon-ok-circle "></i>
+                    <span class="btn-span-middle">保存</span>
+                </button>
+                <button class="ag-btn-cancel  layui-btn layui-btn-sm layui-btn-normal flow-nosave">
+                    <i class="layui-icon layui-icon-close "></i>
+                    <span class="btn-span-middle">取消</span>
+                </button>
+            </div>
+
+        </div>
+    </body>
+    <script src="../../js/flowNode.js"></script>
+    <script>
+        var actionName = [];
+        util.ajaxJson("", '/bpm/api/queryBpmPrePluginList', {}, function(page) {
+            actionName = page;
+            let opt = '';
+            for (let i = 0; i < page.length; i++) {
+                opt += '<option value ="' + page[i].implClassDesc + '">' + page[i].implClassDesc + '</option>'
+            }
+            document.getElementById('selopt').innerHTML = opt;
+            document.getElementById("selopt").value = '';
+            // document.getElementsByName("getPrePluginDesc")[0].value = actionName[0].implClassDesc;
+            // document.getElementsByName("getPrePluginName")[0].value = actionName[0].implClassName;
+        })
+
+        layui.use(['form', 'layedit', 'laydate'], function() {
+            var form = layui.form;
+            form.on('select(aihao)', function(data) {
+                for (let i = 0; i < actionName.length; i++) {
+                    if (actionName[i].implClassDesc == data.value) {
+                        document.getElementsByName("getPrePluginDesc")[0].value = actionName[i].implClassDesc;
+                        document.getElementsByName("getPrePluginName")[0].value = actionName[i].implClassName;
+                    }
+                }
+            });
+        });
+    </script>
+</html>
+<style>
+    .layui-unselect {
+        width: 101%;
+    }
+
+    .ag-form {
+        /* height: 400px !important; */
+        /* overflow: hidden!important; */
+        padding-top: 20px;
+    }
+
+    .layui-inline {
+        margin-bottom: 20px;
+        width: 100%;
+    }
+
+    .layui-card {
+        padding: 20px;
+    }
+
+    .layui-form-label {
+        height: 28px;
+        line-height: 28px;
+    }
+
+    .layui-input-block {
+        display: inline-block;
+        width: 75%;
+    }
+
+    .myinput {
+        width: 100%;
+        display: inline-block;
+        outline: none;
+        border: 1px solid #ddd;
+        height: 32px;
+        padding-left: 10px;
+        border-radius: 5px;
+    }
+
+    .myinput:focus {
+        border: 1px solid #48A2FF;
+    }
+
+    .mysel {
+        width: 103%;
+        display: inline-block;
+        outline: none;
+        border: 1px solid #ddd;
+        height: 36px;
+        padding-left: 10px;
+        border-radius: 5px;
+    }
+
+    .mysel:focus {
+        border: 1px solid #48A2FF;
+    }
+
+    .layui-card-footer {
+        position: absolute;
+        bottom: 20px;
+        right: 20px;
+    }
+
+    .layui-btn {
+        width: 80px;
+        height: 32px;
+        border: transparent;
+        color: #fff;
+        background: #48A2FF;
+        border-radius: 5px;
+        outline: none;
+        cursor: pointer;
+        margin-left: 10px;
+    }
+
+    .layui-btn:hover {
+        background: #48a2ffab;
+    }
+
+    .ag-btn-cancel {
+        border: 1px solid #ddd;
+        background: #fff;
+        color: #999;
+    }
+
+    .ag-btn-cancel:hover {
+        border: 1px solid #40B6FF;
+        background: #ECF5FF;
+        color: #40B6FF;
+    }
+</style>
+<style type="text/css">
+    .ag-form {
+        /* height: auto !important; */
+    }
+
+    .layui-card-footer {
+        border: transparent;
+        position: absolute;
+        bottom: 20px;
+        right: 20px;
+    }
+
+    .layui-btn {
+        width: 80px;
+        height: 32px;
+        border: transparent;
+        color: #fff;
+        background: #48A2FF;
+        border-radius: 5px;
+        outline: none;
+        cursor: pointer;
+        margin-left: 10px;
+    }
+
+    .layui-btn:hover {
+        background: #48a2ffab;
+    }
+
+    .ag-btn-cancel {
+        border: 1px solid #ddd;
+        background: #fff;
+        color: #999;
+    }
+
+    .ag-btn-cancel:hover {
+        border: 1px solid #40B6FF;
+        background: #ECF5FF;
+        color: #40B6FF;
+    }
+
+    .bg-info {
+        background: #fff;
+    }
+
+    .layui-card {
+        box-shadow: none;
+    }
+
+    .layui-card-body {
+        padding: 0;
+        overflow: hidden;
+    }
+
+    .layui-card-form {
+        margin: 0;
+        padding: 20px;
+        position: static;
+    }
+
+    .btn-span-middle {
+        float: none;
+    }
+
+    .layui-form-label {
+        height: 36px;
+        line-height: 36px;
+        padding: 0;
+        float: none;
+        display: inline-block;
+        width: 15%;
+        text-align: right;
+    }
+
+    .layui-input-block {
+        display: inline-block;
+        width: 75%;
+        margin: 0;
+    }
+
+    .myinput {
+        width: 100%;
+        display: inline-block;
+        outline: none;
+        border: 1px solid #ddd;
+        height: 36px;
+        padding-left: 10px;
+        border-radius: 5px;
+    }
+
+    .myinput:focus {
+        border: 1px solid #48A2FF;
+    }
+</style>

+ 118 - 0
public/views/flow/setNode_start.html

@@ -0,0 +1,118 @@
+<!DOCTYPE html>
+<html>
+
+    <head>
+        <meta charset="utf-8">
+        <title>无纸化集中业务管理系统</title>
+        <meta name="renderer" content="webkit">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+
+    </head>
+    <body class="bg-info">
+
+
+        <div class="layui-card layui-card-form">
+            <div class="layui-card-body">
+
+                <form class="ag-form layui-form" ag-data-index="1">
+
+
+
+                    <div class="layui-inline ">
+                        <label class="layui-form-label">环节名称:</label>
+                        <div class="layui-input-block">
+                            <input type="hidden" name="stepId">
+                            <input class='myinput' type="text" name="stepName" ag-verify="required" autocomplete="off"
+                                placeholder="环节名称" class="layui-input">
+                        </div>
+                    </div>
+                </form>
+
+
+                <div class="layui-card-footer">
+                    <button class="layui-btn layui-btn-sm layui-btn-normal  flow-save" ag-data-index="1">
+                        <i class="layui-icon layui-icon-ok-circle "></i>
+                        <span class="btn-span-middle">保存</span>
+                    </button>
+                    <button class="ag-btn-cancel  layui-btn layui-btn-sm layui-btn-normal flow-nosave">
+                        <i class="layui-icon layui-icon-close "></i>
+                        <span class="btn-span-middle">取消</span>
+                    </button>
+                </div>
+            </div>
+        </div>
+    </body>
+    <script src="../../js/jquery-1.8.2.min.js"></script>
+    <script src="../../js/util.js"></script>
+    <script src="../../js/flowNode.js"></script>
+
+    <script>
+
+    </script>
+
+</html>
+
+<style>
+    .layui-card {
+        padding: 20px;
+    }
+
+    .layui-form-label {
+        height: 28px;
+        line-height: 28px;
+    }
+
+    .layui-input-block {
+        display: inline-block;
+        width: 75%;
+    }
+
+    .myinput {
+        width: 100%;
+        display: inline-block;
+        outline: none;
+        border: 1px solid #ddd;
+        height: 32px;
+        padding-left: 10px;
+        border-radius: 5px;
+    }
+
+    .myinput:focus {
+        border: 1px solid #48A2FF;
+    }
+
+    .layui-card-footer {
+        position: absolute;
+        bottom: 20px;
+        right: 20px;
+    }
+
+    .layui-btn {
+        width: 80px;
+        height: 32px;
+        border: transparent;
+        color: #fff;
+        background: #48A2FF;
+        border-radius: 5px;
+        outline: none;
+        cursor: pointer;
+        margin-left: 10px;
+    }
+
+    .layui-btn:hover {
+        background: #48a2ffab;
+    }
+
+    .ag-btn-cancel {
+        border: 1px solid #ddd;
+        background: #fff;
+        color: #999;
+    }
+
+    .ag-btn-cancel:hover {
+        border: 1px solid #40B6FF;
+        background: #ECF5FF;
+        color: #40B6FF;
+    }
+</style>

+ 326 - 0
public/views/flow/setNode_task.html

@@ -0,0 +1,326 @@
+<!DOCTYPE html>
+<html>
+
+    <head>
+        <meta charset="utf-8">
+        <title>无纸化集中业务管理系统</title>
+        <meta name="renderer" content="webkit">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+        <link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+        <link rel="stylesheet" href="/static/css/temp.css" media="all">
+        <script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+        <script src="/static/js/layui.js?v=1.0.0"></script>
+        <script src="/static/js/api.config.js"></script>
+        <script src="/static/js/util.js?v=1.0.0"></script>
+        <script src="/static/js/customform.js?v=1.0.0"></script>
+        <script src="/static/js/url.js?v=1.0.0"></script>
+        <script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+        <script src="/static/css/inconfont/iconfont.js"></script>
+        <script src="/static/js/jquery-ui.min.js"></script>
+    </head>
+    <body class="bg-info">
+
+        <div>
+
+            <div>
+
+                <form class="ag-form layui-form" ag-data-index="1" ag-data-ctx="bpm" ag-data-url="/api/nodeInit"
+                    ag-form-callBack="initNode">
+
+
+                    <div class="layui-inline ">
+                        <label class="layui-form-label">环节名称:</label>
+                        <div class="layui-input-block">
+                            <input type="hidden" name="stepId">
+                            <input class='myinput' type="text" name="stepName" ag-verify="required" autocomplete="off"
+                                placeholder="环节名称" class="layui-input">
+                        </div>
+                    </div>
+
+                    <div class="layui-inline ">
+                        <label class="layui-form-label">处理角色:</label>
+                        <div class="layui-input-block">
+                            <select class='mysel' name="roleCode" ag-sel-name="roleName">
+
+                            </select>
+                        </div>
+                    </div>
+
+                    <div class="layui-inline ">
+                        <label class="layui-form-label">派单方式:</label>
+                        <div class="layui-input-block">
+                            <select class='mysel' name="dispatchType" ag-sel-name="dispathTypeDesc">
+
+                            </select>
+                        </div>
+                    </div>
+
+                    <div class="layui-inline ">
+                        <label class="layui-form-label">处理表单:</label>
+                        <div class="layui-input-block">
+                            <select class='mysel' name="actionUrl" ag-sel-name="actionName">
+
+                            </select>
+                        </div>
+                    </div>
+
+                    <div class="layui-inline ">
+                        <label class="layui-form-label">插件:</label>
+                        <div class="layui-input-block">
+                            <select class='mysel' id="selopt" name="prePluginDesc" lay-filter="aihao">
+
+                            </select>
+                            <input type="hidden" name="getPrePluginDesc" id="seloptDesc">
+                            <input type="hidden" name="getPrePluginName" id="seloptname">
+                        </div>
+                    </div>
+					
+					<div class="layui-inline">
+					    <label class="layui-form-label">预警时间:</label>
+						<div class="layui-input-block">
+						    <input class='myinput' type="text" 
+						        placeholder="预警时间" class="layui-input">
+						</div>
+					</div>
+					
+					<div class="layui-inline">
+					    <label class="layui-form-label">告警时间:</label>
+						<div class="layui-input-block">
+						    <input class='myinput' type="text" 
+						        placeholder="告警时间" class="layui-input">
+						</div>
+					</div>
+
+                </form>
+                <div class="layui-card-footer">
+                    <button class="layui-btn layui-btn-sm layui-btn-normal flow-save " ag-data-index="1">
+                        <i class="layui-icon layui-icon-ok-circle "></i>
+                        <span class="btn-span-middle">保存</span>
+                    </button>
+                    <button class="ag-btn-cancel  layui-btn layui-btn-sm layui-btn-normal flow-nosave">
+                        <i class="layui-icon layui-icon-close "></i>
+                        <span class="btn-span-middle">取消</span>
+                    </button>
+                </div>
+            </div>
+
+
+
+        </div>
+    </body>
+    <script src="../../js/flowNode.js"></script>
+    <script>
+        var actionName = [];
+        util.ajaxJson("", '/bpm/api/queryBpmPrePluginList', {}, function (page) {
+            actionName = page;
+            let opt = '';
+            for(let i=0;i<page.length;i++){
+                opt += '<option value ="'+page[i].implClassDesc+'">'+page[i].implClassDesc+'</option>'
+            }
+            document.getElementById('selopt').innerHTML = opt;
+            document.getElementById("selopt").value = '';
+            // document.getElementsByName("getPrePluginDesc")[0].value = actionName[0].implClassDesc;
+            // document.getElementsByName("getPrePluginName")[0].value = actionName[0].implClassName;
+        })
+
+        layui.use(['form', 'layedit', 'laydate'], function () {
+            var form = layui.form;
+            form.on('select(aihao)', function (data) {
+                for(let i=0;i<actionName.length;i++){
+                    if(actionName[i].implClassDesc == data.value){
+                        document.getElementsByName("getPrePluginDesc")[0].value = actionName[i].implClassDesc;
+                        document.getElementsByName("getPrePluginName")[0].value = actionName[i].implClassName;
+                    }
+                }
+            });
+        });
+    </script>
+
+
+</html>
+<style>
+    .layui-unselect {
+        width: 101%;
+    }
+
+    .ag-form {
+        /* height: 400px !important; */
+        /* overflow: hidden!important; */
+        padding-top: 20px;
+    }
+
+    .layui-inline {
+        margin-bottom: 20px;
+        width: 100%;
+    }
+
+    .layui-card {
+        padding: 20px;
+    }
+
+    .layui-form-label {
+        height: 28px;
+        line-height: 28px;
+    }
+
+    .layui-input-block {
+        display: inline-block;
+        width: 75%;
+    }
+
+    .myinput {
+        width: 100%;
+        display: inline-block;
+        outline: none;
+        border: 1px solid #ddd;
+        height: 32px;
+        padding-left: 10px;
+        border-radius: 5px;
+    }
+
+    .myinput:focus {
+        border: 1px solid #48A2FF;
+    }
+
+    .mysel {
+        width: 103%;
+        display: inline-block;
+        outline: none;
+        border: 1px solid #ddd;
+        height: 36px;
+        padding-left: 10px;
+        border-radius: 5px;
+    }
+
+    .mysel:focus {
+        border: 1px solid #48A2FF;
+    }
+
+    .layui-card-footer {
+        position: absolute;
+        bottom: 20px;
+        right: 20px;
+    }
+
+    .layui-btn {
+        width: 80px;
+        height: 32px;
+        border: transparent;
+        color: #fff;
+        background: #48A2FF;
+        border-radius: 5px;
+        outline: none;
+        cursor: pointer;
+        margin-left: 10px;
+    }
+
+    .layui-btn:hover {
+        background: #48a2ffab;
+    }
+
+    .ag-btn-cancel {
+        border: 1px solid #ddd;
+        background: #fff;
+        color: #999;
+    }
+
+    .ag-btn-cancel:hover {
+        border: 1px solid #40B6FF;
+        background: #ECF5FF;
+        color: #40B6FF;
+    }
+</style>
+<style type="text/css">
+    .ag-form {
+        /* height: auto !important; */
+    }
+
+    .layui-card-footer {
+        border: transparent;
+        position: absolute;
+        bottom: 20px;
+        right: 20px;
+    }
+
+    .layui-btn {
+        width: 80px;
+        height: 32px;
+        border: transparent;
+        color: #fff;
+        background: #48A2FF;
+        border-radius: 5px;
+        outline: none;
+        cursor: pointer;
+        margin-left: 10px;
+    }
+
+    .layui-btn:hover {
+        background: #48a2ffab;
+    }
+
+    .ag-btn-cancel {
+        border: 1px solid #ddd;
+        background: #fff;
+        color: #999;
+    }
+
+    .ag-btn-cancel:hover {
+        border: 1px solid #40B6FF;
+        background: #ECF5FF;
+        color: #40B6FF;
+    }
+
+    .bg-info {
+        background: #fff;
+    }
+
+    .layui-card {
+        box-shadow: none;
+    }
+
+    .layui-card-body {
+        padding: 0;
+        overflow: hidden;
+    }
+
+    .layui-card-form {
+        margin: 0;
+        padding: 20px;
+        position: static;
+    }
+
+    .btn-span-middle {
+        float: none;
+    }
+
+    .layui-form-label {
+        height: 36px;
+        line-height: 36px;
+        padding: 0;
+        float: none;
+        display: inline-block;
+        width: 15%;
+        text-align: right;
+    }
+
+    .layui-input-block {
+        display: inline-block;
+        width: 75%;
+        margin: 0;
+    }
+
+    .myinput {
+        width: 100%;
+        display: inline-block;
+        outline: none;
+        border: 1px solid #ddd;
+        height: 36px;
+        padding-left: 10px;
+        border-radius: 5px;
+    }
+
+    .myinput:focus {
+        border: 1px solid #48A2FF;
+    }
+</style>

Разница между файлами не показана из-за своего большого размера
+ 308 - 0
public/views/foocusAssessH.html


+ 69 - 0
public/views/form/formAdd.html

@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<title>无纸化集中业务管理系统</title>
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+	<link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+	<link rel="stylesheet" href="/static/css/temp.css" media="all">
+	<script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+	<script src="/static/js/crypto-js.js"></script>
+	<script src="/static/js/layui.js?v=1.0.0"></script>
+	<script src="/static/js/api.config.js"></script>
+	<script src="/static/js/util.js?v=1.0.0"></script>
+	<script src="/static/js/customform.js?v=1.0.0"></script>
+	<script src="/static/js/url.js?v=1.0.0"></script>
+	<script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+	<script src="/static/css/inconfont/iconfont.js"></script>
+</head>
+
+<body class="bg-info">
+
+	<div class="layui-card layui-card-form">
+
+		<div class="layui-card-body">
+
+			<form class="ag-form layui-form" ag-data-index="1">
+
+
+				<div class="layui-inline ">
+					<label class="layui-form-label">名称:</label>
+					<div class="layui-input-block">
+						<input type="text" name="formName" ag-verify="required" autocomplete="off" placeholder="名称"
+							class="layui-input">
+					</div>
+				</div>
+
+				<div class="layui-inline ">
+					<label class="layui-form-label">地址:</label>
+					<div class="layui-input-block">
+						<input type="text" name="actionUrl" ag-verify="required" autocomplete="off" placeholder="地址"
+							class="layui-input">
+					</div>
+				</div>
+
+			</form>
+
+
+		</div>
+
+		<div class="layui-card-footer">
+
+			<button class="ag-btn-save layui-btn layui-btn-sm layui-btn-normal " ag-data-ctx="bpm"
+				ag-data-url="/api/addBpmForm" ag-data-index="1">
+				<i class="layui-icon layui-icon-ok-circle "></i>
+				<span class="btn-span-middle">保存</span>
+			</button>
+			<button class="ag-btn-cancel layui-btn layui-btn-sm layui-btn-normal">
+				<i class="layui-icon layui-icon-close "></i>
+				<span class="btn-span-middle">取消</span>
+			</button>
+		</div>
+
+	</div>
+</body>
+
+</html>

+ 137 - 0
public/views/form/formInit.html

@@ -0,0 +1,137 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<title>无纸化集中业务管理系统</title>
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+	<link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+	<link rel="stylesheet" href="/static/css/temp.css" media="all">
+	<script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+	<script src="/static/js/crypto-js.js"></script>
+	<script src="/static/js/layui.js?v=1.0.0"></script>
+	<script src="/static/js/api.config.js"></script>
+	<script src="/static/js/util.js?v=1.0.0"></script>
+	<script src="/static/js/customform.js?v=1.0.0"></script>
+	<script src="/static/js/url.js?v=1.0.0"></script>
+	<script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+	<script src="/static/css/inconfont/iconfont.js"></script>
+</head>
+
+<body class="bg-info">
+
+	<div class="layui-card layui-card-margin ">
+
+		<form class="ag-form layui-form" ag-data-index="0">
+
+			<div class="param-left">
+
+				<div class="layui-inline ">
+					<label class="layui-form-label">编码:</label>
+					<div class="layui-input-block">
+						<input type="text" name="formCode" autocomplete="off" placeholder="菜单编码" class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline ">
+					<label class="layui-form-label">名称:</label>
+					<div class="layui-input-block">
+						<input type="text" name="formCode" autocomplete="off" placeholder="表单名称" class="layui-input">
+					</div>
+				</div>
+			</div>
+
+
+		</form>
+
+		<!--xiacj 说明:注意按钮工具栏不要放到form表单中,查询ajax请求和出发form表单提交,导致url方式变化,导致ajax请求状态为canceld-->
+		<div class="btns-right">
+
+			<button class="ag-btn-query layui-btn layui-btn-sm layui-btn-normal" ag-data-index="0" ag-data-ctx="bpm"
+				ag-data-url="/api/queryBpmFormListPage">
+				<i class="layui-icon layui-icon-search "></i>
+				<span class="btn-span-middle">查询</span>
+			</button>
+
+			<button class="ag-btn-reset layui-btn layui-btn-sm layui-btn-normal" ag-data-index="0" type="reset">
+
+				<i class="layui-icon layui-icon-refresh "></i>
+				<span class="btn-span-middle">重置</span>
+			</button>
+
+
+		</div>
+
+	</div>
+
+
+
+
+	<div class=" layui-card  layui-card-list">
+
+		<div class="layui-border-box ">
+
+			<div class="layui-table-tool">
+				<div class="layui-table-tool-temp">
+					<div class="ag-btn-add layui-inline" lay-event ag-data-index="0" ag-win-id="0" ag-win-width="800"
+						ag-win-height="600" ag-win-title="新建" ag-data-pk="formCode"
+						ag-data-url="/static/views/form/formAdd.html"><i class="layui-icon layui-icon-add-1"></i></div>
+					<div class="ag-btn-update layui-inline" lay-event ag-data-index="0" ag-win-id="0" ag-win-width="800"
+						ag-win-height="600" ag-win-title="修改" ag-data-pk="formCode"
+						ag-data-url="/static/views/form/formUpdate.html"><i class="layui-icon layui-icon-edit"></i></div>
+					<div class="ag-btn-del layui-inline" lay-event ag-data-index="0" ag-data-pk="formCode"
+						ag-data-ctx="bpm" ag-data-url="/api/delBpmForm"><i class="layui-icon layui-icon-delete"></i>
+					</div>
+				</div>
+
+			</div>
+
+		</div>
+
+		<div style="display:none" class="ag-table-header" ag-data-index="0">
+
+			[
+			[{
+			"type": "radio",
+			"fixed": "left"
+			}, {
+			"field": "formCode",
+			"title": "编码"
+			}, {
+			"field": "formName",
+			"title": "名称"
+			}, {
+			"field": "opNo",
+			"title": "创建工号"
+			}, {
+			"field": "opName",
+			"title": "创建人"
+			}, {
+			"field": "opTime",
+			"title": "创建时间"
+			}, {
+			"field": "formVersions",
+			"title": "版本"
+			}, {
+			"field": "actionUrl",
+			"title": "地址"
+			}]
+			]
+		</div>
+		<table class="ag-table layui-hide" id="demo" lay-filter="test" ag-data-index="0">
+
+		</table>
+
+		<div class="pagging ag-area-page">
+
+		</div>
+
+	</div>
+
+	<script>
+
+	</script>
+</body>
+
+</html>

+ 70 - 0
public/views/form/formUpdate.html

@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<title>无纸化集中业务管理系统</title>
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+	<link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+	<link rel="stylesheet" href="/static/css/temp.css" media="all">
+	<script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+	<script src="/static/js/crypto-js.js"></script>
+	<script src="/static/js/layui.js?v=1.0.0"></script>
+	<script src="/static/js/api.config.js"></script>
+	<script src="/static/js/util.js?v=1.0.0"></script>
+	<script src="/static/js/customform.js?v=1.0.0"></script>
+	<script src="/static/js/url.js?v=1.0.0"></script>
+	<script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+	<script src="/static/css/inconfont/iconfont.js"></script>
+</head>
+
+<body class="bg-info">
+
+	<div class="layui-card layui-card-form">
+
+		<div class="layui-card-body">
+
+			<form class="ag-form layui-form" ag-data-index="1" ag-data-ctx="bpm" ag-data-url="/api/queryBpmForm">
+
+
+				<div class="layui-inline ">
+					<label class="layui-form-label">名称:</label>
+					<div class="layui-input-block ">
+						<input type="hidden" name="formCode" ag-verify="required" autocomplete="off" placeholder="编码">
+						<input type="text" name="formName" ag-verify="required" autocomplete="off" placeholder="名称"
+							class="layui-input">
+					</div>
+				</div>
+
+				<div class="layui-inline ">
+					<label class="layui-form-label">地址:</label>
+					<div class="layui-input-block">
+						<input type="text" name="actionUrl" ag-verify="required" autocomplete="off" placeholder="地址"
+							class="layui-input">
+					</div>
+				</div>
+
+			</form>
+
+
+		</div>
+
+		<div class="layui-card-footer">
+
+			<button class="ag-btn-save layui-btn layui-btn-sm layui-btn-normal " ag-data-ctx="bpm"
+				ag-data-url="/api/updateBpmForm" ag-data-index="1">
+				<i class="layui-icon layui-icon-ok-circle "></i>
+				<span class="btn-span-middle">保存</span>
+			</button>
+			<button class="ag-btn-cancel layui-btn layui-btn-sm layui-btn-normal">
+				<i class="layui-icon layui-icon-close "></i>
+				<span class="btn-span-middle">取消</span>
+			</button>
+		</div>
+
+	</div>
+</body>
+
+</html>

Разница между файлами не показана из-за своего большого размера
+ 480 - 0
public/views/incomeTemplateExcel.html


Разница между файлами не показана из-за своего большого размера
+ 477 - 0
public/views/incomeViewExcel.html


Разница между файлами не показана из-за своего большого размера
+ 338 - 0
public/views/initExcel.html


Разница между файлами не показана из-за своего большого размера
+ 354 - 0
public/views/initExcel1.html


Разница между файлами не показана из-за своего большого размера
+ 289 - 0
public/views/inperson.html


+ 180 - 0
public/views/insideFilecollect/approval.html

@@ -0,0 +1,180 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<title>无纸化集中业务管理系统</title>
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+	<link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+	<link rel="stylesheet" href="/static/css/temp.css" media="all">
+	<script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+	<script src="/static/js/crypto-js.js"></script>
+	<script src="/static/js/layui.js?v=1.0.0"></script>
+	<script src="/static/js/api.config.js"></script>
+	<script src="/static/js/util.js?v=1.0.0"></script>
+	<script src="/static/js/customform.js?v=1.0.0"></script>
+	<script src="/static/js/url.js?v=1.0.0"></script>
+	<script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+	<script src="/static/css/inconfont/iconfont.js"></script>
+</head>
+
+<body class="bg-info mc-file-form">
+
+	<div class="layui-card layui-card-form">
+
+		<div class="layui-card-body">
+
+			<div class="layui-tab">
+				<ul class="layui-tab-title">
+					<li class="layui-this">工单信息</li>
+					<li>处理轨迹</li>
+				</ul>
+				<div class="layui-tab-content">
+					<div class="layui-tab-item layui-show">
+						<form class="ag-form layui-form" ag-data-index="1" ag-data-ctx="bpm" ag-data-url="/api/taskInit"
+							ag-form-callBack="initTaskList">
+							<input type="hidden" name="woNo" ag-verify="required" autocomplete="off" placeholder=""
+								class="layui-input">
+							<input type="hidden" name="taskId" ag-verify="required" autocomplete="off" placeholder=""
+								class="layui-input">
+							<input type="hidden" name="stepId" ag-verify="required" autocomplete="off"
+								placeholder="环节编码" class="layui-input">
+							<input type="hidden" name="procId" ag-verify="required" autocomplete="off"
+								placeholder="流程编码" class="layui-input">
+							<input type="hidden" name="procVersion" ag-verify="required" autocomplete="off"
+								placeholder="流程版本" class="layui-input">
+							<div class="layui-inline ">
+								<label class="layui-form-label">标题:</label>
+								<div class="layui-input-block">
+									<input type="text" name="taskName" readonly="readonly" ag-verify="required"
+										autocomplete="off" placeholder="标题" class="layui-input">
+								</div>
+							</div>
+							<div class="layui-form-item layui-form-text">
+								<label class="layui-form-label">复核备注:</label>
+								<div class="layui-input-block">
+									<textarea name="remark" class="layui-textarea" placeholder="请输入备注信息"></textarea>
+								</div>
+							</div>
+							<div class="layui-form-item">
+								<label class="layui-form-label">附件:</label>
+								<div class="ag-file mc-file-style" ag-file-module="wo"
+									ag-file-iframe-down-url="/api/download" ag-file-delete="false" ag-file-add="false"
+									ag-data-ctx="bpm" ag-file-key="attachList">
+								</div>
+							</div>
+
+
+
+						</form>
+
+
+					</div>
+					<div class="layui-tab-item">
+
+						<div class=" layui-card  layui-card-list">
+
+							<div class="layui-border-box ">
+
+							</div>
+
+							<div style="display:none" class="ag-table-header" ag-data-index="0">
+
+								[
+								[ {
+								"field": "taskName",
+								"title": "任务名称"
+								}, {
+								"field": "opNo",
+								"title": "处理工号"
+								}, {
+								"field": "opName",
+								"title": "处理人"
+								}, {
+								"field": "opTime",
+								"title": "处理时间"
+								}, {
+								"field": "dealTypeDesc",
+								"title": "处理状态"
+								}, {
+								"field": "remark",
+								"title": "处理备注"
+								}
+								]
+								]
+							</div>
+							<table class="ag-table layui-hide" id="demo" lay-filter="test" ag-data-index="0">
+
+							</table>
+
+							<div class="pagging ag-area-page">
+
+							</div>
+
+						</div>
+					</div>
+
+				</div>
+			</div>
+
+
+
+
+
+
+
+		</div>
+
+		<div class="layui-card-footer">
+
+			<button class="ag-btn-save layui-btn layui-btn-sm layui-btn-normal " ag-data-ctx="bpm"
+				ag-data-url="/api/submitTask" ag-data-index="1"
+				ag-save-append='{"param":{"procExeCondiVal":"同意"},"dealType":"0","dealTypeDesc":"提交"}'>
+				<i class="layui-icon layui-icon-ok-circle "></i>
+				<span class="btn-span-middle">通过</span>
+			</button>
+			<button class="ag-btn-save layui-btn layui-btn-sm layui-btn-normal " ag-data-ctx="bpm"
+				ag-data-url="/api/backTask" ag-data-index="1" ag-save-append='{"dealType":"1","dealTypeDesc":"打回"}'>
+				<i class="layui-icon layui-icon-ok-circle "></i>
+				<span class="btn-span-middle">打回</span>
+			</button>
+			<button class="ag-btn-cancel layui-btn layui-btn-sm layui-btn-normal">
+				<i class="layui-icon layui-icon-close "></i>
+				<span class="btn-span-middle">取消</span>
+			</button>
+		</div>
+
+	</div>
+
+	<script>
+
+		function initTaskList(data) {
+
+
+			var colsStr = $(".ag-table-header[ag-data-index=0]").html();
+
+			var cols = decorateData(colsStr);
+
+			//执行一个 table 实例
+			layui.table.render({
+
+				elem: $(".ag-table[ag-data-index=0]"),
+				height: $(".ag-table[ag-data-index=0]").height() - 100,
+				data: data.taskList, //数据接口
+				title: '用户表',
+				page: false, //开启分页
+				totalRow: false, //开启合计行
+				limit: 100,
+				cols: cols
+			});
+
+
+		}
+
+
+	</script>
+</body>
+
+</html>

+ 171 - 0
public/views/insideFilecollect/fillIn.html

@@ -0,0 +1,171 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<title>无纸化集中业务管理系统</title>
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+	<link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+	<link rel="stylesheet" href="/static/css/temp.css" media="all">
+	<script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+	<script src="/static/js/crypto-js.js"></script>
+	<script src="/static/js/layui.js?v=1.0.0"></script>
+	<script src="/static/js/api.config.js"></script>
+	<script src="/static/js/util.js?v=1.0.0"></script>
+	<script src="/static/js/customform.js?v=1.0.0"></script>
+	<script src="/static/js/url.js?v=1.0.0"></script>
+	<script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+	<script src="/static/css/inconfont/iconfont.js"></script>
+</head>
+
+<body class="bg-info">
+
+	<div class="layui-card layui-card-form">
+
+		<div class="layui-card-body">
+
+
+			<div class="layui-tab">
+				<ul class="layui-tab-title">
+					<li class="layui-this">工单信息</li>
+					<li>处理轨迹</li>
+				</ul>
+				<div class="layui-tab-content">
+					<div class="layui-tab-item layui-show">
+
+						<form class="ag-form layui-form" ag-data-index="1" ag-data-ctx="bpm" ag-data-url="/api/taskInit"
+							ag-form-callBack="initTaskList">
+							<input type="hidden" name="woNo" ag-verify="required" autocomplete="off" placeholder=""
+								class="layui-input">
+							<input type="hidden" name="taskId" ag-verify="required" autocomplete="off" placeholder=""
+								class="layui-input">
+							<input type="hidden" name="stepId" ag-verify="required" autocomplete="off"
+								placeholder="环节编码" class="layui-input">
+							<input type="hidden" name="procId" ag-verify="required" autocomplete="off"
+								placeholder="流程编码" class="layui-input">
+							<input type="hidden" name="procVersion" ag-verify="required" autocomplete="off"
+								placeholder="流程版本" class="layui-input">
+							<div class="layui-inline ">
+								<label class="layui-form-label">标题:</label>
+								<div class="layui-input-block">
+									<input type="text" name="taskName" readonly="readonly" ag-verify="required"
+										autocomplete="off" placeholder="标题" class="layui-input">
+								</div>
+							</div>
+
+							<div class="layui-form-item">
+								<label class="layui-form-label">附件:</label>
+								<div class="ag-file" ag-file-module="wo" ag-file-iframe-add-url="/api/upload"
+									ag-file-iframe-del-url="/api/delFile" ag-file-iframe-down-url="/api/download"
+									ag-data-ctx="bpm" ag-file-submit-key="params.attchFileId" ag-file-key="attachList"
+									ag-file-multiple="false">
+								</div>
+							</div>
+
+						</form>
+
+
+					</div>
+					<div class="layui-tab-item">
+
+						<div class=" layui-card  layui-card-list">
+
+							<div class="layui-border-box ">
+
+							</div>
+
+							<div style="display:none" class="ag-table-header" ag-data-index="0">
+
+								[
+								[ {
+								"field": "taskName",
+								"title": "任务名称"
+								}, {
+								"field": "opNo",
+								"title": "处理工号"
+								}, {
+								"field": "opName",
+								"title": "处理人"
+								}, {
+								"field": "opTime",
+								"title": "处理时间"
+								}, {
+								"field": "dealTypeDesc",
+								"title": "处理状态"
+								}, {
+								"field": "remark",
+								"title": "处理备注"
+								}
+								]
+								]
+							</div>
+							<table class="ag-table layui-hide" id="demo" lay-filter="test" ag-data-index="0">
+
+							</table>
+
+							<div class="pagging ag-area-page">
+
+							</div>
+
+						</div>
+					</div>
+
+				</div>
+			</div>
+
+
+
+
+
+
+
+		</div>
+
+		<div class="layui-card-footer">
+
+			<button class="ag-btn-save layui-btn layui-btn-sm layui-btn-normal " ag-data-ctx="bpm"
+				ag-data-url="/api/submitTask" ag-data-index="1"
+				ag-save-append='{"param":{"procExeCondiVal":"同意"},"dealType":"0","dealTypeDesc":"提交"}'>
+				<i class="layui-icon layui-icon-ok-circle "></i>
+				<span class="btn-span-middle">提交</span>
+			</button>
+			<button class="ag-btn-cancel layui-btn layui-btn-sm layui-btn-normal">
+				<i class="layui-icon layui-icon-close "></i>
+				<span class="btn-span-middle">取消</span>
+			</button>
+		</div>
+
+	</div>
+
+	<script>
+
+		function initTaskList(data) {
+
+
+			var colsStr = $(".ag-table-header[ag-data-index=0]").html();
+
+			var cols = decorateData(colsStr);
+
+			//执行一个 table 实例
+			layui.table.render({
+
+				elem: $(".ag-table[ag-data-index=0]"),
+				height: $(".ag-table[ag-data-index=0]").height() - 100,
+				data: data, //数据接口
+				title: '用户表',
+				page: false, //开启分页
+				totalRow: false, //开启合计行
+				limit: 100,
+				cols: cols
+			});
+
+
+		}
+
+
+	</script>
+</body>
+
+</html>

+ 178 - 0
public/views/insideFilecollect/launch.html

@@ -0,0 +1,178 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<title>无纸化集中业务管理系统</title>
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+	<link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+	<link rel="stylesheet" href="/static/css/temp.css" media="all">
+	<script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+	<script src="/static/js/crypto-js.js"></script>
+	<script src="/static/js/layui.js?v=1.0.0"></script>
+	<script src="/static/js/api.config.js"></script>
+	<script src="/static/js/util.js?v=1.0.0"></script>
+	<script src="/static/js/customform.js?v=1.0.0"></script>
+	<script src="/static/js/url.js?v=1.0.0"></script>
+	<script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+	<script src="/static/css/inconfont/iconfont.js"></script>
+</head>
+<style>
+	.layui-card {
+		padding: 0 !important;
+	}
+</style>
+
+<body class="bg-info mc-file-form">
+
+	<div class="layui-card layui-card-form">
+
+		<div class="layui-card-body">
+
+			<div class="layui-tab">
+				<ul class="layui-tab-title">
+					<li class="layui-this">工单信息</li>
+					<li>处理轨迹</li>
+				</ul>
+				<div class="layui-tab-content">
+					<div class="layui-tab-item layui-show">
+						<form class="ag-form layui-form" ag-data-index="1" ag-data-ctx="bpm" ag-data-url="/api/taskInit"
+							ag-form-callBack="initTaskList">
+
+							<div class="layui-inline  layui-col-sm6">
+								<label class="layui-form-label">工单标题:</label>
+								<div class="layui-input-block">
+									<input type="hidden" name="taskId" autocomplete="off" class="layui-input">
+									<input type="hidden" name="woNo" autocomplete="off" class="layui-input">
+									<input type="hidden" name="stepId" autocomplete="off" placeholder="环节编码"
+										class="layui-input">
+									<input type="text" name="taskName" ag-verify="required" autocomplete="off"
+										placeholder="工单标题" class="layui-input">
+									<input type="hidden" name="procId" autocomplete="off" placeholder=""
+										class="layui-input">
+									<input type="hidden" name="procName" autocomplete="off" placeholder=""
+										class="layui-input">
+									<input type="hidden" name="procVersion" autocomplete="off" placeholder=""
+										class="layui-input">
+								</div>
+							</div>
+							<div class="layui-inline ">
+								<label class="layui-form-label">角色:</label>
+								<div class="layui-input-block">
+									<select name="roleCode" ag-parent-code="param" ag-sel-name="roleName">
+									</select>
+								</div>
+							</div>
+							<div class="layui-form-item">
+								<label class="layui-form-label">附件:</label>
+								<div class="ag-file mc-file-style" ag-file-module="wo"
+									ag-file-iframe-add-url="/api/upload" ag-file-iframe-del-url="/api/delFile"
+									ag-file-iframe-down-url="/api/download" ag-data-ctx="bpm"
+									ag-file-submit-key="params.attchFileId" ag-file-key="attachList"
+									ag-file-multiple="false">
+								</div>
+							</div>
+
+
+
+						</form>
+
+
+					</div>
+					<div class="layui-tab-item">
+						<div class=" layui-card  layui-card-list">
+
+							<div class="layui-border-box ">
+
+							</div>
+
+							<div style="display:none" class="ag-table-header" ag-data-index="0">
+								[
+								[ {
+								"field": "taskName",
+								"title": "任务名称"
+								}, {
+								"field": "opNo",
+								"title": "处理工号"
+								}, {
+								"field": "opName",
+								"title": "处理人"
+								}, {
+								"field": "opTime",
+								"title": "处理时间"
+								}, {
+								"field": "dealTypeDesc",
+								"title": "处理状态"
+								}, {
+								"field": "remark",
+								"title": "处理备注"
+								}
+								]
+								]
+							</div>
+							<table class="ag-table layui-hide" id="demo" lay-filter="test" ag-data-index="0">
+
+							</table>
+
+							<div class="pagging ag-area-page">
+
+							</div>
+
+						</div>
+					</div>
+
+				</div>
+			</div>
+
+
+		</div>
+
+		<div class="layui-card-footer">
+
+			<button class=" custom-fq-true ag-btn-save layui-btn layui-btn-sm layui-btn-normal " ag-data-ctx="bpm"
+				ag-data-url="/api/startProcAuto" ag-data-index="1"
+				ag-save-append='{"dealType":"0","dealTypeDesc":"提交"}'>
+				<i class="layui-icon layui-icon-ok-circle "></i>
+				<span class="btn-span-middle">发起</span>
+			</button>
+			<button class=" custom-fq-false ag-btn-save layui-btn layui-btn-sm layui-btn-normal " ag-data-ctx="bpm"
+				ag-data-url="/api/submitTask" ag-save-append='{"dealType":"0","dealTypeDesc":"提交"}' ag-data-index="1">
+				<i class="layui-icon layui-icon-ok-circle "></i>
+				<span class="btn-span-middle">提交</span>
+			</button>
+			<button class="ag-btn-cancel layui-btn layui-btn-sm layui-btn-normal">
+				<i class="layui-icon layui-icon-close "></i>
+				<span class="btn-span-middle">取消</span>
+			</button>
+		</div>
+
+	</div>
+	<script>
+		function initTaskList(data) {
+
+			var colsStr = $(".ag-table-header[ag-data-index=0]").html();
+			var cols = decorateData(colsStr);
+			//执行一个 table 实例
+			layui.table.render({
+
+				elem: $(".ag-table[ag-data-index=0]"),
+				height: $(".ag-table[ag-data-index=0]").height() - 100,
+				data: data, //数据接口
+				title: '用户表',
+				page: false, //开启分页
+				totalRow: false, //开启合计行
+				limit: 100,
+				cols: cols
+			});
+
+
+		}
+
+
+	</script>
+
+</body>
+
+</html>

Разница между файлами не показана из-за своего большого размера
+ 428 - 0
public/views/kccExcel.html


Разница между файлами не показана из-за своего большого размера
+ 370 - 0
public/views/monthExcel.html


Разница между файлами не показана из-за своего большого размера
+ 637 - 0
public/views/onlineShareExcel.html


Разница между файлами не показана из-за своего большого размера
+ 637 - 0
public/views/onlineShareExcelMarket.html


Разница между файлами не показана из-за своего большого размера
+ 350 - 0
public/views/projectExcel.html


Разница между файлами не показана из-за своего большого размера
+ 385 - 0
public/views/publiAccount.html


Разница между файлами не показана из-за своего большого размера
+ 389 - 0
public/views/quarterExcel.html


Разница между файлами не показана из-за своего большого размера
+ 272 - 0
public/views/settlementEval.html


Разница между файлами не показана из-за своего большого размера
+ 604 - 0
public/views/stockHandle.html


+ 211 - 0
public/views/sysLoginRoleInit.html

@@ -0,0 +1,211 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+	<link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+	<link rel="stylesheet" href="/static/css/temp.css" media="all">
+	<script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+	<script src="/static/js/layui.js?v=1.0.0"></script>
+	<script src="/static/js/common.js?v=1.0.0"></script>
+	<script src="/static/js/api.config.js"></script>
+	<script src="/static/js/util.js?v=1.0.0"></script>
+	<script src="/static/js/customform.js?v=1.0.0"></script>
+	<script src="/static/js/url.js?v=1.0.0"></script>
+	<script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+	<script src="/static/js/jquery.nestable.js"></script>
+</head>
+<style>
+	.border-info {
+
+		border: 1px solid #e1e4e3;
+	}
+</style>
+
+<body class="bg-info">
+
+	<div class="layui-card  border-info">
+
+		<div class="layui-card-header layui-card-header-bb-2"
+			style="height: 70px;line-height: 20px; padding-left: 0;padding-right: 8px;">
+			<div style="float: left;line-height: 70px; padding-left: 20px;font-size: 15px;font-weight: bold;">
+
+				工号角色配置
+			</div>
+
+			<div style="border-left: 2px solid #e1e4e3;float: right;margin: 5px;">
+
+				<div class="card-btn" style="margin-left: 10px;" onclick="save()">
+					<div class="card-btn-img img-save"></div>
+					<div class="card-btn-desc">
+						保存
+					</div>
+				</div>
+
+			</div>
+
+
+		</div>
+		<div class="layui-card-body">
+
+			<div class="layui-row">
+
+				<div class="layui-col-sm4 " style="padding-right: 15px;">
+
+					<div class="layui-card border-info">
+
+						<div class="layui-card-header " style="font-weight: bold;">
+
+							可选角色
+							<!-- <div style="float: right;">
+									<i class="layui-icon layui-icon-addition" style="font-size: 30px; color: #1E9FFF;"></i>
+								</div> -->
+						</div>
+						<div class="layui-card-body" style="padding: 10px;">
+
+							<div class="dd" id="chnlChain1" style="overflow-y: auto;">
+
+							</div>
+						</div>
+
+					</div>
+				</div>
+				<div class="layui-col-sm4 " style="">
+					<div class="layui-card border-info">
+
+						<div class="layui-card-header" style="font-weight: bold;">
+
+							已选角色
+						</div>
+						<div class="layui-card-body" style="padding: 10px;">
+							<div class="dd" id="chnlChain2" style="overflow-y: auto;"></div>
+						</div>
+					</div>
+				</div>
+
+			</div>
+
+		</div>
+
+	</div>
+
+	<input type="hidden" name="loginNo" />
+	<input type="hidden" name="loginName" />
+</body>
+
+<script>
+	$(function () {
+
+		var url = ctx + "/sysmgr/sys/settings/sysLoginFuncs/queryInit";
+
+		var param = util.getUrlParam();
+
+		$("input[name=loginNo]").val(param.loginNo);
+
+		$("input[name=loginName]").val(param.loginName);
+
+		util.ajaxJson("页面加载中,请稍后...", url, {
+			"loginNo": param.loginNo
+		}, function (data) {
+
+			if (data.result != "0") {
+
+				util.showDialog("页面加载失败!", 0);
+
+				console.log(data);
+
+				return;
+			}
+
+
+			var authEnum = [];
+
+			$.each(data.body.authList, function (i, item) {
+
+				authEnum.push({
+					"key": item.optCode,
+					"value": item.optName
+				});
+			});
+
+
+			$('#chnlChain1').nestable({
+				group: 1,
+				maxDepth: 1,
+				rmSourceItem: false,
+				itemKey: "roleCode",
+				itemName: 'roleName',
+				data: data.body.roleList
+			});
+
+			$('#chnlChain2').nestable({
+				group: 1,
+				maxDepth: 1,
+				dragFlag: true, //是否允许拖拽
+				addItemCloseBtn: true, //是否添加删除按钮
+				addItemQuickBtn: true,
+				quickKey: 'authTar',
+				quickDesc: 'authTarDesc',
+				quickTitle: '赋权',
+				quickEnum: authEnum,
+				itemKey: "roleCode",
+				itemName: 'roleName',
+				data: data.body.checkRoleList
+			});
+		});
+	});
+
+
+
+
+	function save() {
+
+		var sourceArr = $('#chnlChain1').nestable('getItemData');
+
+		var arr = $('#chnlChain2').nestable('getItemData');
+
+		for (var i = 0; i < arr.length; i++) {
+
+			arr[i].loginNo = $("input[name=loginNo]").val();
+			arr[i].loginName = $("input[name=loginName]").val();
+		}
+
+		// if (sourceArr.length == 0) {
+
+		// 	arr = [];
+		// }
+
+		var url = ctx + "/sysmgr/sys/settings/sysLoginFuncs/updateRole";
+
+
+		util.ajaxJson("保存中,请稍后···", url, {
+			"loginNo": $("input[name=loginNo]").val(),
+			"checkRoleList": arr
+		}, function (data) {
+
+
+
+			if (data.result != "0") {
+
+				util.error("保存失败!");
+
+			} else {
+
+				util.success("保存成功!");
+
+
+			}
+
+
+
+		});
+	}
+
+
+
+	$(".dd").height($(window).height() - 200);
+</script>
+
+</html>

+ 156 - 0
public/views/text.html

@@ -0,0 +1,156 @@
+<!DOCTYPE html>
+<html>
+
+<head lang='zh'>
+    <meta charset='utf-8'>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="renderer" content="webkit" />
+    <meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=0" />
+    <title>Luckysheet</title>
+    <!-- <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/css/pluginsCss.css' />
+    <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/plugins.css' />
+    <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/css/luckysheet.css' />
+    <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/assets/iconfont/iconfont.css' />
+    <script src="https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/js/plugin.js"></script>
+    <script src="https://cdn.jsdelivr.net/npm/luckysheet/dist/luckysheet.umd.js"></script> -->
+    <link rel='stylesheet' href='/static/js/luckysheet/plugins/css/pluginsCss.css' />
+    <link rel='stylesheet' href='/static/js/luckysheet/plugins/plugins.css' />
+    <link rel='stylesheet' href='/static/js/luckysheet/css/luckysheet.css' />
+    <link rel='stylesheet' href='/static/js/luckysheet/assets/iconfont/iconfont.css' />
+    <script src="/static/js/luckysheet/plugins/js/plugin.js"></script>
+    <script src="/static/js/luckysheet/luckysheet.umd.js"></script>
+    <script src="/static/js/api.config.js"></script>
+    <script src="/static/js/util.js?v=1.0.0"></script>
+    <script src="/static/js/url.js?v=1.0.0"></script>
+    </script>
+</head>
+<style>
+    * {
+        padding: 0;
+        margin: 0;
+    }
+
+    html,
+    body {
+        height: 100%;
+        width: 100%;
+        overflow-y: hidden;
+    }
+
+    /* .luckysheet-stat-area{
+        display: none !important;
+    } */
+</style>
+
+<body>
+    <div id="luckysheet" style="width:99%;height:100%">
+    </div>
+    <script>
+        // 2021.11.19
+        var managerLevel = JSON.parse(window.sessionStorage.userInfo).managerLevel
+        var date = new Date();
+        var month = date.getMonth()
+        if (month >= 1 && month <= 9) {
+            month = "0" + (month + 1);
+        }
+        var nowDate = date.getFullYear() + '-' + month
+        $(function () {
+            function receiveMessage(event) {
+                if (event.data.module == 'aaa') {
+                    getData(event.data.month)
+                }
+            }
+            window.addEventListener("message", receiveMessage, false)
+            getData(nowDate)
+        })
+        function getData(nowDate) {
+            util.ajaxJson("", ctx + '/market/keywork/load', {
+                "id": '',
+                "opMonth": nowDate,
+                "sts": '0'
+            }, function (data) {
+                if (data.result == 0) {
+                    for (var i = 0; i < data.body[0].data.length; i++) {
+                        for (var j = 0; j < data.body[0].data[i].length; j++) {
+                            if (data.body[0].data[i][j] != null) {
+                                if (data.body[0].data[i][j].hasOwnProperty('complete') && data.body[0].data[i][j].hasOwnProperty('revoke') && data.body[0].data[i][j].revoke != '1') {
+                                    data.body[0].data[i][j].bg = null
+                                } else if (data.body[0].data[i][j].hasOwnProperty('setup')) {
+                                } else {
+                                    data.body[0].data[i][j].bg = null
+                                    data.body[0].data[i][j].v = ''
+                                }
+                            }
+                        }
+                    }
+                    if (data.body[0].config.authority) {
+                        data.body[0].config.authority.hintText = '仅供查看、禁止编辑'
+                    }
+                    initExcel(data.body)
+                }
+            });
+        }
+        function initExcel(data) {
+            luckysheet.create({
+                container: 'luckysheet',
+                data: data,
+                allowEdit: false, // 是否允许前台编辑
+                showtoolbar: false, // 是否显示工具栏
+                showConfigWindowResize: false,
+                showtoolbarConfig: { paintFormat: false, italic: true, },// 工具栏配置
+                showtoolbar: false,
+                showinfobar: false,
+                allowUpdate: false,
+                column: 12,
+                title: data[0].fileName || '默认模板',
+                row: 10,
+                lang: 'zh',
+                showsheetbar: false, // 底部sheet显示/隐藏
+                showstatisticBar: false, // 底部计数
+                myFolderUrl: false,
+                showinfobar: true,
+                // 2021.11.19
+                enableAddRow: managerLevel <= '1' ? false : true, //允许添加行(表格底部添加按钮)
+                showstatisticBarConfig: {
+                    count: false, // 计数栏
+                    view: false, // 打印视图
+                    zoom: false, // 缩放
+                },
+                cellRightClickConfig: {
+                    copy: false, // 复制
+                    copyAs: false, // 复制为
+                    paste: true, // 粘贴
+                    insertRow: true, // 插入行
+                    insertColumn: true, // 插入列
+                    deleteRow: true, // 删除选中行
+                    deleteColumn: true, // 删除选中列
+                    deleteCell: false, // 删除单元格
+                    hideRow: false, // 隐藏选中行和显示选中行
+                    hideColumn: false, // 隐藏选中列和显示选中列
+                    rowHeight: false, // 行高
+                    columnWidth: false, // 列宽
+                    clear: false, // 清除内容
+                    matrix: false, // 矩阵操作选区
+                    sort: false, // 排序选区
+                    filter: false, // 筛选选区
+                    chart: false, // 图表生成
+                    image: false, // 插入图片
+                    link: false, // 插入链接
+                    data: false, // 数据验证
+                    cellFormat: false, // 设置单元格格式
+                    isTrue: false
+                },
+                hook: {
+                    cellMousedown: function () {
+                        // window.top.$vm.$message({
+                        //     message: '仅提供查看不可编辑',
+                        //     type: 'info'
+                        // })
+                    },//绑定鼠标事件
+                },
+            })
+        }
+    </script>
+</body>
+
+</html>

+ 116 - 0
public/views/userId/loginAdd.html

@@ -0,0 +1,116 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+  <meta charset="utf-8">
+  <title>layui</title>
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+  <link rel="stylesheet" href="/static/css/temp.css" media="all">
+  <script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+  <script src="/static/js/layui.js?v=1.0.0"></script>
+  <script src="/static/js/common.js?v=1.0.0"></script>
+  <script src="/static/js/api.config.js"></script>
+  <script src="/static/js/util.js?v=1.0.0"></script>
+  <script src="/static/js/customform.js?v=1.0.0"></script>
+  <script src="/static/js/url.js?v=1.0.0"></script>
+  <script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+</head>
+
+<body class="bg-info">
+
+  <div class="layui-card layui-card-form">
+
+    <div class="layui-card-body">
+
+      <form class="ag-form layui-form" ag-data-index="1" ag-data-url="/sys/login/addInit">
+
+
+        <div class="layui-inline ">
+          <label class="layui-form-label">工号:</label>
+          <div class="layui-input-block">
+            <input type="text" name="loginNoStr" ag-verify="required" autocomplete="off" placeholder="工号"
+              class="layui-input">
+          </div>
+        </div>
+
+        <div class="layui-inline ">
+          <label class="layui-form-label">姓名:</label>
+          <div class="layui-input-block">
+            <input type="text" name="loginNameStr" ag-verify="required" autocomplete="off" placeholder="姓名"
+              class="layui-input">
+          </div>
+        </div>
+
+        <!-- <div class="layui-inline ">
+          <label class="layui-form-label">渠道:</label>
+          <div class="layui-input-block">
+            <input type="hidden" name="groupId" ag-verify="required" autocomplete="off" class="layui-input">
+            <input type="text" name="groupName" ag-tree-title="渠道选取" ag-verify="required" autocomplete="off"
+              placeholder="渠道" class="layui-input ag-data-tree" ag-tree-parent-key="parentGroupId" ag-tree-key="groupId"
+              ag-tree-name="groupName" ag-tree-url="/sys/login/loadGroupTree" ag-tree-type="radio">
+
+          </div>
+        </div> -->
+
+        <!-- <div class="layui-inline ">
+          <label class="layui-form-label">租户:</label>
+          <div class="layui-input-block">
+            <select name="tenantId" ag-sel-name="tenantName">
+            </select>
+          </div>
+
+        </div> -->
+
+
+        <div class="layui-inline ">
+          <label class="layui-form-label">密码:</label>
+          <div class="layui-input-block">
+            <input type="password" name="loginPasswd" ag-verify="required" autocomplete="off" placeholder="密码"
+              class="layui-input">
+          </div>
+        </div>
+
+       <!-- <div class="layui-inline ">
+            <label class="layui-form-label">部门:</label>
+            <div class="layui-input-block">
+                <select class='mysel' name="bumen" id="selopt">
+
+                </select>
+            </div>
+        </div> -->
+
+      </form>
+
+
+    </div>
+
+    <div class="layui-card-footer">
+
+      <button class="ag-btn-save layui-btn layui-btn-sm layui-btn-normal " ag-data-url="/sys/login/addLoginMsg"
+        ag-data-index="1">
+        <i class="layui-icon layui-icon-ok-circle "></i>
+        <span class="btn-span-middle">保存</span>
+      </button>
+      <button class="ag-btn-cancel layui-btn layui-btn-sm layui-btn-normal">
+        <i class="layui-icon layui-icon-close "></i>
+        <span class="btn-span-middle">取消</span>
+      </button>
+    </div>
+
+  </div>
+</body>
+<script>
+    // util.ajaxJson("", '/sysmgr/sysdept/queryList', {}, function (page) {
+    //     console.log(page)
+    //     var actionName = page;
+    //     let opt = '';
+    //     for(let i=0;i<page.length;i++){
+    //         opt += '<option value ="'+page[i].o+'">'+page[i].ou+'</option>'
+    //     }
+    //     document.getElementById('selopt').innerHTML = opt;
+    // })
+</script>
+</html>

+ 134 - 0
public/views/userId/loginInit.html

@@ -0,0 +1,134 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<title>无纸化集中业务管理系统</title>
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+	<link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+	<link rel="stylesheet" href="/static/css/temp.css" media="all">
+	<script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+	<script src="/static/js/layui.js?v=1.0.0"></script>
+	<script src="/static/js/common.js?v=1.0.0"></script>
+	<script src="/static/js/api.config.js"></script>
+	<script src="/static/js/util.js?v=1.0.0"></script>
+	<script src="/static/js/customform.js?v=1.0.0"></script>
+	<script src="/static/js/url.js?v=1.0.0"></script>
+	<script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+</head>
+
+<body class="bg-info">
+
+	<div class="layui-card layui-card-margin ">
+
+		<form class="ag-form layui-form" ag-data-index="0">
+
+			<div class="param-left">
+
+				<div class="layui-inline ">
+					<label class="layui-form-label">工号:</label>
+					<div class="layui-input-block">
+						<input type="text" name="loginNoStr" autocomplete="off" placeholder="工号" class="layui-input">
+					</div>
+				</div>
+
+			</div>
+
+
+		</form>
+
+		<!--xiacj 说明:注意按钮工具栏不要放到form表单中,查询ajax请求和出发form表单提交,导致url方式变化,导致ajax请求状态为canceld-->
+		<div class="btns-right">
+
+			<button class="ag-btn-query layui-btn layui-btn-sm layui-btn-normal" ag-data-index="0"
+				ag-data-url="/sys/login/queryCLoginMsgPage">
+				<i class="layui-icon layui-icon-search "></i>
+				<span class="btn-span-middle">查询</span>
+			</button>
+
+			<button class="ag-btn-reset layui-btn layui-btn-sm layui-btn-normal" ag-data-index="0" type="reset">
+
+				<i class="layui-icon layui-icon-refresh "></i>
+				<span class="btn-span-middle">重置</span>
+			</button>
+
+
+		</div>
+
+	</div>
+
+
+
+
+	<div class=" layui-card  layui-card-list">
+
+		<div class="layui-border-box ">
+
+			<div class="layui-table-tool">
+				<div class="layui-table-tool-temp">
+					<div class="layui-table-tool-temp">
+						<div class="ag-btn-add layui-inline" lay-event ag-data-index="0" ag-win-id="0"
+							ag-win-width="800" ag-win-height="600" ag-win-title="工号新增"
+							ag-data-url="/static/views/userId/loginAdd.html"><i class="layui-icon layui-icon-add-1"></i></div>
+						<div class="ag-btn-update layui-inline" lay-event ag-data-index="0" ag-win-id="0"
+							ag-win-width="800" ag-win-height="600" ag-win-title="工号修改" ag-data-pk="loginNoStr"
+							ag-data-url="/static/views/userId/loginUpdate.html"><i class="layui-icon layui-icon-edit"></i></div>
+						<div class="ag-btn-del layui-inline" lay-event ag-data-index="0" ag-data-pk="loginNoStr"
+							ag-data-url="/sys/login/deleteLoginMsg"><i class="layui-icon layui-icon-delete"></i></div>
+					</div>
+				</div>
+
+			</div>
+
+		</div>
+
+		<div style="display:none" class="ag-table-header" ag-data-index="0">
+
+			[
+			[
+			{
+			"type": "radio",
+			"fixed": "left"
+			},{
+			"field": "loginNoStr",
+			"title": "工号",
+			"sort": true
+			}, {
+			"field": "loginNameStr",
+			"title": "工号名称"
+			}, {
+			"width": 220,
+			"title": "操作",
+			"fixed": "right",
+			"btns": [
+
+			{
+			"className": "",
+			"openTitle":"角色赋权",
+			"btnVal":"角色赋权",
+			"url": "/static/views/sysLoginRoleInit.html?loginNo=@loginNoStr@&loginName=@loginNameStr@",
+			"openType": "1"
+			}
+			]
+			}
+			]
+			]
+		</div>
+		<table class="ag-table layui-hide" id="demo" lay-filter="test" ag-data-index="0">
+
+		</table>
+
+		<div class="pagging ag-area-page">
+
+		</div>
+
+	</div>
+
+	<script>
+
+	</script>
+</body>
+
+</html>

+ 96 - 0
public/views/userId/loginUpdate.html

@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+  <meta charset="utf-8">
+  <title>layui</title>
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+  <link rel="stylesheet" href="/static/css/temp.css" media="all">
+  <script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+  <script src="/static/js/layui.js?v=1.0.0"></script>
+  <script src="/static/js/common.js?v=1.0.0"></script>
+  <script src="/static/js/api.config.js"></script>
+  <script src="/static/js/util.js?v=1.0.0"></script>
+  <script src="/static/js/customform.js?v=1.0.0"></script>
+  <script src="/static/js/url.js?v=1.0.0"></script>
+  <script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+</head>
+
+<body class="bg-info">
+
+  <div class="layui-card layui-card-form">
+
+    <div class="layui-card-body">
+
+      <form class="ag-form layui-form" ag-data-index="1" ag-data-url="/sys/login/updateInit">
+
+        <div class="layui-inline ">
+          <label class="layui-form-label">工号:</label>
+          <div class="layui-input-block">
+            <input type="text" name="loginNoStr" ag-verify="required" autocomplete="off" placeholder="工号"
+              class="layui-input">
+          </div>
+        </div>
+
+        <div class="layui-inline ">
+          <label class="layui-form-label">姓名:</label>
+          <div class="layui-input-block">
+            <input type="text" name="loginNameStr" ag-verify="required" autocomplete="off" placeholder="姓名"
+              class="layui-input">
+          </div>
+        </div>
+
+        <!-- <div class="layui-inline ">
+          <label class="layui-form-label">渠道:</label>
+          <div class="layui-input-block">
+            <input type="hidden" name="groupId" ag-verify="required" autocomplete="off" class="layui-input">
+            <input type="text" name="groupName" ag-tree-title="渠道选取" ag-verify="required" autocomplete="off"
+              placeholder="渠道" class="layui-input ag-data-tree" ag-tree-parent-key="parentGroupId" ag-tree-key="groupId"
+              ag-tree-name="groupName" ag-tree-url="/sys/login/loadGroupTree" ag-tree-type="radio">
+
+          </div>
+        </div> -->
+
+        <!-- <div class="layui-inline ">
+          <label class="layui-form-label">租户:</label>
+          <div class="layui-input-block">
+            <select name="tenantId" ag-sel-name="tenantName">
+            </select>
+          </div>
+
+        </div> -->
+
+
+        <div class="layui-inline ">
+          <label class="layui-form-label">密码:</label>
+          <div class="layui-input-block">
+            <input type="password" name="loginPasswd" ag-verify="required" autocomplete="off" placeholder="密码"
+              class="layui-input">
+          </div>
+        </div>
+
+      </form>
+
+
+    </div>
+
+    <div class="layui-card-footer">
+
+      <button class="ag-btn-save layui-btn layui-btn-sm layui-btn-normal " ag-data-url="/sys/login/updateLoginMsg"
+        ag-data-index="1">
+        <i class="layui-icon layui-icon-ok-circle "></i>
+        <span class="btn-span-middle">保存</span>
+      </button>
+      <button class="ag-btn-cancel layui-btn layui-btn-sm layui-btn-normal">
+        <i class="layui-icon layui-icon-close "></i>
+        <span class="btn-span-middle">取消</span>
+      </button>
+    </div>
+
+  </div>
+</body>
+
+</html>

Разница между файлами не показана из-за своего большого размера
+ 350 - 0
public/views/weeklyReport.html


+ 125 - 0
public/views/wo/woCheck.html

@@ -0,0 +1,125 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<title>无纸化集中业务管理系统</title>
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+	<link rel="stylesheet" href="/static/css/temp.css" media="all">
+	<script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+	<script src="/static/js/layui.js?v=1.0.0"></script>
+	<script src="/static/js/api.config.js"></script>
+	<script src="/static/js/util.js?v=1.0.0"></script>
+	<script src="/static/js/customform.js?v=1.0.0"></script>
+	<script src="/static/js/url.js?v=1.0.0"></script>
+	<script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+	<script src="/static/css/inconfont/iconfont.js"></script>
+	<script src="/static/js/jquery-ui.min.js"></script>
+
+</head>
+
+<body class="bg-info">
+
+	<div class="layui-card layui-card-form">
+
+		<div class="layui-card-body">
+
+			<form class="ag-form layui-form" ag-data-index="1" ag-data-url="test">
+
+				<div class="layui-inline  layui-col-sm6">
+					<label class="layui-form-label">工单编码:</label>
+					<div class="layui-input-block">
+						<input type="text" name="woNo" ag-verify="required" autocomplete="off" placeholder=""
+							class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline  layui-col-sm6">
+					<label class="layui-form-label">工单标题:</label>
+					<div class="layui-input-block">
+						<input type="text" name="woTitle" ag-verify="required" autocomplete="off" placeholder="工单标题"
+							class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline  layui-col-sm6">
+					<label class="layui-form-label">任务编码:</label>
+					<div class="layui-input-block">
+						<input type="text" name="taskId" ag-verify="required" autocomplete="off" placeholder=""
+							class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline  layui-col-sm6">
+					<label class="layui-form-label">任务标题:</label>
+					<div class="layui-input-block">
+						<input type="text" name="taskName" ag-verify="required" autocomplete="off" placeholder="任务标题"
+							class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline  layui-col-sm6">
+					<label class="layui-form-label">环节编码:</label>
+					<div class="layui-input-block">
+						<input type="text" name="stepId" ag-verify="required" autocomplete="off" placeholder="环节编码"
+							class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline  layui-col-sm6">
+					<label class="layui-form-label">流程编码:</label>
+					<div class="layui-input-block">
+						<input type="text" name="procId" ag-verify="required" autocomplete="off" placeholder="流程编码"
+							class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline  layui-col-sm6">
+					<label class="layui-form-label">流程版本:</label>
+					<div class="layui-input-block">
+						<input type="text" name="procVersion" ag-verify="required" autocomplete="off" placeholder="流程版本"
+							class="layui-input">
+					</div>
+				</div>
+
+				<div class="layui-inline  layui-col-sm6">
+					<label class="layui-form-label">创建时间:</label>
+					<div class="layui-input-block">
+						<input type="text" name="createTime" ag-verify="required" autocomplete="off" placeholder="创建时间"
+							class="layui-input">
+					</div>
+					<div class="layui-input-block layui-hide">
+						<input type="text" name="params.procExeCondiVal" ag-verify="required" value="同意"
+							autocomplete="off" placeholder="" class="layui-input">
+					</div>
+					<div class="layui-input-block layui-hide">
+						<input type="text" name="dealType" ag-verify="required" value="0" autocomplete="off"
+							placeholder="" class="layui-input">
+						<input type="text" name="dealTypeDesc" ag-verify="required" value="提交" autocomplete="off"
+							placeholder="" class="layui-input">
+					</div>
+				</div>
+
+			</form>
+
+
+		</div>
+
+		<div class="layui-card-footer">
+
+			<button class="ag-btn-save layui-btn layui-btn-sm layui-btn-normal " ag-data-ctx="bpm"
+				ag-data-url="/api/submitTask" ag-data-index="1">
+				<i class="layui-icon layui-icon-ok-circle "></i>
+				<span class="btn-span-middle">提交</span>
+			</button>
+			<button class="ag-btn-save layui-btn layui-btn-sm layui-btn-normal " ag-data-ctx="bpm"
+				ag-data-url="/api/submitTask" ag-data-index="1">
+				<i class="layui-icon layui-icon-ok-circle "></i>
+				<span class="btn-span-middle">打回</span>
+			</button>
+			<button class="ag-btn-cancel layui-btn layui-btn-sm layui-btn-normal">
+				<i class="layui-icon layui-icon-close "></i>
+				<span class="btn-span-middle">关闭</span>
+			</button>
+		</div>
+
+	</div>
+</body>
+
+</html>

+ 83 - 0
public/views/wo/woLaunch.html

@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<title>无纸化集中业务管理系统</title>
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+	<link rel="stylesheet" href="/static/css/temp.css" media="all">
+	<script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+	<script src="/static/js/layui.js?v=1.0.0"></script>
+	<script src="/static/js/api.config.js"></script>
+	<script src="/static/js/util.js?v=1.0.0"></script>
+	<script src="/static/js/customform.js?v=1.0.0"></script>
+	<script src="/static/js/url.js?v=1.0.0"></script>
+	<script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+	<script src="/static/css/inconfont/iconfont.js"></script>
+	<script src="/static/js/jquery-ui.min.js"></script>
+</head>
+
+<body class="bg-info">
+
+	<div class="layui-card layui-card-form">
+
+		<div class="layui-card-body">
+
+			<form class="ag-form layui-form" ag-data-index="1">
+
+
+				<div class="layui-inline  layui-col-sm6">
+					<label class="layui-form-label">工单标题:</label>
+					<div class="layui-input-block">
+						<input type="text" name="woTitle" ag-verify="required" autocomplete="off" placeholder="工单标题"
+							class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline ">
+					<label class="layui-form-label">流程:</label>
+					<div class="layui-input-block">
+						<input type="text" name="procId" ag-verify="required" value='638294140759212032'
+							autocomplete="off" placeholder="" class="layui-input">
+					</div>
+
+				</div>
+				<div class="layui-inline  layui-col-sm6">
+					<label class="layui-form-label">流程名称:</label>
+					<div class="layui-input-block">
+						<input type="text" name="procName" ag-verify="required" value="测试流程" autocomplete="off"
+							placeholder="" class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline  layui-col-sm6">
+					<label class="layui-form-label">流程版本:</label>
+
+					<div class="layui-input-block">
+						<input type="text" name="procVersion" ag-verify="required" value="10" autocomplete="off"
+							placeholder="" class="layui-input">
+					</div>
+				</div>
+
+			</form>
+
+
+		</div>
+
+		<div class="layui-card-footer">
+
+			<button class="ag-btn-save layui-btn layui-btn-sm layui-btn-normal " ag-data-ctx="bpm"
+				ag-data-url="/api/startProc" ag-data-index="1">
+				<i class="layui-icon layui-icon-ok-circle "></i>
+				<span class="btn-span-middle">发起</span>
+			</button>
+			<button class="ag-btn-cancel layui-btn layui-btn-sm layui-btn-normal">
+				<i class="layui-icon layui-icon-close "></i>
+				<span class="btn-span-middle">取消</span>
+			</button>
+		</div>
+
+	</div>
+</body>
+
+</html>

+ 216 - 0
public/views/wo/woQueryDb.html

@@ -0,0 +1,216 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<title>无纸化集中业务管理系统</title>
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+	<link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+	<link rel="stylesheet" href="/static/css/temp.css" media="all">
+	<script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+	<script src="/static/js/layui.js?v=1.0.0"></script>
+	<script src="/static/js/api.config.js"></script>
+	<script src="/static/js/util.js?v=1.0.0"></script>
+	<script src="/static/js/customform.js?v=1.0.0"></script>
+	<script src="/static/js/url.js?v=1.0.0"></script>
+	<script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+	<script src="/static/css/inconfont/iconfont.js"></script>
+	<script src="/static/js/jquery-ui.min.js"></script>
+</head>
+
+<body class="bg-info">
+
+	<div class="layui-card layui-card-margin ">
+
+		<form class="ag-form layui-form" ag-data-index="0" ag-form-callBack="getData">
+			<input type="text" name="callback" class="layui-hide">
+			<div class="param-left">
+
+				<div class="layui-inline ">
+					<label class="layui-form-label">工单名称:</label>
+					<div class="layui-input-block">
+						<input type="text" name="woTitle" autocomplete="off" placeholder="工单名称" class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline ">
+					<label class="layui-form-label">工单编号:</label>
+					<div class="layui-input-block">
+						<input type="text" name="woNo" autocomplete="off" placeholder="工单编号" class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline ">
+					<label class="layui-form-label">任务名称:</label>
+					<div class="layui-input-block">
+						<input type="text" name="taskName" autocomplete="off" placeholder="任务名称" class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline ">
+					<label class="layui-form-label">任务编号:</label>
+					<div class="layui-input-block">
+						<input type="text" name="taskId" autocomplete="off" placeholder="任务编号" class="layui-input">
+					</div>
+				</div>
+
+			</div>
+
+
+		</form>
+
+		<!--xiacj 说明:注意按钮工具栏不要放到form表单中,查询ajax请求和出发form表单提交,导致url方式变化,导致ajax请求状态为canceld-->
+		<div class="btns-right">
+
+			<button class="ag-btn-query layui-btn layui-btn-sm layui-btn-normal" ag-data-index="0" ag-data-ctx="bpm"
+				ag-data-url="/api/queryToDoTaskList">
+				<i class="layui-icon layui-icon-search "></i>
+				<span class="btn-span-middle">查询</span>
+			</button>
+
+			<button class="ag-btn-reset layui-btn layui-btn-sm layui-btn-normal" ag-data-index="0" type="reset">
+
+				<i class="layui-icon layui-icon-refresh "></i>
+				<span class="btn-span-middle">重置</span>
+			</button>
+
+
+		</div>
+
+	</div>
+
+
+
+
+	<div class=" layui-card  layui-card-list">
+
+		<div class="layui-border-box ">
+
+			<div class="layui-table-tool">
+				<div class="layui-table-tool-temp">
+					<div class="ag-btn-add layui-inline" lay-event ag-data-index="0" ag-win-id="0" ag-win-width="800"
+						ag-win-height="600" ag-win-title="发起工单" ag-data-pk="id"
+						ag-data-url="/static/views/wo/woLaunch.html?taskId=taskId"><i
+							class="layui-icon layui-icon-add-1"></i>
+					</div>
+					<div class="ag-btn-update layui-inline" lay-event ag-data-index="0" ag-win-id="0" ag-win-width="800"
+						ag-win-height="600" ag-win-title-key="actionName"
+						ag-data-pk="taskId,taskName,woNo,woTitle,procId,stepId,createTime,procVersions"
+						ag-data-url-key="actionUrl"><i class="layui-icon layui-icon-edit"></i></div>
+				</div>
+
+			</div>
+
+		</div>
+
+		<div style="display:none" class="ag-table-header" ag-data-index="0">
+
+			[
+			[{
+			"type": "radio",
+			"fixed": "left"
+			}, {
+			"field": "taskId",
+			"title": "任务编码"
+			}, {
+			"field": "taskName",
+			"title": "任务名称"
+			}, {
+			"field": "woNo",
+			"title": "工单编号"
+			}, {
+			"field": "stepId",
+			"title": "环节编码",
+			"sort": true
+			}, {
+			"field": "stsDesc",
+			"title": "工单状态",
+			"sort": true
+			}, {
+			"field": "sts",
+			"title": "状态",
+			"hide": true
+			}, {
+			"field": "procId",
+			"title": "流程编号"
+			}, {
+			"field": "procName",
+			"title": "流程名称",
+			"hide": true
+			}, {
+			"field": "procVersion",
+			"title": "流程版本"
+			}, {
+			"field": "opNo",
+			"title": "处理工号",
+			"hide": true
+			}, {
+			"field": "opName",
+			"title": "处理人",
+			"hide": true
+			}, {
+			"field": "opTime",
+			"title": "处理时间",
+			"hide": true
+			}, {
+			"field": "actionUrl",
+			"title": "处理页面地址",
+			"hide":true
+			}, {
+			"field": "actionName",
+			"title": "处理页面标题",
+			"hide":true
+			}, {
+			"field": "roleCode",
+			"title": "角色编码"
+			}, {
+			"field": "roleName",
+			"title": "角色名称"
+			}, {
+			"field": "dealType",
+			"title": "处理状态",
+			"hide": true
+			}, {
+			"field": "dealTypeDesc",
+			"title": "处理状态",
+			"hide": true
+			},{
+			"width": 120,
+			"title": "操作",
+			"fixed": "right",
+			"btns": [
+			{
+			"className": "",
+			"openTitle":"执行环节查看",
+			"btnVal":"轨迹",
+			"width":"1000",
+			"height":"800",
+			"url":
+			"/static/views/flow/flowDesignPrew.html?prevFlag=true&woNo=#woNo#&taskName=#actionName#&fqFlag=Y&procId=#procId#&woTitle=#procName#&procName=#procName#&procVersion=#procVersion#",
+			"openType": "1"
+			}
+			]
+			}
+			]
+			]
+		</div>
+		<table class="ag-table layui-hide" id="demo" lay-filter="test" ag-data-index="0">
+
+		</table>
+
+		<div class="pagging ag-area-page">
+
+		</div>
+
+	</div>
+
+	<script>
+		function getData() {
+			if ($('input [name="callbcak"]').val() == 1) {
+				$('.ag-btn-query').trigger('click')
+			}
+
+		}
+	</script>
+</body>
+
+</html>

+ 193 - 0
public/views/wo/woQueryYb.html

@@ -0,0 +1,193 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta charset="utf-8">
+	<title>无纸化集中业务管理系统</title>
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+	<link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+	<link rel="stylesheet" href="/static/css/temp.css" media="all">
+	<script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+	<script src="/static/js/layui.js?v=1.0.0"></script>
+	<script src="/static/js/api.config.js"></script>
+	<script src="/static/js/util.js?v=1.0.0"></script>
+	<script src="/static/js/customform.js?v=1.0.0"></script>
+	<script src="/static/js/url.js?v=1.0.0"></script>
+	<script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+	<script src="/static/css/inconfont/iconfont.js"></script>
+	<script src="/static/js/jquery-ui.min.js"></script>
+</head>
+
+<body class="bg-info">
+
+	<div class="layui-card layui-card-margin ">
+
+		<form class="ag-form layui-form" ag-data-index="0" ag-form-callBack="getData">
+			<input type="text" name="callback" class="layui-hide">
+			<div class="param-left">
+
+				<div class="layui-inline ">
+					<label class="layui-form-label">工单名称:</label>
+					<div class="layui-input-block">
+						<input type="text" name="woTitle" autocomplete="off" placeholder="工单名称" class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline ">
+					<label class="layui-form-label">工单编号:</label>
+					<div class="layui-input-block">
+						<input type="text" name="woNo" autocomplete="off" placeholder="工单编号" class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline ">
+					<label class="layui-form-label">任务名称:</label>
+					<div class="layui-input-block">
+						<input type="text" name="taskName" autocomplete="off" placeholder="任务名称" class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline ">
+					<label class="layui-form-label">任务编号:</label>
+					<div class="layui-input-block">
+						<input type="text" name="taskId" autocomplete="off" placeholder="任务编号" class="layui-input">
+					</div>
+				</div>
+
+			</div>
+
+
+		</form>
+
+		<!--xiacj 说明:注意按钮工具栏不要放到form表单中,查询ajax请求和出发form表单提交,导致url方式变化,导致ajax请求状态为canceld-->
+		<div class="btns-right">
+
+			<button class="ag-btn-query layui-btn layui-btn-sm layui-btn-normal" ag-data-index="0" ag-data-ctx="bpm"
+				ag-data-url="/api/queryDoneTaskList">
+				<i class="layui-icon layui-icon-search "></i>
+				<span class="btn-span-middle">查询</span>
+			</button>
+
+			<button class="ag-btn-reset layui-btn layui-btn-sm layui-btn-normal" ag-data-index="0" type="reset">
+
+				<i class="layui-icon layui-icon-refresh "></i>
+				<span class="btn-span-middle">重置</span>
+			</button>
+
+
+		</div>
+
+	</div>
+
+
+
+
+	<div class=" layui-card  layui-card-list">
+
+		<div class="layui-border-box ">
+
+			<div class="layui-table-tool">
+				<div class="layui-table-tool-temp">
+
+				</div>
+
+			</div>
+
+		</div>
+
+		<div style="display:none" class="ag-table-header" ag-data-index="0">
+
+			[
+			[{
+			"field": "taskId",
+			"title": "任务编码"
+			}, {
+			"field": "taskName",
+			"title": "任务名称"
+			}, {
+			"field": "woNo",
+			"title": "工单编号"
+			}, {
+			"field": "woTitle",
+			"title": "工单标题",
+			"sort": true,
+			"hide": true
+			}, {
+			"field": "stepId",
+			"title": "环节编码",
+			"sort": true
+			}, {
+			"field": "stsDesc",
+			"title": "工单状态",
+			"sort": true
+			}, {
+			"field": "sts",
+			"title": "状态",
+			"hide": true
+			}, {
+			"field": "procId",
+			"title": "流程编号"
+			}, {
+			"field": "procName",
+			"title": "流程名称",
+			"hide": true
+			}, {
+			"field": "opNo",
+			"title": "处理工号"
+			}, {
+			"field": "opName",
+			"title": "处理人"
+			}, {
+			"field": "opTime",
+			"title": "处理时间"
+			}, {
+			"field": "roleCode",
+			"title": "角色编码"
+			}, {
+			"field": "roleName",
+			"title": "角色名称"
+			}, {
+			"field": "dealType",
+			"title": "处理状态",
+			"hide": true
+			}, {
+			"field": "dealTypeDesc",
+			"title": "处理状态"
+			},{
+			"width": 120,
+			"title": "操作",
+			"fixed": "right",
+			"btns": [
+			{
+			"className": "",
+			"openTitle":"执行环节查看",
+			"btnVal":"轨迹",
+			"width":"1000",
+			"height":"800",
+			"url":
+			"/static/views/flow/flowDesignPrew.html?prevFlag=true&woNo=#woNo#&taskName=#actionName#&fqFlag=Y&procId=#procId#&woTitle=#procName#&procName=#procName#&procVersion=#procVersion#",
+			"openType": "1"
+			}
+			]
+			}]
+			]
+		</div>
+		<table class="ag-table layui-hide" id="demo" lay-filter="test" ag-data-index="0">
+
+		</table>
+
+		<div class="pagging ag-area-page">
+
+		</div>
+
+	</div>
+
+	<script>
+		function getData() {
+			if ($('input[name="callback"]').val() == 1) {
+				$('.ag-btn-query').trigger('click')
+			}
+		}
+	</script>
+</body>
+
+</html>

Разница между файлами не показана из-за своего большого размера
+ 350 - 0
public/views/yearExcel.html


+ 469 - 0
public/views/ztreeInit.html

@@ -0,0 +1,469 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+	<link rel="stylesheet" href="/static/css/zTreeStyle.css" type="text/css" />
+	<link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
+	<link rel="stylesheet" href="/static/css/temp.css" media="all">
+	<script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
+	<script src="/static/js/layui.all.js" type="text/javascript" charset="utf-8"></script>
+	<script src="/static/js/layui.js?v=1.0.0"></script>
+	<script src="/static/js/common.js?v=1.0.0"></script>
+	<script src="/static/js/api.config.js"></script>
+	<script src="/static/js/util.js?v=1.0.0"></script>
+	<script src="/static/js/customform.js?v=1.0.0"></script>
+	<script src="/static/js/url.js?v=1.0.0"></script>
+	<script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
+	<script type="text/javascript" src="/static/js/jquery.ztree.all.min.js"></script>
+	<script type="text/javascript" src="/static/js/jquery.ztree.exhide-3.5.js"></script>
+</head>
+<style>
+
+
+
+</style>
+
+<body class="bg-info">
+
+	<div class="layui-card  border-info">
+
+		<div class="layui-card-header   layui-card-header-bb-2"
+			style="height: 55px;line-height: 20px; padding-left: 0;padding-right: 8px;padding-top: 15px;">
+			<div class="layui-input-inline" style="padding-left: 30px;">
+				<input class="layui-input  " id="searchInput" value="" placeholder="输入查询内容...">
+			</div>
+			<div class="layui-input-inline">
+				<button class="layui-btn layui-btn-normal" id="search_btn">查询</button>
+			</div>
+
+
+		</div>
+
+		<div class="layui-card-body">
+
+			<div class="layui-row">
+
+				<ul id="tree" class="ztree" style="overflow-y: auto;"></ul>
+
+			</div>
+
+		</div>
+
+		<div class="layui-card-footer">
+
+			<button class=" layui-btn layui-btn-sm layui-btn-normal  ztreeSave">
+				<i class="layui-icon layui-icon-ok-circle "></i>
+				<span class="btn-span-middle">确定</span>
+			</button>
+			<button class=" layui-btn layui-btn-sm layui-btn-normal  parentClear ">
+				<i class="layui-icon layui-icon-fonts-clear "></i>
+				<span class="btn-span-middle">清空选择</span>
+			</button>
+			<button class="ag-btn-cancel layui-btn layui-btn-sm layui-btn-normal">
+				<i class="layui-icon layui-icon-close "></i>
+				<span class="btn-span-middle">取消</span>
+			</button>
+		</div>
+
+	</div>
+
+	<input type="hidden" name='roleCode' />
+
+	<input type="hidden" name="roleName" />
+
+</body>
+
+<script>
+
+
+
+	layui.use(['element', 'form'], function () {
+
+		var layer = layui.layer;
+
+		var zTreeObj,
+			setting = {
+				check: {
+					enable: true,
+					chkboxType: {
+						"Y": "ps",
+						"N": "s"
+					},
+					chkStyle: "radio"
+
+				},
+				async: {
+					enable: true,
+					contentType: "application/json",
+					url: "",
+					dataType: "JSON",
+					autoParam: [],
+					headers: { "agileauthtoken": util.getToken() },
+					type: "post",
+
+					dataFilter: function filter(treeId, parentNode, childNodes) {
+
+						if (!childNodes) return null;
+
+						return childNodes;
+					}
+				},
+
+				view: {
+					dblClickExpand: true, //双击节点时,是否自动展开父节点的标识
+					showLine: false, //设置 zTree 是否显示节点之间的连线。
+					selectedMulti: false, //设置是否允许同时选中多个节点。
+					autoCancelSelected: false, //禁止按住ctrl多选
+					showTitle: true, //设置显示提示信息
+					txtSelectedEnable: true //设置可以选择节点名称
+				},
+				data: {
+					key: {
+						name: ""
+					},
+					simpleData: {
+						enable: true,
+						idKey: "",
+						pIdKey: "",
+						rootPId: "0"
+					}
+				},
+				callback: {
+					//点击节点开始时执行
+					beforeClick: function (treeId, treeNode) {
+
+
+						zTreeObj.reAsyncChildNodes(treeNode, "refresh");
+
+						return false;
+
+					},
+					onCheck: function (event, treeId, treeNode) {
+
+						if (treeNode.checked) {
+
+							zTreeObj.reAsyncChildNodes(treeNode, "refresh");
+
+						}
+					},
+					beforeAsync: function (treeId, treeNode) {
+
+
+						if (!treeNode) {
+
+							return true;
+
+						}
+
+						if (!treeNode.isParent) {
+
+							return false;
+
+						}
+
+
+					},
+					onAsyncError: function (event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown) {
+
+
+						if (XMLHttpRequest && XMLHttpRequest.responseText) {
+
+							util.error($.parseJSON(XMLHttpRequest.responseText).message);
+						}
+
+						if (treeNode) {
+
+							treeNode.isParent = false;
+
+							zTreeObj.removeChildNodes(treeNode);
+						}
+
+
+
+					},
+					onAsyncSuccess: function (event, treeId, treeNode, msg) {
+
+					}
+				}
+
+			};
+
+
+		var parentOpt = {
+			"id": "",
+			"ag-tree-key": "",
+			"ag-tree-parent-key": "",
+			"ag-tree-return-parent-key": "parentCode",
+			"ag-tree-return-key": "optCode",
+			"ag-tree-return-name": "optName",
+			"ag-tree-name": "",
+			"ag-tree-url": "",
+			"ag-tree-type": "radio",
+			"ag-data-ctx": "sysmgr",
+			"ag-tree-data": []
+		}
+
+		function initSetting() {
+
+			setting.data.key.name = parentOpt["ag-tree-return-name"];
+
+			setting.data.simpleData.idKey = parentOpt["ag-tree-return-key"];
+
+			setting.data.simpleData.pIdKey = parentOpt["ag-tree-return-parent-key"];
+
+			setting.check.chkStyle = parentOpt["ag-tree-type"];
+
+			if (parentOpt["ag-tree-type"] == "radio") {
+
+				setting.check.radioType = "all";
+
+			}
+
+
+			setting.async.url = ctx + "/" + parentOpt["ag-data-ctx"] + parentOpt["ag-tree-url"];
+
+			var autoArr = [];
+
+			autoArr.push(parentOpt["ag-tree-return-key"] + "=" + parentOpt["ag-tree-parent-key"]);
+
+			//autoArr.push(parentOpt["ag-tree-return-name"]+"="+parentOpt["ag-tree-name"]);
+
+			//autoArr.push(parentOpt["ag-tree-return-parent-key"]+"="+parentOpt["ag-tree-parent-key"]);
+
+			setting.async.autoParam = autoArr;
+
+		}
+
+		function initOpt() {
+
+			var param = util.getUrlParam();
+
+			id = param.id;
+
+			var errorMsg = "";
+
+			var parentObj = parent.$("#" + id);
+
+			if (parentObj.length == 0) {
+
+				util.error("id不存在!");
+
+				return false;
+			}
+
+			for (var key in parentOpt) {
+
+				var val = parentObj.attr(key);
+
+				if (!util.isNull(val)) {
+
+					parentOpt[key] = val;
+				}
+
+
+				if (key == "ag-tree-data") {
+
+					val = parent.$("[name=" + parentOpt["ag-tree-key"] + "]").data(key);
+
+					if (!util.isNull(val)) {
+
+						parentOpt[key] = val;
+					}
+
+					continue;
+				}
+
+				if (util.isNull(parentOpt[key])) {
+
+
+
+					errorMsg += "[" + key + "]属性未配置,"
+				}
+
+			}
+
+			if (!util.isNull(errorMsg)) {
+
+				util.error(errorMsg);
+
+				return false;
+
+			}
+
+			return true;
+		}
+
+
+
+
+		$(document).ready(function () {
+
+
+			$("#tree").height($(window).height() - 159);
+
+			if (!initOpt()) {
+
+				return;
+			}
+
+			initSetting();
+
+			zTreeObj = $.fn.zTree.init($("#tree"), setting);
+
+
+			$(".ztreeSave").click(function () {
+
+				save();
+			});
+
+			$("#search_btn").click(function () {
+
+				check();
+			});
+
+			$(".parentClear").click(function () {
+
+				parentClear();
+
+			});
+
+
+		});
+		//初始化节点树
+
+		function trimtest(str) {
+			//   用正则表达式将前后空格
+			//   用空字符串替代。
+			return str.replace(/(^\s*)|(\s*$)/g, "");
+		}
+		//将所有隐藏的节点显示出来。
+		function refreashNodes() {
+			nodes = zTreeObj.getNodesByParam("isHidden", true);
+			zTreeObj.showNodes(nodes);
+		}
+
+		function parentClear() {
+
+
+			parent.$("[name=" + parentOpt["ag-tree-key"] + "]").val("");
+
+			parent.$("[name=" + parentOpt["ag-tree-name"] + "]").val("");
+
+			parent.util.closeAll();
+		}
+
+		function save() {
+
+			refreashNodes();
+
+			var nodes = zTreeObj.getCheckedNodes(true);
+
+			if (nodes.length == 0) {
+
+				util.error("请选中渠道!");
+
+				return;
+			}
+
+			var keyVal = "";
+
+			var nameVal = "";
+
+			if (parentOpt["ag-tree-type"] == "checkbox") {
+
+				util.error("待开发...");
+
+				return;
+
+			} else if (parentOpt["ag-tree-type"] == "radio") {
+
+
+				if (nodes[0].isAjaxing == true) {
+
+					util.error("正在加载子节点,请稍后!");
+
+					return;
+				}
+
+				keyVal = nodes[0][parentOpt["ag-tree-return-key"]];
+
+				nameVal = nodes[0][parentOpt["ag-tree-return-name"]];
+
+			} else {
+
+				util.error("类型配置不正确:" + parentOpt["ag-tree-type"]);
+
+				return;
+			}
+
+			parent.$("[name=" + parentOpt["ag-tree-key"] + "]").val(keyVal);
+
+			parent.$("[name=" + parentOpt["ag-tree-name"] + "]").val(nameVal);
+
+			parent.util.closeAll();
+
+		}
+
+		function check() {
+
+			util.load('检索中请稍后!');
+
+			showSelected();
+
+
+			util.disLoad();
+		}
+
+		function showSelected() {
+
+			var searchStr = $('#searchInput').val(); //通过id获取页面输入的值
+			if (searchStr == '') {
+				refreashNodes();
+				return;
+			}
+
+			var allNodes = zTreeObj.transformToArray(zTreeObj.getNodes());
+
+			zTreeObj.hideNodes(allNodes); //隐藏所有节点
+			// var nodes = zTreeObj.getNodesByFilter(filter); // 查找节点集合 两种方式
+
+			var nodes = zTreeObj.getNodesByParamFuzzy(setting.data.key.name, searchStr);
+
+			if (nodes.length == 0) {
+				return;
+			}
+
+			var resultNodes = new Array();
+			$.each(nodes, function (i, n) {
+				var tempNode = n;
+				for (var i = 0; i < n.level; i++) {
+					tempNode = tempNode.getParentNode(); //获取当前被选中的节点的父节点
+					if (tempNode != null && tempNode != "") {
+						resultNodes.push(tempNode);
+					}
+				}
+			});
+			resultNodes = resultNodes.concat(nodes); //concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
+			zTreeObj.showNodes(resultNodes);
+			zTreeObj.expandAll(true);
+
+		}
+
+		function showValNode(obj) {
+			var val = $(obj).val();
+			val = trimtest(val);
+			if (val == "") {
+				refreashNodes();
+			}
+		}
+
+	});
+
+
+
+</script>
+
+</html>

+ 1 - 1
src/pages/main/luckySheet/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <div v-for="(item, index) in optionsExcel" :key="index">
-      <div @click="clickSee(item)">{{ item.name }}</div>
+      <div @click="clickSee(item)">{{ item.option.title }}</div>
     </div>
     <el-button @click="newExcle">新建</el-button>
     <div

+ 1 - 0
vue.config.js

@@ -85,6 +85,7 @@ module.exports = {
             //     new WebpackLifeCyclePlugin(),
             //     // new BundleAnalyzerPlugin()
             // ]
+
         }
     },
     parallel: true,

Разница между файлами не показана из-за своего большого размера
+ 10408 - 0
yarn.lock